Técnicas Avanzadas de Programación

Asignatura

Ficha Técnica
Modalidad Electiva
Área Especialización
U.C: 3
Código 2120360001380

Justificación

Los cursos básicos de programación dan al estudiante la capacidad para diseñar algoritmos e implementarlos en un lenguaje de programación. Sin embargo, para estar en capacidad de desarrollar programas complejos, se requiere el dominio de una serie de técnicas que faciliten el desarrollo de programas grandes, fáciles de adaptar a situaciones diferentes y fáciles de modificar y mantener.

Objetivos del Curso

Presentar al estudiante una serie de técnicas avanzadas de programación que le permitirán desarrollar aplicaciones complejas, que sean fáciles de adaptar a situaciones diferentes y fáciles de modificar y mantener.

  • Estar en capacidad de utilizar técnicas de programación orientada a objetos para el desarrollo de programas complejos.
  • Estar en capacidad de utilizar técnicas de programación orientada a objetos en el desarrollado de aplicaciones que sean fáciles de adaptar a situaciones diferentes.
  • Estar de capacidad de desarrollar aplicaciones que sean fáciles de modificar y mantener, aplicando técnicas de programación orientada a objetos.
  • Estar en capacidad de aplicar patrones de diseño al desarrollo de aplicaciones.

Prerequisitos

Dominar el lenguaje Java y haber aprobado el curso Técnicas de Programación.

Contenido Programático

Unidad 1: Introducción

  • Orígenes de la programación orientada a objetos.
  • Mecanismos de abstracción anteriores a la P.O.O.
  • Justificación. Ventajas y desventajas de la P.O.O.

Unidad 2: Conceptos básicos de programación orientada a objetos

  • Clase
  • Mensaje y método
  • Objeto
  • Herencia
  • Polimorfismo
  • Interfaz

Unidad 3: Diseño orientado a objetos

  • Diseño dirigido por responsabilidades
  • Técnicas de diagramado (lenguaje de modelado unificado-UML)

Unidad 4: Mecanismos de reutilización de código

  • Herencia
  • Composición
  • Delegación
  • Tipos parametrizados

Unidad 5: Enlace estático y dinámico

  • Asignación estática y dinámica de tipos
  • Enlace estático y dinámico de métodos

Unidad 6: Herencia y tipos

  • Distribución de la memoria
  • Asignación
  • Equivalencia
  • Conversión de tipos
  • Herencia de clases y herencia de interfaces

Unidad 7: Ocultamiento de información

  • Acoplamiento y cohesión
  • Control de acceso y visibilidad

Unidad 8: Patrones de diseño

  • Concepto
  • Estructura de un patrón de diseño
  • Patrones creacionales
  • Patrones estructurales
  • Patrones de comportamiento

Unidad 9: Programación con hilos

  • Concurrencia y paralelismo
  • Hilos y procesos
  • Modelos de programación multihilos
  • Ciclo de vida de un hilo
  • Prioridades
  • Sincronización
  • Prácticas recomendadas

Metodología de la Enseñanza

Se realizarán clase teóricas por parte del profesor y se asignarán trabajos prácticos.

Intensidad Horaria

La intensidad horaria es de 3 horas/semana durante 16 semanas (48 horas/semestre).

Bibliografía

  • Budd Timothy. Introducción a la Programación Orientada a Objetos. Addison-Wesley Iberoamericana. 1994.
  • Stroustrup, Bjarne. The C++ Programming Language. Addison Wesley. Segunda edición. 1991.
  • Aguilar Joyanes, Luis. Programación Orientada a Objetos. Segunda edición. Osborne McGraw-Hill. 1998.
  • Campione, Mary, Walrath, Kathy. The Java Tutorial. Second Eddition. Addison Wesley.
  • Gamma Erich, Helm Richard, Johnson Ralph, Vlissides John. Design Patterns. Elements of reusable Object Oriented Software. Addison Wesley.