Documentos de Académico
Documentos de Profesional
Documentos de Cultura
a Objetos en UML
TEMA 3
3.4.1. Introducción.
Bibliografía.
Objetivos Específicos
Especificación
Independiente de ¿Qué ha de hacer el sistema?
la tecnología Especificación
del sistema
software
Dependiente de la Diseño
tecnología
¿Cómo lo hace el sistema?
Implementación
4
Introducción al Diseño de Software
Punto de Partida:
Resultado de la Especificación: ¿Qué ha de hacer el
sistema?
Tecnología: ¿Con qué recursos? Recursos hardware y
software disponibles
Especificación Diseño
El sistema software se ve como una Cada clase de objetos tiene sus propias
sóla clase de objetos que engloba operaciones de manipulación de
toda la información y todas las información. Los objetos interactúan para
operaciones satisfacer las operaciones del sistema
sistema software
sistema software
: Clase 2
: Clase 3 : Clase 4
Diseño en UML
Resultado de la Especificación:
– Diagramas de secuencia:
Define la interacción entre las clases de objetos para responder a un evento
externo
Ejemplo
Problema
Esquema conceptual de especificación (dominio del problema):
Persona Local
Afición
nombre: String * * * * dirección:String
nombre:String
tiene > se practica > ciudad: String
locales-a-ir ():locales
locales = {dirección}
Consideraciones:
Ejemplo
Solución
– Añadir una asociación derivada /Puede-ir entre persona y local
– Esta asociación podía no ser relevante en el dominio del problema
/ Puede-ir
Persona Local
Afición
* *
nombre: String * * dirección:String
tiene > nombre:String se practica >
ciudad: String
locales-a-ir ():locales
locales = {dirección}
Arquitectura del software
Dependiendo de:
– Propiedades que se quiere que cumpla el sistema
(requisitos no funcionales)
– Recursos tecnológicos disponibles
Lenguajes de programación
Sistema de gestor de bases de datos/Sistema de ficheros
Etc.
Se determina
Contexto
• Situación donde se presenta el problema de diseño.
Problema
• Problema a resolver.
• Fuerzas: Aspectos que se han de considerar en la solución.
Solución
• Esquema de solución del problema que equilibra las fuerzas.
Patrones de Diseño
Patrón arquitectónico
• Expresa un esquema de organización estructural para sistemas software.
• Proporciona un conjunto de subsistemas predefinidos, especifica sus
responsabilidades e incluye reglas y guías para organizar las relaciones
entre ellas.
Patrón de diseño
• Una vez determinado el patrón arquitectónico, un patrón de diseño da un
esquema para refinar sus subsistemas o componentes, o las relaciones
entre ellos.
• Describe la estructura de una solución a un problema que aparece
repetidamente.
• Resuelve un problema de diseño general en un contexto particular.
Modismo
• Describe la estructura de la solución dependiendo del lenguaje de
programación.
Patrón arquitectónico: Arquitectura en capas
Contexto
• Un sistema grande que requiere su descomposición en grupos de
subtareas (componentes) tales que cada grupo de subtareas está en un
nivel determinado de abstracción.
Problema
• Hay que diseñar un sistema con la característica dominante de incluir
aspectos de alto y bajo nivel (de abstracción), donde las tareas de alto nivel
se basan en las de bajo nivel.
• Las tareas de alto nivel no se pueden implementar utilizando directamente los
servicios de la plataforma, a causa de su complejidad. Se necesitan servicios
intermedios.
Patrón arquitectónico: Arquitectura en capas
Problema
• Fuerzas a equilibrar:
Solución
Sistema
• Estructurar el sistema en un número Cliente Software
apropiado de capas.
Nivel más alto de
• Colocar las capas verticalmente. Capa N abstracción
Dispositivos Físicos
Patrón: Arquitectura en tres capas
Responsable de la interacción
Capa Presentación con el usuario
Operaciones:
entrada/salida
Patrón: Arquitectura en tres capas
eventos presentación
Presentación
• Se entera peticiones usuario.
• Ordena ejecución acciones.
• Comunica resultado acciones a usuarios.
• Tratamiento de: ventanas, diálogos, menús, botones, listados.
Dominio
Patrón: Arquitectura en tres capas
Presentación
Dominio
• Recibe eventos • Ejecuta acciones
• Controla validez eventos • Obtiene los resultados
• Cambio estado del dominio • Envía respuestas Capa Presentación
operaciones de consulta y
modificación de datos respuestas, resultados
Gestión de datos
Patrón: Arquitectura en tres capas
Dominio
Gestión de Datos
• Permite que el dominio pueda ignorar dónde están los datos
• Las funciones concretas de esta capa dependen del SGBD que se use
operaciones de consulta y
modificación en el lenguaje de respuestas, resultados
bases de datos y ficheros
Gestión de Datos
operaciones de consulta y
modificación de datos en el respuestas,
lenguaje de las bases de datos resultados
y ficheros
Recibo
Claves externas
Presentación
Dominio
Gestión de Datos
Select clientes from Select código from Recibos Insert into Recibos …
Clientes where where
SGBD
Tablas:
Clientes (cliente,...)
Recibos (codigo, fecha, importe, cliente, …)
Capa de Dominio (Patrones GRASP)
Patrones GRASP
Patrones de Principios Generales para Asignar
Responsabilidades
– Principios fundamentales para guiar la asignación de responsabilidades
a objetos.
– Experto en Información.
– Creador.
– Controlador.
– Alta Cohesión.
– Bajo Acoplamiento.
Capa de Dominio (Patrones GRASP)
Solución:
– Asignar una responsabilidad a la clase que tiene la información
necesaria para realizarla.
– La aplicación del patrón requiere tener claramente definidas las
responsabilidades que se quieren asignar (postcondiciones de
las operaciones).
– No siempre existe un único experto, sino que pueden existir
diversos expertos parciales que tendrán que colaborar.
Capa de Dominio (Patrones GRASP)
Venta Producto
LíneaVenta artículoID
fecha contiene descrito por
hora descripción
1 1..* cantidad * 1 precio
getSubtot ()
getTotal () getPrecio ()
V:Venta P:Producto
Lv:Venta
Total:= getTotal ()
* Subtot := getSubtot ( )
Precio := getPrecio ( )
Venta Producto
LíneaVenta artículoID
fecha contiene cantidad descrito por
hora 1 1..* * 1 descripción
getSubtot () precio
getTotal ()
getPrecio ()
Capa de Dominio (Patrones GRASP)
Venta Producto
fecha contiene LíneaVenta descrito por artículoID
hora cantidad
1 1..* * 1 descripción
getTotal () getSubtot () precio
getPrecio ()
Patrón Creador
Contexto: Asignación de responsabilidades a objetos
Venta Producto
fecha contiene LíneaVenta descrito por artículoID
hora 1..*
cantidad * 1 descripción
1
precio
create (prod,cant)
Lv:LíneaVenta
Capa de Dominio (Patrones GRASP)
Venta
fecha contiene LíneaVenta
hora cantidad
1 1..*
crearLíneaVenta (prod,cant) create (prod,cant)
descrito por
Producto
artículoID
descripción
precio
Capa de Dominio (Patrones GRASP)
Problema:
– ¿Qué objeto es el responsable de tratar un evento externo?
Solución:
– Asignar esta responsabilidad a un controlador.
– Un controlador es un objeto de una clase (no pertenece a la
interfaz usuario).
– Posibles controladores:
Controlador de Fachada: Una clase que representa todo el sistema.
Controlador de Caso de uso: Una clase que representa una instancia de
un caso de uso.
Capa de Dominio (Patrones GRASP)
La Tienda Plus
Cantidad:
Cajero
Introducir Artículo Cancelar
actionPerformed (actionEvent)
Opciones de controlador
Capa de Interfaz
:IntroducirArtículo
:IU :Obj1 ...
Control :Obj2
Acoplamiento
Medida del grado de conexión, conocimiento y dependencia de una
clase respecto a otras clases
A
atributo: B
operac (b:B): B
Capa de Dominio (Patrones GRASP)
Acoplamiento
– Evitar que cambios en una clase tengan efecto sobre otras clases.
– Facilitar la comprensión de las clases (sin recurrir a otras).
– Facilitar la reutilización.
Capa de Dominio (Patrones GRASP)
Cohesión
Medida del grado de relación y de concentración de las distintas
responsabilidades de una clase
Cohesión
Una clase con cohesión alta:
– Tiene pocas responsabilidades en un área funcional.
– Colabora con otras clases para hacer las tareas.
– Suele tener pocas operaciones muy relacionadas funcionalmente.
– Ventajas: fácil comprensión y fácil reutilización y mantenimiento.
Se describe cómo los objetos colaboran entre sí para realizar cierta activida
(interacción)
– Diagramas de Secuencia
Destacan la ordenación temporal de los mensajes
– Diagramas de Colaboración
Destacan la organización estructural de los objetos participantes
Diagramas de Interacción
– Sintaxis mensajes:
return := mensaje (parametro: tipoParametro): tipoRetorno
Diagramas de Secuencia
Representan escenarios.
Incluye:
– Objetos y su línea de vida.
– Mensajes.
– Información de control: condiciones y marcas de iteración.
– Indicar el objeto devuelto por el mensaje: return.
:A :B :C
z:= Mensaje 1 parámetros
resultado
Mensaje 2 (x,y)
línea vida
objeto destinatario
emisor
:A :B :A
msj1( ) msj1()
msj2( )
msj2( )
msj3( )
msj4( )
Creación de objetos
– Mensaje de creación apunta al símbolo del objeto.
Destrucción de objetos
– Fin de la línea de vida del objeto.
estereotipos
:A
<<create>>
:B
<<destroy>>
Mensajes condicionales
:A :B
msj1( )
[X] msj2( )
:A :B :C
msj1( )
[X] msj2( )
[Y] msj3( )
Diagramas de Secuencia
:A :B
msj1( )
* [X]: msj2( )
:A :B :C
msj1( )
msj2( )
msj3( )
* [X]
msj4( )
Diagramas de Secuencia
:A :B
msj1( )
*: msj2( )
:A :B
msj1( )
msj2( ) no subrayada,
es una clase
Representan escenarios.
Incluye:
– Objetos y ENLACES (relaciones estructurales objetos).
– Mensajes.
– Información de control: condiciones y marcas de iteración.
– Indicar el objeto devuelto por el mensaje: return.
msj1( )
:InstanciaClaseA
1: msj2 ( )
2: msj3 ( )
:InstanciaClaseB
Ejemplos de Diagramas de Interacción
:ControlVenta :Venta
realizarPago(dinero
entregado)
realizarPago(dinero entregado) create (dinero entregado)
:Pago
realizarPago(dinero
entregado) 1: realizarPago(dinero entregado)
:Control
:Venta
Venta
1.1: create(dineroentregado)
:Pago
Diagramas de Colaboración
Enlaces
– Camino de conexión entre dos objetos. Indica que es posible alguna forma
de navegación entre los objetos.
1: mensaje 1 ()
2: mensaje 2 ( )
:A :B
2.1: mensaje 3 ( )
línea del enlace
En un mismo enlace puede haber múltiples mensajes en ambas direcciones.
Mensajes
– Expresión del mensaje y flecha que indica la dirección. Añadir número de
secuencia para mostrar el orden secuencial.
msj1 () 1: msj2()
2: msj3()
3: msj4()
:Registro :Venta
3.1: msj5()
Diagramas de Colaboración
:Registro
1: create (cajero)
:Registro :Venta {new}
<<create>>
1: hacer (cajero)
:Registro :Venta {new}
Diagramas de Colaboración
segundo
tercero
msj1() 1: msj2()
:Clase A :Clase B
1.1: msj3()
primero 2.1: msj5()
2: msj4()
:Clase C
quinto
cuarto 2.2: msj6()
sexto :Clase D
Diagramas de Colaboración
Mensajes condicionales
Caminos condicionales
2: msj6 ()
1b.1: msj5 ()
:Clase D :Clase C
Iteración o bucle
Estos dos símbolos * utilizados conjuntamente implican iteración la doble caja indica un
sobre el multiobjeto y el envío del mensaje msj2 a cada uno de los multiobjeto (colección)
miembros
msj1 () msj2 ()
:Clase A Clase B
Equivalencia semántica.
Simples para comportamientos simples.
Si hay mucho comportamiento condicional, usar diferentes escenarios.
Diagramas de secuencia muestran mejor el orden en que se ejecutan los
mensajes.
Diagramas de colaboración muestran claramente los objetos con los que
interactúa un determinado objeto.
Diagrama de Clases de Diseño