Professional Documents
Culture Documents
UML:
Lenguaje Unificado de Modelado
z Similitud:
z Arquitectos: planos ⇒ edificios
z Ingenieros del software: diagramas ⇒ programas
z Diagramas de estructura
z Clases y objetos
z Relaciones
z Interfaces
z Diagramas de comportamiento
z Colaboraciones
z Diagramas de secuencia
z Diagramas de comunicación
Diagramas de estructura
Clases y objetos
z Diagramas de clases: estructura del sistema.
z Clases: conceptos dentro del sistema que comparten los
mismos atributos, operaciones, relaciones y semántica
z Atributos: tipo, visibilidad, posible valor inicial
z Operaciones: signatura, visibilidad
z Asociaciones: relaciones entre clases
Carbono Hidrógeno
Diagrama de
:Hidrógeno :Hidrógeno
objetos:
:Hidrógeno :Carbono :Carbono :Hidrógeno
:Hidrógeno :Hidrógeno
Diagramas de estructura
Clases y objetos
Nombre En cursiva si es
de la clase Circulo
abstracta
-radio: double
-centrox: double Atributos
visibilidad -centroy: double
+Area(): double
+Perímetro(): double
Operaciones
Clase
del objeto
Nombre unCirculo: Circulo
del objeto radio = 3.4
centrox = 2.0 Valores de
centroy = 2.0 los atributos
Diagramas de estructura
Atributos
z Notación para atributos de clases:
z Ejemplos: <<enumeration>>
z <<type>>
MiBooleano
z <<enumeration>>
z <<interface>> + cierto: Integer
+ false: Integer
z ...
Diagramas de estructura
Relación de generalización
z Especialización
Persona discriminador
{sexo} {profesión}
Equivalente a:
B
a: A[1..4]
Diagramas de estructura
Relación de composición
z Relación del tipo todo/parte
Círculo Punto
(todo) (parte)
susFiguras
Ventana Figura
0..*
(todo) (parte)
susFiguras Figura
Ventana
0..*
Draw(ContextoDibujo)
suContexto
ContextoDibujo
Dependencia
Diagramas de estructura
Clases asociativas
z Asociación con atributos propios
- fecha
Clase asociativa
Diagramas de estructura
Interfaces
z Colección de operaciones que especifican un
servicio de una clase o componente
z Separa especificación e implementación de una
abstracción
z Incluyen:
z Nombre
z Operaciones sin implementación y constantes
z Relaciones de realización
z Pueden tener relaciones de generalización
z No incluyen:
z Atributos
z Asociaciones
Diagramas de estructura
Interfaces. Ejemplo
Diagramas de estructura
Clases parametrizadas (templates)
z Descriptor de una clase con parámetros
z Define una familia de clases, donde cada
clase se especifica con un binding de los
parámetros a valores
z Los parámetros suelen representar tipos de
atributos, pero también pueden representar
enteros, otros tipos u operaciones
Diagramas de estructura
Clases parametrizadas (templates)
<<bind>> (Ficha)
public class ListinTelefonico {
MiArray<Ficha> listin =
new MiArray<Ficha>();
ListinTelefonico }
Diagramas de estructura
Estilo
z Los atributos no deben ser objetos (usar
relaciones en tal caso)
1. Identificar clases
2. Identificar y depurar relaciones
3. Identificar atributos de clases y relaciones
4. Añadir herencia
5. Comprobar casos de uso (iterar)
6. Añadir y simplificar métodos
Diagramas de estructura
Ejercicio
z Representa mediante un diagrama de clases la siguiente
especificación:
Empleado Cliente
empleados 1..* clientes 0..*
Empleado Cliente
- sueldo_bruto: Double clientes 0..*
empleados 1..*
1 1..*
R4: los empleados que son
directivos tienen una Empresa
categoría y un conjunto de
empleados subordinados
Diagramas de estructura
Ejercicio Persona
R4: los empleados que son - nombre: String R5: teléfono de clientes
- edad: Integer
directivos tienen una
categoría y un conjunto de R6: mostrar datos de
empleados subordinados empleados y clientes
Empleado Cliente
subordinados
- sueldo_bruto: Double 1..* clientes 0..*
0..*
empleados
1 1..*
Directivo Empresa
0..* - categoria: String
Diagramas de estructura
Ejercicio Persona
- nombre: String R5: teléfono de clientes
- edad: Integer
+ mostrar () R6: mostrar datos de
empleados y clientes
Empleado Cliente
subordinados 1..*
- sueldo_bruto: Double - telefono: String
0..* empleados
+ mostrar () + mostrar ()
+ calcular_salario_neto() clientes 0..*
1 1..*
Directivo Empresa
0..* - categoria: String - nombre: String
+ mostrar ()
Diagramas de estructura
Ejemplo
Diagramas de estructura
ReproductorCD
ListaCanciones
Ejemplo - Tpausa: Tiempo
- NumActual: Entero
1 disco
...
1
+ obtenerCancion(Orden: Entero):
+ stop() Cancion
+ pause() + numCanciones(): Entero
InterfazUsuario + play() 1 ....
+ eject()
...
+ apagar()
... + finCancion()
- buscaDisco(d: InfoDisco): pista 0..*
1
ListaCanciones Cancion
player 1 actual
- titulo: Cadena
driver 1 - duracion: Tiempo
ControladorCD - Artista: Cadena
- Orden: Entero
...
...
+ play(act: Cancion, desde: Tiempo)
+ stop() : Tiempo
+ detectarDisco() : InfoDisco
+ detectarAbierto() : Logico
+ abrir()
+ cerrar()
+ apagar()
Diagramas de comportamiento
Colaboraciones
z Una colaboración es una interacción entre dos o
más clases
rol
bindings
restricción
Diagramas de comportamiento
Diagramas de interacción
z Interacción: comportamiento que comprende una
secuencia de mensajes intercambiados entre un
conjunto de objetos de una colaboración, dentro de
un contexto determinado, para alcanzar cierto fin
1.1: crear(cantidad)
:Pago
Iteraciones:
:ClaseE
2: msg6()
:ClaseD :ClaseC
1b.1: msg5()
Diagramas de comportamiento
Diagramas de comunicación
(i) iteración para obtener referencias
a las instancias individuales
servers
:Client :Server
:Server
1:aServer:=find(specs)
multi-objeto
aServer <<local>>
:Server
2:process
z Dos dimensiones:
z Temporal: generalmente vertical
z Instancias: generalmente horizontal. El orden relativo de
las instancias no tiene importancia
lift receiver
dial tone
Objetos
dial digit
Focos de ...
Control route
ac: ds:
LoginPage:
Authentication UserData
Servlet
Controller Service
login(“Dan”,“b4”) validateCredentials
(“Dan”,“b4”)
restoreUserData(“Dan”)
create(“Dan”,”Admin”)
CurrentUser:
UserData
currentUser
currentUser
mensaje de
creación
Diagramas de comportamiento
Diagramas de secuencia
operador guarda marco
preferente usual
:Pedido
:Distribuidor :Distribuidor
entregar()
name:Clase1
new
:Clase2
mensaje
autollamada
return
delete
mensaje de
destrucción
Diagramas de comportamiento
Diagramas de secuencia
sd M sd N
m1 m3 m4
m2
m3 m5
ref
N
Diagramas de comportamiento
Ejercicio
Especificar el diagrama de secuencia de la operación “crearLaberinto”
h1:Habitacion
h2:Habitacion
create(h1,h2)
puerta:Puerta
añadeHabitacion(h1)
añadeHabitacion(h2)
añadePuerta(puerta)
Diagramas de comportamiento
Ejercicio
Especificar el diagrama de secuencia de la operación “crearLaberinto”
public JuegoLaberinto() {
lab = new Laberinto();
conVentana = true;
}
opt [conVentana==true]
v:Ventana
añadeVentana(v)
añadeHabitacion(h)
Diagramas de comportamiento
Ejercicio
Especificar el diagrama de secuencia de la operación “realizarJugada”
definida en la clase Jugador, para el juego del parchís
* 2
Jugador Dado
- casillaActual: int
+ realizarJugada(): void + tirar(): int
+ casillaActual(): int
*
1
Tablero
+ mover(int actual,
int unidades):
boolean
Diagramas de comportamiento
Solución
:Jugador d1:Dado d2:Dado :Tablero
realizarJugada()
par tirar()
n1
tirar()
n2
ca:=casillaActual()
mover(ca,n1+n2)
movRealizado
Diagramas de comportamiento
Ejercicio
Identificar 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.
loop [for i = 1 to 9]
digit(code) displayDigit
(code)
emitTone
(code)
send()
inUse()
connect(pno)
connect()
Diagramas de comportamiento
Ejercicio: posible solución
loop [for i = 1 to 9]
digit(code) displayDigit
(code)
emitTone
(code)
send()
inUse()
connect(pno)
connect()
:Speaker send:Button
1.1: displayDigit(code),
2.2.1: connect()
2.1: inUse()
:Display :Mobile