Logo Studenta

UML-cont 2017

¡Este material tiene más páginas!

Vista previa del material en texto

Introducción al
Lenguaje de Modelado 
UML
Prof. Roxana Giandini
LIFIA - Facultad de Informática - UNLP
Orientación a Objetos I - 2017
Diagramas de Interacción
Prof. R. Giandini Octubre 2017
Definición:
Un diagrama de interacción describe una
interacción, que consta de un conjunto de objetos y
sus relaciones, incluyendo los mensajes que se
pueden enviar, para realizar un comportamiento.
Diagramas de Interacción
•Diagramas de Colaboración:
•Diagramas de Secuencia:
Diagramas de Interacción: tipos
Prof. R. Giandini Octubre 2017
•Objetos
•Enlaces
•Mensajes
• Pueden contener:
▪notas y restricciones.
Diagramas de Interacción: contenido
Prof. R. Giandini Octubre 2017
•Los objetos que participan en una interacción son o 
bien elementos concretos o bien elementos 
prototípicos.
•Ejemplos
:Cuenta
cuenta:Cuenta
Instancia 
anónima
Instancia con 
nombre
Diagramas de Interacción: objetos
Prof. R. Giandini Octubre 2017
•Un enlace es una conexión semántica entre objetos.
•Ejemplos
Persona
+calcularCompensacion()
+asignar(d:Departamento)
Empresa
1..*
empleado
*
patrón
p:Persona :Empresa
clase
clase
asociación
operaciones
enlaceobjeto con 
nombre
objeto 
anónimo
Diagramas de Interacción: enlaces
Prof. R. Giandini Octubre 2017
Diagramas de Interacción
Diagramas de Secuencia
Diagrama de Secuencia
•Definición: 
Un diagrama de secuencia destaca la ordenación
temporal de los mensajes.
Prof. R. Giandini Octubre 2017
Diagrama de Secuencia
•Cada objeto cuenta con una línea de vida, que muestra 
el tiempo de vida del mismo.
•La activación de un objeto representa la ejecución de
una operación que realiza el mismo, a través del envío
de un mensaje.
•Notación:
objetoA:ClaseA objeto
tiempo de vida
activación
Prof. R. Giandini Octubre 2017
Mensajes
objetoA:ClaseA :ClaseB
Invocación 
Local
Mensaje Sincrónico
Mensaje 
Asíncrono
Linea de Retorno 
(opcional)
Prof. R. Giandini Octubre 2017
Mensajes
Mensaje sincrónico
•Sintaxis:
[expresión iteración] [valor de retorno :=] nombre del mensaje 
(parámetros)
•Puede indicarse el fin de su ejecución con una línea 
punteada del objeto receptor al emisor: Línea Retorno/ 
Resultado Esta línea es OPCIONAL (en caso que se 
especifique correctamente la Activación del objeto 
Receptor).
•El Resultado o Valor de Retorno también puede 
especificarse a izquierda del nombre del mensaje, en una 
asignación (ver Sintaxis), en caso que No se haya 
especificado la línea Retorno.
Prof. R. Giandini Octubre 2017
Diagrama de Secuencia: construcción
•Primer Paso: Se colocan los objetos que participan en 
la interacción en la parte superior del diagrama.
•Ejemplo
a:AyudaPlanificación
:Cliente
Prof. R. Giandini Octubre 2017
Diagrama de Secuencia: construcción
•Segundo Paso: se colocan los mensajes que estos 
objetos envían y reciben, en orden de sucesión en el 
tiempo, desde arriba hasta abajo.
•Ejemplo
a:AyudaPlanificación
:Cliente
:AgenteViaje
notificar()
objeto
establecerItinerario()
calcularRuta()
mensaje
destrucción
<<destroy>>
retorno
<<create>>
creación
mensaje
mensaje
(invocación local)
Prof. R. Giandini Octubre 2017
•Se encierra en un rectángulo y se le agrega una 
etiqueta con sd seguido del nombre.
borra()
sd Nombre
:Objeto1
:Objeto2
crea()
mensaje()
autodelegación
Diagrama de Secuencia: notación
Prof. R. Giandini Octubre 2017
•Definición: 
mecanismo a través del cual se puede realizar la 
especificación de bloques repetitivos, opcionales, 
alternativos, entre otros.
•Operadores más utilizados:
- opt alt loop
Diagrama de Secuencia: fragmentos (frames)
Prof. R. Giandini Octubre 2017
Fragmento: alternativa
•Notación: se encierra en un rectángulo (frame), se le 
agrega una etiqueta con el operador alt y se colocan 
las guardas.
[guard 1]
sd Nombre :Clase1 :Clase2
Mensaje4
alt
Mensaje3
Mensaje2
Mensaje1
[guard 2]
Prof. R. Giandini Octubre 2017
•Notación: se encierra en un rectángulo (frame), se le 
agrega una etiqueta con el operador loop y la cantidad 
de iteraciones (opcional).
Fragmento: bucle
:Clase1 :Clase2
Mensaje1
Mensaje2
Mensaje3
Mensaje4
Loop 
[repetición]
sd Nombre
Prof. R. Giandini Octubre 2017
Prof. R. Giandini Octubre 2017
Ejemplo: Depósito bancario
:Banco unaCuenta: CuentaBancaria
depositar(unMonto:Number)
depositar(unMonto:Number, 
unaCuenta:CuentaBancaria)
Prof. R. Giandini Octubre 2017
Ejemplo: Transferencia bancaria
:CuentaBancaria otraCuenta: CuentaBancaria
extraer(unMonto:Number)
depositar(unMonto:Number)
transferir(unMonto:Number, 
otraCuenta:CuentaBancaria)
Prof. R. Giandini Octubre 2017
Otro Ejemplo: Extracción con registro de movimiento
El diagrama describe siempre un escenario de uso, no es necesario que represente 
todas las posibilidades
Prof. R. Giandini Octubre 2017
Otro Ejemplo: Calculo del saldo disponible
Considerando los movimientos de la CuentaBancaria
Orientación a Objetos I
Universidad Nacional de La Plata
Facultad de Informática
Qué es el registro de movimientos de 
una CuentaBancaria???
Orientación a Objetos I
Universidad Nacional de La Plata
Facultad de Informática
Prof. R. Giandini Setiembre 2017
Diagrama de clases – Ejemplo ya presentado
Orientación a Objetos I
Universidad Nacional de La Plata
Facultad de Informática
Crear el registroDeMovimientos para Cuentas Bancarias
CuentaBancaria>>initialize:unNumero 
self numeroCuenta: unNumero.
….
movimientos:= OrderedCollection new.
Orientación a Objetos I
Universidad Nacional de La Plata
Facultad de Informática
• Supongamos que queremos distinguir la forma 
en que se imprime cada tipo de movimiento
• Crear subclases de la clase Movimiento
– Cada subclase de Movimiento se imprime a su 
manera 
– Cada objeto CuentaBancaria conoce una colección 
de movimientos heterogénea.
– En cada transacción se crea el movimiento 
correspondiente
– El movimiento se agrega a la colección de 
movimientos
Registrar Movimientos de Extracción y Depósito
Orientación a Objetos I
Universidad Nacional de La Plata
Facultad de Informática
depositar(mo
CuentaBancaria>>depositar: unMonto
self incrementarSaldo: unMonto.
self movimientos add: (MovDeposito new inicializar:Date
today monto:unMonto) 
Banco
*
cuentas
Registrar Movimientos de Extracción y Depósito
MovExtraccion MovDeposito
Movimiento
depositar: mdepositar(.)
CuentaBancaria
CajaAhorro CuentaCorriente
CuentaBancaria
CajaAhorro CuentaCorriente
Imprimir() Imprimir()
No usamos v.i.
tipo.
movimientos 
*
Orientación a Objetos I
Universidad Nacional de La Plata
Facultad de Informática
Emitir resumen de todas las cuentas del banco
Banco>> emitirResumen
self cuentas do:[:c| c emitirResumen]
CuentaBancaria>>emitirResumen
self movimientos do:[:m| m imprimir]
•De qué clase son los objetos de la colección 
cuentas?
•De que clase son los objetos de la colección 
movimientos?
•Donde está presente el polimorfismo?
Orientación a Objetos I
Universidad Nacional de La Plata
Facultad de Informática
Retornar el último movimiento realizado en una 
cuenta
CuentaBancaria>>ultimoMovimiento
^(self movimientosasSortedCollection:[:m1 :m2 |m1 fecha 
> m2 fecha]) first
Orientación a Objetos I
Universidad Nacional de La Plata
Facultad de Informática
Reuso de Código
Herencia vs. Composición
Orientación a Objetos I
Universidad Nacional de La Plata
Facultad de Informática
Herencia de Clases
• Herencia total: debo conocer todo el código que se 
hereda -> Reutilización de Caja Blanca
• Usualmente debemos redefinir
• Los cambios en la superclase se propagan 
automáticamente a las subclases
• Herencia de Estructura vs. Herencia de 
comportamiento
• Es útil para extender la funcionalidad del dominio de 
aplicación
Orientación a Objetos I
Universidad Nacional de La Plata
Facultad de Informática
Composición de Objetos
• Los objetos se componen en forma Dinámica -> 
Reutilización de Caja Negra
• Los objetos pueden reutilizarse a través de su interfaz
(sin conocer el código)
• A través de las relaciones de composición se pueden 
delegar responsabilidades entre los objetos
Orientación a Objetos I
Universidad Nacional de La Plata
Facultad de Informática
Un simple ejemplo: Clase Cola
• Cola es una estructura de datos con comportamiento
específico.
• Implementaría Cola como subclase de 
OrderedCollection?
• Tiene sentido heredar todo el comportamiento de 
OrderedCollection?
• Habria que anular o redefinir demasiado 
comportamiento?
• Cola se compone de una OrderedCollection para 
mantener sus elementos?
Orientación a Objetos I
Universidad Nacional de La Plata
Facultad de Informática
Un simple ejemplo: Clase Cola
Cola como subclase de Object
Cola>>initialize 
+push:()
+Pop()
+Top()
+ isEmpty()
-elementos
Cola
elementos := OrderedCollection new.
Cola>> push: unObjeto
elementos addLast: unObjeto
Cola>> pop
^ elementos removeFirst
Cola>> top
^ elementos first
Cola>> isEmpty
^ elementos isEmpty
Orientación a Objetos I
Universidad Nacional de La Plata
Facultad de Informática
Un simple ejemplo: ColaDoble y Pila
• Una ColaDoble es una secuencia de elementos 
a la que se puede agregar y sacar elementos 
por ambos extremos.
• Como implementaría la clase ColaDoble 
usando la clase Cola?
• Como implementaría la clase Pila usando 
ColaDoble?
• Ejercicio para la casa….

Continuar navegando

Contenido elegido para ti

34 pag.
POO1-2006 - Laura Rentería

User badge image

Desafio PASSEI DIRETO

39 pag.
Análisis y Diseño Orientado a Objetos con UML

SIN SIGLA

User badge image

Materiales y Contenidos

14 pag.
Práctica 9 V1

UNAM

User badge image

Jorge Luis Tellez

24 pag.
Unidad_4

UNAM

User badge image

Vitoria Garcés