facebook

programacion orientada a objetos luis joyanes aguilar pdf

 Prólogo
 
 PARTE I: PROGRAMACIÓN ORIENTADA A OBJETOS
 1. Introducción: la orientación a objetos
 Conceptos previos
 Programación estructurada
 Programación modular
 Abstracción
 Ocultamiento de implementación
 Hacia un nuevo paradigma
 Calidad del software
 Orientación a objetos
 Reducción de la brecha entre el mundo de los problemas y el mundo de los modelos
 Aumento del nivel de complejidad de los sistemas
 Reutilización y extensión del código
 Uso de prototipos
 Programación en ambientes de interfaz de usuario gráfica
 Programación por eventos
 Programación orientada a objetos
 Significado
 Lenguajes de programación orientada a objetos
 Herramientas visuales y de desarrollo rápido de aplicaciones
 
 2. Programación orientada a objetos: generalidades y encapsulamiento
 Objetos y clases
 Objetos
 Clases
 Encapsulamiento
 La abstracción en programación orientada a objetos
 El ocultamiento en programación orientada a objetos
 Encapsulamiento
 Tipos especiales de atributos
 Atributos de clase
 Atributos con valor constante
 Atributos con restricciones
 Métodos de clase
 Terminología de objetos
 Estados, eventos y transiciones
 Operaciones
 Estado observable de un objeto
 Pasaje por valor y por referencia en programación orientada a objetos
 Constructores
 Destructores
 Sobrecarga
 Implementación de objetos y clases en distintos lenguajes
 Objetos y clases en Object Pascal
 Objetos y clases en C++
 Objetos y clases en Java
 Ejercicio resuelto: implementación de números racionales
 Enunciado
 Solución en Object Pascal
 Solución en C++
 Solución en Java
 Ejercicio resuelto: implementación de conjuntos
 Enunciado
 Solución en Object Pascal
 Solución en C++
 Solución en Java
 
 3. Programación orientada a objetos: reutilización y extensión del código
 Reutilización con composición
 Composición
 Agregación
 Reutilización con herencia
 Definición y ejemplos
 Utilización de herencia
 Herencia múltiple
 Herencia con excepciones
 Especialización con menos atributos
 Constructores, destructores, herencia y composición
 Atributos y métodos protegidos
 Generalización, especialización e instanciación
 Interfaces
 Concepto de interfaz
 Un ejemplo de interfaces: la clase adaptadora
 Elección de implementación: ¿composición, herencia o interfaces?
 Implementación de reutilización del código en distintos lenguajes
 Composición, herencia e interfaces en Object Pascal
 Composición y herencia simple y múltiple en C++
 Composición, herencia e interfaces en Java
 Ejercicio resuelto: implementación de matrices
 Enunciado
 Solución en Object Pascal
 Solución en C++
 Solución en Java
 Ejercicio resuelto: uso de la implementación de matrices
 Enunciado
 Solución en Object Pascal
 Solución en C++
 Solución en Java
 
 4. Programación orientada a objetos: polimorfismo
 Polimorfismo
 Polimorlismo y vinculación tardía
 Redefinición
 Sobrecarga y redefinición
 Objetos polimorfos o conversión de tipo automática
 Métodos virtuales
 Constructores y destructores virtuales
 Grados de polimorfismo
 Clases y métodos abstractos
 Clases abstractas
 Métodos abstractos
 Clases utilitarias y clases sin estado
 Uso de información de tipos en tiempo de ejecución
 Transformación de tipos
 Moldeo automático y moldeo explícito
 Datos estructurados con elementos de varios tipos
 Información de tipos en tiempo de ejecución
 Implementación del polimorfismo en distintos lenguajes
 Polimorfismo y otros aspectos en Object Pascal
 Polimorfismo y otros aspectos en C++
 Polimorfismo y otros aspectos en Java
 Ejercicio resuelto: propiedades de una inmobiliaria
 Enunciado
 Solución en Object Pascal
 Solución en C++
 Solución en Java
 Ejercicio resuelto: uso de ta implementación de la inmobiliaria
 Enunciado
 Solución en Object Pascal
 Solución en C++
 Solución en Java
 
 5. Documentando la programación
 Documentación en general
 UML para documentar la programación
 UML
 Diagramas de clases
 Diagramas de secuencia
 Diagramas de estados
 Diagramas de actividades
 Diagramas y programas
 Documentación interna
 Documentación interna de la programación
 El caso de javadoc
 Estándares de nomenclatura
 Ejercicio resuelto: diagramas de actividades, clases y secuencia
 Enunciado
 Solución
 Ejercicio resuelto: un diagrama de estados
 Enunciado
 Solución
 
 6. Temas misceláneos de programación orientada a objetos
 Colecciones en los lenguajes orientados a objetos
 Colecciones y niveles de abstracción
 Tipos genéricos y clases parametrizadas
 Iteradores
 Colecciones e iteradores en Java
 Colecciones e iteradores en C++
 Colecciones en Object Pascal (Delplti y Kylix)
 Programación guiada por eventos
 La programación secuencial y sus limitaciones
 Eventos y programación
 Mensajes y eventos
 Metodologías de ruteo de mensajes
 Manejo de los eventos
 Generalización del concepto de eventos en programación
 orientada a objetos
 Componentes
 Paquetes
 Un soporte para la administración de clases
 Organización de las clases en Object Pascal
 Organización de las clases en C++
 Organización de las clases en Java
 Colaboraciones
 Patrones de diseño
 Patrones de diseño y de arquitectura
 Caso I: Singleton
 Caso II: recorridos de colecciones
 Caso III: el patrón observador
 Lenguajes orientados a objetos
 Simula
 Smalltalk
 C++
 Object Pascal / Delphi / Kylix
 Java
 Python
 C#
 Visual Basic 6
 Javascript
 Un cuadro comparativo de lenguajes
 Ejercicio resuelto: un paquete de figuras geométricas
 Enunciado
 Solución en Object Pascal
 Solución en C++
 Solución en Java
 Ejercicio propuesto: patrón observador
 Enunciado
 
 7. Análisis global del paradigma de orientación a objetos
 Qué aporta de nuevo la programación orientada a objetos
 Una serie de requisitos mínimos para ser "orientado a objetos"
 Conceptos de desarrollo de software antes y después de la orientación a objetos
 Definición de sistema
 Cohesión y acoplamiento
 Ciclo de vida tradicional del software
 Desarrollo con prototipos completos
 El Proceso Unificado de Desarrollo de Software
 Extreme programming
 Desarrollo orientado a objetos para proyectos pequeños
 Algunas notas sobre mantenimiento
 Una introducción a las pruebas en programación orientada a objetos
 Las pruebas en el desarrollo de software
 Las pruebas en las metodologías de desarrollo incrementat
 Las pruebas en extreme programming
 Pruebas y programación orientada a objetos
 El futuro de la orientación a objetos
 Recomendaciones generales para diseño y programación orientada a objetos
 
 PARTE II: ASPECTOS AVANZADOS
 8. Tratamiento de problemas en tiempo de ejecución y excepciones
 Dependencia de estados
 Introducción
 Enfoques conservadores
 Enfoques optimistas
 Excepciones
 Errores y excepciones
 Distintas formas de tratar excepciones
 Transacciones
 Lanzamiento de excepciones
 Captura de excepciones: manejadores
 Atributos y métodos en excepciones creadas por el programador
 Excepciones derivadas
 Excepciones en Object Pascal
 Excepciones en C++
 Excepciones en Java
 El patrón de moldes de métodos para invariantes
 Algunas desventajas del modelo actual de excepciones
 Ejercicio resuelto: implementación de fechas con excepciones
 Enunciado
 Solución en Object Pascal
 Solución en C++
 Solución en Java
 Ejercicio propuesto: jerarquía de excepciones
 Enunciado
 
 9. Distintos modelos de datos
 ¿Objetos estáticos o referencias?
 Inicialización, asignación y liberación de memoria
 Copia y clonación
 Asignación y copia en el modelo estático
 La clonación en el modelo dinámico
 Igualdad y desigualdad
 Ejercicio resuelto: implementación de copia/clonación e igualdad
 Enunciado
 Solución en Object Pascal
 Solución en C++
 Solución en Java
 Ejercicio propuesto: copia/clonación e igualdad
 Enunciado
 
 10. Persistencia de objetos
 Persistencia y objetos persistentes
 Conceptos básicos
 Separación de la capa de acceso a datos
 Normas de la persistencia
 Persistencia y bases de datos relacionales
 Bases de datos orientadas a objetos
 Evolución del modelo de clases
 Soluciones para el almacenamiento de objetos
 Serialización y XML
 Serialización en Java
 Del modelo de objetos al modelo relacional
 Consideraciones adicionales
 Problemas con objetos complejos
 Los lenguajes orientados a objetos y la persistencia
 Ejercicio resuelto: serialización XML
 Enunciado
 Solución en Object Pascal
 Ejercicio resuelto: serialización a una cadena de bytes
 Enunciado
 Solución en Java
 
 11. Concurrencia y programación orientada a objetos
 Conceptos generales
 Haciendo varias cosas a la vez
 Concurrencia
 Procesos e hilos
 Concurrencia y programación orientada a objetos
 Representación de concurrencia en UML
 Escenarios concurrentes
 Comunicación entre objetos activos
 Objetos activos comunicándose con objetos pasivos
 Prioridades
 Problemas y soluciones
 Exclusión mutua y sincronización de métodos y bloques
 Inconvenientes de la sincronización de métodos
 Objetos inmutables
 Llaves de lectura y escritura
 Confinamiento
 Llaves de exclusión mutua (mutex)
 Semáforos
 Actualizaciones optimistas
 Otras soluciones para evitar la sincronización de métodos
 Bloqueos transitorios y bloqueos patológicos
 Interbloqueo
 Dependencia de estados, excepciones y constructores
 Problemas con los compiladores y las optimizaciones
 Cuándo usar concurrencia y cuándo no
 Concurrencia y lenguajes de programación
 Concurrencia en Java
 Concurrencia en Object Pascal (Delphi y Kylix)
 Concurrencia en C++
 Temas afines
 Programación en contextos de multiprocesamiento
 Computación distribuida
 Ejercicio resuelto: exclusión en el acceso a una cuenta bancaria
 Enunciado
 Solución en Java I (con sincronización total)
 Solución en Java II (con llaves de lectura y escritura)
 Solución en Object Pascal con llaves de lectura y escritura
 Ejercicio resuelto: múltiples hilos en la multiplicación de grandes matrices
 Enunciado
 Solución en Object Pascal
 Solución en Java
 
 PARTE III: ALGUNAS APLICACIONES
 12. Programación en ambientes de interfaz de usuario gráfica
 Programación en interfaces gráficas y objetos
 Implementación de la programación por eventos en los lenguajes orientados a objetos
 WIMP y programación por eventos
 Eventos en Delphi y Kylix
 Eventos en Java Swing
 ¿Eventos en C++?
 Separación de capas de interfaz de usuario y modelo
 Interfaces de usuario y HCI
 Independencia de diálogo
 MVC
 Consecuencias de la independencia de diálogo
 
 13. Programación Web
 Conceptos básicos
 Redes e Internet
 Aplicaciones y World Wide Web
 HTML y contenido dinámico del lado del cliente
 Generación de páginas en el servidor
 Sitios Web, Aplicaciones Web y Servicios Web
 La programación de aplicaciones y servicios Web
 Aplicando la orientación a objetos
 Otras consideraciones
 Separación en capas


0 comentarios:

Publicar un comentario