Clase 2 - Self - Polimorfismo - Clonacion

publicado a la‎(s)‎ 25 ago. 2011 6:20 por gisela decuzzi   [ actualizado el 25 ago. 2011 6:35 ]

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:
  1. El código ya no está unicamente en el objeto al que le mando el mensaje
  2. 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
Comments