Cursosā€Ž > ā€ŽCursadas Anterioresā€Ž > ā€Ž2015ā€Ž > ā€ŽCuatrimestral-1erCā€Ž > ā€Ž

BitƔcora de clase


Clase 24 - Ejercitación

publicado a laā€Ž(s)ā€Ž 22 jun 2015 11:01 por Mariana Matos

Estuvimos trabajando con el enunciado del parcial Yaaar

AcÔ pueden encontrar una solución guiada del mismo.

Clase 23 - Ejercitación, composición vs herencia

publicado a laā€Ž(s)ā€Ž 18 jun 2015 10:41 por Mariana Matos

Estuvimos trabajando con este enunciado: Minions
En particular nos detuvimos mucho en los siguientes aspectos:
  • Cómo encarar un problema? Por dónde arrancar la solución? QuĆ© implicaciones tiene tomar una decisión demasiado anticipada? CuĆ”l es el costo de invertir las responsabilidades en el punto de entrada de nuestra solución?
  • Distintas formas de encarar el punto 1 y manejo de errores en el mismo siguiendo las reglas bĆ”sicas que planteamos la clase pasada.
  • Modelado con objetos de una misma clase vs modelado con instacias de clases distintas (tambiĆ©n en el contexto del punto 1)
  • Herencia vs Composición: para el enunciado llegamos a las siguientes conclusiones:
    • que es mĆ”s simple modelar a las razas con herencia en vez de con composición (sólo necesito un objeto para tener un empleado bĆ­clope o cĆ­clope en vez de dos, puedo usar redefinición cuando corresponda para tener un comportamiento distinto al estĆ”ndar en vez de delegar en un objeto raza)
    • que los roles deben modelarse usando composición, ya que tienen que poder cambiar en tiempo de ejecución, lo cual no es posible usando herencia (el empleado deberĆ­a conocer su rol y delegar en el rol todo lo que tenga que ver con el mismo)
  • Respecto al punto 2, planteamos una solución en la cual el empleado conoce las distintas tareas realizadas que son objetos polimórficos que saben decir cuĆ”l es la dificultad propia para un empleado, en vez de tener 2 atributos (cantidad de tareas realizadas y sumatoria de dificultades de tareas realizadas), ya que esto implicarĆ­a una complejidad extra para mantener consistente la solución, que es lo que tendrĆ­amos que hacer en el punto siguiente cuando efectivamente la tarea deberĆ­a llevarse a cabo.
Quedó pendiente para que resuelvan los puntos 3 (muy interesante desde el punto de vista de responsabilidades) y 4 de este parcial en base al modelo al que llegamos.

En la clase de hoy vamos a trabajar con otro parcial asƭ seguimos practicando la parte de modelado principalmente, que es lo que mƔs suele costar.

Clase 22 - Manejo de Errores

publicado a laā€Ž(s)ā€Ž 18 jun 2015 10:04 por Mariana Matos

Estuvimos hablando de cómo manejar errores y en general las reglas bÔsicas de cómo trabajar:
  • Un mĆ©todo SIEMPRE debe hacer lo que su nombre promete
  • En caso de no poder hacer lo que promete, no deberĆ­a hacer nada (no producir efectos) y tirar un error
  • Un objeto sólo deberĆ­a atrapar un error si hay algo razonable que pueda hacer al respecto, de lo contrario no deberĆ­a atraparlo y dejarlo que rompa hasta que otro objeto mĆ”s apropiado se encargue

Clase 21 - self vs super, tipos de colecciones, = vs == y responsabilidades de las clases

publicado a laā€Ž(s)ā€Ž 11 jun 2015 9:06 por Mariana Matos

En esta clase estuvimos viendo varios temas mÔs chiquitos, con los cuales ya casi ya casi terminamos de ver la teoría de este último paradigma:

Clase 20 - PrƔctica

publicado a laā€Ž(s)ā€Ž 4 jun 2015 15:10 por Mariana Matos Ā  [ actualizado el 4 jun 2015 15:32]

Link al google doc sobre el cual vamos a estar trabajando entre todos:
SiƩntanse libres de hacer consultas dentro del google doc, la idea es hacer esta prƔctica tan interactiva como se pueda.

Les dejo este otro link por las dudas que no requiere permisos de acceso.
Tanques (enunciado abierto para que puedan ver de forma anónima)

Clase 19 - Clases, Herencia, Method Lookup

publicado a laā€Ž(s)ā€Ž 4 jun 2015 8:53 por Mariana Matos

