Classe : vocabulaire

Classe : vocabulaire - C++ - Programmation

Marsh Posté le 26-03-2006 à 20:45:25    

Bonjour,
 
Pouvez-vous me donné une définition de "instance" et de "objet" ? Est-ce 2 mots qui veulent dire la même chose ?
 
Merci d'avance...

Reply

Marsh Posté le 26-03-2006 à 20:45:25   

Reply

Marsh Posté le 26-03-2006 à 21:02:43    

Oui. D habitude, on précise de quelle classe est l ``instance``, et on emploie ``objet`` de façon plus générale.

Reply

Marsh Posté le 26-03-2006 à 21:05:42    

heu, aussi, tu peut avoir une instance d un type qui n est pas une classe, donc pas un objet. ça n a de sens que dans les languages qui ne sont pas objets ou font la différence entre les objets et les autres données.

Reply

Marsh Posté le 26-03-2006 à 21:09:03    

Merci nargy.

Reply

Marsh Posté le 28-03-2006 à 13:29:44    

un objet est un petit programme crée et géré par le programme principale (main) l'on peut creer plusieurs objet de meme type!  
 
Une classe décrit le contenue d'une série d'objet.
un objet est instancié a partir d'une classe.
 
 
ex: un objet instance de A contiendra un objet instance de B

Reply

Marsh Posté le 28-03-2006 à 15:41:37    

Une comparaison efficace :
 
En patisserie tu utilises un moule pour faire un gateau. La classe c'est ton moule et les gateaux que tu formes avec ce sont tes objets.
 
Ouais je sais : tous les gateaux sont identiques alors que les objets ont une identité et un état propre.

Reply

Marsh Posté le 28-03-2006 à 15:51:48    

> Ouais je sais : tous les gateaux sont identiques alors que les objets ont une identité et un état propre.
 
ben, c est pareil quand tu décore tes gateaux à la main :)

Reply

Marsh Posté le 28-03-2006 à 16:10:37    

slash33 a écrit :

Une comparaison efficace :
 
En patisserie tu utilises un moule pour faire un gateau. La classe c'est ton moule et les gateaux que tu formes avec ce sont tes objets.
 
Ouais je sais : tous les gateaux sont identiques alors que les objets ont une identité et un état propre.


 
mieux, "peugeot 406" c'est la classe et la voiture en elle-meme est une instance.
Pour les bateaux on utilises meme le terme explicitement: "le Titanic est un liner de classe Olympic"

Reply

Marsh Posté le 28-03-2006 à 16:59:43    

Certes mais c'est moins parlant. Avec un moule tu captes visuellement la métaphore alors qu'en parlant de voiture tu vas parler modèle, options, performances, process de fabrication (plus complexe que celui d'un gâteau), ...
 
Mais bon simple appréciation, je ne vais pas entrer dans un débat pour savoir quel exemple est le meilleur. Du moment que tout le monde comprend la différence le reste n'est que du détail.

Message cité 1 fois
Message édité par slash33 le 28-03-2006 à 17:00:30
Reply

Marsh Posté le 28-03-2006 à 17:28:32    

slash33 a écrit :

Certes mais c'est moins parlant. Avec un moule tu captes visuellement la métaphore alors qu'en parlant de voiture tu vas parler modèle, options, performances, process de fabrication (plus complexe que celui d'un gâteau), ...


 
une classe c'est immateriel, contrairement à un moule, une classe décrit un type d'objet et elle est materiélisée uniquement à travers ses instances
dans ton exemple la classe ca serait plutot la recette du gateau, enfin c'est ce que je penses

Reply

Marsh Posté le 28-03-2006 à 17:28:32   

Reply

Marsh Posté le 28-03-2006 à 23:04:33    

Trop simple alors. Bon ben pas grave

Reply

Marsh Posté le 28-03-2006 à 23:07:18    

Une classe peut-être un objet aussi selon le langage ;)


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 28-03-2006 à 23:09:58    

Une classe peut être un objet... pour le compilateur! :)

Reply

Marsh Posté le 28-03-2006 à 23:10:49    

L'objet de cette file n'est pas d'embrouiller ;)

Reply

Marsh Posté le 28-03-2006 à 23:13:26    

embrouiller est un verbe employé comme complément d'objet :)

Reply

Marsh Posté le 28-03-2006 à 23:16:20    

nargy a écrit :

