La materia tiene por objetivo que l@s estudiantes adquieran ideas y técnicas que le permitan aprovechar distintas características de la orientación a objetos (como ser comportamiento, responsabilidad, polimorfismo, uso de patrones de diseño) para dar soluciones adecuadas a los desafíos planteados que apliquen, ya sea al proceso de diseño (como atacar un dominio) ya sea al software que se está diseñando (en particular, respecto de los conceptos de acoplamiento y cohesión), entre otras cosas.

Modos de Cursada: Cuatrimestral Presencial

Horas Semanales: 6 horas

Demanda de tiempo en casa semanal: 6 horas

Sitio web:

  • Aún no disponible

Programa de la materia:

Contenidos Mínimos:

    • Aproximación al diseño de software: en qué dimensiones puede crecer un proyecto de software, problemáticas que devienen de este crecimiento.
    • Conceptos de acoplamiento y cohesión. Problemas que derivan de un grado de acoplamiento inadecuado.
    • Vinculación entre las ideas básicas de diseño y el paradigma de objetos: objetos como elementos, conocimiento como relación, responsabilidades como funcionalidad de cada elemento; tipo y polimorfismo para comprender que ciertos elementos son intercambiables a efectos de lograr un diseño flexible y escalable.
    • Características deseadas en un diseño de objetos: no repetición de implementación de lógica, capacidad de separar entre grupos de objetos cohesivos con responsabilidades aplicables al grupo.
      Patrones de diseño: idea de patrón, consecuencias del uso de algunos patrones respecto de las características del diseño y de las cualidades pretendidas del producto.
    • Nociones sobre proceso de diseño: foco en las responsabilidades, pensar los problemas desde las características básicas del paradigma, pertinencia de iterar entre diseño en papel, codificación y test, relevancia de los diagramas de objetos y de clases.
    • Metaprogramación, características reflexivas de un lenguaje de programación.
      Uso de un entorno integrado de software del estilo de los utilizados ampliamente en la industria, funcionalidades que provee, aprovechamiento de sus facilidades.
    • Notación UML de los diagramas de clases, de objetos y de secuencia.
    • Profundización del trabajo sobre testeo unitario y automático.
    • Profundización del trabajo sobre manejo de errores, impacto del manejo de errores en el diseño.