B03-T09 Diseño orientado a objetos Flashcards

(91 cards)

1
Q

Diferencias principales entre programación estructurada y OO

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

¿Qué es una clase?

A

Coleccción de propiedades y métodos que operan con las propiedades o datos.
El estado de un objeto viene determinado por sus datos.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

¿Conceptos básicos de la herencia?

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Estructura de un módulo en la programación estructurada o imperativa

A
  • Interfaz: datos de entrada, datos de salida y descripción de la funcionalidad
  • Implementación: datos locales y secuencial de instrucciones
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Ventajas de la programación estructurada o imperativa

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

En la programación estructurada o imperativa, qué son los TAD

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Ventajas de los TAD

A
  • Concepto del dominio de los datos reflejada en el código
  • Encapsulamiento
  • Especificación versus implementación
  • Mayor modularidad
  • Mayor facilidad de mantenimiento
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Características de la POO

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Ventajas de la POO

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Qué se entiende por acoplamiento

A

La interdependencia entre elementos

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Qué se entiende por cohesión

A

La relación entre los diferentes componentes de un elemento.

Alta cohesión: realiza una tarea concreta y sencilla

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Incovenientes de la POO

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Hitos históricos imporantes en las decadas de 1960 y 1970

A
  • Primera aplicación bajora paradigma OO: Scketchpad (63)
  • Primer lenguaje OO: Simula 67 (67)
  • Refina nociones asociadas a clases y registros (75)
  • Smaltalk
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Hitos históricos imporantes en las decadas de 1980 y 1990

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

C++

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Hitos históricos imporantes en las decadas de 1990 y XXI

A
  • Java
  • .Net (Microsoft)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Características principales de Java

A
  • Apareción en 1995
  • Lenguaje intrepretado semicomplidao
  • Genera byte-code interpretado para máquina virtual (JVM)
  • No permite herencia multiple
  • Dispone de garbage coelctor
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

POO - Objeto

A

instanciación de una clase.
Datos más lógica para tratarlos

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

POO - Mensaje

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

POO - Clases

A

Propiedades más métodos

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

POO - Clase abstracta

A

Clase que no puede ser instanciada

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

POO - Biblioteca de clases

A

Conjunto de clases para una determinada tarea de programación

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

POO - Biblioteca de componentes

A

Grupo de clases que implementan una interfaz determinada

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

POO - Interfaz

A

