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:

  1. El paradigma de los lenguajes orientados a objetos

    • Aspectos generales

    • Cómputo como simulación

    • Mecanismos de abstracción

    • Software reutilizable

  2. 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

  3. Clases y métodos

    • Encapsulamiento

    • Interface e implementación

    • Ejemplos de clases y métodos en distintos lenguajes

  4. 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

  5. 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

  6. 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

  7. Reemplazo y refinamiento

    • Formas de agregar, reemplazar y refinar

    • Reemplazo

    • Refinamiento

  8. Herencia y tipos

    • Organización de la memoria

    • Asignación

    • Igualdad

    • Conversión de tipos

  9. Herencia múltiple

    • Números complejos incomparables

    • Menús en cascada

    • Ambigüedad en nombres: Herencia de antepasados comunes

    • Ejemplos de herencia múltiple

  10. Polimorfismo

    • Objetos polimórficos

    • Sobrecargado

    • Rebasamiento (overriding)

    • Métodos diferidos

    • Polimorfismo

    • Eficiencia y polimorfismo

  11. 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

  12. 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

  13. 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