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'