Diseño Avanzado de Software con Objetos II


Diseño con objetos

Introducción
¿Te gustaría saber qué es un closure y por qué los lenguajes que los incluye son más productivos?
¿Alguna vez te preguntaste si es necesario tener una jerarquía de Excepciones tan grande como la que proveen los lenguajes de programación?
¿Estás cansado de tener diseños complejos por más que uses patrones de diseño?
¿Querés saber cuál es la diferencia real entre un Decorator, Adapter o Proxy? ¿Querés tener más claro cuando usar un patrón de diseño y cuando no?
¿Tenés ganas de perderle el miedo a la meta-programación o querés saber qué es un lenguaje 'meta-circular' y practicar seriamente con uno de ellos?
Si alguna vez te hiciste alguna de estas preguntas ¡entonces este curso es para vos!
Descripción
El objetivo de este curso es enseñar a los asistentes las distintas soluciones de arquitectura de objetos para problemas recurrentes como Idioms, Patrones de Diseño y Frameworks, viendo en detalle sus características, ventajas y desventajas. Entender correctamente qué es la meta-programación, cómo aplicarla, las ventajas y desventajas de usarla. Conocer soluciones tecnológicas existentes, no populares aún en nuestra profesión, como las bases de objetos o los frameworks web basados en continuations. Una vez terminado el curso, los asistentes estarán capacitados para decidir cuándo y cómo utilizar correctamente un idiom, patrón de diseño o framework. Podrán realizar un análisis crítico de las nuevas herramientas que surgen constantemente en nuestra profesión, basando este análisis en bases conceptuales bien definidas. Y por último estarán capacitados para generar soluciones de diseño reusables basadas en la metaprogramación.

Temario

  • Caracterización del diseño.

  • Repaso de Jerarquías polimórficas.

  • Idioms

  • Utilización de Closures para sacar código repetido

  • Patrones de diseño:

    • Decorator

    • Adapter

    • Proxy

    • State

    • Composite

    • Visitor

    • Observer

    • Future

    • Role

    • Framework

      • Caja Blanca

      • Caja Negra

    • Ejemplo concreto con un Framework conocido

    • Metaprogramación

    • Reflexión

    • Introspección e Intersección


Objetivos
Resultado esperado

  • Utilización de patrones de diseño

  • Creación de patrones e idioms propios, orientados a resolver los problemas que el dominio en el que trabajan provee.

  • Generación de Frameworks especializados en el dominio de problema de la institución

  • Utilización de Metaprogramación en soluciones a desarrollar



Que no cubre

  • No es un curso de Sintaxis de lenguajes

  • Utilización de Ambiente de Desarrollo (Ej. Eclipse, VisualStudio, etc)

  • Notación completa de UML

  • Detalles de Frameworks particulares

  • No se ve en detalle el metamodelo de ningún lenguaje


Pre-Requisitos
Diseño Avanzado de Software con Objetos I o conocimientos relacionados.

Audiencia
Programadores, Diseñadores, Arquitectos, Lideres Técnicos

Cursos Relacionados

Duración
24 horas
Lenguajes de programación
Smalltalk - Java - .Net - Ruby - Python - ObjectiveC - Php - Swift - JavaScript