Next: L'environnement de programmation de
Up: Le modèle à objets
Previous: Méta-objets
La définition d'une classe comprend :
- la super-classe
- les déclarations de variables d'instances,
- les déclarations de variables de classes,
- les déclarations de variables de pool,
- la catégorie de la classe (les classes sont rangées par catégories pour faciliter leur accès et leur regroupement).
- le commentaire de la classe,
- les méthodes de la classe
- les déclarations de variables d'instances de la méta-classe
- les méthodes de la méta-classe
Toutes ces informations sont transmises par envoi de message.
La création d'une classe se fait par exemple par un envoi de message à sa super-classe.
Par exemple, décrivons sommairement la classe Point.
ArithmeticValue subclass: #Point
instanceVariableNames: 'x y '
classVariableNames: ''
poolDictionaries: ''
category: 'Graphics-Geometry'
Point comment:
'Class Point represents an x-y pair of numbers usually designating a location on the screen.
Instance Variables:
x <Integer> usually x coordinate
y <Integer> usually y coordinate'
Les méthodes d'instances sont rangées dans des protocoles pour faciliter leur accès et la lisibilité des programmes.
On retrouve habituellement les protocoles suivants :
- initialize-release : contient les méthodes d'initialisation et suppression des objets
(il n'y a pas de suppression explicite comme en C++).
- accessing : contient les méthodes d'accès en lecture ou écriture pour les variables d'instance.
- comparing : contient les méthodes de comparaison avec d'autres objets.
- testing : contient les méthodes de tests divers (appartenance...).
- copying : contient les méthodes de copies (redéfinies).
- converting : contient les méthodes de conversion ou de changement de classe pour un objet (as<Classe>)
- displaying : contient les méthodes d'affichage (classes vues).
- adding-removing : contient les méthodes d'ajout suppression d'éléments (classes collections).
- ... : protocoles propres à chaque classe
- printing : contient les méthodes de représentation sous forme de chaînes de caractères (description).
- private : contient les méthodes non utilisables de l'extérieur (c'est un artifice car la notion
de méthode privée n'existe pas en Smalltalk-80).
Examinons quelques éléments de la méta-classe Point class :
le méthode d'instanciation x: y:,
la méthode générale délivrant un point nul zero.
Point class
instanceVariableNames: ''
x: xInteger y: yInteger
^self basicNew setX: xInteger setY: yInteger! !
zero
^0@0
Les méthodes de classess sont aussi rangées dans des protocoles.
On retrouve habituellement les protocoles suivants :
- instance creation : contient les méthodes d'instanciation
- class initialization : contient les méthodes d'initialisation des variables de classe ou d'instance de la méta-classe.
- defaults : contient les méthodes implantant des valeurs par défaut (soit des variables de classe, ou d'instance de la méta-classe ou soit des calculs externes cachés).
- Signal constants : contient les méthodes de gestion de signaux d'exceptions.
- general inquiries : contient les méthodes générales de la classe.
- backward compatibility : contient les méthodes de compatibilité avec des versions antérieurs.
- examples : contient les méthodes d'exemples d'utilisation de la classe.
- private : contient les méthodes de classe non utilisables.
Next: L'environnement de programmation de
Up: Le modèle à objets
Previous: Méta-objets
Pascal Andre
Tue Jun 8 12:20:44 GMT 1999