Whismeril a écrit :
J'ai qq problème de vocabulaire en Smalltalk...
A ce moment précis, par exemple, je dois créer une méthode de classe, mais je ne sais pas ce que c'est... je fais une classe-catégorie-méthode normale...?? Méthode d'instance / méthode de classe quelle différence ?
Merci pour d'éventuelles réponses,
Whismeril.
|
En programmation objet (plus précisément dans le paradigme des classes) les objets qui se trimballement dans l'univers sont classifiés par leur comportement. 2objets qui ont le même comportement face a à la même suite d'interractions sont dit de la même classe. Pour programmer, on décrit simplement le comportement d'un des représentants de la classe. C'est ce qu'on appelle une classe, la description du comportement des objets lui appartenant.
Un objet appartenant à une classe est appellé 'instance' de cette classe. Donc les méthodes que tu écrit dans le côté instance (il semble que tu n'a pas encore découvert autre chose, d'après ta question) vont être les méthodes applicables aux instances de la classe (jusqu'ici, tout va bien).
En smalltalk les classes elles-mêmes sont des objets (elles possèdent un comportement et un état interne, et même une classe !) donc elles sont sensibles à des messages (envoyer un message <=> appeller une méthode) et possèdent des attributs (variables de classe).
Pour ajouter une variable de classe c'est la ligne sous les variables d'instance (à l'endroit où tu créé ta classe).
Pour ajouter une méthode de classe, tu passes en mode classe, un radio-bouton sous le 2ème panel dans ton browser. C'est dans se mode là que tu rajoutes "new", le message de création d'instances.
Dans ce mode là (class), effectivement, tu crééra une catégorie (par ex. "instance creation" ) et tu rajoutera ta méthode dedans, comme en mode instance.
j'ai fait quelques saisies d'acran :
http://nraynaud.com.free.fr/smalltalk/
Pour enfoncer le clou sur la différence, un représentant d'une classe est une instance, donc il reçoit des méthodes d'instance et il ne peut pas recevoir de méthode de classes (il aurait du mal si on lui demande de créer un nouvel objet).
Une classe reçoit des méthodes de classe et pas les méthodes de ses instances.
Array with: 1
appelle la méthode de classe "with:" à la classe "Array"
unArray last
appelle la méthode "last" sur une instance de Array (un tableau quoi).
voilou