MATERIA:Diseño y Programación orientado a objetos
CLAVE:COMP-440
SEMESTRE DE UBICACION:Cuarto
AREA:Ciencias de la Computación
OBJETIVOS: Este curso combina un estudio de sintaxis y semántica
de lenguajes con un tratamiento profundo del proceso de diseño de software.
Este último hace énfasis en el enfoque orientado a objetos, que es introducido
en contraste con los métodos tradicionales de diseño. Se utiliza el diseño
de un editor interactivo dirigido por la sintaxis como un caso concreto
a lo largo de todo el curso. Los subtemas incluyen una revisión de autómatas
de lenguajes formales para utilizar conceptos en la construcción del editor.
Se verá de manera especial la semántica de los lenguajes de programación
que se encarga de analizar el uso de modelos formales e informales para
la misma (axiomática, denotacional, operativa). Se cubren también los
temas relacionados con diseño e implementación de grandes sistemas de
software siguiendo distintas estrategias, como son el diseño funcional/orientado
al proceso y el diseño ascendente y la reutilización. Por último se revisarán
los mecanismos formales e informales para verificación y validación de
sistemas de software.
TEMARIO:
- El paradigma de los lenguajes orientados a objetos
- Aspectos generales
- Cómputo como simulación
- Mecanismos de abstracción
- Software reutilizable
- Diseño dirigido por la responsabilidad
- Clasificación de los objetos de acuerdo a clase, responsabilidad y colaboración
- El concepto de clase
- El concepto de herencia
- Errores comunes de diseño
- Clases y métodos
- Encapsulamiento
- Interface e implementación
- Ejemplos de clases y métodos en distintos lenguajes
- Mensajes, instancias e inicialización
- Sintaxis para la transmisión de mensajes
- Creación e inicialización
- Ejemplos de mecanismos para creación e inicialización
- Herencia
- Los beneficios de la herencia
- El costo de la herencia
- Heurísticas para cuando subclasificar (subclases)
- Consideraciones para cuando reprogramar
- Arboles frente a bosques
- Composición frente a construcción
- Ligado estático y dinámico
- Tripificación estática y dinámica: El problema del contenedor
- Métodos de ligado: méritos del estático frente al dinámico
- Ejemplos de ligados en distintos lenguajes
- Reemplazo y refinamiento
- Formas de agregar, reemplazar y refinar
- Reemplazo
- Refinamiento
- Herencia y tipos
- Organización de la memoria
- Asignación
- Igualdad
- Conversión de tipos
- Herencia múltiple
- Números complejos incomparables
- Menús en cascada
- Ambigüedad en nombres: Herencia de antepasados comunes
- Ejemplos de herencia múltiple
- Polimorfismo
- Objetos polimórficos
- Sobrecargado
- Rebasamiento (overriding)
- Métodos diferidos
- Polimorfismo
- Eficiencia y polimorfismo
- Visibilidad y dependencia
- Acoplamiento y cohesión
- La ley de Demeter
- Valores activos
- Clientes de subclasey clientes usuarios
- Construcción y herencia
- Control de acceso y visibilidad
- Colofón de clases
- Naturaleza de las clases. Clases como tipos. Clases como objetos
- La clase de los datos
- Necesidad de las clases
- Clases parametrizadas
- Implementación
- Compiladores. Tablas virtuales de métodos. Codificación de los nombres. Tablas de despacho
- Intérpretes
- Perspectivas
BIBLIOGRAFIA:
- Budd, T., An Introduction To Object Oriented Programming, Addison-Wesley, 1991
BIBLIOGRAFIA COMPLEMENTARIA:
- Alkinson, C., Objet-Oriented Reuse, Concurrency And Distribution, An Ada -based Approach, ACM Pres, Adisson-Wesley publishing Company, 1991.
- Gupta, R, Horowitz, E., Editores, Objet-oriented Database With Applications to CASE, Networks And VLSI CAD Prentice Hall, Inc., 1991.
- Khoshafian, S., Abnous, R., Objet-orientation, Concepts, Languajes, Database, User Interfases, John Wiley & Sons, Inc., 1990.
- Nahouraii, E., Petry, f., Editires., Objet-oriented Database, IEEE Computer Society Press 1991.
- Peterson, G.; Editor., Object-Oriented Computing, Volume 1: Concepts; Volume 2: Implementations, IEEE Computer Society Press, 1988
- Winblad, A.L.; Edwards, S.D.; King, D.R., Object-Oriented Software, Addison-Wesley Publishing Company, 1990
|