B03-T09 Diseño orientado a objetos Flashcards
(91 cards)
Diferencias principales entre programación estructurada y OO
- Módulos construidos alrededor de operaciones | al rededor declases
- Datos gloabales y distribuidos entre los módulos | Clases débilmente acopladas y sin datosglobales
- Entreda-proceso-salida| Encapsulación-mensajes
- Diagramas de flujos de datos | Diagramas jerárquicosdeclases
¿Qué es una clase?
Coleccción de propiedades y métodos que operan con las propiedades o datos.
El estado de un objeto viene determinado por sus datos.
¿Conceptos básicos de la herencia?
- Superclase - (clase padre de la que heredan las subclases)
- Subclase - la clase que hereda
- Herencia múltiple - una subclase puede heredar de varias clases al mismo tiempo. C++ sí, Java no
Estructura de un módulo en la programación estructurada o imperativa
- Interfaz: datos de entrada, datos de salida y descripción de la funcionalidad
- Implementación: datos locales y secuencial de instrucciones
Ventajas de la programación estructurada o imperativa
- Facilita el desarrollo. Evita repetición del trabajo, compartimentado en módulos, Diseño topdown: descomposición en subprogramas
- Facilita el mantenimiento: claridad de código, independencia de los módulos
- Favorece la reutilización
En la programación estructurada o imperativa, qué son los TAD
Tipos abstractos de datos,que permite abstraer datos y operaciones. Por ejemplo: pila, cola, lista árboles…
Estructura de datos que almacena información para representar un determinado concepto.
La funcionalidad del TAD obtenida por un conjunto de operaciones que se pueden realizar sobreel TAD
Ventajas de los TAD
- Concepto del dominio de los datos reflejada en el código
- Encapsulamiento
- Especificación versus implementación
- Mayor modularidad
- Mayor facilidad de mantenimiento
Características de la POO
- Da soporte sintáctico explícito para la abstracción de datos: definición de clases, métodos, creación objetos, acceso a atributos e innovación métodos
- Cambia el punto de vista
- Aparecen nuevos conceptos: Objeto, Herencia de estructura y de funcinoalidad, polimorfismo
Ventajas de la POO
- Abstración + disciplina programación: Reutilización código, Facilita mantenimiento y extensión, Encapsulación y modularidad
- Potencia del lenguaje. Definición de clases, herencia, polimorfismo
- Reflejar conceptos de la realidad.
- Más sencillo de aprender
- Acoplamiento bajo y cohesión alta.
- Extensibilidad
Qué se entiende por acoplamiento
La interdependencia entre elementos
Qué se entiende por cohesión
La relación entre los diferentes componentes de un elemento.
Alta cohesión: realiza una tarea concreta y sencilla
Incovenientes de la POO
- No evita los malos análisis o diseños
- Preparación específica
- Curva de aprendizaje alta. Múltiples librerías.
- Los OO son poco eficientes, necesitan una arquitecturas relativamente potentes
- Reusabilidad está comprometida por la calidad de los paquetes
- Librerías de componentes deben tener una configuración estricta
Hitos históricos imporantes en las decadas de 1960 y 1970
- Primera aplicación bajora paradigma OO: Scketchpad (63)
- Primer lenguaje OO: Simula 67 (67)
- Refina nociones asociadas a clases y registros (75)
- Smaltalk
Hitos históricos imporantes en las decadas de 1980 y 1990
- Effiel (1985). Mejora Smalltalk
- Módula-2 (Niklaus With). Incluyó conceptos como la abstracción de datos y la programación modular
- Módula-3 (1990’s). DEV y Olivetti lo desarrollaron
- C++.
- VisualBasic. Microsoft
- Borland. Delphi
- Python. Lenguaje scripting, disponen características OO Relativament nuevo, sintaxis y semántica basada en Módula 3
C++
- Creado en la decada de los ochenta.
- Evolución de C
- POO
- Compilado y muy portable.
- Tipado fuerte.
- No hace limpieza dinámica de memoria
- Permite el tratamiento de excepciones
Hitos históricos imporantes en las decadas de 1990 y XXI
- Java
- .Net (Microsoft)
Características principales de Java
- Apareción en 1995
- Lenguaje intrepretado semicomplidao
- Genera byte-code interpretado para máquina virtual (JVM)
- No permite herencia multiple
- Dispone de garbage coelctor
POO - Objeto
instanciación de una clase.
Datos más lógica para tratarlos
POO - Mensaje
Solicitud para que el objeto se comporte de una manera determinada -> llamara un método
Protocolo: Conjunto de mensajes al que puede responder un objeto
POO - Clases
Propiedades más métodos
POO - Clase abstracta
Clase que no puede ser instanciada
POO - Biblioteca de clases
Conjunto de clases para una determinada tarea de programación
POO - Biblioteca de componentes
Grupo de clases que implementan una interfaz determinada
POO - Interfaz
Conjunto de métodos públicos que soporta una clase, y los mensajes que es capaz de tratar