Buenos días a todos. En esta quinta secuencia sobre la herencia
y la búsqueda, hablaremos del envío de mensajes
y el algoritmo de búsqueda en cuanto a las metaclases.
Así que en Pharo todo es un objeto.
Los objetos pueden recibir mensaje, así que como
todo es un objeto las clases són objetos, y como
los objetos pueden recibir mensaje las clases
pueden también recibir mensajes.
El envío de mensajes es exactamente el mismo cuando
el receptor es un objecto cualquiera o es una clase.
Así que solo hay una manera de encontrar un método
cuando se envía un mensaje, es el algoritmo de búsqueda
que hemos visto y repasado en las secuencias anteriores.
Ahora tomare como ejemplo el envío de
un mensaje sobre una clase.
es necesario comprender que como las clases son
objetos y que todos los objetos están ligados a un clase,
así todos los objetos son instancia de una clase, aquí en
aNode es una instancia de la clase Node.
Como la clase Node es un objeto,
la clase Node es una instancia de una clase.
Llamamos a esta clase Node class.
Así que aNode es una instancia de la clase Node y la
la clase Node es un objeto que es una instancia de la clase Node class.
Os podéis preguntar, como es así, Node class
es una clase, esta clase es un objeto así que es
una instancia de una clase, ¿de que clase Node class es instancia?
Veréis esto en la próxima secuencia, la secuencia
sobre las metaclases.
Algunos ejemplos.
aquí tenemos un objeto aWorkstation, instancia de una clase
Workstation, que es una subclase de Node que es una subclase
de Object. aquí tenemos que prestar
atención a las flechas, esta flecha con un triangulo vacío
indica una relación su subclase.
NOde es un subclase de Object.
Workstation es una subclase de Node.
Esta flecha con un triangulo lleno representa,
a veces de esta manera, una relación de instancia.
aWorkstation es una instancia de Workstation y
Workstation es una instancia de workstation Class.
De la misma manera que object es una instancia de Object Class.
Si envío un mensaje a el objeto aWorkstation, el algoritmo
de búsqueda busca en la clase de aWorkstation
luego sube uno en las super clase hasta que
encuentra un método que corresponda.
Pues bien es exactamente el mismo mecanismo que se aplica
si envío un mensaje a la clase Workstation.
Por ejemplo si envío el mensaje New
a Workstation, el algoritmo de búsqueda buscara en la
la clase de Workstation, es decir Workstation Class,
un método llamado New.
Si lo encuentra aquí sera ejecutado, si el algoritmo de
búsqueda no lo encuentra aquí buscara en la super
clase, si no la encuentra aquí buscara en la super clase.
Y ect... , esta hierarquía continua.
Os dejo este slide para repasar el envío de
mensajes a los objetos estándar y a las clase que
también son objetos estándar.
Lo que debéis recordar.
Una clase que es un objeto como los otros.
Puede enviar mensajes a objetos puede enviar
mensajes a clases.
El algoritmo de búsqueda es exactamente el mismo
en los dos casos.
El algoritmo de búsqueda empezara a buscar cual
es la clase del receptor, subirá en la hierarquía
visitando las superclase, hasta
encontrar un método que corresponda al mensaje.
conoceréis mas sobre las metaclases siguiendo
la secuencia Understanding Metaclasses.