Conjunto de métodos públicos que soporta una clase, y los mensajes que es capaz de tratar

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
POO - Tipos de operaciones en POO
- Constructor - Destrucutor - Selector (get) - Modificador (set) - Copiador 8copu, clone) - Iterador - Visualizador
26
POO - tipos de visibilidad
- Público - Protect - Private
27
POO - Normas generales para aplicrar visibilidad
- El estado de la clase debe ser privado - Las operaciones que definen la funcionalidad deben ser públicas - Funcionalidades que ayudan a implementar la funcionalidad principal deben ser privadas o protegidas
28
Propiedades fundamentales de la OO
- Identidad - Clasificación - Herencia - Polifmorfismo - Encapsulación - Persistencia - Extensibilidad - Reusabilidad - Composición/agregación
29
POO - Qué es Identidad
Los objetos tienen su identidad inherente. Identificador único denominado handle (puntero, valor,etc)
30
POO - Qué es Clasificación
Misma estructura de datos y mismo comportamiento
31
POO - Tipos de herencia
- De implementación: herencia de los métodos del padre implementados - De interfaz: hereda la interfaz pero no la implementación de operaciones (permite el polimorfismo) - De clase: hereda atributos y métodos
32
POO - Qué es el polimorfismo
Una misma interfaz puede tener distintos comportamientos. Tipos de polimorfismo: - En tiempo de compilación o estático. Elcomportamiento varía en función del tipo de datos que recibe el método. - En tiempo de ejecución (dinámico). Dada por la implementación de una misma interfaz, o por la herencia del método. Mismo método con lógicas distintas.
33
POO - Qué es la encapsulación
Solo se permite acceso externo mediante propiedades o métodos públicos, el resto es transparente.
34
POO - Qué es Persistencia
Un objeto software ocupa un espacio determinado de memoria
35
POO - Qué es extensibilidad
Puede ser fácilemente extendido
36
POO - Qué es reusabilidad
Componentesreutilizables
37
POO - Qué es la composición
"Todo/parte": La parte no puede existir sin el todo. Por ejemplo, el motor y un coche,. El motor ha de existir dentro de un coche. Relación fuerte, si se destruye al padre se destruye al hijo
38
Cuáles son las fases de desarrollo en la POO
- OOA: anállisis orientada a objetos - OOD: diseño orientado a objetos - OOP: Programaciónorientada a objetos
38
POO - Qué es laagregación
Relación todo-parte pero dénil. Laparte puedeexistir sin el todo. Por ejemplo, profesor y departamento. Los objetos pueden compartirse entre muchos agregados. La vida del objeto no depende del objeto contenedor.
39
Diferencia principal entre el análisis OO y la tradicional.
La tradicional se centra en el flujo de datos. La OO en la construcción de modelos basados en el mundo real
40
Etapas del Análisis Orientada a objetos
- Descripción o especificación del problema. No debe ser inmutable sino evolutiva. - Modelización del análisis. Las características esenciales deben abstraerse de un módelo.
41
En OOA aspectos de la descripción o especificación del problema
- Establecer el ámbito del problema - Describir necesidades y requisitos - Describir el contexto de la aplicación - Definir los supuestos - Definir las necesidades de rendimiento del sistema
42
En OOA cuáles son los elementos utilizados en la modelización del análisis?
- Clases y objetos del dominio del problema (estructura estática) - Interacciones entre objetos y su secuenciamiento (estrcutura dinámica) - Acciones a realizar por el sistema que producen un resultado observables y valioso para los usuarios (estructura funcional)
43
¿Cuál es el objetivo del Diseño Orientado a Objetos?
Transformar modelos conceptuales (del análisis) en modelos técnicos listos para ser programados.
44
Tareas que se ejecutan el Diseño Orientado a Objetos
- Decidir la arquitectura del sistema. Se definen los subsistemas que lo compondrá. Paquete de clases, asociaciones, operaciones y restricciones que están relacionados. Debe tener una interfaz bien definida con el exterior para poder interaccionar con otros subsistemas - Identificar las situacioines de concurrencia inherentes al sistema - Asignar los subsistemas a los recursos de proceso con lo que cuentan. Cada subsistema debe ser asignado a una unidad de hardware - Elegir una aproximación para la gestión del almacenamiento de datos (estructura de datos, ficheros,bases de datos) - ¿cuándo para con el diseño? Cuando los elementos sean tan sencillos que no puedan ser descompuestos
45
Esiterativo el ciclo de desarrollo de software orientado a objetos
Sí es iterativo. No es un proceso linial.
46
¿Cuáles son las metodologías que implementan o incluyen el ciclo de desarrollo orientado a objetos?
- Métrica versión 3 - Proceso unificado de desarrollo de Software
47
¿Cuáles son los objetivos de Métrica3?
- Proporcionar o definir SI que ayuden a conseguir los beneficios de la orgnaización. - Dotar a la organización de Software que satisfaga las necesidades de los usuarios (toma requisitos usuario) - Mejora de la productividad de los departamentos TIC - Facilitar la comunicación y el entendimiento entre los distintos participantesen la producción del software -Facilitar la operación, mantenimiento y uso de los productos de software
48
Ideas generals sobre M3 y OO
- Propone técnicas y actividades en OO - Utilización de UML - Propone 4 interfaces: - Gestión del proyecto - Seguridad - Gestión de la configuración - Aseguramiento calidad
49
M3 - OO. Actividades en el proceso de análisis
- ASI 1. Definición del sistema. Se identifican los límites del sistema, su alcance funcional, y la interacción con usuarios y otros sistemas. - ASI 2. Establecimiento de requisitos. Se recogen y documentan los requisitos funcionales y no funcionales del sistema con el usuario. - ASI 3. Descomposición del sistema en subsistemas. Se divide el sistema en partes más manejables (subsistemas) para facilitar el análisis y posterior desarrollo. - ASI 4. Análisis de los casos de uso. Se modelan los requisitos funcionales como interacciones entre actores y el sistema mediante casos de uso. - ASI 5. Analisis de clases. Se identifican y definen las clases del dominio, sus atributos, métodos y relaciones, reflejando la estructura interna del sistema.
50
M3 - OO. Cuáles son los inputs y las técnicas utilizadas en ASI 1.1 Determinación del alcance del sistema
- Inputs: modelo de negocio, modelo de cominio - Técnicas: casos de uso, diagrama de clases
51
M3 - OO. Inputs y tareas en ASI 2 establecimiento de requisitos
- Catálogo de requisitos que se completarán. - Se realiza la definifión, análisis y validación de requisitos - ASI 2.1 Obtención de requisitos - ASI 2.2 Especificaciones de casos de uso
52
M3 - OO Cuáles son las técnicas aplicadas en ASI 2.1 Obtención de requisitos
Casos deuso -> se detallan actores, casos de usos y breve descripción de los casos de uso
53
M3 - OO Qué se hace en ASI 2.2 Especificaciones de casos de uso
- Desarrollará el escenario de cada caso de uso identificado anterioremente. En casos complejos se realizarán diagramas de transición de estado. Tareas: - Descripción del escenario: cómo un actor interactúa con el sistema y cuál es la respuesta obtenida - Precondiciones y poscondiciones - Identificación de interfaces de usuario - Condiciones de fallo que afectan al escenario así como la respuesta del sistema
54
M· - OO. Tareas y técnicas en ASI 3 Descomposición del sistema en subsistemas
- ASI 3.1 determinación de subsistemas de análisis => diagrama de paquetes - ASI 3.2 integración de subsistemas de análisis => diagrama de paquetes
55
M3 - OO Cuál es el objetivo de ASI 4 Análisis de los casos de uso
Identificar las clases cuyos objetos son necesarios para la realización del caso de uso mediante la interacción de sus objetos
56
M3 - OO Cuáles son las tareas que comprenden el ASI 4 Análisis de los casos de uso
- ASI 4.1 Identificación de clases asociadas a un caso de uso - ASI 4.2 Interacción de objetos
57
M3 - OO Cual es la técnica aplicada en ASI 4.1 Identificación de clases asociadas a un caso de uso
Diagrama de clases
58
M3 - OO Cuáles son las clases que se identifican en ASI 4.1 Identificación de clases asociadas a un caso de uso
- Clase de entidad. Representan la información manipulada en cada caso de uso - Clases de interfaz de usuario. Interacción entre el sistemay actores (ventanas, formularios, menús...) - Clases de control Responsables coordinación, secuencia transacciones, control objetos relacionados
59
M3 - OO Cuál es la técnica empleada en ASI 4.2 Interacción de objetos
Diagramas de interacción
60
M3 - OO Cuál es el objetivo del ASI 5 Análisis de clases
Describir cada una de las clases que han surgido, identificando las responsabilidades que tienen asociadas, sus atributos y las relaciones entre ellas
61
M3 - OO Tareas en ASI 5 Análisis de clases
* ASI 5.1Identificación de responsabilidades y atributos * ASI 5.2 Identificación de asociaciones y agregaciones * ASI 5.3 Identificación de generalizaciones
62
M3 - OO Técnicas en ASI 5 Análisis de clases
* Diagrama de clases * Diagrama de transición de estados
63
M3 - OO Cuál es el objetivo de ASI 9 Análisis de consistencia y especificación de requisitos
Asegurar la calidad de los distintos modelados. Y que los usuarios y analistas tienen el mismo concepto del sistema
64
M3 - OO Qué acciones se realizan en ASI 9 Análisis de consistencia y
* Verificación de la calidad técnica * Aseguramiento de la coherencia entre los distintos modelos * Validación del cumplimiento de requisitos
65
M3 - OO Cuáles son las actividades en el proceso de diseño
* DSI 2 Diseño de la arquitectura desoporte * DSI 3 Diseño de casos de usos reales * DSI 4 Diseño de clases * DSI 6 Diseño físico de datos. Estructura física de los datos * DSI 7 Verificación y aceptación de la arquitectura del sistema
66
M3 - OO Durante la fase de diseño, el diseño de persistencia se hace en paralelo al diseño de arquitectura
67
M3 - OO Cuáles son las tareas que se realizan en DSI 2 Diseño de la arquitectura desoporte
* Diseño detallado de los subsistemas de soporte * Establecimiento de las normas y requisitos propios del diseñoy construcción * Identificación y definición de los mecanismos genéricos de diseño y construcción
68
M3 - OO Cuáles son las tareas que se realizan en DSI 3 Diseño de casos de usos reales
* Diseño detallado comportamiento del sistema * Diseño interfaz de usuario * Validación de la división de subsistemas
69
M3 - OO Cuáles son los objetivos de DSI 4 Diseño de clases
* Diseño detallado de cada una de las clases * Definición de un plan de migración y carga inicial de datos
70
M3 - OO Cuáles son los objetivos de DSI 7 Verificación y aceptación de la arquitectura del sistema?
Se garantiza la calidad de las especificaciones del sieño y viabilidad
71
M3 - OO Enumera todos las técnicas utilizadas
* Casos de uso * Diagrama de clases * Diagrama de componentes * Diagrama de despliegue * Diagrama de transición de estados * Diagramas de interacción: secuencia y colaboración * Diagrama de paquetes * Técnicas de gestión de proyecots (staffing size)
72
# PROCESO UNIFICADO DESARROLLO - OO Cuáles son sus principios
* Dirigido por casos de uso * Centrado en la arquitectura * Proceso iterativo e incremental
73
# PROCESO UNIFICADO DESARROLLO - OO Utiliza UML
74
# PROCESO UNIFICADO DESARROLLO - OO ¿Está basado en compoentes?
Basado en componentes.Uso de intarfaces para conectar los diferentes componentes
75
# PROCESO UNIFICADO DESARROLLO - OO Principio principal
Para el desarrollo del producto se necesitan todas las representaciones del producto
76
# PROCESO UNIFICADO DESARROLLO - OO Enumera los diferentes modelos que se generan
* Modelo de casos de uso * Modelo de análisis * Modelo de diseño * Modelo de implementación (componentes y correspondencia entre clases) * Modelo de despliegue (definición de nodos físicos) * Modelo de prueba (criterios de aceptación) * Representación de la arquitectura * Modelo de dominio y modelo de negocio
77
# PROCESO UNIFICADO DESARROLLO - OO Cuáles son los propósitos del Modelo de análisis
* Refinar los casos de uso * Asignación inicial de funcionalidad
78
# PROCESO UNIFICADO DESARROLLO - OO Actividades o tareas
* Captura de los casos de uso * Análisis y diseño de casos de uso
79
# PROCESO UNIFICADO DESARROLLO - OO En el modelo análisis, ¿cómo se representa cada tipo de clase?
* Clase entidad -> círculo con dos rayas abajo * Clase de interfaz de usuario -> círculo con T tumbada a la izquierda * Clase de control -> círculo con flecha
80
# PROCESO UNIFICADO DESARROLLO - OO Cuál es el objetivo del diseño?
Sirve de esquema para la implementación y define clases, subsistemas, interfaces, relaciones y colaboraciones. El diseño es más físico
81
¿Qué es el modelo CORBA?
Common Object Request Broker Architecture. Arquitectura OMA: (Object Managment Architecture). Es un modelo obsoleto sustituido por arquitecturas SOA, REST, microservicios Sistemas distribuidos. Facilitar interoperabilidad
82
¿Qué es la programación orientada al aspecto?
La Programación Orientada a Aspectos (POA) o Aspect-Oriented Programming (AOP) es un paradigma que busca separar las funcionalidades transversales del resto de la lógica de negocio. La POA permite encapsular esas funcionalidades transversales en módulos separados llamados aspectos, y aplicarlos de forma automática y no intrusiva allí donde se necesiten.
83
Qué es el Diseño por contrato
Es un poco como el diseño utilizando interfaces fuertemente tipado. Saber que se espera recibir, saber que se espera dar
84
¿Qué es un patrón de diseño?
Descripción de clases y objetos comunicándose entre sí para resolver un problema de diseño general en un contexto particular. Es decir, es una solución a un problema determinado que se da habitualmente
85
Enumera las diferentes categorías de patrones de disños
* Patrones de arquitectura * Patrones de diseño * Patrones de idioma o dialectos * Interacciones * Antipatrón
86
Lista de patrones creacionales
* Abstract factory * Builder * Factory method * Prototype * Singleton
87
Lista de patrones estructurales
* Adapter * Bridge * Composite * Decorator * Facade * Flywight * Proxy
88
Lista de patrones de comportamiento
* Command * Chain of responsability * Interpreter * Iterator * Mediador * Memento * Observer * State * Strategy * Template method * Visitor
89
Enumeración de otros patrones
* Patrones de interacción * CORE J2EE * J2EE DESIGN * PATRONES GRASP (General Responsability Assigment Software Patterns)
90
Patrones fundamentales
* Delegation * Interface * Maker interface