Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Casos Prácticos de UML PDF
Casos Prácticos de UML PDF
de UML
Primera edicin:
Septiembre de 2011
ISBN: 978-84-9938-100-8
Enunciado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Diagramas de casos de uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Especificaciones de casos de uso. . . . . . . . . . . . . . . . . . . . . . . . . 13
Diagrama de clases (diseo previo) . . . . . . . . . . . . . . . . . . . . . 13
Diagrama de clases (diseo detallado) . . . . . . . . . . . . . . . . . . . 14
Re-estructuracin del rbol. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Diagrama de secuencia (diseo previo) . . . . . . . . . . . . . . . . . . 15
Diagrama de secuencia (diseo detallado) . . . . . . . . . . . . . . . . 18
Refinamiento del diagrama de casos de uso y
especificaciones de casos de uso . . . . . . . . . . . . . . . . . . . . . 20
Refinamiento del diagrama de clases . . . . . . . . . . . . . . . . . . . . 21
Solucin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Diagramas de casos de uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Diagramas de agenda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Especificaciones de casos de uso . . . . . . . . . . . . . . . . . . . . . . . . 27
Diagrama de clases (previo y detallado) . . . . . . . . . . . . . . . . . . 31
Re-estructuracin del rbol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Diagramas de secuencia previos . . . . . . . . . . . . . . . . . . . . . . . . 32
Diagramas de secuencia detallados . . . . . . . . . . . . . . . . . . . . . . 39
Enunciado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Solucin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Enunciado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Solucin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Diagrama de casos de uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Diagrama de clases. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Diagrama de secuencia detallado. . . . . . . . . . . . . . . . . . . . . . . . 57
Caso prctico 4: Sistema de ecuaciones de grado n
Enunciado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Solucin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Diagrama de casos de uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Diagrama de clases. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Clases y mtodos abstractos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Diagrama de secuencia previo . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Diagrama de secuencia detallado. . . . . . . . . . . . . . . . . . . . . . . . 67
Generacin de cdigo para la clase Ecuacion. . . . . . . . . . . . . . 68
Enunciado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Solucin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Diagrama de casos de uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Diagrama de clases. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Patrn Singleton. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Diagrama de estados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Apndice: breve manual de uso del Rational Rose . . . . . . . . . . . . 79
CASO PRCTICO 1:
Sistema de gestin de agendas y reuniones
1
Adaptado de Juan Pavn. Basado en la prctica del Curso 2008/09
Se pide modelar el caso con la herramienta Bouml 4.9.1, con los siguientes
requisitos:
Diagramas de casos de uso
Se deben crear dos sub vistas de casos de uso dentro de la vista de casos de
uso a la cual se quieren aadir los diagramas de secuencia. Una de las dos
sub vistas contendr los diagramas de secuencia previos; la otra los
diagramas de secuencia detallados. Este es un ejemplo de cmo quedara el
navegador del Bouml, para la parte de Tarea y un nico caso de uso (se la
considera como si no hubiera mas cosas):
Figura 2. Diagrama de secuencia previo para la secuencia normal del caso de uso CrearTarea
Figura 13. Diagrama de relaciones entre actores (dentro de los casos de uso)
Caso de uso 2
Nombre: ConcertarReunion
Objetivo: Mediante este caso de uso se decide fecha de
reunion.
Precondiciones entradas: La opcin ConcertarREunion ha
sido seleccionada.
Postcondiciones salida: Se ha creado una reunion; se
ha apuntado en la agenda de los invitados.
Caso de uso 3
Nombre: ConcertarReunionArbitraria
Objetivo: Mediante este caso de uso se concierta una
reunion con fecha elegida por el promotor.
Precondiciones entradas: La opcin
ConcertarREunionArbitraria ha sido seleccionada.
Postcondiciones salida:
Condicin final exitoso: Se ha creado una reunion; se
ha apuntado en la agenda de los invitados. Mensaje
"Reunion creada". Mensaje "Apuntada en agenda".
Condicin final fallido: No se crean ni la reunion ni
se apunta en la agenda. Mensaje "Reunion no creada y
no apuntada en agenda"
Actor primario: AdministradorReunion
Actores secundarios: SistemaGestionReuniones, Invitado
Secuencia normal:
1. El AdministradorReunion pide fechas de la reunion
al SistemaGestionReunion.
2. El SistemaGestionReunion le muestra al
AdministradorReunion una lista de fechas segun agendas
de usuarios grupo.
3. El AdministradorReunion selecciona una fecha.
Caso de uso 4
Nombre: ConcertarReunionVotacin
Postcondiciones salida:
Secuencia normal:
1. El AdministradorReunion pide fechas de la reunion
al SistemaGestionReunion.
2. El SistemaGestionReunion le muestra al
AdministradorReunion una lista de fechas segun agendas
de usuarios grupo.
3. El AdministradorReunion pide que al
SistemaGestionReunion que se haga una votacin de las
fechas.
4. El SistemaGestionReunion pide a los Invitados que
voten.
5. Los invitados votan la fecha.
6. El SistemaGestionReunion muestra la fecha final al
Administrador.
7. El AdministradorReunion proporciona el resto de
datos: titulo, descripcion, objetivos, lugar y
duracion.
8. El SistemaGestionReunion actualiza la informacion
en las agendas de los invitados a la reunin.
9. El SistemaGestionReunion da el mensaje "Reunion
creada" a los invitados y a l administrador de la
reunin.
Flujo alternativo a:
1a. El AdministradorReunion pulsa Cancelar
2a. El SistemaGestionReunion da el mensaje "Reunion no
creada y no apuntada en agenda"
Flujo alternativo b:
3b. El AdministradorReunion pulsa Cancelar
4b. "Reunion no creada y no apuntada en agenda"
Flujo alternativo c:
7c. El AdministradorReunion pulsa Cancelar
8c. "Reunion no creada y no apuntada en agenda"
Se van a exponer los diagramas de secuencia de los casos de uso para los
cuales existe especificacin: CrearTarea, ConcertarReuninArbitraria,
ConcertarReuninVotacin:
Figura 17. Diagrama de secuencia previo del caso de uso CrearTarea (flujo alternativo)
Se han incluido los diagramas de secuencia detallados para los que existen
diagramas de secuencia previos.
Figura 26. Diagrama de secuencia detallado para el caso de uso CrearTarea (flujo alternativo a)
Solucin
Pgina
Objeto representable
Texto
Objeto grfico
2
Ejercicio propuesto en el curso 2008/09
Curvilneo
Polgono
Circulo
Elipse
Rectngulo
Tringulo
Cuadrado
Grupo y grupo
Curvilneo y elipse
Polgono y rectngulo
Polgono y tringulo
Polgono y cuadrado
3
Incluido en el examen ordinario del curso 2008/09
Figura 37. Diagrama de secuencia detallado de Crear fichero (flujo alternativo binario)
4
Includo en el examen ordinario del curso 2009/10
Solucin
Los diagramas han sido diseados con Rational Rose Enterprise Edition
2003).
ResuelveEcuacion
Matematico
CreaEcuacion
<<include>>
RepresentaEcuacion
Informatico
RepresentaCompacta RepresentaExtendida
Sumando
Ecuacion
signo : Character
grado : Integer
numerador : Integer
soluciones : Integer[]
denominador : Integer
0..* 1..* grado : Integer
crear()
resolver()
crear()
se_asocia
Representacion
contenido : String
crear()
RepresentacionCompacta RepresentacionExtendida
crear() crear()
: Sistema
: Informatico : Matematico
Introducir grado 1
"2x+1=0"
En este diagrama hay que reflejar las interacciones entre los actores y el
sistema. Tambien sera vlido reflejar las interacciones sistema-sistema.
: Informatico : Matematico
crear(1) : Ecuacion
aadirSumando(+,1,2,1)
aadirRepresentacion("compacta")
crear( ) :
RepresentacionCompacta
"2x+1=0"
"2x+1=0"
//Metodos
//
}
Lo importante en esta pregunta es que en la generacin de cdigo, las
relaciones de Ecuacin con las clases Representacin y Sumando, quedan
reflejadas como nuevos atributos. Ntese que tambin queda reflejada si la
multiplicidad es con muchos (como un atributo en forma de array) o con
uno solo (como un atributo atmico).
Quetzalix
5
Includo en el examen extraordinario del curso 2009/10
Solucin
1. Alumno.h
2. Alumno.cpp
3. Asignatura.h
4. Asignatura.cpp
5. Optativa.h
6. Optativa.cpp
Alumno.h
class Asignatura;
//##ModelId=4AC0DD610253
class Alumno
{
public:
//##ModelId=4AC0DD78031E
Asignatura* theAsignatura;
//##ModelId=4AC0DEEF0282
String getNombre();
//##ModelId=4AC0DEFE0011
String getApellido();
private:
//##ModelId=4AC0DE740159
String nombre;
//##ModelId=4AC0DE8002EF
};
#include "stdafx.h"
#include "Alumno.h"
#include "Asignatura.h"
//##ModelId=4AC0DEEF0282
String Alumno::getNombre()
{
// TODO: Add your specialized code here.
// NOTE: Requires a correct return value to
compile.
}
//##ModelId=4AC0DEFE0011
String Alumno::getApellido()
{
// TODO: Add your specialized code here.
// NOTE: Requires a correct return value to
compile.
}
//##ModelId=4AC0DD6B03DA
class Asignatura
{
public:
//##ModelId=4AC0DF780205
String getNombre();
private:
//##ModelId=4AC0DF7102A1
String nombre;
};
#endif /* _INC_ASIGNATURA_4AC0DD6B03DA_INCLUDED */
#include "stdafx.h"
#include "Asignatura.h"
//##ModelId=4AC0DF780205
String Asignatura::getNombre()
{
// TODO: Add your specialized code here.
// NOTE: Requires a correct return value to
compile.
}
#include "Asignatura.h"
//##ModelId=4AC0E56102A1
class Optativa
: public Asignatura
{
public:
//##ModelId=4AC0E8460001
int getCreditos();
private:
//##ModelId=4AC0E856038B
int creditos;
};
#endif /* _INC_OPTATIVA_4AC0E56102A1_INCLUDED */
#include "stdafx.h"
#include "Optativa.h"
//##ModelId=4AC0E8460001
int Optativa::getCreditos()
{
// TODO: Add your specialized code here.
return (int)0;
}