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

1-10 of 22