Bitacora - MiƩrcoles Tarde 2014
Clase 26 - Esquemas de tipado. Repaso de conceptos.
Ayer estuvimos hablando un poco sobre esquemas de tipado (tipo de checkeo y si es explĆcito o implĆcito), y estuvimos repasando los conceptos mĆ”s fuertes de la materia que esperamos que se lleven (no tiro links porque casi que cubre toda la wiki). Les dejo una listita de conceptos, de los cuales la mayorĆa surgieron en la clase de repaso que ustedes mismos guiaron :)
|
Clase 24 - Simulacro de Objetos
En esta clase trabajamos con el enunciado de Asterix el galo. Para los que no hayan venido, la clase que viene vamos a poner en comĆŗn una solución y comentar errores comunes, asĆ que conviene que lo resuelvan previamente para aprovechar mĆ”s la clase.Importante sobre los TPs: sólo queda una semana para la fecha de re-entrega, hay mucha gente que todavĆa no hizo entrega inicial. Les recordamos que tener el TP aprobado es necesario para poder aprobar la materia, evitemos andar corriendo las Ćŗltimas semanas de clase. |
Clase 22 - Ejercicio integrador: Pokemon
Estuvimos trabajando toda la clase con parte del enunciado del TP de Pokemon, en particular hicimos entre todos los siguientes puntos, de los cuales se hizo foco en distintas cosas: Punto 1: delegación y encapsulamiento. La forma mĆ”s simple de modelar los movimientos que elegimos usar tenĆa la limitación de no poder compartir un mismo movimiento entre dos pokemones distintos (por ejemplo Descanso para Pikachu y Jigglypuff). Al no romper el encapsulamiento nos resultarĆa mĆ”s fĆ”cil introducir cambios en cómo estĆ” modelada esta parte, no planteamos otra alternativa por cuestión de tiempos, pero hay mĆ”s de una, vale pensarlo por su cuenta :)Punto 6: dejamos algunos huecos acĆ” que pueden tratar de resolver, el foco estuvo nuevamente en polimorfismo y delegación. Punto 7: tenemos que agregar otra condición que se comporta distinto a las que ya tenĆamos, vemos que lo que nos quedó en el punto 2b era genial para incorporar estos cambios. Vimos dos alternativas, una que jugaba con redefinición (incluĆa cambios menores sobre lo que hicimos antes) y otra con un manejo de errores mĆ”s avanzado (sin cambios a lo anterior, sólo se agregaba la nueva condición). Desde ya, pueden tratar de resolver las partes que no hicimos del ejercicio y venir con dudas la próxima clase para discutir la solución. La clase que viene vamos a trabajar con el parcial de los Minions, por favor traigan una copia y lĆ©anlo antes de la clase. |
Clase 21 - Responsabilidades de las clases y TP en laboratorio
Hoy estuvimos viendo mƩtodos y variables de clases y tambiƩn estuvimos haciendo el siguiente TP presencial. La semana que viene no hay clases por las fechas de finales, el siguiente miƩrcoles es la fecha de entrega del TP integrador (obligatorio e individual) de objetos.Cualquier duda pueden mandar mails a sus tutores asignados. |
Herencia vs. Composición
Hoy estuvimos entrando en el Ôrea mÔs diseñosa de la materia (esperamos que lo que vimos les sirva para llegar mejor parados cuando cursen Diseño de Sistemas). Pueden leer mÔs sobre composición con otros ejemplos a los que vimos en clase. |
Clase 19 - Method Lookup++, herencia, redefición y super. Un poco mÔs sobre errores.
En esta clase terminamos de ver cómo se resuelve el method lookup con herencia y redefinición (con y sin super). AdemÔs dimos un último pasito respecto a manejo de errores definiendo nuestras propias clases que heredan de Error para poder atraparlas (en caso de poder recuperarse del error) y validar en nuestros tests que el error arrojado fuera efectivamente el que esperÔbamos y no cualquier otro usando should:raise:.El primero que me manda por mail una solución para tener bloques que puedan aplicarse parcialmente usando el mensaje binario @ (que claramente no existe en Pharo) y le den verde los 3 tests que estÔn attacheados en BloquesConAplicacionParcial.st (pueden hacer file in de los dos archivos arrastrÔndolos sobre la imagen que tienen) se gana un café con leche y medialunas y mucha fama a reclamar en la siguiente clase (a menos que haya clase de laboratorio, en cuyo caso sólo pueden reclamar la fama, los alimentos quedan para la otra). testSeBancaBloquesDeMuchosParametros    self assert: [ :a :b :c :d :e :f | a + b + c + d +e +f ] @ 1 @ 2 @ 3 @ 4 @ 5 @ 6 equals: 21 |
Clase 18 - Clase de Clases con clase...
![]() DespuĆ©s introdujimos el concepto de Clase como fĆ”brica de objetos por un lado, y como definición de comportamiento de los objetos por otro. Filosofamos un rato sobre los dos mĆ©todos para laburar con objetos (class-based vs prototype-based) y charlamos un poquito de las ventajas y desventajas de uno y otro a la hora de modelar el problema en objetos (entendiendo modelar como organizar el conocimiento). TambiĆ©n vimos como cambia el method lookup cuando estamos trabajando en una tecnologĆa con clases. Luego realizamos el Ā ejercicio de micros empresarios en el pizarrón, tratando de encarar el problema como lo harĆamos en un parcial, y viendo cómo podemos mejorar el código cuando encontramos abstracciones que representan conceptos importantes en nuestro sistema. DespuĆ©s vimos como implementar en computadora todo lo que estuvimos viendo, conociendo el system browser (Nautilus) y aprendimos a hacer tests con las nuevas herramientas, lanzar errores y testearlas. Quedan adjuntos los file outs de lo que implementamos en clase. No estĆ”n implementadas todos los tipos de persona, pero lo que estĆ” estĆ” completamente testeado :) El TP para la semana que viene para hacer con el System Browser es Dr. Casa (Temporada 1). Para la clase que viene traigan el enunciado de Dr. Casa (Temporada 2) |
Responsabilidad y delegación + intro a errores
En esta clase estuvimos trabajando con las dos partes de Mensajeros de Peliculas AdemÔs vimos una pequeña introducción a errores como mecanismo para cortar la ejecución del programa en caso de situaciones excepcionales. Para lanzar un error usamos Error signal: 'Descripción del problema'. Este tema lo vamos a profundizar mÔs adelante, no entra en el TP. |
Clase 16 - Colecciones, igualdad vs identidad y TP de polimorfismo
Hoy vimos colecciones, que son objetos que modelan conjuntos de otros objetos. Si bien hay distintos sabores de colecciones, hay una serie de mensajes que entienden todas (o la gran mayorĆa de ellas, algunos no deberĆan entenderlos porque no calzan con sus caracterĆsticas), por ende sólo nos interesa quĆ© tipo de colección es cuando las creamos, pero para trabajar con ellas no tanto porque son polimórficas! TambiĆ©n mencionamos la diferencia entre igualdad (=) e identidad (==). Dos objetos son idĆ©nticos sólo si son el mismo objeto, sin embargo la igualdad (que por defecto se define en tĆ©rminos de identidad) puede ser redefinida, con lo cual lo normal es consultar por igualdad en vez de identidad. Las colecciones (por ejemplo para el mensaje includes:, o el Set para evitar repetidos) se basan en la igualdad para permitir al desarrollador decidir si dos objetos deben considerarse iguales o no. Empezamos a trabajar entre todos con el punto 1 del TP, les adjunto la lección UtilĆsima para que puedan hacer el punto 2 partiendo de esa lección. |
Clase 15 (2da de objetos) - Poli-rockin'-morfismo, bloques y manejo de booleanos.
Seguimos con objetos, avanzamos con:
(*)Ejercicio: Viaje en bondi Queremos saber el precio de un pasaje en bondi para una persona determinada, sabiendo que la tabla de precios es:
Queda adjunta la resolución que hicimos en clase. Su misión, si deciden aceptarla, es terminarla y testearla. |