El documento presenta los 6 pasos del diseño orientado a objetos. Estos incluyen definir la arquitectura, detallar las clases, desarrollar modelos de estado, elaborar modelos de colaboración, identificar componentes del dominio y probar componentes y clases. El objetivo es realizar un diseño detallado de la solución al problema que sirva de preparación para la implementación.
1. Presentación
Diseño Orientado a Objetos
Ing. Mauricio Paletta, Msc
INGENIERÍA EN INFORMÁTICA
Programación II
UNIVERSIDAD NACIONAL EXPERIMENTAL DE GUAYANA
Programación II
2. Diseño Orientado a Objetos
• Desarrollo detallado de la solución.
• Resultado: Problema detallado como una
preparación para la implementación /
programación.
• Preocuparse por todos los elementos
obviados en el Análisis y la visión global del
problema.
Programación II
3. Diseño Orientado a Objetos
• Preocuparse más por el modelo dinámico
(comportamiento) que por el modelo
estático (estructura).
• Productos: Diagrama detallado de clases,
diagramas de cambio de estado y
diagramas de colaboración / secuencia.
• 6 pasos a realizar.
Programación II
4. Diseño Orientado a Objetos
Paso 1: Definir la Arquitectura de la
aplicación
• Incluye:
o Diálogos / formas para la entrada / salida de datos
interacción con el usuario.
o Controlador de caso de uso: controla el proceso de un
caso de uso (prueba su satisfacción).
o Controlador de proceso (workflow): inicia, monitorea y
controla el procesamiento asociado a las secuencias
de eventos del problema.
Programación II
5. Diseño Orientado a Objetos
o Componentes del dominio: visión técnica de la
aplicación (clases).
o Interfaz con otros elementos: base de datos, otras
aplicaciones, servidores, etc.
Programación II
6. Diseño Orientado a Objetos
Paso 2: Detallar las clases
• Cada clase identificada en el análisis debe ser detallada
incorporando las responsabilidades (breve descripción
del objetivo de la clase), restricciones (limitaciones o
comentarios sobre alguno de sus elementos), atributos
y métodos.
• Por cada elemento se puede indicar también el criterio
de interfaz asociado (privado, protegido o público).
• Para cada método se puede indicar también la
descripción de los parámetros (cantidad y tipo de datos)
y el tipo de dato de retorno de la operación, si es el
caso.
Programación II
7. Diseño Orientado a Objetos
• NOTA: Mientras más detallada la clase, menos impacto
a la hora de implementar. Hay que recordar que algunas
herramientas CASE permiten la generación automática
de código.
• Sugerencias:
o Todos los conceptos identificados en el análisis que
no fueron considerados como clases, son posibles
atributos de alguna de las clases resultantes.
o Todos los verbos /acciones identificados en el
contexto del problema, son posibles métodos.
Programación II
8. Diseño Orientado a Objetos
o Recordar que las clases están asociadas a conceptos
de la vida real (abstracción), por lo que la
identificación de atributos y métodos debe estar
asociado al concepto de la vida real más que al
aporte que este concepto presenta en el problema a
resolver. Ayuda a la reutilización de componentes.
Programación II
10. Diseño Orientado a Objetos
Paso 3: Desarrollar los modelos de
Estado
• Permiten describir el comportamiento de los objetos.
Ayuda a clarificar si los métodos identificados en el paso
anterior están completos (faltan algunos) y/o hay de
más (sobran algunos).
• Representan la modificación de los estados (cambios en
los atributos del objeto) como respuesta a los sucesos /
eventos y el tiempo.
Programación II
11. Diseño Orientado a Objetos
• Diagramas de cambio de estado de UML.
• En esta etapa es prudente también realizar el algoritmo
detallado de cada método. En UML se puede realizar
haciendo uso de los diagramas de actividad, aunque es
posible usar otra representación (diagrama de flujo,
pseudolenguaje, etc.). Tener presente la posible
generación automática de código.
Programación II
12. Diseño Orientado a Objetos
Paso 4: Elaborar los modelos de
Colaboración
• Muestran la forma en que los objetos colaboran entre sí
(intercambio de mensajes) para satisfacer los objetivos
del problema.
• Ayudan a clarificar si la interfaz asignada para cada uno
de los métodos fue o no la correcta. No puede haber
intercambio de mensajes entre objetos si los métodos
correspondientes no son públicos.
• También permiten clarificar la completitud o no del
protocolo del objeto.
• Diagramas de colaboración y diagramas de secuencias
de UML.
Programación II
13. Diseño Orientado a Objetos
Paso 5: Identificar componentes del
dominio
• Componente: Representa el elemento físico asociado a
la abstracción conceptual o clase (tabla, archivo de
datos, ejecutable, dll, documento, etc.).
• Un componente puede ser la implementación de más de
una clase.
Programación II
14. Diseño Orientado a Objetos
• Tres tipos:
o De distribución: ejecutables (dll, ActiveX, obj, lib, etc.).
o Para trabajar en el producto: usados de forma estática
para crear los anteriores (archivos de bases de datos,
de código fuente, etc.).
o De ejecución: creados de forma dinámica durante la
ejecución del sistema.
Programación II
15. Diseño Orientado a Objetos
• Ejemplo: Mecanismo de ayuda en línea de Windows
o Archivo de ayuda (.Hlp) – componente de distribución.
o Tema de contenido (.Cnt) – componente para trabajar
en el producto.
o Búsqueda de texto (.Fts) – componentes de
ejecución.
Indice general (.Gio)
• Diagrama de Componentes y Diagrama de Distribución
de UML.
Programación II
16. Diseño Orientado a Objetos
Paso 6: Prueba de componentes y
clases
• Prueba de cada caso de uso para determinar la
satisfacción de los requerimientos del problema.
• Permite identificar las operaciones y propiedades
faltantes.
• Definir pre-condiciones y pos-condiciones de las
operaciones de cada clase.
• Prueba de todas las operaciones / métodos.
Programación II
17. Ejercicio: Reloj digital
• Consta de dos paneles digitales (pantallas), uno para
mostrar la hora y el otro para mostrar los minutos
actuales. El primero muestra valores entre 0 y 23 y el
segundo entre 0 y 59.
• El usuario debe poder inicializar el reloj (colocar un
valor igual a 0 en cada panel); debe poder incrementar
el reloj tanto por minutos como por horas; poder poner
en hora el reloj a un valor
cualquiera; pedir al reloj
que muestre su valor u hora
actual.
Programación II
18. Ejercicio: Reloj digital
• Consta de dos paneles digitales (pantallas), uno para
mostrar la hora y el otro para mostrar los minutos
actuales. El primero muestra valores entre 0 y 23 y el
segundo entre 0 y 59.
• El usuario debe poder inicializar el reloj (colocar un
valor igual a 0 en cada panel); debe poder incrementar
el reloj tanto por minutos como por horas; poder poner
en hora el reloj a un valor
cualquiera; pedir al reloj
que muestre su valor u hora
actual.
Dígito
Segmento / Led
Programación II
19. Ejercicio: Reloj digital
Reloj Digital
<<include>>
Inicializar
<<include>>
Modificar Dígito Modificar Led
Incrementar Hora
<<include>>
Incrementar Minuto
Usuario
Leer Led
<<include>>
Asignar Valor <<include>>
Leer Panel Mostrar Hora Actual
Usuario
Programación II
22. Ejercicio: Reloj digital
IncrementarHora( )
IncrementarHoras( )
Inicializar( ) PanelHora =
Asignar( H, M )
PanelHora + 1
IncrementarHoras( ) IncrementarHoras( )
IncrementarMinutos( )
Inicializar( )
IncrementarMinutos( )
PanelHora = 0 PanelMinuto =
PanelMinuto = 0 PanelMinuto + 1
IncrementarMinutos( )
Inicializar( )
Asignar( H, M )
IncrementarMinutos( )
Asignar( H, M )
PanelHora = H
PanelMinuto = M
Inicializar( )
Asignar( H, M )
Programación II
23. Ejercicio: Reloj digital
Clase Panel AsignarValor( V )
Valor = 0 AsignarValor( V ) Valor = V
{LímiteInferior <= V <= LímiteSuperior }
Clase Dígito AsignarValor( V )
Valor = 0 AsignarValor( V ) Valor = V
Programación II
26. Ejercicio: Reloj digital
1: MostrarHoraActual( ) 2: ObtenerValor( )
: Reloj : Panel
8: Hora Actual 7: Valor
: Usuario
6: Valor 3: ObtenerValor( )
5: Estado
: Led : Dígito
4: ObtenerEstado( )
Programación II
27. Ejercicio: Gestión de una biblioteca
• La biblioteca maneja y puede prestar libros y revistas
que están registrados en el sistema.
• La biblioteca maneja la adquisición de nuevos títulos.
Se compran varias copias de los títulos más populares.
Libros y revistas viejos son removidos.
• Un empleado de la biblioteca interactúa con los clientes.
• Un cliente puede reservar un libro o revista que no está
disponible actualmente. La reservación se cancela
cuando el cliente retira el ítem una vez que es notificado
de su llegada o por un proceso explícito de cancelación.
• El sistema debe poder crear, modificar y eliminar
información sobre títulos, clientes, préstamos y
reservaciones.
Programación II
28. Ejercicio: Gestión de una biblioteca
Sistema Biblioteca
Hacer Reservación Agregar Título
Remover o Modificar Título
<<include>>
<<include>>
Remover Reservación
Empleado <<include>>
Agregar Item
<<include>>
Mantenimiento
Empleado
<<include>>
Prestar Item
Remover Item <<include>>
<<include>>
Cliente
Regresar Item Agregar Cliente
Remover o Modificar Cliente
Programación II
29. Ejercicio: Gestión de una biblioteca
0..* Copia de
Item Título
Referido a
Libro Revista
0..1
Préstamo
Referido a
0..*
Tiene
0..*
Tiene
Información Cliente Reservación
0..*
Programación II
31. Ejercicio: Gestión de una biblioteca
Clase Título
Reservar
No
reservado
Reservar Remover Reservación
Reservado
Remover Reservación
Programación II
32. Ejercicio: Gestión de una biblioteca
3: BuscarPorNombre( )
Caso de Uso
Agregar Título
4: BuscarPorISBN( )
5: IniciarITítulo( )
1: IniciarForma( ) 8: AgregarItem( )
2: BotónAgregar( ) 9: Almacenar( )
: Forma : Título
Título
: Empleado 6: IniciarItem( )
7: Almacenar( )
: Item
Programación II
33. Ejercicio: Gestión de una biblioteca
: Forma : Título : Información : Préstamo : Item
: Empleado Préstamo Cliente
1: BuscarTítulo( )
2:Buscar( )
3: BuscarItem( )
4: BuscarPorTítulo( )
5: IdentificarCliente( ) 6: Buscar( )
7: Crear( )
Caso de Uso
Prestar Item
TECNOLOGÍA ORIENTADA A OBJETOS
Programación II
34. Ejercicio: Gestión de una biblioteca
: Forma Título : Título : Item
Empleado :
Empleado
1: IniciarForma( )
Caso de Uso
Agregar Título 2: BotónAgregar( )
3: BuscarPorNombre( )
4: BuscarPorISBN( )
5: IniciarTítulo( )
6: IniciarItem( )
7: Almacenar( )
8: AgregarItem( )
9: Almacenar( )
TECNOLOGÍA ORIENTADA A OBJETOS
Programación II
35. Ejercicio: Gestión de una biblioteca
Biblioteca
Item.java Préstamo.java Información
Cliente.java
Título.java Reservación.ja
va
Programación II
36. Ejercicio: Gestión de una biblioteca
PC con soporte de Java
Impresora
Programación II