Presentaciones github icon

Esta sección se irá completando con el correr del cuatrimestre

Git github icon

Taller de git github icon

Apunte teórico github icon

Objeto: Representación de un ente de la realidad. Se define a partir de los mensajes que sabe responder. Mensaje: Representa el QUE de los objetos. Define una responsabilidad. Puede tener múltiples implentaciones. Método: Es la implementación de un mensaje. Representa el COMO. Conjunto de colaboraciones. Colaborador: Variable. Puede ser interno (variable de instancia), externo (parámetro) o temporal.

Clase: Representa un concepto de la realidad. Subclase: Especialización. “Se comporta como”. Forma de organizar el conocimiento mediante jerarquias.

Buscar el 1:1 entre objeto-ente

Heuristicas de diseño

  • Favorecer composición sobre subclasificación.
  • No subclasificar de clases concretas.
  • Codigo repetido: Señal de que me falta una abstracción.
  • Evitar romper encapsulamiento
  • Favorcer polimorfismo por sobre ifs
  • Nombrar objetos segun el ROL que cumplen en el dominio de problema.
  • Guiarnos por aspectos funcionales conduce a mejores modelos.
  • Crear objetos compĺetos
  • Crear objetos válidos
  • Favorecer objetos inmutables
  • No usar nil/null

Quitar código repetido

  1. Copiar lo repetido a “algun lugar”
  2. Parametrizar lo que cambia
  3. Nombrar la abstraccion
  4. Reemplazar lo repetido x la nueva abstracción

Reemplazar if por polimorfismo

  1. Crear una jerarquia de clases con una clase por cada condicion del if (si no existe)
  2. Mover el cuerpo del if de cada condicion a cada abstracción del paso 1) utilizando un mensaje polimorfico.
  3. Nombrar el mensaje polifmorfico
  4. Nombrar las abstracciones del paso 1)
  5. Reemplazar el if por el envio de mensaje polimorfico
  6. Buscar el objeto polimorfico (si es necesario)

TDD

  1. Escribir el test mas simple posible que falle
  2. Hacer pasar los tests con la implementacion mas simple posible
  3. Reflexionar, ¿refactorizar?