Clase de Clases - Cuak

publicado a la‎(s)‎ 27 abr. 2011 16:34 por Guillermo Polito   [ actualizado el 4 may. 2011 6:11 por gisela decuzzi ]

Resumen de la clase


Breve repaso:
- ¿Qué es un objeto?
- ¿El method lookup?  Busco un método con igual selector en el objeto, si no lo encuentro, lo busco en el prototipo...
- ¿Dónde estan los metodos? en el objeto
- ¿Dónde estaban las variables? en el objeto
- ¿Qué pasaba si queria tener muchos objetos iguales? Tengo que clonar
- ¿si queremos compartir código entre objetos? Clonamos!

------------------------------------------------------------------------------------------

Nueva forma de crear objetos: Clases.

Una clase es una fábrica de objetos. ¿Como?

  Dragon new

Si yo quiero que todos los dragones compartan el mismo código (o sea, los mismos métodos),
¿donde piensan que voy a meter esos métodos? En la clase.
¿Y las variables donde las defino? En la clase.

Pasamos el ejemplo de saphira a clases

  Dragon>>come: unasOvejas
    energia := energia + unasOvejas * 3

Nueva versión de method lookup: Ahora cuando un objeto recibe un mensaje, lo busca en su clase.  Si no está, no lo entiende...


Tip: algo cambió con el initialize.  Ahora el initialize se ejecuta solito cuando creamos un objeto (hacemos new).

Seguimos...

  Dragon>>atacaA: unaVictima
    unaVictima recibiDanio: self energia * 2

  Soldado>>recibiDanio: unDanio
    vida := vida - unDanio

¿Que pasa con self?  Sigue siendo el mismo de antes:  una referencia al objeto que recibió el mensaje.
¿Y en el method lookup que onda? Igual que antes, los mensajes a self empiezan desde la clase del objeto.

Ahora programamos el ejercito de arturo.  Programamos un Sargento, que tiene un Set que es un ejercito

Sargento>>initialize
  ejercito := Set new

Sargento>>agregarSoldado:unSoldado
    ejercito add: unSoldado.

Sargento>>tenesSoldados
    ^ejercito notEmpty.

Las colecciones siguen siendo las de antes, solo que las creo a partir de clases:

set -> Set
ordered -> OrderedCollection
bag -> Bag

Set new
OrderedCollection new
Bag new

Cositas para leer y reforzar

http://uqbar.no-ip.org/uqbarWiki/index.php/Clases
http://uqbar.no-ip.org/uqbarWiki/index.php/Nombres_de_clases
http://uqbar.no-ip.org/uqbarWiki/index.php/Ley_de_demeter
http://www.pdep.com.ar/material/apuntes/apunte-objetos-1-5.pdf?attredirects=0  (Capítulo 3)

Para practicar y repasar

Guias 2 y 3 de objetos: http://www.pdep.com.ar/material/guas-de-ejercicios


TP para entegar la clase que viene

Hay que entregar (hecho con el system browser) fileout de la categoría y el workspace impreso del ejercicio 1 de la guia de ejercicios nro 2 de objetos (micros empresarios).


Ya me sale todo, y quiero un cafe con leche

Investigar y programar lo suficiente para poder ejecutar en un workspace la siguiente expresión:

1 kilometro + 2 metros

y que al imprimirlo, esa expresión devuelva

'1002 metros'
Comments