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 :). |