En esta clase estuvimos viendo un esquema distinto al que veníamos trabajando hasta ahora, que es el usado por la mayoría de los lenguajes orientados a objetos. Este esquema estÔ basado en el concepto de Clases con Herencia simple, y vimos cómo es que trabaja el method lookup en Smalltalk basado en este esquema.

También contamos cómo comunicar el diseño de nuestro sistema usando un diagrama de clases y mostramos cómo se usa el System Browser (que es la herramienta nativa de Pharo para programar usando clases). También contamos cómo hacer tests fuera de Ozono (necesitan una clase que herede de TestCase, la definición de los métodos es igual que como se hacía en Ozono), pueden correr sus tests desde el Test Runner o con la opción Run tests que aparece haciendo click derecho sobre la clase.

Les subo el file out del ejemplo hecho en Pharo de la clase de ayer, para importarlo pueden abrir su imagen y arrastrar el .st dentro de la misma, les va a dar la opción File in entire file. El package se llama Golondrinas, pueden buscar el código en el system browser, mirar la implementación y correr los tests.

Clase 18 - Laboratorio

publicado a laā€Ž(s)ā€Ž 28 may 2015 15:59 por Mariana Matos

Hoy trabajamos con este enunciado: Se dice atómico usando Ozono

Clase 17 - Colecciones

publicado a laā€Ž(s)ā€Ž 22 may 2015 9:26 por Mariana Matos

En esta clase vimos cómo se modelan conjuntos en objetos, les dejo el material teórico sobre este tema:
Luego hicimos un poco de prÔctica sobre los temas nuevos. Les subo una lección con el código del ejercicio hecho en clase para que puedan importarla en Ozono y ver cómo quedaría armado.

Si tienen dudas sobre cómo se usa la herramienta, recuerden que pueden recurrir a la documentación y tutoriales (el software fue actualizado luego de generar algo de este material, el video es bastante reciente así que se pueden guiar por eso), si aún así tienen dudas también vale preguntarnos via mail o en clase.

En particular, un tema que no vamos a estar viendo oficialmente en este curso por el escaso tiempo que tenemos es testeo unitario.

Sin embargo eso no quiere decir que no puedan aprenderlo y ponerlo en prÔctica para hacer los TPs, es realmente algo que uno quiere aprender para la vida dentro y fuera de la facultad. Para ayudar al proceso de entender de qué las va, el código que les adjunto de la prÔctica de ayer, ademÔs de un workspace que muestra cómo se prueba manualmente, viene con tests automÔticos para que chusmeen e incepcionarles lo lindo que es trabajar de esa forma :D

Tener en cuenta que en Ozono se mejoró bastante el testeo unitario desde que se escribió ese pdf. Los tests sí son independientes si nos encargamos de resettear nuestros objetos en el setUp y les muestra cuÔl fue el problema en el caso de errores o fallos, haciendo que sea bastante mÔs usable de lo que lo pintan.

Espero que les sirva!

Clase 16 - Self, Bloques y Booleanos, Polimorfismo

publicado a laā€Ž(s)ā€Ž 21 may 2015 12:13 por Mariana Matos

En esta clase vimos los siguientes temas:
  • self
  • Polimorfismo
  • BloquesĀ y booleanos (no usamos todos estos mensajes en la clase de ayer, pero estĆ” bueno saber quĆ© podemos hacer con ellos, en particular es interesante leer la diferencia entre & y | vs and: y or:)
AdemÔs estuvimos haciendo en clase el ejercicio 3 de la guía 1 de objetos, queda como trabajo personal pasar y completar la solución usando Ozono, y sobre todo probarlo, jugando con las distintas configuraciones de bonos y categorías.

Clase 15 - Intro a Objetos

publicado a laā€Ž(s)ā€Ž 18 may 2015 8:31 por Mariana Matos

En esta clase arrancamos con el paradigma orientado a objetos e introdujimos algunas ideas bƔsicas
Respecto al software que vamos a usar para trabajar, como actualmente el software de la cÔtedra (Ozono) no se encuentra al día con la nueva versión de Pharo, ademÔs de la instalación bÔsica de Pharo, descarguen la imagen de Pharo 3.0 que ya viene con Ozono instalado.
Luego, antes de empezar a trabajar por primera vez en Ozono aprieten el botón Actualizar Software (que les va a bajar los cambios realizados sobre la herramienta) y una vez que se haya terminado de actualizar guarden la imagen, así la próxima vez que la usen ya va a tener la herramienta con los cambios integrados.

Si tienen problemas con el software, por favor avisen por la lista asĆ­ les damos una mano