Clase 2 - Self - Polimorfismo - Clonacion
Esta clase fue bastante mas larga que la anterior y vimos unos cuantos conceptos nuevos y muy importantes.
Hablamos de
self, dijimos que es una pseudovariable que referencia al objeto que recibió el mensaje y nos permite mandarle mensajes con lo que hablamos un poquito de Reutilización de código.
Hicimos mucho (MUCHO) hincapiƩ en que
repetir código estÔ mal. Para seguir leyendo sobre estas ideas les dejamos este artiulo de la wikipedia
DRY.
A medida que fuimos avanzando en la clase necesitamos nuevas herramientas para no repetir código entonces hablamos de
clonación, que es una implementación del
esquema prototipado (OJO, los que conocen otros esquemas NO los confundan, mƔs adelante vamos a ver otros y vamos a explicar la diferencia con los prototipos). Hablamos de como se implementaen el object browser y dijimos que podemos clonar a nuestros objetos.
Hablamos del nuevo
método Lookup donde primero busca el código en el objeto receptor del mensaje y después en su prototipo, dijimos que se pueden
redefinir mƩtodos. Esto nos trajo algunas consecuencias:
- El código ya no estÔ unicamente en el objeto al que le mando el mensaje
- Es importante entender quién es self en cada momento (dijimos que es MUY importante entender la diferencia entre... objeto que recibió el mensaje y objeto que contiene el método)
Hablamos de uno de nuestros conceptos favoritos en la materia
Polimorfismo, lo vimos con un ejemplo y reconocimos en distintos casos los objetos que son polimorficos y quiƩn aprovecha ese polimorfismo.
En un momento quisimos manejar condiciones y hacer que pepita viaje hasta algun lugar sólo si puede, con lo cual vimos objetos
booleanos y hablamos al pasar que en smalltalk no es necesario el concepto de estructura de control ajeno a su sintaxis (OBJETO MENSAJE) con lo que los booleanos entienden mensajes, particularmente hablamos de 3 mensajes que le podemos mandar:
- ifTrue:
- ifFalse:
- ifTrue: ifFalse: (este es un mensaje con 2 parƔmetros NO son 2 mensajes)
Hablamos de los objetos
bloque que modela smalltalk y algunos mensajes que entienden (value, valPolimorfismo|ue:). Vimos algunos ejemplos en el pizarron de los bloques:
- [2+3] (objeto bloque que contiene una única sentencia donde le manda el mensaje + con el parÔmetro 3 al objeto 2)
- [2+3] value. (el mismo objeto bloque que tenĆa antes solo que le envio el mensaje value que serĆa como decirle ejecutate, cuando lo seleccionemos y lo ejecutemos el objeto resultado serĆ” el objeto 5)
- [:num|num+3] (objeto bloque que espera un parÔmetro)
- [:num|num+3] value: 2.
¿Cómo seguimos?
- Practicando: mucho! No hay tp para la próxima clase pero serĆa muy sano que intenten resolver los ejercicios de la guĆa uno (del 1 al 4-a) los van a poder resolver sin problemas. Les recomendamos MUCHO MUCHO que hagan tambiĆ©n el ejercicio 7 de la guĆa 1 (que pueden encontrar acĆ”).
- Leyendo
- Ya pueden leer el segundo capĆtulo del apunte que estĆ” aca
- En esta pÔgina se habla un poco del manejo de booleanos. La primera parte (true vs True) todavia no la vimos pero lo que sigue es muy interesante como para prestarle atención.
- En esta pĆ”gina se habla de las diferencias entre objetos y procedural basĆ”ndose en un ejercicio de la guĆa uno.
- Hay que leer el apunte de objetos bƔsicos del smalltalk