Diseño Avanzado de Software con Objetos II

Av. Alem 896, 6to Piso     24 horas     13.200 + IVA    
Del 22/04 al 29/04. Días: 9 a 13 hrs.
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
Comentario
    
Lenguajes de programación
Smalltalk - Java - .Net - Ruby - Python - ObjectiveC - Php - Swift - JavaScript

Hernán Wilkinson desarrolla software de manera profesional desde el año 1991 y utiliza TDD para hacerlo desde el año 2000. Ha programado innumerables sistemas utilizando esta técnica y la enseña sistemáticamente desde el año 2004. Es profesor hace 11 años de las materias de Programación Orientada a Objetos y Diseño Avanzado con Objetos de la Facultad de Ciencias Exactas de la UBA. Da clases de diseño en la cátedra de Ingeniería de Software 2 y participa de la materia de Paradigmas de Lenguajes de Programación de la misma facultad. Es también profesor titular de la materia Métodos de Desarrollo con Objetos del Master de Ingeniería de Software de la UCA. Ha participado activamente en varios congresos internacionales y nacionales como OOPSLA, ESUG, Agiles y Smalltalks. Es miembro fundador de FAST, Fundación Argentina de Smalltalk, organizadora de los congresos argentinos de Smalltalk. Se ha desempeñado como programador, líder de grupos de arquitectura, gerente de desarrollo y actualmente es socio de 10Pines, pero nunca ha dejado de hacer aquello que es su pasión: desarrollar software.