Bonjour à tous. Dans cette cinquième séquence sur l'héritage
et le Look-Up, nous allons parler de l'envoi de messages
et de l'algorithme de Look-Up dans le cadre des métaclasses.
Alors en Faro tout est objet.
Les objets peuvent recevoir des messages, donc puisque
tout est objet les classes sont des objets, et puisque
les objets peuvent recevoir des messages les classes
peuvent recevoir des messages aussi.
Le mécanisme d'envoi de messages est exactement le même
que le receveur soit un objet quelconque ou une classe.
Donc il n'y a qu'une seule façon de chercher une méthode
quand un message est envoyé, c'est l'algorithme de
Look-Up qu'on a vu et revu dans les séquences précédentes.
Donc maintenant je vais prendre l'exemple d'un envoi de
message sur une classe.
Bon il faut bien comprendre que puisque les classes sont
des objets et que tous les objets sont liés à une classe,
donc tous les objets sont instance d'une classe, donc là
"A Nodd" est une instance de la classe "Nodd".
Puisque la classe Nodd est un objet,
la classe Nodd est instance d'une classe.
On appelle cette classe Nodd class.
Donc A Nodd est une instance de la classe Nodd et la
classe Nodd est un objet qui est une instance de la classe Nodd class.
Là vous pouvez vous demander puisque c'est ça Nodd class
est une classe, cette classe est un objet donc c'est une
instance d'une classe, et de quelle classe Nodd class est-elle instance.
Et vous verrez ça dans une séquence suivante, la séquence
sur les métaclasses.
Donc quelques exemples.
Ici on a un objet A Work Station, instance d'une classe
Work Station, qui est une sous- classe de Nodd qui est
une sous-classe d'objects. Donc ici il faut faire
attention aux flèches, ici cette flèche avec un triangle
vide indique une relation de sous-classage.
Donc Nodd est une sous-classe de Objects.
Work Station est une sous-classe de Nodd.
Cette flèche avec un triangle plein qu'on représente
parfois de cette façon-là aussi, indique une relation d'instanciation.
Donc A Work Station est une instance de Work Station et
Work Station est une instance de work Station Class.
De la même façon object une instance de Object Class.
Si j'envoie un message à l'objet A Work Station, l'
algorithme de Look-Up cherche dans la classe de A Work
Station puis remonte un dans les super classes jusqu'à ce
qu'il trouve une méthode correspondante.
Eh bien c'est exactement le même mécanisme qui s'applique
si j'envoie un message à la classe Work Station.
Donc par exemple si j'envoie le message New à Work
Station, l'algorithme de Look-Up va chercher dans la
classe de Work Station, c'est-à-dire Work Station Class,
pour une méthode qui s'appellerait New.
S'il la trouve ici elle est exécutée, si l'algorithme de
Look-Up ne la trouve pas ici il va chercher dans la super
classe, s'il ne la trouve pas ici il va chercher dans la super classe.
Et cetera, cette hiérarchie continue.
Donc je vous laisse ce slide-là pour revoir l'envoi de
messages sur les objets standards et sur les classes qui
sont aussi des objets standards.
Ce que vous devez retenir.
Une classe qui est un objet comme les autres.
On peut envoyer des messages à des objets donc on peut
envoyer des messages à des classes.
L'algorithme de Look-Up est exactement le même
dans les 2 cas.
L'algorithme de Look-Up va commencer par chercher quelle
est la classe du receveur, puis va remonter dans la
hiérarchie donc en visitant les super classes, jusqu'à
trouver une méthode correspondante au message.
Vous en saurez plus sur les métaclasses en suivant la
séquence understanding metaclasses.