Une classe peut être un objet... pour le compilateur! :)


 
en python une classe est un objet pour le programmeur au même titre qu'une instance.
Pour être précis c'est un objet pourvu d'une méthode "instancie moi". c'est pervers au point que si tu implémente la méthode "instancie moi" dans les instances d'une classe, tu peut avoir des instances instanciables...
 
mais effectivement le but n'est pas d'embrouiller donc on va zapper. Cependant voir une classe A comme un objet de classe quelquonque ayant une méthode "instancie moi" retournant un objet de classe "classe A" me parait intéressant.


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 28-03-2006 à 23:20:03    

> instances instanciables...  
et c est récursif?
(je fait pas de python...)

Reply

Marsh Posté le 28-03-2006 à 23:21:18    

il y a meme des langage tout objet comme smalltalk

Reply

Marsh Posté le 28-03-2006 à 23:23:31    

nargy a écrit :

> instances instanciables...  
et c est récursif?
(je fait pas de python...)


 
Ca peut très bien l'être voui.
En fait rien ne garantis qu'une instanciation fasse quoique ce soit d'approchant ce qu'on attends.
( essayes un jour d'en fait, c'est assez amusant de voir ce à quoi on peut jouer avec les objets en python )


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 28-03-2006 à 23:32:19    

> instances instanciables...  récursive
trop de la balle!!! ou trop le boxon aussi...

Reply

Marsh Posté le 28-03-2006 à 23:37:23    

Un petit exemple juste comme ca :

Code :
  1. class canard(object):
  2.   def __init__(self,gen=0):
  3.      '''Chaque canard possede un attribut contenant sa generation.
  4.      et un autre pour compter le nombre de fils directs.'''
  5.      self.generation = gen
  6.      self.children = 0
  7.  
  8.   def __call__(self):
  9.      '''Voila la methode "instancie moi", elle renvoie un
  10.      nouveau canard de generation superieure.'''
  11.      self.children += 1
  12.      return canard(self.generation+1)
  13.  
  14.   def __repr__(self):
  15.      '''La surcharge de la methode pour afficher un canard'''
  16.      return 'Je suis un canard de generation %i ayant %i enfants.' % (self.generation, self.children)
  17.  
  18. # a est une instance de canard
  19. a = canard()
  20. # on instancie b a partir de a
  21. b = a()
  22. # on instancie c a partir de b
  23. c = b()
  24. # on instancie d a partir de a
  25. d = a()
  26.  
  27. print a
  28. print b
  29. print c
  30. print d


Résultat :


Je suis un canard de generation 0 ayant 2 enfants.
Je suis un canard de generation 1 ayant 1 enfants.
Je suis un canard de generation 2 ayant 0 enfants.
Je suis un canard de generation 1 ayant 0 enfants.


 
Ca peut être amusant, mais c'est pas franchement essentiel c'est sur. ( et oui, si on en abuse ca peut foutre un sacré boxon ^^ )


Message édité par 0x90 le 28-03-2006 à 23:51:29

---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 28-03-2006 à 23:48:25    

ça doit être plus simple pour les arbres d objets (et les GUIs) avec ce système d auto instanciation.
 
En fait au début je pensait à a->b et b->a récursivement pour simuler les possibilités d un oscillateur en parallèle...

Reply

Marsh Posté le 28-03-2006 à 23:55:49    

nargy a écrit :

ça doit être plus simple pour les arbres d objets (et les GUIs) avec ce système d auto instanciation.
 
En fait au début je pensait à a->b et b->a récursivement pour simuler les possibilités d un oscillateur en parallèle...


 
bha en fait, si ta méthode __call__ ne fait que créer une instance de la classe de l'objet que tu instancie, ca sert pas a grand chose ca fait que les 2 lignes suivantes font la même chose :

Code :
  1. b = a()
  2. b = a.__class__()


Autant garder la seconde version plus explicite dans ce cas la. ( __class__ est un attribut de tout les objets pointant sur l'objet classe de l'objet dont on demande l'attribut )


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 29-03-2006 à 00:00:22    

ha ouais, non, a et b sont deux objets de classe différentes.
a() retourne un objet de classe B
b() retourne un objet de classe A
 
si tu fait a()()()()()()()() ça fait un oscillateur entre les classe A et B.

Reply

Marsh Posté le 29-03-2006 à 00:25:31    

c'est ... tordu [:pingouino] (mais oui ca se fait)


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed