diagramas uml y ejemplos prácticos
DESCRIPTION
Diagramas de casos de uso. Diagramas de estructura (Clases, Objetos, Componentes, Estructuras Compuestas, Despliegue, Paquetes) Diagramas de comportamiento(Interacción, Estado, Actividad, Comunicación, Secuencia, Visión del Conjunto de la Interacción, Diagrama de Tiempo) OCL. Ejemplos.TRANSCRIPT
![Page 1: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/1.jpg)
UMLUML:Lenguaje Unificado deLenguaje Unificado de Modelado http://uml.org
Tema 4
TACC II1
TACC IICurso 2008/09
![Page 2: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/2.jpg)
IntroducciónIntroducción
Similitud:Similitud: Arquitectos, edificios, planosIng. Inf., programas, diagramas
UML Unified Modeling Language. Versión 2.0 (finales 2004)Diagramas (ing inf )Diagramas (ing. inf.)
Usados como esquemas y menos con información rigurosa (“planos de arquitectos”)Dos modos:
• Ingeniería inversa: a partir de código hacer diagramas• Ingeniería directa: hacer diagramas y luego implementar
DominioMundo en el que hay definido un problema
Modelo:Abstracción de un problema
2
Abstracción de un problemaFormado por objetos
![Page 3: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/3.jpg)
IndiceIndice
Diagramas de Casos de Uso.Diagramas de EstructuraDiagramas de Estructura.Diagramas de Comportamiento.OCL.H i tHerramientas.Ejemplos.j pBibliografía.
3
![Page 4: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/4.jpg)
Casos de UsoCasos de Uso
D ib é h l i t d d l tDescriben qué hace el sistema desde el punto de vista de un observador externo.
Ponen énfasis en qué hace el sistema, no en cómo lo hace.cómo lo hace.
Un escenario es una instancia particular de unUn escenario es una instancia particular de un diagrama de casos de uso.
Ejemplo de lo que ocurre cuando alguien interactúa con el sistema
4
![Page 5: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/5.jpg)
Casos de UsoCasos de Uso
A t Al t i t ( tActor = Algo con comportamiento (persona, otro programa, organización...), que interactua con el sistema.sistema.
Escenario (instancia de caso de uso) =Escenario (instancia de caso de uso) Secuencia de acciones e interacciones entre los actores y el sistema.
Caso de Uso = Colección de escenarios (éxito y fracaso) que describen actores que usan elfracaso) que describen actores que usan el sistema para conseguir un objetivo.
5
![Page 6: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/6.jpg)
Casos de Uso
P
Casos de Uso
Pasos:
Identificar los límites del sistema.
Identificar los actores principales.
Para cada uno, identificar sus objetivos.
Definir casos de uso que satisfagan susobjetivos.
6
![Page 7: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/7.jpg)
EjemploEjemploAplicación para una Galería de Arte
Te encargan realizar una aplicación para la compra-venta de cuadros. En cuanto a la compra de cuadros, una vezque el agente introduce unos datos básicos sobre el cuadro el sistema debe proporcionar el precio recomendadoque el agente introduce unos datos básicos sobre el cuadro, el sistema debe proporcionar el precio recomendadoque el agente de la galería debería pagar. Si el vendedor del cuadro acepta la oferta, entonces el agente de lagalería introduce más detalles (sobre el vendedor del cuadro y la venta).
Los datos básicos incluyen el nombre y apellidos del artista, el título y fecha de la obra, sus dimensiones, la técnicay y p , y , ,(óleo, acuarela u otras técnicas), el tema (retrato, naturaleza muerta, paisaje, otro) y la clasificación (obra maestra,obra representativa, otro tipo). Si es obra maestra, el precio recomendado se calcula comparando el cuadrointroducido con los que hay en el registro de cuadros, tomando el más parecido y aplicando un algoritmo que tieneen cuenta la coincidencia de tema, la técnica y las dimensiones del cuadro. El sistema debe utilizar información desubasta de todo el mundo que ahora la galería recibe en un CD de manera mensual. Para una obra representativa,el precio recomendado se calcula como si fuera una obra maestra y luego se aplica una corrección. Para una obrade otro tipo, se calcula utilizando el área del cuadro y un coeficiente de moda para el artista. Si no hay coeficiente demoda para un artista, el agente tiene por norma no comprar el cuadro. El coeficiente de moda varia de mes a mes.
Si el cuadro finalmente se compra, se introducen datos adicionales.
En cuanto a la venta de cuadros por parte de la galería, el sistema simplemente registra la fecha de venta, el nombrey dirección del comprador y el precio de venta real.y p y p
El sistema también deberá detectar nuevas tendencias en el mercado de arte tan pronto como sea posible. La ideaes detectar secuencias de compras por valores mayores que los esperados por la obra de un artista determinado, detal manera que tu cliente pueda comprar cuadros de ese artista antes de que otros detecten la tendencia. Con el
7
objetivo de detectar cuándo el precio de venta es mayor que el precio esperado cuando tu cliente compró el cuadro,se debe mantener un registro de todas las compras y todas las ventas.
Se quieren generar tres informes: compras y ventas realizadas durante un año, y artistas de moda.…
![Page 8: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/8.jpg)
Comprar unaEjemplo pObra maestra
Comprar unaO
Ejemplo
VendedorObra representativa
Comprar unaObra de Otro Tipo
Vender uncuadro
Obra de Otro Tipo
Agente
Producir Informecompras
Comprador
AgenteGalería Producir Informe
ventas
Producir Informetendencias
8Actualizar
Coeficiente de moda
![Page 9: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/9.jpg)
EjemploActores primarios:
Caso de uso: comprar una obra maestra
EjemploActores primarios:
Agente Galería, vendedorInteresados y Objetivos:
• Agente: quiere obtener una recomendación lo más acertada posible del precio á i d d d á idmáximo recomendado de manera rápida.
• Vendedor: quiere vender el cuadro a un precio razonable de manera rápida.Precondiciones:
El agente ha entrado en la aplicación.El agente ha entrado en la aplicación.Garantía de éxito (post-condiciones):
Se registra la venta.Escenario Principal de Éxito:
1 El t i t d l d i ió d l d1. El agente introduce la descripción del cuadro.2. El sistema busca el cuadro más parecido del mismo autor.3. El sistema presenta el precio recomendado.4. El agente hace una propuesta por debajo del precio recomendado, y el vendedor age e ace u a p opues a po debajo de p ec o eco e dado, y e e dedoacepta la oferta.5. El agente introduce información de la venta.
Extensiones:2 N h i ú d id d l i t í l i t t
9
2a. No hay ningún cuadro parecido del mismo autor, así que el sistema no presenta una recomendación.4a. El vendedor no acepta la oferta y la venta no se produce.
![Page 10: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/10.jpg)
Ejemplo
TPV
EjemploTerminal Punto de Venta
TPVProcesar
VentaServicio
cajeroProcesar
Devoluciones
Serviciode Autorización
de Pagos
«actor»
Calculador de
AnalizarActividad
«actor»Analizador deA ti id d d pImpuestos
«actor»
Actividad deVentas
...
Sistema decontabilidad
GestionarSeguridad
10Administradordel sistema
GestionarUsuarios
![Page 11: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/11.jpg)
Diagramas de Caso de UsoDiagramas de Caso de UsoRelaciones
R l i t d dRelaciones entre dos casos de usoGeneralización
“E ti l d ”“Es un caso particular de …”Herencia de clases en POO (overriding)También se puede tener esta relación entre dos actoresTambién se puede tener esta relación entre dos actores
Inclusión (include)“Implica hacer también …”
Extensión (extend)“Se insertará en …” un determinado punto (llamado “punto de extensión”) dependiendo de una condiciónextensión”) dependiendo de una condición. Si un caso de uso depende de varios casos de uso mediante “extend” tendrá un punto de extensión para cada uno.
11
![Page 12: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/12.jpg)
EjemploEjemploGestión de Pacientes
Cancel Appointment
Make AppointmentScheduler
<<include>>
Patient Request Medication
Check Patient Record<<include>>
DoctorDefer Payment<<extend>>
Clerk
Pay Bill
Extensions PointsMore Treatment
12Bill InsuranceMore Treatment
![Page 13: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/13.jpg)
EjemploEjemploGestión de Proyectos
13
![Page 14: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/14.jpg)
Casos de UsoCasos de Uso
Son útiles en tres áreas:
Especificación de requisitos
Comunicación con los clientesSu simplicidad los convierte en excelentes medios de comunicación
Generación de casos de pruebaGeneración de casos de pruebaA partir de los escenarios de un Caso de Uso
14
![Page 15: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/15.jpg)
IndiceIndiceDiagramas de Casos de Uso.Diagramas de Casos de Uso.Diagramas de Estructura.
Clases y Objetos.Clases y Objetos.Componentes.Estructuras Compuestas.Estructuras Compuestas.Despliegue.Paquetes.q
Diagramas de Comportamiento.OCL.Herramientas.Ejemplos.
15Bibliografía.
![Page 16: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/16.jpg)
Clases y ObjetosClases y Objetos
Los diagramas de Clases y de Objetos son losLos diagramas de Clases y de Objetos son los principales modos de representar los aspectos estructurales en UML.
Diagramas de clases. Estructura del sistema.ClasesClases.
Atributos: Tipos, valores iniciales.Operaciones: visibilidad.
Relaciones con otras clases: AsociacionesRelaciones con otras clases: Asociaciones
Diagramas de objetos. Estructura del sistema en ti d j iótiempo de ejecución.
Objetos. Instancias de una Clase. Atributos (valores actuales).
16Links. Relaciones entre objetos, instancias de asociaciones.
![Page 17: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/17.jpg)
Clases y ObjetosClases y Objetos
Elemento
Diagrama de
HidrógenoCarbono
ag a a declases
:Hidrógeno:Hidrógeno
Di d:Hidrógeno :Hidrógeno:Carbono :Carbono
Diagrama deobjetos
17:Hidrógeno :Hidrógeno
![Page 18: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/18.jpg)
Clases y ObjetosNombre
Clases y ObjetosEn cursiva si es
abstractaCirculo
-radio: doublet d bl
Nombre de la clase
At ib t
abstracta
-centrox: double-centroy: double
Atributosvisibilidad
+Area(): double+Perímetro(): double Operaciones
Nombre d l bj
Clase unCirculo: Circulo
radio = 3.4centrox = 2 0
del objeto del objeto
Valores de18
centrox 2.0centroy = 2.0 los atributos
![Page 19: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/19.jpg)
Clases
Notación para atributos:Atributos
p
[visibilidad] [/] nombre [: tipo] [multiplicidad] [= valor] [{ propiedad }]
Visibilidad (opcional): Pública: +Privada: -Protegida: #Paquete: ~
“/” indica que el atributo es derivado.La multiplicidad va entre [ ] y por defecto vale 1.Propiedades válidas: {readOnly} {union} {subsets <propertyPropiedades válidas: {readOnly}, {union}, {subsets <property-name>}, {redefines <property-name>}, {ordered}, {bag}, {seq}, {sequence}, y {composite}.
19
Un atributo subrayado es estático.
![Page 20: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/20.jpg)
ClasesEjemplo atributos
ClaseAname: Stringshape: Rectangle+ size: Integer [0..1]/ area: Integer {readOnly}h i ht I t 5height: Integer = 5width: Integer# pos: Point
ClaseBid: {redefines name}
20
id: {redefines name}shape: Square
![Page 21: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/21.jpg)
Clases
N t ió ét d
Métodos
Notación para métodos:
[visibilidad] nombre ( [lista-parametros] ) : [{propiedad}][ ] ( [ p ] ) [{p p }]
Visibilidad (opcional).nombre del métodonombre del métodolista de parámetros formales, separados por coma:
direccion nombre : tipo [multiplicidad] = valor [{propiedad}]Los métodos estáticos se subrayan.
Ejemplos:Ejemplos:display ()-hide ()+createWindow (location: Coordinates container: Container [0 1]): Window
21
+createWindow (location: Coordinates, container: Container [0..1]): Window+toString (): String
![Page 22: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/22.jpg)
Asociaciones
Un Círculo contiene un Punto
Composición
Un Círculo contiene un PuntoSe representa con una Composición
Círculo Punto
Relación del tipo todo/parteRelación del tipo todo/parteEl todo es el CírculoLa parte es el Punto
Es una relación fuerteSi el Círculo es destruido o copiado, también lo es el PuntoLa cardinalidad en la parte del todo es 0..1 o 1.
22
La cardinalidad en la parte del todo es 0..1 o 1.
![Page 23: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/23.jpg)
Asociaciones
Las asociaciones pueden tener etiquetas:Navegación, Roles, Cardinalidad
Las asociaciones pueden tener etiquetas:NombreRoles en la relaciónMultiplicidad (cardinalidad) navegación
Ej l d di lid d
Círculo Puntocentro
1N ióEjemplos de cardinalidad:
1..* mínimo 1, no hay máximo0..* mínimo 0, no hay máximo
Navegación:UnidireccionalBidireccional0.. mínimo 0, no hay máximo
0..1 mínimo 0, máximo 11,2,4 uno, dos o cuatro3 exactamente tres
BidireccionalNo especificado.No navegable (x)
23
3 exactamente tres No navegable (x)
![Page 24: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/24.jpg)
AsociacionesEjemplos de Navegación y Cardinalidad
24
![Page 25: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/25.jpg)
EjercicioEjercicioRepresenta mediante un diagrama de clases la siguienteRepresenta mediante un diagrama de clases la siguienteespecificación:
Una aplicación necesita almacenar información sobreempresas, sus empleados y sus clientes.Ambos se caracterizan por su nombre y edad.L l d ti ld b t l l dLos empleados tienen un sueldo bruto, los empleados queson directivos tienen una categoría, así como un conjunto deempleados subordinados.pDe los clientes además se necesita conocer su teléfono decontacto.L li ió it t l d t d l dLa aplicación necesita mostrar los datos de empleados yclientes.
25
![Page 26: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/26.jpg)
EjercicioEjercicioPersonaPersona
+ mostrar()
- nombre- edad
+ mostrar()
- nombre- edad
t ()
- sueldo_bruto - nombre_empresa- telefono_de_contacto
Empleado Clientesubordinados
t ()
- sueldo_bruto - telefono_de_contacto
Empleado Clientesubordinados
0..*
+mostrar()
+ mostrar ()+ calcular_salario_neto()
empleados clientes+mostrar()
+ mostrar ()+ calcular_salario_neto()
1..*0..*
- categoria
DirectivoEmpresa
b
empleados
- categoria
DirectivoEmpresa
b1
1..*
0..*
26+ mostrar ()- nombre
+ mostrar ()- nombre
![Page 27: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/27.jpg)
Asociaciones: AgregaciónAsociaciones: Agregación
Cuando la relación todo/parte no es tan fuerte, se utiliza Agregación, g g
Ventana FigurasusFiguras
0 *0..
La ventana contiene figuras, pero cada una puede existir sin la otra
27
![Page 28: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/28.jpg)
Asociaciones y DependenciaAsociaciones y Dependencia.
Existen relaciones de conocimiento entre clases que no implican una relación todo/parte
Cliente Cuentatitular1 *
cuentas0 *1.. 0..
Dependencia: relación muy débil.
VentanasusFiguras
0..*Figura
Draw(ContextoDibujo)
suContexto
28
ContextoDibujo
Dependencia
![Page 29: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/29.jpg)
Clases AsociativasClases Asociativas
Asociación con atributos propios.
Nombre asociación
Empleado Persona1
casado con >1
Matrimoniofecha
2testigos
fecha0..*
29Clase Asociativa
![Page 30: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/30.jpg)
Clases y Objetosy jEstilo
Los atributos no deben ser objetos (utilizar relaciones en tal caso).
En los diagramas de clases no suelen aparecerEn los diagramas de clases no suelen aparecer (son detalles de implementación y no de diseño):diseño):
ConstructoresMétodos de acceso (“get/set”)Métodos de acceso ( get/set )Métodos de gestión de elementos de una asociación o agregación (por ejemplo, “add/remove”)
30
![Page 31: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/31.jpg)
EjemploEjemplo
Cliente
nombre
Orden
fecha1 0..*dirección estado
calcImpuestocalcTotalcalcPesoTotalPago
1..* 1 calcPesoTotalPago
monto 1
EfectivoCrédito Cheque DetalleOrden Item
1..*
0 * 1
línea
monedafechanúmerotipo
autorizado
nombreidentifBanco
autorizado
cantidadtipoImpuesto
calcSubtotalcalcPeso
pesodescripción
precioPorCantidadobtenerPeso
0.. 1
31
autorizado
![Page 32: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/32.jpg)
EjercicioEjercicioEspecificar un diagrama de clases que describa redesde ordenadores.Los elementos que se pueden incluir en la red son:
S id PC IServidor, PC, Impresora.Hub, Cable de red.
Los PCs pueden conectarse con un único Hub losLos PCs pueden conectarse con un único Hub, losservidores con uno o varios.Los Servidores y PCs pueden generar mensajes, conuna cierta longitud.Los Hubs tienen un número de puertos, algunos de loscuales puede usarse para conectar con otros Hubscuales puede usarse para conectar con otros Hubs.Tienen cierta probabilidad de “perder” mensajes.Las impresoras pueden averiarse, con cierta
32
Las impresoras pueden averiarse, con ciertaprobabilidad, durante cierto tiempo.
![Page 33: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/33.jpg)
Ejercicio Posible SoluciónEjercicio. Posible Solución.
33“Los PCs pueden conectarse con un único Hub, los servidores con uno o varios”Podemos modelarlo como una restricción OCL, o bien añadir asociaciones desde Servidor y PC
![Page 34: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/34.jpg)
Más sobre asociacionesMás sobre asociacionesAsociaciones n-arias
Asociaciones entre más de dos clases:
Añod
E i J d
temporada
Equipo Jugadorpichichiequipo
34
![Page 35: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/35.jpg)
Más sobre asociaciones
A i i d i d ( “/” d l t d l b )
Más sobre asociacionesAdornos en asociaciones y fin de asociación.
Asociaciones derivadas (con un “/” delante del nombre).Propiedades, cerca del nombre de la asociación.Los finales de la asociación pueden adornarse con:Los finales de la asociación pueden adornarse con:
Multiplicidad.Nombre (rol).( )Propiedades:
{subsets <nombre-prop>}.{redefine <nombre-fin-asoc>}{redefine <nombre-fin-asoc>}.{union}.{ordered} (un conjunto ordenado).{bag} (conjunto con repetición){bag} (conjunto con repetición).{sequence} o {seq} (bag ordenado).
35
![Page 36: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/36.jpg)
Más sobre asociacionesMás sobre asociacionesAdornos en asociaciones y fin de asociación: Ejemplos
A Ba b
A B0..1 *{ordered}
C D1 0..1
d
{subsets b}{subsets b}
Para un objeto de tipo C, la colección d es un subconjunto de la colección b.
36
![Page 37: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/37.jpg)
Más sobre asociaciones
Un cualificador declara una partición del conjunto de instancias asociadas con
Más sobre asociacionesAsociaciones Cualificadas
Un cualificador declara una partición del conjunto de instancias asociadas con respecto a la instancia cualificada.
Banco TableroBancoNumCuenta
*
Ajedrezfila: Filacol: Colum
1
Persona
*0..1
Casilla
11
Dado un objeto cualificado, el número de objetos al otro lado de la asociación i d d l lti li id d d l d
Persona Casilla
viene dado por la multiplicidad declarada.0..1 : el valor del cualificador es único.0..* : el conjunto de instancas asociadas se particiona en subconjuntos.
Similar a un array asociativo map o tabla hash
37
Similar a un array asociativo, map o tabla hash.
![Page 38: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/38.jpg)
Pre y Post Condiciones NotasPre- y Post- Condiciones, Notas
pre-condición
body-condition
post-condición
38
![Page 39: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/39.jpg)
InterfacesInterfaces<<interface>>
ClaseClase MiInterfaz
métodos MiInterfaz
ClaseMiInterfaz
39
![Page 40: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/40.jpg)
PlantillasPlantillas
FArray<T -> Point>Una clase anónima ligada:
T -> Point
40K -> 10
![Page 41: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/41.jpg)
EjercicioExamen Junio 2008.
Realiza el diseño de una aplicación para la gestión de pedidos. La aplicación deberámanejar clientes (se guarda su nombre, dirección, teléfono y e-mail), que puedenrealizar pedidos de productos, de los cuales se anota la cantidad en stock. Unp p ,cliente puede tener una o varias cuentas para el pago de los pedidos. Cadacuenta está asociada a una tarjeta de crédito, y tiene una cierta cantidaddisponible de dinero, que el cliente debe aumentar periódicamente para poderrealizar nuevos pedidos.realizar nuevos pedidos.
Un cliente puede empezar a realizar un pedido sólo si tiene alguna cuenta con dinerodisponible. Al realizar un pedido, un cliente puede agruparlos en pedidos simpleso compuestos. Los pedidos simples están asociados a una sola cuenta de pago y(por restricciones en la distribución) contienen un máximo de 20 unidades del(por restricciones en la distribución) contienen un máximo de 20 unidades delmismo o distinto tipo de producto. A su vez, un pedido compuesto contiene dos omás pedidos, que pueden ser simples o compuestos. Como es de esperar, elsistema debe garantizar que todos los pedidos simples que componen un pedidocompuesto se paguen con cuentas del mismo cliente Además sólo es posiblecompuesto se paguen con cuentas del mismo cliente. Además, sólo es posiblerealizar peticiones de productos en stock.
Existe una clase (de la cual debe haber una única instancia en la aplicación)responsable del cobro, orden de distribución y confirmación de los pedidos. Elp y pcobro de los pedidos se hace una vez al día, y el proceso consiste en comprobartodos los pedidos pendientes de cobro, y cobrarlos de la cuenta de pagocorrespondiente. Si una cuenta no tiene suficiente dinero, el pedido se rechaza (sies parte de un pedido compuesto, se rechaza el pedido entero). Una vez que el
41
p p p , p ) qpedido está listo para servirse, se ordena su distribución, y una vez entregado,pasa a estar confirmado.
Se pide un diagrama de clases de diseño.
![Page 42: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/42.jpg)
Solución
42
![Page 43: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/43.jpg)
Solucion (ii)Solucion (ii)Nota: pedidos_simples es una asociación derivada. El atributo total de Pedido es derivadoPedido es derivado.Habría que incluir las siguientes restricciones OCL:
C t t li didContext realizar_pedido:pre: self.cuentas->exists(c | c.disponible > 0)
Context Pedido Compuesto:Context Pedido Compuesto:inv: self.pedidos_simples->cuenta->cliente->asSet()->size() = 1
Context Pedido:Context Pedido:inv: self.t_productos.num->sum() <= 20
Context añadir pedido(p: Producto num: int):Context añadir_pedido(p: Producto, num: int):pre: p.stock>=num
Se usa el composite y el singleton (para la clase “Controlador43
Se usa el composite y el singleton (para la clase Controlador Pedidos”, aunque esto no queda reflejado en el diseño a este nivel de abstracción).
![Page 44: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/44.jpg)
Ejercicio: BibliotecaEjercicio: Biblioteca
Una biblioteca tiene copias de libros Estos últimos seUna biblioteca tiene copias de libros. Estos últimos se caracterizan por su nombre, tipo (novela, teatro, poesía, ensayo), editorial, año y autor. Los autores se caracterizan por su nombre, nacionalidad y fecha de nacimiento.Cada copia tiene un identificador y puede estar en laCada copia tiene un identificador, y puede estar en la biblioteca, prestada, con retraso o en reparación.Los lectores pueden tener un máximo de 3 libros en préstamopréstamo. Cada libro se presta un máximo de 30 días, por cada día de retraso, se impone una “multa” de dos días sin pposibilidad de coger un nuevo libro.Realiza un diagrama de clases y añade los métodos necesarios para realizar el prestamo y devolución denecesarios para realizar el prestamo y devolución de libros.
![Page 45: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/45.jpg)
LibroCopia
- id : Identifier- estado: estadoCopia
Libro- titulo : string- tipo: tipoLibro- editorial: string
i t
libro11..*
ejemplar
Prestamo
0..3 prestamos - anyo: intobras1..*
- inicio: Date- fin: Date
0..1 lector Autorb t i
autor1fechas
Lector- nSocio : Identifier- nombre: string
- nombre: string- nacionalidad: string- fechaNacimiento: Date
- telefono: string- direccion: string
<<enumeration>>tipoLibro
novelateatro
i
+ devolver(id: Identifier, fechaAct: Date){precondition: prestamos.notEmpty()}
1
<<enumeration>>estadoCopia
poesiaensayo
Multa
{precondition: prestamos.notEmpty()}+ prestar(id: Identifier, fechaAct: Date){precondition: multa==0}- multar(dias : int)
0..1multa
prestadoretrasobibliotecareparacion
- fInicio: Date- fFin: Date
![Page 46: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/46.jpg)
Objetos+ mostrar()
- nombre- edad
Persona
+ mostrar()
- nombre- edad
Persona
Objetos+ mostrar ()+ l l l i t ()
- sueldo_bruto - nombre_empresa- telefono_de_contacto
Empleado Clientesubordinados
+ mostrar ()+ l l l i t ()
- sueldo_bruto - nombre_empresa- telefono_de_contacto
Empleado Clientesubordinados
+mostrar()
()
+ calcular_salario_neto()
- categoria
DirectivoEmpresa
- nombre
empleados clientes+mostrar()
()
+ calcular_salario_neto()
- categoria
DirectivoEmpresa
- nombre
empleados clientes
+ mostrar ()+ mostrar ()
e1 : Empleado- nombre=“Pedro”- edad=23
e2 : Empleado- nombre=“María”- edad=25 edad 23
- sueldo_bruto=30000edad 25
- sueldo_bruto=36000subordinados empleados empleados
d1 : Directivo- nombre=“Luis”
d d 35
Empresa- nombre=“HGJ”
empleados
- edad=35- sueldo_bruto=36000- categoria=“C1”
c1 : Clienteclientes
46
- nombre=“Luis”- edad=35- nombre_empresa=“Macroware”- telefono_de_contacto=91555666
![Page 47: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/47.jpg)
ComponentesComponentes
C t “U id d M d l i t fComponente = “Unidad Modular con interfacesbien definidos que es reemplazable en suentorno”entorno .
É f i tili ió l i tÉnfasis en reutilización y encapsulamiento.
Servicios que provee y requiere (interfaces).
Componentes lógicos (componentes de negocio,de proceso) y físicos (EJB, CORBA, COM+, .NET,
47…)
![Page 48: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/48.jpg)
ComponentesComponentes
Interfacesque ofrece
Interfacesque requiere
48
![Page 49: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/49.jpg)
ComponentesComponentes
Vi t d j blVista de caja blanca
49
![Page 50: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/50.jpg)
Estructuras Compuestas
C i ió d l t ( l ifi d
Estructuras Compuestas
Composición de elementos (clasificadores ocolaboraciones)
Instancias en tiempo de ejecución que colaborana través de enlaces para alcanzar objetivosa través de enlaces para alcanzar objetivoscomunes.
Colaboraciones: a través de roles.
Se añade a las clases estructura internas ypuertos.
50
![Page 51: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/51.jpg)
Estructuras CompuestasEstructura interna de una clase
Estructuras CompuestasEstructura interna de una clase.
Estructura interna de una clase. Multiplicidades.
51
![Page 52: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/52.jpg)
Estructuras CompuestasEstructuras CompuestasAlternativa a relaciones de composición
A li tiApplication
ButtonWindow 2
Application
Button2
Window
52
![Page 53: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/53.jpg)
Estructuras CompuestasEstructuras Compuestas
Estructura interna de una clase. Constructor.
53
![Page 54: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/54.jpg)
Estructuras Compuestas
E t t i t d l b ió
pColaboración.
Estructura interna de una colaboración.
54
![Page 55: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/55.jpg)
Estructuras Compuestas
O i d l b ió t Bi di
pColaboración.
Ocurrencia de una colaboración en otra. Binding.
55
![Page 56: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/56.jpg)
Estructuras CompuestaspColaboración.
Template de colaboración.
56
![Page 57: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/57.jpg)
DespliegueDespliegue
D fi l it t d j ió d i tDefinen la arquitectura de ejecución de un sistema.
Representa la asignación de artefactos software a nodosRepresenta la asignación de artefactos software a nodos.
Nodos = elementos hardware, o entornosde ejecución software.
Artefactos = elementos concretos (p.e.:ficheros) que son el resultado del procesode desarrollo.
57
![Page 58: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/58.jpg)
Desplieguep gRelaciones entre artefactos.
“Manifestación” de elementos a través de
artefactos
58
![Page 59: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/59.jpg)
Desplieguep gEjemplo.
59
![Page 60: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/60.jpg)
PaquetesPaquetes
Un paquete es un contenedor que agrupa elementos relacionados.
Los diagramas de paquetes muestran la estructura de alto nivel de la aplicaciónnivel de la aplicación.
60
![Page 61: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/61.jpg)
PaquetesqEjemplo.
61
![Page 62: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/62.jpg)
IndiceIndice
Diagramas de Casos de UsoDiagramas de Casos de Uso.Diagramas de Estructura.Diagramas de ComportamientoDiagramas de Comportamiento.
Diagramas de Interacción.Diagramas de Comunicación.Diagramas de Secuencia.Diagramas de visión de conjunto de la interacción.Diagramas de tiempo.Diagramas de tiempo.
Diagramas de Estados.Diagramas de Actividad.
OCLOCLHerramientas.Ejemplos
62
Ejemplos.Bibliografía.
![Page 63: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/63.jpg)
Diagramas de InteracciónDiagramas de Interacción
El t i t t t é dEl comportamiento se representa a través decolaboraciones:
Colección de objetos:
Instancias
RolesRoles
Especifica cómo los objetos y las asociaciones cooperan
En un contexto dado
63Con un propósito específico
![Page 64: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/64.jpg)
Diagramas de Interacción
El t ó d j d t d
Diagramas de Interacción
El patrón de mensajes dentro de unacolaboración es una interacción:
Mensajes: señales, invocaciones, interacciones implícitasa través de condiciones y eventos temporales.
Especifica secuencia de mensajes para cumplir elobjetivo de la colaboraciónobjetivo de la colaboración
Para especificar la interacción, es necesario especificarprimero la colaboraciónprimero la colaboración
Semántica basada en trazas.64
![Page 65: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/65.jpg)
Diagramas de InteracciónDiagrama de Comunicación
Diagramas de InteracciónDiagrama de Comunicación
Muestra un contexto y una interacciónMuestra un contexto y una interacción.
Di d S iDiagrama de Secuencia
Representación explícita de la secuencia decomunicaciones, eje temporal.
Es más apropiado para aplicaciones de Tiempo Realy escenarios complicados
65
y escenarios complicados
![Page 66: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/66.jpg)
Diagramas de Interacción
E t t d l ti i t
Diagramas de Interacción
Estructura de los participantesDiagramas de Comunicación
Patrones de comunicaciónDiagramas de ComunicaciónDiagramas de Secuencia
Temporización de la comunicación.pDiagramas de SecuenciaDiagramas de Tiempo.
Estructuración de las interaccionesDiagrama de visión de conjunto de la
66
g jinteracción.
![Page 67: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/67.jpg)
Diagramas de Comunicación
R t l bj t ( l i t i )
Diagramas de Comunicación
Representa los objetos (roles o instancias)necesarios para una interacción y susrelaciones.relaciones.
Puede también representar la secuencia dePuede también representar la secuencia demensajes
Especifica el orden relativo mediante números
Similar a un diagrama de objetos, muestra elcontexto necesario para una colaboración.
67
![Page 68: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/68.jpg)
Diagramas de Comunicaciónparticipantes
Diagramas de Comunicación
Wi d / Ob Slidi B I
p p
:Window / Observer : SlidingBarIcon
l
relaciones
roles
/Subject :CallQueue
68
![Page 69: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/69.jpg)
Diagramas de ComunicaciónDiagramas de Comunicación
Wi d / Ob Slidi B I:Window / Observer : SlidingBarIcon
restricción
{Observer.reading=length(Subject.queue)/Subject :CallQueue
{ g g ( j q )andObserver.range = (0..Subject.capacity)}
69
![Page 70: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/70.jpg)
Diagramas de ComunicaciónDiagramas de Comunicación
realizarPago(cantidad)
Llamadas anidadas:
:Registro :VentarealizarPago(cantidad) 1: realizarPago(cantidad)
1.1: crear(cantidad)
:Pago
Iteraciones:
:Simulador :RandomEjectuar() 1*[i:=1..N]: num:= nextInt()
70
![Page 71: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/71.jpg)
Diagramas de Comunicación
R t j t d i t i l
gMultiobjetos.
Representan conjuntos de instancias en elextremo “muchos” de una relación 1:N o M:N
Una operación sobre cada instancia requiered jdos mensajes:
Iteración para obtener referencias a las instanciasindividuales
Mensaje a cada instancia, usando la referenciatemporal
71
![Page 72: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/72.jpg)
Diagramas de ComunicacióngMultiobjetos.
:Client :Server:Serverservers
1:aServer:=find(specs)
:ServeraServer <<local>>
2:process2:process
72
![Page 73: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/73.jpg)
Diagramas de ComunicacióngCondiciones.
e:ClaseE
2 6()
a:ClaseA b:ClaseBmsg1() 1a [test]: msg2()
2: msg6()
a:ClaseA b:ClaseB
1b [not test]: msg4() 1a.1: msg3()
d:ClaseD c:ClaseC
b [ ot test] sg ()
1b 1 5()
a sg3()
1b.1: msg5()
73
![Page 74: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/74.jpg)
Ejercicio: BibliotecaEjercicio: Biblioteca
Una biblioteca tiene copias de libros Estos últimos seUna biblioteca tiene copias de libros. Estos últimos se caracterizan por su nombre, tipo (novela, teatro, poesía, ensayo), editorial, año y autor. Los autores se caracterizan por su nombre, nacionalidad y fecha de nacimiento.Cada copia tiene un identificador y puede estar en laCada copia tiene un identificador, y puede estar en la biblioteca, prestada, reservada, con retraso o en reparación.Los lectores pueden tener un máximo de 3 libros enLos lectores pueden tener un máximo de 3 libros en préstamo. Cada libro se presta un máximo de 30 días, por cada día p pde retraso, se impone una “multa” de dos días sin posibilidad de coger un libro.Realiza el diagrama de colaboración para el métodoRealiza el diagrama de colaboración para el método devolver()
![Page 75: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/75.jpg)
SoluciónSolución
1: devolver(id, fecha)
1.3 [retraso>0]: multar(retraso)
:Lector
( , )
:Copiaprestamos
1.1: dev:=remove(id)1.3.1a [multa=0]: multa:=
lt M lt
create(fecha,retraso)
dev:Copia1.2: retraso:=getRetraso(fecha)multa:Multa
{new}
multa:Multa1.3.1b [multa<>0]: anyade(fecha,retraso)
![Page 76: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/76.jpg)
SoluciónSolución
1: devolver(id, fecha)
1.3 [retraso>0]: multar(retraso)
:Lector
( , )
:Copiaprestamos
1.1: fec:=remove(id)1.3.1a [multa=0]: multa:=
lt M lt
create(fecha,retraso)
1.2: retraso:=getRetraso(fecha)multa:Multa
{new} fec:Fechafechas
multa:Multa1.3.1b [multa<>0]: anyade(fecha,retraso)
76
![Page 77: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/77.jpg)
Diagramas de ComunicacióngEtiquetas de las flechas.
d d i l l t
Predecesor
predecesor orden-secuencial valor-retorno := nombre-mensaje lista-argumentos
PredecesorLista separada por “,” terminada en “/”El j tá h bilit d h t lEl mensaje no está habilitado hasta que no ocurran los mensajes en la lista
Orden en la secuenciaOrden en la secuenciaLista separada por “.”, terminada en “:”C d té i t i l d id i t d lCada término representa nivel de anidamiento proceduralIteración: *[cláusula interación]Bifurcación: [condición]
77
Bifurcación: [condición]
![Page 78: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/78.jpg)
Diagramas de ComunicacióngEtiquetas de las flechas.
Ejemplos:2: display(x y)2: display(x,y)1.3.1: p:=find(specs)4 [x<0]: invert(x, color)A3,B4/ C3.1:update()1.1 *[i:=1..n]: lecturer()
78
![Page 79: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/79.jpg)
Diagramas de Comunicación
redisplay()
gEjemplo.
:Controller :Windowredisplay()
1:displayPositions(window) 1.1.3.1:add(self)
Li { }
1.1*[i:=1..n]: drawSegment(i)
wire:Wirewire
<< local >> linecontents {new}
:Line {new}wire:Wire
i-1 i
1 1 1 0 i i ()
<< self >>
1 1 1b 1 i i ()
1.1.2: create(r0,r1)1.1.3: display(window)
left:Bead right:Bead
1.1.1a: r0:= position() 1.1.1b: r1:= position()
79
g
![Page 80: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/80.jpg)
Diagramas de Comunicación
P i hil d t l
gObjetos Activos.
Poseen su propio hilo de control
Un objeto pasivo sólo almacena datos
Puede enviar mensajes mientras procesa unpedido (mensaje) que haya recibidopedido (mensaje) que haya recibido
L bj t ti tLos objetos activos se representanfrecuentemente con componentes internas
80
![Page 81: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/81.jpg)
Diagramas de ComunicacióngObjetos Activos. Ejemplo.
:FactoryScheduler:FactoryManager
currentJob:TransferJob1:start(job)A2,B2/2:completed(job)
job
:FactoryJobMgr<<local>> job
B2:completed
1/B1:start(job)
A2:completed
1/A1:start(job)
:Robot :Oven
81
![Page 82: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/82.jpg)
Diagramas de ComunicacióngObjetos Activos. Ejemplo.
Tipos de Flujos de Control
Llamada a procedimiento u otra forma de llamada con anidamiento de control. La secuencia anidada termina antes de que siga la operación que invocó Puedeantes de que siga la operación que invocó. Puede usarse para procesos concurrentes cuando el mensaje es síncrono.Comunicación asincróna, sin anidamiento de control. El objeto que envía no se detiene a esperar respuesta.
Retorno de una llamada a procedimiento. Esta flecha puede omitirse si queda claro por el fin de la activación.
82
![Page 83: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/83.jpg)
Diagramas de Secuencia
R t j t d j t l
Diagramas de Secuencia
Representa conjunto de mensajes entre roles (o instancias) en una interacción
Dos dimensiones:Tiempo (generalmente vertical); puede ser una escala siTiempo (generalmente vertical); puede ser una escala si el sistema es de tiempo real
Dif t i t i ( l t h i t l) lDiferentes instancias (generalmente horizontal); el orden relativo no tiene importancia
Se muestra la existencia y duración de las instancias, pero no sus relaciones
83
![Page 84: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/84.jpg)
Diagramas de Secuencia
Traza: secuencia de ocurrencias de eventos
Diagramas de Secuencia
Traza: secuencia de ocurrencias de eventos <e1 e2 ...en>
La semántica de una interacción es un par de conjuntosLa semántica de una interacción es un par de conjuntosde trazas (válidas e inválidas) [P, I].
P d i ti t i l id l d j tPueden existir trazas no incluidas en los dos conjuntosanteriores.
Equivalencia de interacciones, si sus conjuntos de trazasson iguales.
Una interacción se puede especializar: se añaden mástrazas al conjunto.
84
j
![Page 85: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/85.jpg)
Diagramas de SecuenciaDiagramas de Secuencia
a: lift receiver
:caller :exchange :receiver
b: dial tone
di l di itObjetos c: dial digit
...d: route
Objetos
Focos de d: route
ringing tone phone rings
Focos deControl
answer phone
stop tone stop ringing
Mensajes
85
stop tone stop ringing
![Page 86: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/86.jpg)
Diagramas de SecuenciaDiagramas de Secuenciasd Authenticate User
LoginPage:Servlet
ac:Authentication
C ll
ds:UserDataS i
CurrentUser:UserDataServlet Controller Service UserData
validateCredentials(“Dan”, “b4_23”)restoreUserData(“Dan”)
create(“Dan”,”Administrator”)
currentUsercurrentUser
86
![Page 87: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/87.jpg)
Diagramas de SecuenciaDiagramas de Secuencia
:Pedido preferenteDi t ib id
usualDi t ib id
marcooperador guarda
:Pedido :Distribuidor :Distribuidor
entregar()
loop
alt
entregar()
[for each producto]
[value > 10000]procedure entregar()
foreach producto:if producto.value>10000entregar()
[else]entregar()
ppreferente.entregar()
elseusual.entregar()
end ifend forentregar() end for
end procedure
![Page 88: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/88.jpg)
Diagramas de SecuenciaDiagramas de Secuencia
Gate (formal), con nombre out Unlock
88
out_Unlock
![Page 89: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/89.jpg)
Diagramas de SecuenciaDiagramas de Secuencia
Referencias (Ocurrencias de Interacciones)
Copian el contenido dela interacción referida.
Substitución deparámetros y conexiónde las puertas (gates)formales y actuales
89
formales y actuales.
![Page 90: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/90.jpg)
Diagramas de Secuencia
Fragmentos combinados operadores (i):
gOperadores sobre interacciones.
Fragmentos combinados, operadores (i):
Alternativa (alt).Elección (mediante una guarda) de una interacciónElección (mediante una guarda) de una interacción.
Aserción (assert).La secuencia especificada por el operador es la única válida.a secue c a espec cada po e ope ado es a ú ca á da
Opción (opt).Equivalente a un operador alt con un solo fragmento.
Ruptura (break).El operando se ejecuta en lugar del resto de la interacción englobada en elfragmento “padre”.fragmento padre .
Paralelo (par).Mezcla de las trazas de los operandos (cualquier entrelazado es válidomientras preserve el orden de los eventos de cada operando)
90
mientras preserve el orden de los eventos de cada operando).
![Page 91: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/91.jpg)
Diagramas de Secuencia
Secuenciación débil (seq)
gOperadores sobre interacciones.
Secuenciación débil (seq).Define un conjunto de trazas que cumple:1. Se mantiene el orden de eventos de los operandos2 Eventos de otras líneas de vida de otros operandos pueden venir2. Eventos de otras líneas de vida de otros operandos pueden veniren cualquier orden.3. Eventos de la misma línea de vida de otros operandos se ordenande tal manera que cualquier evento del primer operando va antes queel del segundo.
Secuenciación estricta (strict).Secuenciación estricta en el orden de los eventos de los operandos.
Negativa (neg).Define trazas inválidas.
Región crítica (critical).
91
Los eventos del operando no pueden mezclarse con ningún otro.
![Page 92: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/92.jpg)
Diagramas de SecuenciagOperadores sobre interacciones. Alternativa.
92
![Page 93: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/93.jpg)
Diagramas de SecuenciagOperadores sobre interacciones. Alternativa.
93
![Page 94: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/94.jpg)
Diagramas de SecuenciagOperadores sobre interacciones. Opción.
94
![Page 95: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/95.jpg)
Diagramas de SecuenciagOperadores sobre interacciones. Bucle.
95
![Page 96: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/96.jpg)
Diagramas de SecuenciagOperadores sobre interacciones. Región Crítica.
96
![Page 97: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/97.jpg)
Diagramas de SecuenciaEjemplo
Sd Alarm Activation
Ejemplo
:SystemHandler :CellHandler :Sensor :Alarm :CellConfigurationInformation
Activate()T =
now
assert
T
ReadConfiguration()
Configuration Information Returned
SelfTest()
ACK
seq
Activate()
SelfTest()
Test()
Validate
opt
opt
par
97ACKACK{t
..t+
5}
![Page 98: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/98.jpg)
Diagramas de SecuenciagRetorno de Valores
98
![Page 99: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/99.jpg)
Diagramas de Secuencia
Restricciones temporales (duración)
gTiempo
Restricciones temporales (duración)
Duración de mensajes y señales (duration)Intervalos de tiempo ({t..t+3}) y restricciones temporales.
99Observaciones temporales (tiempo actual, now)
![Page 100: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/100.jpg)
Diagramas de SecuenciagDescomposición en partes
La estructura interna deACS iACSystem tiene una interacción “AC_UserAccess” que se invoca en este fragmento.
100
![Page 101: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/101.jpg)
Diagramas de SecuenciagDescomposición en partes
101
![Page 102: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/102.jpg)
Diagramas de Secuenciagco-región Coregión: s[u]
recibe los mensajesen cualquier orden.
102
![Page 103: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/103.jpg)
Diagramas de Secuencia
Invariantes
gInvariantes
Invariantes.
En este momento la traza<v w q> no es válida<v w q> no es válida
Se comprueban justo antes de la ocurrencia del próximot ( d h b j t d l
103
evento (puede haber mensajes no mostrados en eldiagrama).
![Page 104: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/104.jpg)
Diagramas de SecuenciagBinding
104
![Page 105: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/105.jpg)
EjercicioEjercicio
fEspecificar el diagrama de secuencia de la operación “crearLaberinto”
public class JuegoLaberinto {public Laberinto crearLaberinto () {
Laberinto lab = new Laberinto();Habitacion h1 = new Habitacion();Habitacion h2 = new Habitacion();Puerta puerta = new Puerta(h1, h2);
lab.añadeHabitacion(h1);lab.añadeHabitacion(h2);h1.añadePuerta(puerta);return lab;
}}
![Page 106: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/106.jpg)
SoluciónSolución
:JuegoLaberinto
l b L b i tcrearLaberinto()
lab:Laberinto
h1:Habitacion
h2:Habitacion
puerta:Puertacreate(h1,h2)
añadeHabitacion(h1)
añadeHabitacion(h2)
añadePuerta(puerta)
![Page 107: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/107.jpg)
EjercicioEjercicio
Especificar el diagrama de secuencia de la operaciónEspecificar el diagrama de secuencia de la operación “crearLaberinto”
public class JuegoLaberinto {private Laberinto lab;private boolean conVentana;
public JuegoLaberinto() {public JuegoLaberinto() {lab = new Laberinto();conVentana = true;
}
public void crearLaberinto () {Habitacion h;for (int i=0; i<10; i++) {
h = new Habitacion();if (conVentana == true)
h.añadeVentana(new Ventana());lab.añadeHabitacion(h);
}}
![Page 108: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/108.jpg)
SoluciónSolución
:JuegoLaberinto lab:Laberinto
crearLaberinto()
h:Habitacion
loop [for i = 1 to 10]
v:Ventana
opt [conVentana==true]
añadeVentana(v)
añadeHabitacion(h)
![Page 109: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/109.jpg)
EjercicioEjercicio
Especificar el diagrama de secuencia de la operación “realizarJugada” definida en la clase Jugador, para el juego del parchísparchís
Jugadorill A t l i t
Dado2*
- casillaActual: int+ realizarJugada(): void+ casillaActual(): int
+ tirar(): int
1*
Tablero
+ mover(int actual, int unidades):
1
int unidades): boolean
![Page 110: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/110.jpg)
SoluciónSolución
:Jugador d1:Dado
realizarJugada()
d2:Dado :Tablero
tirar()
n1
par
tirar()
n2
ca:=casillaActual()
mover(ca,n1+n2)
movRealizado
![Page 111: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/111.jpg)
EjercicioEjercicioIdentificar las clases relevantes y realizar el diagrama deIdentificar las clases relevantes y realizar el diagrama de
secuencia para el siguiente caso de uso, que corresponde a la realización de una llamada desde un teléfono móvil.
El usuario pulsa los dígitos del número de teléfonoPara cada dígitog
la pantalla se actualiza para añadir el dígito marcadose emite un tono por el receptor
El usuario pulsa el botón “Enviar”El usuario pulsa el botón EnviarEl indicador “en uso” se ilumina en pantallaEl móvil establece conexión con la redL dí it l d d l dLos dígitos acumulados se mandan a la redSe establece la conexión con el número marcado
![Page 112: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/112.jpg)
SoluciónSolución
:Button :Dialer send:Button:Display :CellularRadio:Speaker
digit(code)
loop [for i = 1 to 9]
displayDigit
send()
displayDigit(code) emitTone
(code)
send()
connect(pno)
inUse()inUse()
¿Diagrama de colaboraciónequivalente?
![Page 113: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/113.jpg)
SoluciónSolución
![Page 114: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/114.jpg)
Visión de Conjunto de la Interacción
D fi l i t i t é d
Visión de Conjunto de la Interacción
Define las interacciones a través de una variante de los diagramas de actividad.
Visión general del flujo de control.
Usa elementos de los diagramas de actividad para especificar:
Alternativas entre interacciones.Paralelismo de interacciones.
114Bucles de interacciones.
![Page 115: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/115.jpg)
Visión de Conjunto de la InteracciónVisión de Conjunto de la Interacción
115
![Page 116: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/116.jpg)
Tiempo
M t i t i d d
Tiempo
Muestran interacciones donde esimportante razonar sobre el tiempo.
Representa condiciones que cambian enRepresenta condiciones que cambian enuna o varias líneas de vida, en un ejelineal de tiempolineal de tiempo.
Cambios en el estado de un objeto con eltiempo en respuesta a eventos.
116
![Page 117: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/117.jpg)
TiempoTiempo
Diagrama temporal correspondientepa la interacción
117
![Page 118: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/118.jpg)
TiempoTiempo
118
![Page 119: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/119.jpg)
TiempoTiempo
119
![Page 120: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/120.jpg)
Máquinas de EstadosMáquinas de Estados
“St t h t ” [H l]“Statecharts” [Harel]
Representan el comportamiento de entidades ( p eRepresentan el comportamiento de entidades ( p.e. instancias de clases).
Especifican reacción ante eventos
Describen posibles secuencias de estados y acciones por las que pueden pasar las entidades.
De comportamiento vs. de protocolo.
120
![Page 121: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/121.jpg)
Máquinas de EstadosMáquinas de Estados
EstadosComienzo Fin
start Partial Dialdigit(n)
digit(n)
Transiciones
121
![Page 122: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/122.jpg)
Máquinas de Estados
U t i ió d t
Máquinas de Estados
Un transición puede tener:Evento.
Eventos temporales: tm(n)Eventos temporales: tm(n)Acción.pre-condiciones (guardas) y post- condiciones.
A1 A2[guard] evt/action [post-]
A1 A2
Símbolos especiales para el envío y recepción de señales (normalmente usados en diagramas de actividad).
122
)
![Page 123: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/123.jpg)
Máquinas de EstadosMáquinas de Estados
Un estado tiene:Nombre
Transiciones internas: lista de acciones ejecutadas en ese estado (entry/exit/do)( y )
Ejemplo:j p
Typing Passwordt / t h i i ibl
Nombreentry/set echo invisibleexit/set echo normalcharacter/handle characterhelp/display help
Transicionesinternas
123
help/display help
![Page 124: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/124.jpg)
Máquinas de EstadosStart Partial Dial
Máquinas de Estados
digit(n)Startentry/start dial toneexit/stop dial tone
Partial Dialentry/number.append(n)
digit(n)Estado compuesto: digit(n)
Dialing
digit(n)Startentry/start dial tone
Partial Dialentry/number.append(n)
[number.isValid()]y
exit/stop dial toney pp ( )
124digit(n)
![Page 125: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/125.jpg)
Ejercicio: BibliotecaEjercicio: Biblioteca
Una biblioteca tiene copias de libros Estos últimos seUna biblioteca tiene copias de libros. Estos últimos se caracterizan por su nombre, tipo (novela, teatro, poesía, ensayo), editorial, año y autor. Los autores se caracterizan por su nombre, nacionalidad y fecha de nacimiento.Cada copia tiene un identificador y puede estar en laCada copia tiene un identificador, y puede estar en la biblioteca, prestada, reservada, con retraso o en reparación.Los lectores pueden tener un máximo de 3 libros enLos lectores pueden tener un máximo de 3 libros en préstamo. Cada libro se presta un máximo de 30 días, por cada día p pde retraso, se impone una “multa” de dos días sin posibilidad de coger un libro.Realiza el diagrama de estados de la clase “copia”Realiza el diagrama de estados de la clase copia .
![Page 126: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/126.jpg)
SolucionSolucion
enCon
Retraso
ConRetraso yreser ado
devolver()reservar(id) /usrRes = iden
reparacion
reparar()reparado()
Retraso
[getDate()>fp+30]
reservado
devolver() [getDate()>fp+30]
enbiblioteca prestado
prestar(id,fecha)/fp=fecha reservadoreservar(id) /
usrRes = iddevolver()
devolver()prestar(id, fecha)[usrRes==id]/fp=fecha
t (2 d ) enreserva
tm(2 days)
![Page 127: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/127.jpg)
Solucion: Estados JerárquicosSolucion: Estados Jerárquicos
enCon
Retraso
ConRetraso yreser ado
reservar(id) /usrRes = iden
reparacion
reparar()reparado()
Retraso
[getDate()>fp+30]
reservado
[getDate()>fp+30]
usrRes = id
enbiblioteca prestado
prestar(id,fecha)/fp=fecha reservadoreservar(id) /
usrRes = id
devolver() devolver()prestar(id, fecha)[usrRes==id]/fp=fechat (2 d ) en
reservafp=fechatm(2 days)
127
![Page 128: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/128.jpg)
Máquinas de EstadosqComponentes Ortogonales
Incomplete
lab donelab doneLab1 Lab2
Term project done PassedTermProject
project done
Final passFinalTest
pass
128Failedfail
![Page 129: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/129.jpg)
Máquinas de EstadosqComponentes Ortogonales: Utilidad
Modelo de un sistema formado por un proceso en red sin componentes ortogonales.
ack
Idle Message Sendingtransmit
Idle Message Sendingarr.
time out arrtime out arrarr
129
![Page 130: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/130.jpg)
Máquinas de EstadosqComponentes Ortogonales: Utilidad
ack1
Idle1 Mess1 Send1trans1
1
d 1Idle2
ss1Idle2
d1Idle2arr1
1
toutarr1
arr arr arr2tout1 arr1
Idle1
arr2
Mess1
arr2
Send1trans1
arr2arr2arr1
arr2
Idle1Mess2
Mess1Mess2arr1
trans
Send1Mess2
trans1
tout1 arr1ack1 trans2
Idle1Send
trans2 tout2ack2 Mess1
Send
tout2arr1
ack2
Dos 130
Send2 Send2
arr2
arr1 procesos
![Page 131: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/131.jpg)
Máquinas de Estados
ack P 1
qComponentes Ortogonales: Utilidad
ack Proc-1
Idle Message Sendingarr.
transmit
time out arrarr
P 2ack
Proc-2
Idle Message Sendingarr.
transmit
131time out arrarr
![Page 132: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/132.jpg)
Máquinas de Estados
P 1
qComponentes Ortogonales: Utilidad
transmit
ack/ channel = freearr
Proc-1
Idle Message Sendingarr
transmitWait
channel[channel==free ] /channel = busy
time out / channel = freearr
P 2Proc-2
transmitarr
ack/ channel = free
Idle Message Sendingarr
transmitWait
channel[channel==free ] /channel = busy
132time out / channel = freearr
![Page 133: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/133.jpg)
Máquinas de EstadosP d t d
Máquinas de EstadosPseudo - estados:
Fork / Join.Initial.Deep History / Shallow History.Junction.Choice.
H* H
Entry / Exit point.Terminate.
Setup CleanupA1 A2
B1 B2
133
Fork Join
![Page 134: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/134.jpg)
Máquinas de EstadosqEstado Histórico
BHHHH
t4
IB1 B2
t1: ev0t2
t3
B12
B11B21 t3
t3: ev1
t4: ev2
134
![Page 135: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/135.jpg)
Máquinas de EstadosqEstado Histórico (ii)
BH*H*HH
t4
IB1 B2
t1: ev0t2
t3
B12
B11B21 t3
t3: ev1
t4: ev2
135
![Page 136: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/136.jpg)
Máquinas de EstadosqEstado Histórico. Ejercicio.
Modelar el comportamiento de una cadena de música. Esta puede estar pencendida (ON) o apagada (Standby). La cadena tiene reproductor de CD Radio ycadena tiene reproductor de CD, Radio y Cinta. Se cambia de uno a otro con el botón “mode” Cuando se enciende labotón mode . Cuando se enciende la cadena se recuerda el último estado en el que estuvo.
136
![Page 137: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/137.jpg)
Máquinas de EstadosqEstado Histórico. Ejercicio. Solución
On
Standby
On
CD modemodepower
H
Radio Tapemode
power H
mode
M d l l i i t i t d hi tó iModelar el mismo sistema sin usar estado histórico.
137
![Page 138: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/138.jpg)
Máquinas de EstadosqEstado Histórico. Ejercicio. Solución (ii)
Standby Onpower
CD modemode
power
powerlastCD
power
Radio Tapemode
lastRadiopower
power
powerlastTape power
power
138
![Page 139: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/139.jpg)
Máquinas de EstadosPseudo - estados: Junction.
Máquinas de EstadosPseudo estados: Junction.
Pseudo - estados: Choice.
139
![Page 140: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/140.jpg)
Máquinas de EstadosMáquinas de EstadosPuntos de Entrada/Salida, Estados Sub-Máquina
140
![Page 141: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/141.jpg)
Ejemplo. Reproductor CDs.
I f U iReproductorCD
Li C iInterfazUsuario
...
...
p
- Tpausa: Tiempo- NumActual: Entero+ t ()
ListaCanciones
...+ obtenerCancion(Orden: Entero):
disco11
+ stop()+ pause()+ play()+ eject()
Cancion+ numCanciones(): Entero....1
j ()+ apagar()+ finCancion()- buscaDisco(d: InfoDisco):ListaCanciones
0..*pista1ListaCanciones Cancion
- titulo: Cadena- duracion: Tiempo
1
1driver
player actual
p- Artista: Cadena- Orden: Entero
...
ControladorCD
...+ l ( t C i d d Ti )+ play(act: Cancion, desde: Tiempo)+ stop() : Tiempo+ detectarDisco() : InfoDisco+ detectarAbierto() : Logico
141
() g+ abrir()+ cerrar()+ apagar()
![Page 142: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/142.jpg)
Diagrama de estados para la clase ReproductorCD
[(info=driver.detectarDisco())!=NULL]/disco=buscaDisco(info)NumActual = 1; actual = disco.obtenerCancion(ordenActual)
[not driver.detectarAbierto()]
p
[else]/ driver.stop(); NumActual=1;
Cerrado
( )
Play()/r ()
endOfSong()/NumActual+=1
()rAbi
erto
()]
;actual= disco.obtenerCancion(NumActual)
Stop PlayPlay()/driver.play(actual, 0)
p()
paus
a)
ejec
t ()/
driv
er.c
erra
r
[NumActual<=disco.numCanciones()]/
t lejec
t ()/
driv
er.a
brir
(
river
.det
ecta
r
)/ = dr
iver
.sto p
lay(
actu
al, T
p
stop()/driver.stop(); NumActual=1
Abierto eject ()/driver.stop();driver.abrir()
actual=disco.obtenerCancion(NumActual)driver.play(actual,0)
e d
[dr
Pause
Paus
e()
Tpau
sa
Play
()/
driv
er.p
lNumActual 1actual= disco.obtenerCancion(NumActual)
Pause
apagar ()/
142
apagar ()/driver.stop();driver.apagar()
![Page 143: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/143.jpg)
Máquinas de Estados de ProtocoloAsociadas a un clasificador, interface o puerto.
Máquinas de Estados de Protocolo, p
Especifican qué operaciones del clasificador se puedenllamar en qué condicionesllamar en qué condiciones.
Las operaciones que no generan transición no seLas operaciones que no generan transición no serepresentan.
Má i d t d d l ti E ifi lMáquinas de estado declarativas: Especifican lastransiciones legales (no su condición) para cadaoperación. “Contrato” para el usuario del clasificador.
Máquinas de estado Ejecutables: Especifican todoslos eventos que un clasificador puede recibir y tratar
143
los eventos que un clasificador puede recibir y tratar,con las transiciones implicadas.
![Page 144: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/144.jpg)
Máquinas de Estados de ProtocoloMáquinas de estados de
Máquinas de Estados de ProtocoloMáquinas de estados de
protocolo. Ejemplo (declarativa).
Los estados de máquinas deprotocolo no tienen asociadasacciones exit/entry/do pero
Cleanupacciones exit/entry/do, peropueden tener invariantes.
Las transiciones no tienen
[inv]
Las transiciones no tienenacciones, pero sí pueden tenerpre- y post- condiciones.
[pre-cond] Evt/ [post-cond]
144
![Page 145: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/145.jpg)
Máquinas de Estados
Una máquina de estados es generalizable
qGeneralización
Una máquina de estados es generalizable.
Se pueden añadir regiones, estados y transiciones.
Se puede cambiar el destino y estado de una transición siempre que la fuente y evento se mantenga.
En caso de herencia múltiple de máquinas de estado (por herencia de los clasificadores asociados), se crea una región ortogonal por cada máquina heredada mas una por la máquina de estados delcada máquina heredada, mas una por la máquina de estados del clasificador específico.
Se anota con <<extended>> junto al nombre de la máquinaSe anota con <<extended>> junto al nombre de la máquina.
Los estados heredados se muestran con líneas punteadas o en gris.
145
![Page 146: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/146.jpg)
Máquinas de EstadosqGeneralización: Ejemplo, cajero autómatico.
146
![Page 147: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/147.jpg)
Máquinas de EstadosqGeneralización: Ejemplo, cajero autómatico.
E ió ibilid d dExtensión: posibilidad deteclear el importe aretirar, y de que este sepueda rechazar.
147
![Page 148: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/148.jpg)
EjercicioEjercicioM d l l t i t ti d l j d lModelar el comportamiento reactivo de un reloj de pulsera.El valor del tiempo se debe actualizar cada segundo, incluso cuando no semuestra (p.ej. crono encendido).El botón de la parte superior derecha enciende la luz que se mantieneEl botón de la parte superior derecha enciende la luz, que se mantieneencendida tanto como el botón está apretado, una vez que se suelta, la luzestá encendida durante 2 segundos más y se apaga.El botón superior izquierdo alterna entre el modo de crono y de reloj. Elsistema empieza en el modo reloj en el que se muestra la hora en formatosistema empieza en el modo reloj, en el que se muestra la hora en formatoHH:MM:SS.En el modo crono, el tiempo discurrido se muestra en formato MM:SS:CC(CC son centésimas de segundo). Inicialmente el crono empieza en
É( g ) p00:00:00. El botón inferior derecho se usa para activar el crono. Éste seactualiza en incrementos de 1/100 segundos. Presionando el botón inferiorderecho pausa o continua el crono (si el reloj está en modo crono).Pulsando el botón inferior izquierdo resetea el crono a 00:00:00 si el relojq jestá en modo crono y el crono ha sido pausado antes. El crono continuacorriendo (si está corriendo) o mantiene su valor (si está en pausa) inclusocuando el reloj está en un modo de display distinto (por ejemplo, cuando semuestra la hora).
148
muestra la hora).
![Page 149: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/149.jpg)
EjercicioInterface provisto por el controlador:
Ejercicio
getTime() : Devuelve la hora actual.refreshTimeDisplay() : Repinta la hora en el visor con la hora interna actual. Elvisor no necesita limpiarse antes de llamar a esta función. Por ejemplo, si se estávisualizando el crono, se borrará antes de pintar la hora.refreshChronoDisplay() : ver refreshTimeDisplay().resetChrono() : Resetea el crono interno a 00:00:00.increaseTime() : Incrementa la hora en un segundo. Los minutos y horas semodificarán adecuademente, (por ejemplo, si se llama a increaseTime () a lasmodificarán adecuademente, (por ejemplo, si se llama a increaseTime () a las11:59:59, la nueva hora será 12:00:00).increaseChrono () : Incrementa el crono en 1/100 segundos.setLight() : Enciende la luz del visor.unsetLight() : Apaga la luz del visorunsetLight() : Apaga la luz del visor.
Eventos de botones recibidos:topRightPressed.topRightReleased.p gtopLeftPressed.topLeftReleased.bottomRightPressed.bottomRightReleased
149
bottomRightReleased.bottomLeftPressed.bottomRightReleased.
![Page 150: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/150.jpg)
Posible SoluciónPosible Solución.
150
![Page 151: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/151.jpg)
Máquinas de EstadosEjemplo. Herramienta de Dibujo (i)
/setup widgetst bi di
Active
setup bindings
Active
exitButtonwmQuit
151
![Page 152: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/152.jpg)
Máquinas de EstadosqEjemplo. Herramienta de Dibujo (ii)
Shapes Canvas
Modes
152
![Page 153: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/153.jpg)
Máquinas de EstadosqEjemplo. Herramienta de Dibujo (iii)
Shapes
TriangleshapeSelected(Circle)
shapeSelected(Triangle)
shapeSelected(Rectangle)
shapeSelected(Triangle)p ( g )
h S l t d(Ci l )Rectangle CircleshapeSelected(Circle)
shapeSelected(Rectangle)
153
![Page 154: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/154.jpg)
Máquinas de EstadosqEjemplo. Herramienta de Dibujo (iv)
Modes
modeSelect(Insert)/
Insert
modeSelect(Insert)/Canvas.Insert
modeSelect(Delete)/Canvas.Delete
modeSelect(Move)/Canvas.Move
modeSelect(Insert)/Canvas.Insert
modeSelect(Delete)/
Canvas.Insert
Move Delete( )/
Canvas.Delete
modeSelect(Move)/C M
154
Canvas.Move
![Page 155: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/155.jpg)
Máquinas de EstadosEjemplo Herramienta de Dibujo (v)
Canvas
Inserting[Shapes in Circle]/d Ci l ( )
Ejemplo. Herramienta de Dibujo (v)
g
Idle[Shapes in Triangle]/
[Shapes in Rectangle]/drawRectangle(x,y)
drawCircle(x,y)
CConDrawingMouse1Press(x,y)
[Shapes in Triangle]/drawTriangle(x,y)
Deleting
delete insert
Moving
insertmove
Idle
D i M 1Cli k( )/
Moving
onDrawingMouse1Press(x,y)/i Obj t fi d l t( ) onDrawingMouse1Click(x,y)/
find_closest(x,y).del()
MovingIdleonDrawingMouse1Release(x,y)
movingObject=find_closest(x,y)
155onDrawingMouse1Motion(x,y)/
oldCoords=coords(movingObject)move(movingObject, distance(oldCoords, (x,y)))
movedelete
![Page 156: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/156.jpg)
Diagramas de Actividad
Refinamiento de los diagramas de estados
Diagramas de Actividad
Refinamiento de los diagramas de estados.
Los estados representan la ejecución de acciones op jsubactividades
Las transiciones son disparadas cuando se completan estasp pacciones o subactividades
Semántica basada en tokens.
Flujos dirigidos por procesamiento interno (en losdiagramas de estados normales son dirigidos por eventosdiagramas de estados normales son dirigidos por eventosexternos).
156Semántica basada en Redes de Petri. No obstante no seda una transformación a Redes de Petri.
![Page 157: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/157.jpg)
Diagramas de Actividad
Put Coffee Put Filter
gEjemplo
Put Coffee in Filter
Turn onMachine
Put Filterin Machine
[found
Find Beverage
Add Waterto Reservoir Brew
coffee
[found coffee] / coffeePot.turnOn
g
GetCups
Pour
[no coffee] light goes out
Get cansof cola
PourCoffee
[found cola]
Drink
[no cola]
157
![Page 158: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/158.jpg)
Diagramas de ActividadSwimlanes
158
![Page 159: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/159.jpg)
Diagramas de ActividadDiagramas de ActividadPesos en los enlaces
159
![Page 160: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/160.jpg)
Diagramas de ActividadDiagramas de ActividadParámetros y Eventos Temporales
Parámetros/Pins/Excepciones
E t T lEventos Temporales
160
![Page 161: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/161.jpg)
Diagramas de ActividadDiagramas de ActividadExcepciones/Pins
161
![Page 162: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/162.jpg)
Diagramas de ActividadRegiones deExpansión
Regiones de expansión, procesamiento paralelo (también iterative y t i )streaming).
162
![Page 163: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/163.jpg)
Diagramas de ActividadDiagramas de ActividadRegiones Interrumpibles
163
![Page 164: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/164.jpg)
Diagramas de ActividadDiagramas de ActividadParticiones
164
![Page 165: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/165.jpg)
Diagramas de ActividadDiagramas de ActividadFlujos de Objetos: Objectflows
165
![Page 166: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/166.jpg)
IndiceIndice
Diagramas de Casos de Uso.Diagramas de EstructuraDiagramas de Estructura.Diagramas de Comportamiento.
OCL.Herramientas.EjemplosEjemplos.Bibliografía.
166
![Page 167: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/167.jpg)
OCL: Object Constraint LanguageOCL: Object Constraint LanguageLenguaje de restricciones para expresar condicionesLenguaje de restricciones para expresar condicionesadicionales que no podemos expresar con diagramas ycardinalidades.
Combinar diagramas y especificaciones textuales.
Lenguaje preciso, no ambiguo, declarativo, tipado, basadoen matemáticas (lógica de predicados y teoría deconjuntos)conjuntos).
Útil para obtener modelos precisos (no anotaciones enp p (lenguaje natural).
Se utiliza fundamentalmente junto a los diagramas de167
Se utiliza fundamentalmente junto a los diagramas declases.
![Page 168: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/168.jpg)
EjemplosEjemplosFlight Airplane
0 * 1Flightnr: Integer
availableSeats(): Integer
numberOfSeats: Integerflights0.. 1
plane
0 *flights
P
0..
0..*
flights
passengersTambién es un lenguaje de consultas (mismo poder expresivo que SQL).
Person
name: StringContext Flight::availableSeats(): Integerbody: plane.numberOfSeats – passengers->size()
¿Cómo se expresa el hecho de que en ningún vuelo puede habermás pasajeros que asientos tiene el avión?p j q
Restricción OCL:
168Context FlightInv: passengers->size() <= plane.numberOfSeats
![Page 169: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/169.jpg)
EjemplosEjemplosCasa Persona
S S Id ifi d0 * 1valor: Dinero numSegSoc: Identificador
sueldo: DinerocontratarHipoteca(sum: Dinero,aval: Casa)
casas0..
propietario1
aval 1)
Hipotecaprincipal: Dineromensual: DinerofechaInicio: Fechahipotecas
0..*
1 contratante
0..*hipotecasfechaInicio: Fecha
fechaFinal: Fechahipotecas hipotecas
Reglas adicionales:
1. Una persona puede tener una hipoteca sobre una casa sólo si es el propietario.
2 La fecha de inicio de cada hipoteca ha de ser menor que la de final2. La fecha de inicio de cada hipoteca ha de ser menor que la de final.3. El número de la seguridad social de cada persona ha de ser único.4. Sólo es posible contratar una nueva hipoteca si el salario de la persona
es suficiente.
1695. Sólo es posible contratar una nueva hipoteca si el valor de la casa aval
es suficiente.
![Page 170: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/170.jpg)
Ejemplos Las restricciones OCL se escriben
C t t Hi t
Ejemplos Las restricciones OCL se escribenen el contexto de una instancia deun tipo específico.
Context HipotecaInv: aval.propietario = contratante
Context HipotecaInv: fechaInicio < fechaFin self hace referencia a la instancia
del contexto.
Context PersonaInv: Persona::allInstances()->isUnique(numSegSoc)
Context Persona::contratarHipoteca(sum: Dinero, aval: Casa)pre: self.hipotecas.mensual->sum()+sum <= self.sueldo * 0.70
Context Persona::contratarHipoteca(sum: Dinero, aval: Casa)pre: aval.valor >= aval.hipotecas.principal->sum()
170
![Page 171: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/171.jpg)
EjemplosEjemplos
“Los PCs pueden conectarse con un único Hub, los servidores con uno o varios”
Context PCInv: cable_equipo->size() = 1
171
Context ServidorInv: cable_equipo->size() >= 1
![Page 172: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/172.jpg)
EjercicioEjercicio
“Un Hub no puede conectarse consigo mismo a través de un puerto”
Context Cable_HubsInv: Puerto_Hub.hub->asSet()->size() = 2
172
![Page 173: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/173.jpg)
¿Dónde usar OCL?¿Dónde usar OCL?
Clases:Clases:Invariantes. Expresión OCL de tipo booleano, la expresión debe ser true para cada instancia de la clase en todo momento de la ejecuciónejecución.
Operaciones:Pre-condición. Condición que debe ser verdadera para ejecutar l ió d t i d i t ila operación en una determinada instancia.Post-condición. Condición que debe ser verdadera al terminar una operación.B d E ifi ió d l d ió d tiBody. Especificación del cuerpo de una operación de tipo query.
Atributos y finales de asociación:Valor inicial. expresión para dar el valor inicial a un atributo o p pfinal de asociación. Se evalua al crear la instancia.Valor derivado.
Transiciones de máquinas de estados:Transiciones de máquinas de estados:Guarda.
![Page 174: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/174.jpg)
EjemplosEjemplos
parents
children
0..*
0..*
174
![Page 175: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/175.jpg)
EjemplosEjemplos
E ifi ió d l l i i i l d i d d t ib t / i ti dEspecificación del valor inicial y derivado de atributos/association ends:context Person::income : Integerinit: parents.income->sum() * 1% -- pocket allowanced i d if lf < 18derived:if self.age < 18
then parents.income->sum() * 1% -- pocket allowanceelse job.salary -- income from regular jobendifendif
Subexpresiones (let):context Person inv:let income : Integer = self.job.salary->sum() inif isUnemployed thenincome < 100elseincome >= 100endif
175
endif
![Page 176: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/176.jpg)
Ejemplos ColeccionesEjemplos. Colecciones.
Tipos: Set, OrderedSet, Bag, Sequence.
Operaciones de bucle con colecciones:select(expr): selecciona los elementos que cumplan una condición.
coleccion->select( expresion-logica )l i l t( | i l i )coleccion->select( v | expresion-logica-con-v)
coleccion->select( v : Type | expresion-logica-con-v)
t t C icontext Company inv:self.employee->select(age < 25)->notEmpty()
context Company inv:176
context Company inv:self.employee->select(gender=female)->notEmpty()
![Page 177: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/177.jpg)
Ejemplos Coleccionescollect(expr): devuelve la colección que resulta de evaluar expr
Ejemplos. Colecciones.collect(expr): devuelve la colección que resulta de evaluar exprpara cada elemento de la colección fuente.
self employee >collect( birthDate ) >asSet()self.employee->collect( birthDate )->asSet()
forAll(expr): devuelve verdadero si expr es verdadero en cadaelemento de la colección.
coleccion->forAll( expresion-logica )coleccion->forAll( v | expresion-logica-con-v )coleccion->forAll( v : Type | expresion-logica-con-v )
context Companyinv: self.employee->forAll( isUnemployed = False )inv: self.employee->forAll( p | p.isUnemployed = False )i lf l >f All( P | i U l d F l )
177
inv: self.employee->forAll( p : Person | p.isUnemployed = False )
![Page 178: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/178.jpg)
Ejemplos ColeccionesEjemplos. Colecciones.exists(expr): devuelve true si al menos hay un elemento en lacolección para el que expr es verdaderacolección para el que expr es verdadera.
coleccion->exists( expresion-logica )coleccion->exists( v | expresion-logica-con-v )coleccion->exists( v : Type | expresion-logica-con-v )coleccion->exists( v : Type | expresion-logica-con-v )
context Companyinv: self.employee->exists( age > 50 )inv: self.employee->exists( p | p.age > 50 )inv: self.employee->exists( p : Person | p.age > 50 )
iterate(…): itera sobre todos los elementos de una colección.coleccion->iterate( elem : Type; acc : Type = <expresion> | expresion-logica-
l )con-elem-y-acc )
collection->collect(x : T | x.property)collection->iterate(x : T; acc : T2 = Bag{} | acc->including(x.property))
178
( ; g{} | g( p p y))
añade un elemento a una colección
![Page 179: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/179.jpg)
Colecciones Otras OperacionesOtras operaciones de bucle:
Colecciones. Otras Operaciones.p
source->any(iterator|body)source->select(iterator|body)->asSequence()->first()
source->collectNested(iterators|body)source collectNested(iterators|body)Bag de elementos que resultan de aplicar body a cada elemento de source.
source->isUnique(iterators|body)( | y)True si body se evalua a un valor diferente para cada elemento de source.
source->one(expr)Devuelve true si existe exactamente un elemento de source que cumple la condición.
source->reject(expr)Devuelve una colección con los elementos de source que no cumplen laDevuelve una colección con los elementos de source que no cumplen la condición.
source->sortedBy(expr)Ordena source resulta en un OrderedSet
179
Ordena source, resulta en un OrderedSet
![Page 180: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/180.jpg)
IndiceIndice
Diagramas de Casos de Uso.Diagramas de EstructuraDiagramas de Estructura.Diagramas de Comportamiento.OCL.
HerramientasHerramientas.Ejemplos.j pBibliografía.
180
![Page 181: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/181.jpg)
Herramientas IHerramientas, I
Dib j d diDibujo de diagramasSoporte a la correccción de los diagramas en base a su semánticasemánticaApoyo para simplificar la facilidad de comprensión de los diagramas (layout, etc.)
Archivo de informaciónComprobación de inconsistenciasDetección de trabajo a realizar y mejorasGeneración de informesSoporte a la reutilizaciónSoporte al rediseño (refactorings).
181
![Page 182: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/182.jpg)
Herramientas IIHerramientas, II
Soporte a la navegaciónVistas compuestasElaboración de conexiones entre información relacionadaBú dBúsquedaVisión con diferentes niveles de granularidad (expansión y contracción de partes de la vista)(expansión y contracción de partes de la vista)FiltrosOperaciones sobre componentes de la vistaOperaciones sobre componentes de la vista
182
![Page 183: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/183.jpg)
Herramientas IIIHerramientas, III
Soporte al trabajo multiusuarioSoporte al trabajo multiusuarioBloqueo de informaciónTrabajo colaborativoj
Generación de códigoEsqueletos con información estática (clases)Generación a partir de diagramas de comportamientoGeneración a partir de diagramas de comportamiento (máquinas de estados).Integración con lenguajes especiales (SQL, …)Desarrollo Dirigido por Modelos (MDADesarrollo Dirigido por Modelos (MDA, http://www.omg.org/mda/)
Ingeniería inversaConstrucción de un modelo de diseño a partir de códigoDiseño iterativo: incorporación al modelo de detalles implementados
183
![Page 184: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/184.jpg)
Herramientas IVHerramientas, IV
Integración con otras herramientasEntorno de desarrollo (tendencia a confluir)Configuración del sistema y control de versionesHerramientas de documentaciónHerramientas de prueba de softwareHerramientas de construcción de interfaces de usuarioHerramientas de especificación de requisitosHerramientas de gestión de proyectos y soporte al
d di ñ d llproceso de diseño y desarrollo
184
![Page 185: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/185.jpg)
Herramientas VHerramientas, V
Distintos niveles de abstracciónIntercambio de informaciónIntercambio de información
Especificación OMG de representación de modelos UML en XMI (XML Metadatamodelos UML en XMI (XML Metadata Interchange)
185
![Page 186: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/186.jpg)
Poseidon for UMLPoseidon for UML
![Page 187: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/187.jpg)
IndiceIndice
Diagramas de Casos de Uso.Diagramas de EstructuraDiagramas de Estructura.Diagramas de Comportamiento.OCL.HerramientasHerramientas.
Ejemplos.Ejemplos.Bibliografía.
187
![Page 188: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/188.jpg)
Ejemplo de AnálisisAplicación para una Galería de Arte
Diagrama de casos de uso inicial
Comprar uncuadro
Vender uncuadro
Vendedor
AgenteGalería
Producir Informe
C dCompradorActualizar
Coeficiente de
188
moda
![Page 189: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/189.jpg)
Comprar unaDiagrama pObra maestra
Comprar unaO
refinado
VendedorObra representativa
Comprar unaObra representativa
Vender uncuadro
Obra representativa
Agente
Producir Informecompras
Comprador
AgenteGalería Producir Informe
ventas
Producir Informetendencias
189Actualizar
Coeficiente de moda
![Page 190: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/190.jpg)
Caso de uso: comprar una obra maestra
Actores primarios:pAgente Galería, vendedor
Interesados y Objetivos:• Agente: quiere obtener una recomendación lo más acertada posible del precio máximo recomendado de manera rápida.• Vendedor: quiere vender el cuadro a un precio razonable de manera rápida.
Precondiciones:El agente ha entrado en la aplicación.
Garantía de éxito (post-condiciones):Se registra la venta.
E i P i i l d É itEscenario Principal de Éxito:1. El agente introduce la descripción del cuadro.2. El sistema busca el cuadro más parecido del mismo autor.3 El sistema presenta el precio recomendado3. El sistema presenta el precio recomendado.4. El agente hace una propuesta por debajo del precio recomendado, y el vendedor acepta la oferta.5 El agente introduce información de la venta5. El agente introduce información de la venta.
Extensiones:2a. No hay ningún cuadro parecido del mismo autor, así que el sistema no presenta una recomendación
190
no presenta una recomendación.4a. El vendedor no acepta la oferta y la venta no se produce.
![Page 191: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/191.jpg)
Diagrama de clases inicial
Si t G ti
CuadronombreDelArtistaapellidosDelArtista
Sistema GestionGaleria
TituloAñoCreacionAltoAnchoTecnicaTema
Cuadro GaleriaClasificacionfechaCompraFechaventa
Cuadro SubastadofechaSubastaprecioSubasta
FechaventanombreVendedordireccionVendedorprecioCompraMaximoprecioCompraRealprecioCompraRealprecioVentaDeseadoprecioVentanombreCompradordireccionCompradordireccionComprador
Obra Maestra Cuadro de Otro Tipo ModanombreArtistausa
191Obra Representativa
nombreArtistaappelidosArtistacoeficiente
usa
![Page 192: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/192.jpg)
Diagrama de clases asociado al caso de uso vender una obra maestra
Proporciona los datos introducidos por el agente
Vendedor
por el agente
Obra maestra
A t GUI Calcular PrecioAgenteGalería
GUI Calcular PrecioObra Maestra
Cuadro Cuad oSubastado
192
![Page 193: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/193.jpg)
AgenteGalería
: GUI : Calcular PrecioObra Maestra
: CuadroSubastado
Vendedor
: Obra maestra1: proporcionardatos obramaestra
2: transferir detalles
3: crear objetonuevonuevo
4: devolver objetonuevo5: buscar cuadrossubastados
Datos proporcionados por el vendedor
subastados6: devolver cuadrosubastado7: proporcionar
precio8: mostrarprecio
9: proporcionardetalles delvendedor
10: transferir detallesvendedor 11: solicitar
actualización
12: confirmación13: confirmación14: mostrarconfirmación
193
![Page 194: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/194.jpg)
Un ejemplo completo para todos los diagramastodos los diagramas
Un sistema de gestión de cursos impartidos para un conjunto de clientes. Algunos de esos clientes pueden pertenecer a empresas.
194
![Page 195: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/195.jpg)
195
![Page 196: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/196.jpg)
196
![Page 197: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/197.jpg)
197
![Page 198: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/198.jpg)
001
1 11.12
2.1
33.1 3.1.1
3.2 3.2.1
198
![Page 199: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/199.jpg)
199
![Page 200: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/200.jpg)
200
![Page 201: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/201.jpg)
201
![Page 202: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/202.jpg)
202
![Page 203: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/203.jpg)
203
![Page 204: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/204.jpg)
IndiceIndice
Diagramas de Casos de Uso.Diagramas de EstructuraDiagramas de Estructura.Diagramas de Comportamiento.OCL.HerramientasHerramientas.Ejemplos
Bibliografía.204
![Page 205: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/205.jpg)
Bibliografía: UMLBibliografía: UMLUML
D Pil N il Pi “UML 2 0 i N t h ll” O’R ill 2005Dan Pilone; Neil Pitman. “UML 2.0 in a Nutshell”. O’Reilly, 2005.Martin Fowler. “UML Distilled: A Brief Guide to the Standard Object Modeling
Language, 3rd Edition”. Addison Wesley, 2003.Web de la OMG sobre UML: http://www.uml.orgPerdita Stevens, Rob Pooley. “Utilización de UML en Ingeniería del Software con
Objetos y Componentes”. Addison Wesley, 2002.j y p y,Grady Booch, James Rumbaugh, Ivar Jacobson. “The Unified Modeling
Language User Guide”. Addison-Wesley, 1999.Eriksson H E Penker M Lyons B Fado D “UML 2 Toolkit” OMG PressEriksson, H. E., Penker, M., Lyons, B., Fado, D. UML 2 Toolkit . OMG Press,
Wiley. 2004.Craig Larman. “Applying UML and Patterns”. Prentice Hall. 2002.
OCLWarmer Kleppe “The Object Constraint Language 2nd Edition Getting your
205
Warmer, Kleppe. “The Object Constraint Language 2nd Edition. Getting your Models Ready for MDA”. Addison-Wesley. 2003.
Especificación de OCL 2.0: http://www.omg.org/docs/ptc/03-10-14.pdf
![Page 206: Diagramas UML y ejemplos prácticos](https://reader030.vdocuments.mx/reader030/viewer/2022012305/568bd9821a28ab2034a7548a/html5/thumbnails/206.jpg)
Bibliografía: Statecharts
Harel D “On Visual Formalisms” Communications of the
Bibliografía: Statecharts
Harel D. “On Visual Formalisms”. Communications of theACM. Vol 31, No. 5. Pp.: 514-530. Mayo 1988.
Harel D., Naamad A. “The STATEMATE Semantics ofStatecharts”. ACM Transactions on SoftwareEngineering and Methodology Vol 5 No 4 Oct 1996Engineering and Methodology, Vol. 5, No. 4, Oct. 1996,pp.: 293-233.
D id H l d E G E bl bjDavid Harel and Eran Gery. Executable objectmodeling with statecharts. IEEE Computer, pages 31-42,1997.
206