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:
|
1-9 of 9