UTNianos

Versión completa: duda implementacion de super en pharo
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
buenas, estoy teniendo problemas a la hora de implementar super en pharo, ya que lo vimos como una herramienta mas pero aparece casi siempre en los parciales(siempre piden cosas tipo "como agregarias ahora esta nueva clase utilizando lo definido y que el sistema siga andando" o similares). la idea es como usarlo en forma general, cualquier cosa doy algun ejemplo en particular que no me salga. desde ya muchas gracias.
utilizar Super, cuando la informacion que necesitas la obtenes de la clase madre

Por ejemplo tenes Clase Libro subClase LibroUsado

A vos te dice que el precio del libro Usado esta dado por el precio del Libro - unDescuento por usado

Entonces el metodo te quedarìa

#LibroUsado

>>precioUsado

super precio - self unDescuento

En este caso super lo hace es buscar el metodo precio en una clase arriba, y sigue hacia arriba, metodo lookup. Si no lo encuentra se rompe.
Maartin, ese no es el caso más feliz de super, igual. El gran chiste de super es para desde un método mandar un mensaje que se resuelva con la implementación de la clase padre de ese mensaje. Está pensado principalmente para cuando redefinís un método pero necesitás mantener el comportamiento anterior, en parte.


#LibroUsado
>> precio
^super precio - self descuento



"El precio de un LibroUsado es el precio normal de los libros menos un importe de descuento por ser usado".

Si hicieramos "^self precio - self descuento" entraríamos en una recursividad infinita, porque la resolución de self precio sería volver a ejecutar ese método, que vuelve a enviar precio al objeto, y así. El chiste de super es que altera el method lookup para que la implementación se empiece a buscar en la clase padre de la que hereda el objeto en lugar de simplemente en la clase a la que pertence.

Y para esta altura imagino que ya tendrás tatuado eso de que "super apunta al mismo objeto que self"...
muchas gracias a los 2 , tenia en claro que super busca los metodos en la superclase o clase padre, pero no sabia como implementarlo. saludos!
URLs de referencia