Cursosā > āMartes-MiĆ©rcoles-Jueves MaƱanaā > ā
Resumenes Objetos 2c2011
Reentrega TP integrador
La gente que no hizo la entrega en fecha el 26-27 de Octubre del tp, como ya resolvimos el tp en clase como tp tienen que entregar resuelto el enunciado Mundo Epico. Recuerden que toda entrega de tp integrador OBLIGATORIAMENTE consta de:
|
Enunciado TP Integrador
Clase 6 - Herencia
Clase 5 - Responsabilidad y Delegación
RepasoPara repasar un poco y empezar con el tema usamos el enunciado de Micros, particularmente la parte de:
Micro>>subirSiPodesA: persona    (self puedeSubirA: persona)       ifTrue: [self subirA: persona]. Micro>>puedeSubirA: persona    ^self tieneLugar and: [persona quiereSubirA: self]. Micro>>subirA: persona    self esElPrimero ifTrue: [primerPasajero := persona].    pasajeros := pasajeros + 1. Rebelión en la granja:[Versión Miércoles] Vaca
Comederos
Parte A)
[Versión Jueves] Dominio limitado a comederos y bebederos con cerdos, vacas y gallinas (que siempre pesan 4 kilos, siempre tienen hambre y sed).
Cosas para seguir leyendo
|
Clase 4 - Clases
Clase 3 - Bloques y Colecciones
Esta clase vimos con mucho mas detalle Colecciones y Bloques (ademas de repasar lo que ya habiamos visto). Empezamos hablando de los bloques. Hicimos mucho MUCHO hincapiĆ© que un bloque es algo que ya conociamos: un objeto que entiende mensajes. Particularmente recalcamos que el bloque representa código y por lo general lo que vamos a querer hacer con el código es evaluarlo y esto se logra a traves del mensaje value. Hablamos sobre la ventaja y el uso de los bloques por parte de los objetos booleanos y por quĆ© escribir pepita energia < 50 ifTrue: (pepita come: 100) No se comporta como querrĆamos, ya que lo que buscamos es que solamente coma si su energia es < 50, por lo que digimos que querĆamos diferir la evaluación de ese código (pepita come: 100)Ā y que para lograr esto contamos con los objetos bloques. Para que quede claro hablamos de los objetos booleanos true y false e hicimos una posible implementación para ifTrue: llegamos a quĆ©: true>>ifTrue: bloque Ā Ā Ā bloque value. false>>ifTrue: bloque Ā Ā Ā "no hacemos nada" DespuĆ©s dijimos que en Pharo es muy similar la implementación solo que lo implementa devolviendo algo (pero que no hacĆa al caso del tema de los bloques). NOTA: AsĆ como los nĆŗmeros ya vienen, los booleanos tambiĆ©n y los podemos usar libremente por todo nuestro Pharo. Eso incluyue al Object Browser por lo que no es necesario definirlos ni escribir los mĆ©todos que usamos en el pizarrón. Como comentario al margen hablamos de que no es lo mismo devolver (retornar) que mostrar. Digimos que mostrar es exponer algo al mundo mientras que retornar es algo interno a nuestro programa. Hablamos de bloques con parĆ”metros e implementamos nuestro bloque que espera tres parĆ”metros y da una solución para la raĆz de un polinomio cuadrĆ”tico. Nos quedó algo asi: [:a :b :c | (b negated + ((b raisedTo: 2)+ (4*a*c)) sqrt)/(2*a)] Para evaluarlo dijimos que necesitabamos un mensaje con 3 parĆ”metros y dijimos que los bloques entienden el mensaje value:value:value: Por ejemplos si queremos que se evalĆŗe de forma que a valga 2 b 3 y c 4 teniamos que evaluar: [:a :b :c | (b negated + ((b raisedTo: 2)+ (4*a*c)) sqrt)/(2*a)] value: 2 value: 3 value: 4. Como verĆ”n el código que estĆ” dentro del loque no es lo mas sencillo y estĆ” lleno de parĆ©ntesis para los que no estan muy cancheros con cuestiones del lenguaje y su presedencia acĆ” tienen un apunte cortito y muy muy interesante (con muchos ejemplos). Seguimos avanzando para entrar en el tema de colecciones, quisimos que pepita se fuera de viaje y como buena golondrina (?) se llevaba su equipaje. Empezamos diciendo que pepita se llevaba unas zapatillas nike, una cartera luisBoton y una guitarra gibson. Ahora como pepita no es una golondrina muy acaudalada se toma de esos viajes baratos pero que NO permiten pasarse en el peso... asi que querĆamos saber el peso de la valija de pepita, pasamos por varias versiones y nos dimos cuenta que no sabiamos cuantos items se iba a llevar pepita en cada momento, ni queriamos tener que modificar código cada vez que pepita se lleve un nuevo elemento en su valija. Llegamos a la conclusión que lo que querĆamos era modelar un conjunto, y como estamos en el paradigma orientado a objetos dijimos que necesitabamos un objeto que modelara la idea de conjunto y que me sirviera cada vez que quiero tener muchas cosas de algo, por ejemplo en nuestro caso... nos servirĆa para modelar la valija en sĆ que es (para nosotros) un conjunto de items. Nos quedamos con la idea de conjunto y hablamos de lo que queriamos hacer, como modela smalltalk esta idea, hablamos del objeto set que es objeto que entiende mensajes para agregar, sacar, contar cosas y varias cosas mĆ”s. Hicimos una listita de mensajes que entienden las colecciones:
Finalmente... hicimos el tp presencial. ĀæComo seguimos?Leyendo! Este resumen para empezar y los apuntes (con los links que les dejamos ahora y en las clases anteriores)Practicando! Mucho, pueden hacer toda la guĆa 1 de objetos sin problemas. Adjunto en este post pueden encontrar un apunte de colecciones y bloques mas explicado para ampliar lo que vimos en clase. La materia sigue y cada vez se hace mas complicada, les recomendamos que se mantengan al dĆa porque a partir de acĆ” arrancamos para aprender nuevos conceptos asi que si no tenemos claros la base hace que todo sea cuesta arriba y eso no esta bueno. Próxima claseLa clase que viene vamos a hacer un nuevo tp presencial en el laboratorio por lo que les aconsejamos que no falten :). |
Clase 2 - Self - Polimorfismo - Clonacion
Clase 2 - Self - Polimorfismo - ClonacionEsta 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:
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:
¿Cómo seguimos?
|
Clase 1 - Objeto Mensaje
Vimos
Para la clase que vieneLeer el apunte de objetos capĆtulo 1 (Ojo, no confundir con el apunte de objetos bĆ”sicos)Instalar el object browser (Les recomendamos que usen la version #stable). Sobre dudas de como usarlo tienen el manual en la pĆ”gina, y aca pueden encontrar una guĆa rĆ”pida. Cualquier consulta la mandan al grupo de la materia, al cual ya se deberĆan de haberse suscripto :) TP1Para la clase que viene (miĆ©rcoles 24/08 o jueves 25/05) hay que entregar el TP1 (impresa la exportacion de la leccion, SI, CON TODOS LOS CHIRIMBOLOS RAROS. NO SE ADMITEN TPS EN WORD).Tienen que pasar al Object Browser / LOOP lo mismo que hicimos en clase, es decir. Codificas a nuestra golondrina favorita: pepita. Permitiendo que pueda:
|