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'