Escolar Documentos
Profissional Documentos
Cultura Documentos
UML:
Lenguaje Unificado de Modelado
Introduccin
z
z
Booch OOD
Rumbaugh OMT
Jacobson OOSE y Objectory
Introduccin
z
Similitud:
z
z
Contenido
z
Diagramas de estructura
z
z
z
Clases y objetos
Relaciones
Interfaces
Diagramas de comportamiento
z
z
z
Colaboraciones
Diagramas de secuencia
Diagramas de comunicacin
Diagramas de estructura
Clases y objetos
z
Diagramas de estructura
Clases y objetos. Ejemplo
Diagrama de
clases:
Elemento
Carbono
Diagrama de
objetos:
:Hidrgeno
Hidrgeno
:Hidrgeno
:Hidrgeno
:Carbono
:Carbono
:Hidrgeno
:Hidrgeno
:Hidrgeno
Diagramas de estructura
Clases y objetos
Nombre
de la clase
visibilidad
Circulo
-radio: double
-centrox: double
-centroy: double
+Area(): double
+Permetro(): double
Nombre
del objeto
En cursiva si es
abstracta
Atributos
Operaciones
Clase
del objeto
unCirculo: Circulo
radio = 3.4
centrox = 2.0
centroy = 2.0
Valores de
los atributos
Diagramas de estructura
Atributos
z
Diagramas de estructura
Atributos. Ejemplo
ClaseA
name: String
shape: Rectangle
+ size: Integer [0..1]
/ area: Integer {readOnly}
height: Integer = 5
width: Integer
# pos: Point
ClaseB
id: {redefines name}
shape: Square
Diagramas de estructura
Mtodos
z
display()
+ toString(): String
Diagramas de estructura
Estereotipos
z
Ejemplos:
z
z
z
z
<<type>>
<<enumeration>>
<<interface>>
...
<<enumeration>>
MiBooleano
+ cierto: Integer
+ false: Integer
Diagramas de estructura
Relacin de generalizacin
z
Especializacin
Figura
Circulo
Cuadrado
Elipse
Diagramas de estructura
Relacin de generalizacin
z
{sexo}
Mujer
Hombre
discriminador
{profesin}
Celador
Enfermero
Mdico
Diagramas de estructura
Relacin de asociacin
z
z
Cliente
titular
Tiene
1..*
Ejemplos de cardinalidad:
1..*
0..1
1,2
3
cuentas
0..*
Cuenta
Navegacin:
unidireccional
bidireccional
no especificado
no navegable (x)
Diagramas de estructura
Relacin de asociacin
public class B {
List<A> a = new ArrayList<A>(4);
}
Equivalente a:
B
a: A[1..4]
Diagramas de estructura
Relacin de composicin
z
Punto
(todo)
(parte)
Diagramas de estructura
Relacin de agregacin
z
susFiguras
0..*
(todo)
z
Figura
(parte)
Diagramas de estructura
Relacin de dependencia
z
susFiguras
Figura
0..*
Draw(ContextoDibujo)
suContexto
ContextoDibujo
Dependencia
Diagramas de estructura
Clases asociativas
z
Persona
testigos 2
Matrimonio
- fecha
Clase asociativa
Diagramas de estructura
Interfaces
z
z
z
Nombre
Operaciones sin implementacin y constantes
Relaciones de realizacin
Pueden tener relaciones de generalizacin
No incluyen:
z
z
Atributos
Asociaciones
Diagramas de estructura
Interfaces. Ejemplo
Diagramas de estructura
Clases parametrizadas (templates)
z
z
Diagramas de estructura
Clases parametrizadas (templates)
T
MiArray
+ elems: T[0..*]
+ add(T elem): void
+ get(int pos): T
<<bind>> (Ficha)
ListinTelefonico
Diagramas de estructura
Estilo
z
Constructores
Mtodos de acceso (get/set)
Mtodos de gestin de elementos de una
asociacin o agregacin (por ej. add/remove)
Diagramas de estructura
Modelado de sistemas
z
1.
2.
3.
4.
5.
6.
Identificar clases
Identificar y depurar relaciones
Identificar atributos de clases y relaciones
Aadir herencia
Comprobar casos de uso (iterar)
Aadir y simplificar mtodos
Diagramas de estructura
Ejercicio
z
Diagramas de estructura
Ejercicio
R1: una aplicacin necesita
almacenar informacin
sobre empresas, sus
empleados y sus clientes
Empleado
empleados
Cliente
1..*
clientes 0..*
1..*
Empresa
Diagramas de estructura
Ejercicio
Persona
- nombre: String
- edad: Integer
Cliente
clientes 0..*
1..*
Empresa
Diagramas de estructura
Ejercicio
Persona
subordinados
0..*
- nombre: String
- edad: Integer
Empleado
Cliente
- sueldo_bruto: Double
1..*
clientes 0..*
empleados
1
Directivo
1..*
Empresa
Diagramas de estructura
Ejercicio
subordinados
0..*
Persona
- nombre: String
- edad: Integer
+ mostrar ()
Empleado
- sueldo_bruto: Double
+ mostrar ()
+ calcular_salario_neto()
Cliente
1..*
empleados
- telefono: String
+ mostrar ()
clientes 0..*
1
Directivo
1..*
Empresa
- nombre: String
Diagramas de estructura
Ejemplo
Diagramas de
estructura
ReproductorCD
Ejemplo
InterfazUsuario
...
...
- Tpausa: Tiempo
- NumActual: Entero
disco
1
+ stop()
+ pause()
+ play()
1
+ eject()
+ apagar()
+ finCancion()
- buscaDisco(d: InfoDisco):
ListaCanciones
player 1
driver 1
ControladorCD
...
+ play(act: Cancion, desde: Tiempo)
+ stop() : Tiempo
+ detectarDisco() : InfoDisco
+ detectarAbierto() : Logico
+ abrir()
+ cerrar()
+ apagar()
ListaCanciones
...
+ obtenerCancion(Orden: Entero):
Cancion
+ numCanciones(): Entero
....
pista 0..*
1
actual
Cancion
- titulo: Cadena
- duracion: Tiempo
- Artista: Cadena
- Orden: Entero
...
Diagramas de comportamiento
Colaboraciones
z
Diagramas de comportamiento
Colaboraciones. Ejemplo
Estructura interna de una colaboracin
rol
bindings
restriccin
Diagramas de comportamiento
Diagramas de interaccin
z
Diagramas de comportamiento
Diagramas de comunicacin
z
Objetos necesarios
(roles o instancias)
para una interaccin,
y sus relaciones
/ Observer : SlidingBarIcon
relacin
roles
z
Similar a un
diagrama de objetos,
muestra el contexto
necesario para una
colaboracin
:Window
relacin
/Subject :CallQueue
participantes
Diagramas de comportamiento
Diagramas de comunicacin
z
Llamadas anidadas:
realizarPago(cantidad)
:Registro
1: realizarPago(cantidad)
:Venta
1.1: crear(cantidad)
:Pago
Iteraciones:
ejecutar( )
:Simulador
:Random
Diagramas de comportamiento
Diagramas de comunicacin
:ClaseE
2: msg6()
msg1()
condiciones
:ClaseA
1a [test]: msg2()
:ClaseD
1b.1: msg5()
:ClaseB
1a.1: msg3()
:ClaseC
Diagramas de comportamiento
Diagramas de comunicacin
(i) iteracin para obtener referencias
a las instancias individuales
servers
:Client
:Server
:Server
1:aServer:=find(specs)
multi-objeto
aServer <<local>>
:Server
2:process
(ii) mensaje a cada instancia,
usando la referencia temporal
Diagramas de comportamiento
Diagramas de secuencia
z
Dos dimensiones:
z
z
Diagramas de comportamiento
Diagramas de secuencia
:caller
:exchange
:receiver
lift receiver
dial tone
Objetos
Focos de
Control
dial digit
...
route
ringing tone
phone rings
answer phone
Mensajes
stop tone
stop ringing
Diagramas de comportamiento
Diagramas de secuencia
Tipos de flujo de control
Llamada a procedimiento u otra forma de llamada con
anidamiento de control. La secuencia anidada termina
antes de que siga la operacin que invoc. Puede
usarse para procesos concurrentes cuando el mensaje
es sncrono.
Comunicacin asncrona, sin anidamiento de control.
El objeto que enva no se detiene a esperar respuesta.
Retorno de una llamada a procedimiento. Puede
omitirse si queda claro por el fin de la activacin.
Diagramas de comportamiento
Diagramas de secuencia
LoginPage:
Servlet
login(Dan,b4)
ac:
Authentication
Controller
ds:
UserData
Service
validateCredentials
(Dan,b4)
restoreUserData(Dan)
create(Dan,Admin)
currentUser
currentUser
mensaje de
creacin
CurrentUser:
UserData
Diagramas de comportamiento
Diagramas de secuencia
guarda
operador
marco
preferente
:Distribuidor
:Pedido
usual
:Distribuidor
entregar()
loop
alt
[else]
entregar()
procedure entregar()
foreach producto:
if producto.value>10000
preferente.entregar()
else
usual.entregar()
end if
end for
end procedure
Diagramas de comportamiento
Diagramas de secuencia
z
Diagramas de comportamiento
Diagramas de secuencia
sd name
name:Clase1
new
:Clase2
mensaje
autollamada
return
delete
mensaje de
destruccin
Diagramas de comportamiento
Diagramas de secuencia
sd M
sd N
:Clase1
:Clase2
:Clase3
m1
:Clase2
m3
:Clase3
m4
m2
m3
m5
ref
Diagramas de comportamiento
Ejercicio
Especificar el diagrama de secuencia de la operacin 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.aadeHabitacion(h1);
lab.aadeHabitacion(h2);
h1.aadePuerta(puerta);
return lab;
}
}
Diagramas de comportamiento
Solucin
:JuegoLaberinto
crearLaberinto()
lab:Laberinto
h1:Habitacion
h2:Habitacion
create(h1,h2)
puerta:Puerta
aadeHabitacion(h1)
aadeHabitacion(h2)
aadePuerta(puerta)
Diagramas de comportamiento
Ejercicio
Especificar el diagrama de secuencia de la operacin crearLaberinto
public class JuegoLaberinto {
private Laberinto lab;
private boolean conVentana;
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.aadeVentana(new Ventana());
lab.aadeHabitacion(h);
}
}
Diagramas de comportamiento
Solucin
:JuegoLaberinto
lab:Laberinto
crearLaberinto()
loop
[for i = 1 to 10]
h:Habitacion
opt
[conVentana==true]
v:Ventana
aadeVentana(v)
aadeHabitacion(h)
Diagramas de comportamiento
Ejercicio
Especificar el diagrama de secuencia de la operacin realizarJugada
definida en la clase Jugador, para el juego del parchs
Jugador
- casillaActual: int
+ realizarJugada(): void
+ casillaActual(): int
Dado
+ tirar(): int
*
1
Tablero
+ mover(int actual,
int unidades):
boolean
Diagramas de comportamiento
Solucin
d1:Dado
:Jugador
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 realizacin de una
llamada desde un telfono mvil.
z
z
z
z
z
z
z
Diagramas de comportamiento
Ejercicio: posible solucin
:Button
loop
:Dialer
:Display
:Speaker
send:Button
:Net
:Mobile
[for i = 1 to 9]
digit(code)
displayDigit
(code)
emitTone
(code)
send()
inUse()
connect(pno)
connect()
Diagramas de comportamiento
Ejercicio: posible solucin
:Button
loop
:Dialer
:Display
:Speaker
send:Button
:Net
:Mobile
[for i = 1 to 9]
digit(code)
displayDigit
(code)
emitTone
(code)
send()
inUse()
connect(pno)
connect()
Diagramas de comportamiento
Solucin
:Speaker
1.2: emitTone(code)
:Button
:Dialer
send:Button
2: send()
2.2: connect(pno)
:Net
1.1: displayDigit(code),
2.1: inUse()
:Display
2.2.1: connect()
:Mobile