Contenidos

Unidad 1: Conceptos básicos de la Programación Orientada a Objetos
  • Modelo computacional del paradigma orientado a objetos. Comparación con otros paradigmas. Reusabilidad y Modularidad. Objetos y mensajes entre objetos. Arquitectura cliente/servidor.
  • Objetos. Instancias. Clases. Mensajes. Métodos. Variables de instancia. Creación y destrucción de objetos. Igualdad e identidad.
  • Herencia. Especialización y Generalización. Superclase / Subclase. Herencia Simple y Múltiple. Interfaces. Redefinición de métodos. This y Super.
  • Concepto de Polimorfismo. Binding estático vs. dinámico. Polimorfismo vs. sobrecarga de identificadores. Referencias polimórficas.
  • Tipos de relaciones. Asociación. Agregación. Composición.

Unidad 2: Lenguaje orientado a objetos (Java)

  • Introducción a Java. Historia. Características: Java frente a otros lenguajes, portabilidad, seguridad en el diseño, administración dinámica de la memoria, tratamiento de errores, multithreading. Java y la World Wide Web. Concepto de bytecode y máquina virtual.
  • Lenguajes OO con características estáticas. Distinción entre tipos básicos y objetos. Verificación estática de tipos. Restricciones al polimorfismo. Genericidad. Calificación del acceso a variables, métodos y clases. Paquetes. Interfaces. Clases como instancias. Métodos y variables de clase.

Unidad 3: Diseño de aplicaciones OO

  • Clases Abstractas y Concretas. Tipos de métodos: abstractos, bases, hooks, y templates. Composición vs. Herencia. Flexibilidad y extensibilidad mediante Interfaces y Clases Abstractas.
  • Frameworks de aplicaciones OO interactivas. Diseño e instanciación. "Model-View-Controller'' (MVC). "Abstract Window Toolkit'' (AWT). Swing: componentes, administradores de layout y tratamiento de Eventos.

Unidad 4: Aspectos Avanzados de la Programación Orientada a Objetos.

  • Concurrencia en lenguajes OO. Interferencia. Threads. La clase Thread y la interfaz Runnable. El ciclo de vida de un thread. Acceso a variables compartidas. Sincronización. Algoritmos típicos.
  • Tratamiento de errores en lenguajes OO. Excepciones. Tratamiento de excepciones. Fundamentos del manejo de excepciones. Uso de try y catch. Propagación de una excepción.
  • Tratamiento Entrada y Salida. Flujos de bytes y flujos de caracteres. Constructores de archivo. Serialización. Compresión de Datos.

La bibliografía de la cátedra se compone especialmente de los siguientes libros y artículos, aunque algunos temas pueden ser complementados con nuevos materiales que serán proporcionados por la cátedra.

Bibliografía básica: 

  • Rebecca Wirfs-Brock, Alan McKean. Object Design: Roles, Responsibilities, and Collaborations. Addison-Wesley, 2003.
  • Korson, T. McGregor, J. Understanding Object Oriented: a Unifying Paradigm. Communications of the ACM. 33(9). 9/1990.
  • Eckel, B. Thinking in Java. Prentice-Hall. 1998.
  • The Java Tutorial. http://java.sun.com/

 Bibliografía complementaria 

  • Goldberg, A. Robson, D. Smalltalk 80: The Language, Addison-Wesley, 1989.
  • Meyer, B. Object Oriented Software Construction. Prentice Hall, 1988.
  • Cardelli, L. Wegner, P. On Understanding Types, Data Abstraction and Polymorphism. Computing Surveys, 17(4), 1985.
  • Meyer, B. Applying Design By Contract. IEEE Computer. 25(10), 10/1992.
  • Snyder, A. The Essence of Objects: Concepts and Terms. IEEE Software, 10(1), 1/1993.
  • Wegner, P. Dimensions of Object-Based Language Design. Proceedings of OOPSLA 87.
  • Wegner, P. Dimensions of Object-Oriented Modeling. IEEE Computer, 25(10), 10/1992
Comments