Código del Curso: CC63K
Créditos: 3
Duración: 30 horas
Valor individual: 30 UF
Prof. Eric Tanter
Objetivos del Curso
-
Aprender los conceptos importantes de la programación orientada a objetos
-
Aplicar los conceptos en el diseño e implementación de software orientado a objetos
-
Diseñar, programar y usar componentes re-usables
Contenidos
Manejar la complejidad del software
Descomposición procedural
Tipos de datos abstractos (ADTs)
Problemas
El Paradigma de la Orientación al Objeto
Un nuevo enfoque
Objetos y responsabilidades
Interfaces de objetos
Usar objetos
Programar con Objetos
Crear objetos, clases
Búsqueda de métodos
Auto-referencia
inicialización
Identificar clases de objetos
Tipos de Objetos
Sistemas de tipos
Clases como tipos
Interfaces explícitas
Polimorfismo
Abstracción de tipos
Caso de Estudio: Listas en Java
Classes vs. interfaces
Objetos vs. ADTs
Casos de extensibilidad
Herencia
Reusar implementaciones
Jerarquías de clases
Clases abstractas
Extensión y refinamiento
Herencia vs. composición
Herencia y subtipos
Otros Mecanismos de Reuso
Herencia múltiple
Traits, mixins
Protótipos
Más Polimorfismo
Bibliografía
-
Timothy Budd. An introduction to object oriented programming. Addison Wesley. 1997
-
Eliens. Principles of Object-Oriented Software Development. Addison Wesley, 1995.
-
Bertrand Meyer. Object-Oriented Software Construction. Second Edition. Prentice Hall, 1997.
-
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Design Patterns: Element of Reusable Object Oriented Software. Addison-Wesley, 1995.