Академический Документы
Профессиональный Документы
Культура Документы
de modelado
con UML
Programacin orientada a objetos
David Masip Rodo
Elena Planas Hortal (coordinadores)
Jordi Brnquez Jimnez
Juanma Dodero Beardo
Marta Tarrs Puertas
PID_00145182
FUOC PID_00145182 3 Problemas de modelado con UML
ndice
Introduccin ......................................................................................... 5
Introduccin
El resultado de esta fase ser la obtencin de una lista de clases que acabarn
conformando nuestro modelo de datos.
Consiste en establecer las distintas relaciones entre clases que se pueden inferir
a partir del enunciado del problema. Para crear el modelo de datos, en la ma-
yora de problemas no podremos abordar el proceso de creacin de golpe, sino
que deberemos ir creando pequeos modelos que constituyan partes funciona-
les del modelo completo y, posteriormente, irlas juntando hasta completar el
proceso, relacionando las clases identificadas en el primer paso.
Ejemplo de aplicacin
Solucin:
Event
Conference BoardMeeting
Person
Member
BoardMember
AAUOC
Person
Location
Event
Member
Conference BoardMeeting
BoardMember
FUOC PID_00145182 10 Problemas de modelado con UML
Una vez creado el modelo de datos, completamos las clases con sus atributos
y los mtodos ms relevantes (quedan fuera de este diagrama los mtodos
getters y setters, as como los mtodos constructores de cada clase).
max_attendees : Integer
lidad de las relaciones
attendsTo
AAUOC
0..*
Person
0..*
0..*
Location attendsTo
1 isLocatedIn 0..*
Conference BoardMeeting
BoardMember
0..*
0..* attendsTo 0..*
attendsTo
FUOC PID_00145182 11 Problemas de modelado con UML
La UOC est realizando una revisin de sus aplicativos para gestionar a los
profesores, debido a que se han dado cuenta de que tienen ciertas necesida-
des que en el momento de su creacin no se tuvieron en cuenta.
Por ejemplo, los profesores internos tienen un sueldo fijo, los asociados ex-
ternos tienen un sueldo dependiente del nmero de alumnos y crditos en
los que imparten clase, pero todos tienen un conjunto de aulas asociado.
Se pide el diagrama UML que incluya las clases, relaciones, atributos y mto-
dos que participan en el diseo de las funcionalidades requeridas.
Solucin:
Teacher
InternalTeacher ExternalTeacher
FUOC PID_00145182 12 Problemas de modelado con UML
Aparte, tenemos las clases Empresa (Company) y Clase (Class), que se relacio-
nan con el resto de clases de la siguiente manera:
UOC
Company
Class
Teacher
InternalTeacher ExternalTeacher
Una vez creado el modelo de datos, debemos completar las clases con sus
atributos y los mtodos ms relevantes (quedan fuera de este diagrama los
mtodos getters y setters, as como los mtodos constructores de cada clase).
UOC
Class
Teacher Company
getSalary() : Double
Class Teacher
Company
InternalTeacher ExternalTeacher
UOC
0..*
0..*
0..* Company
Class
Teacher
0..* 0..*
0..*
InternalTeacher ExternalTeacher
FUOC PID_00145182 14 Problemas de modelado con UML
Problema 2: UOCphone
El primer sistema es para los clientes que tienen contrato, de los cuales se
conoce un nmero de cliente.
Cada lnea de telefona mvil con contrato tiene una modalidad de tarifica-
cin establecida (maana o tarde) que puede cambiarse. En el sistema prepa-
go, como no se conoce al cliente, los puntos se asocian al nmero de telfo-
no del mvil en prepago.
Las lneas prepago deben recibir un punto por minuto. Las lneas de contrato
deben recibir 1,5 puntos por minuto de las llamadas realizadas dentro de la
franja horaria coincidente con la modalidad de tarificacin contratada (la
maana va desde las 8:00 hasta las 15:00 y la tarde desde las 15:00 hasta
las 20:00), y un punto por minuto de las llamadas realizadas fuera de esa
franja. Todos los puntos deben acumularse inmediatamente, tras finalizar
cada llamada.
Solucin:
Por otro lado, para decidir posteriormente los puntos a otorgar, se asocia a
cada lnea la historia de sus llamadas salientes, a travs de la asociacin que
une Line y OutCall.
Los clientes se han modelado con la clase ClientAccount, que aglutina slo los
atributos que nos interesan para nuestro problema. Como los puntos de
todos los ContractLine de un mismo cliente se deben agregar, se utiliza para
ello un atributo credits en la clase ClientAccount.
Cada vez que se haga una llamada se deber crear una instancia de OutCall y
llamar a Line::updateCredits(). Por lo tanto, el sentido de navegacin de las
asociaciones ser Line OutCall y ContractLine ClientAccount. Las cardina-
lidades se indican en el diagrama, segn se deduce del enunciado.
<<type>>
RateFrame
Line makes OutCall
morning : Integer 1 0..*
ClientAccount evening : Integer number : String start : Date
end : Date
id : String makeCall(start : Date,end : Date) : void
credits : Integer updateCredits() : void
1
holds ContractLine PrepayLine
1..*
contractRateFrame : RateFrame credits : Integer
FUOC PID_00145182 17 Problemas de modelado con UML
Solucin:
Docente (Docent)
Administrativo (Administrative)
Personal / Empleado (Employee)
Nmina (Payroll)
Universidad (University): clase principal
Dado que una misma persona no puede ser a la vez docente y administrati-
vo, hemos utilizado una relacin de herencia y aadido la clase abstracta
PersonnelRole para clasificar al personal en uno de los dos tipos de puesto,
segn el modelo siguiente:
FUOC PID_00145182 18 Problemas de modelado con UML
PersonnelRole
1
Docent Administrative
Por otro lado, la relacin entre cada Employee y su nmina se ha modelado con
una asociacin. La clase Payroll almacena instancias de las nminas calculadas
para los empleados, una por cada mes y empleado. La relacin de empleados
de la universidad se modela con la agregacin entre University y Employee.
para localizar la nmina de un cierto mes har falta filtrar, de entre todas las
instancias de Payroll asociadas al empleado, la correspondiente al mes.
PersonnelRole
1
getSalary()
Docent Administrative
getBaseSalary() getBaseSalary()
getVariableSalary() getVariableSalary()
FUOC PID_00145182 20 Problemas de modelado con UML
La aplicacin que se disee para tratar con nmeros complejos debe poder
interoperar con una clase Point ya definida, que guarda las coordenadas de
un punto en el plano. Las operaciones algebraicas de suma y producto deben
poder hacerse entre nmeros complejos, entre nmeros complejos y puntos,
y entre nmeros reales y nmeros complejos.
Solucin:
La clase Complex se relaciona con la clase Point mediante una relacin de uso.
Complex
real : double
imag : double Point
x : double
add(other : Complex) : Complex y : double
add(r : double) : void
add(p : Point) : void
argument() : double
conjugate() : Complex
modulus() : double
printCartesian() : String
printPolar() : String
FUOC PID_00145182 22 Problemas de modelado con UML
Se pide el diagrama UML que incluya las clases, relaciones, atributos y mto-
dos que participan en el diseo de las funcionalidades requeridas.
Solucin:
Figura (Figure)
Crculo (Circle)
Rectngulo (Rectangle)
Tringulo (Triangle)
Cuadrado (Square)
Figure
x : Integer
y : Integer
area() : double
Rectangle
Circle Triangle
width : double
radius : double base : double
length : double
height : double
area() : double
area() : double area() : double
Square
size : double
FUOC PID_00145182 24 Problemas de modelado con UML
Se pide el diagrama UML que incluya las clases, relaciones, atributos y mto-
dos que participan en el diseo de la funcionalidad requerida.
Solucin:
Docente (Instructor)
Clase (Class)
Estudiante (Student)
Becario (Assistant)
Assistant
-in : Instructor
FUOC PID_00145182 26 Problemas de modelado con UML
Problema 7: OilCompany
5) El precio de venta por galn del producto final (gasolina o gasleo) viene
estipulado por el Gobierno, y la empresa debe respetarlo. Cada tipo de pro-
ducto final tiene un precio de venta.
Se pide el diagrama UML que incluya las clases, relaciones, atributos y mto-
dos que participan en el diseo de las funcionalidades requeridas.
Solucin:
OilCompany
Gasolina (Petrol)
Gasleo (DieselOil)
FUOC PID_00145182 27 Problemas de modelado con UML
OilProduct
-id : Integer
-gallon : Integer
-octane : Integer
-buyCost : Integer
OilCompany
1 1..* computeProfits() : float
name : String computeCost() : float
Petrol
DieselOil
-saleCost : Integer
-saleCost : Integer
+computeCost() : Float
+computeCost() : Float
FUOC PID_00145182 28 Problemas de modelado con UML
Una empresa consultora est pensando en crear una nueva aplicacin para la
gestin de los empleados, los clientes y los proyectos que realizan para stos.
Cada cliente tiene asociado un gerente, que es el empleado encargado de
gestionar todas las acciones con l, as como tambin la venta y el segui-
miento de los proyectos en curso.
Se pide el diagrama UML que incluya las clases, relaciones, atributos y mto-
dos que participan en el diseo de la funcionalidad descrita.
Solucin:
Tool
name : String
Company
Employee
Client
Project Tools
Uses
Manages
Finalmente, hace falta aadir al diagrama los roles que los empleados desarro-
llan en cada proyecto (que debe incluir las horas dedicadas) y la dedicacin de
los desarrolladores en la creacin de herramientas propias. Para representar esta
informacin, utilizaremos dos clases asociativas (ved el diagrama completo).
Manages
Company
0..* 0..*
Client
name : String
0..* 1
1
Employee
1..* Project
name : String
description : String
0..* 0..* euro_hour : int
0..*
0..*
Tool Role
0..*
Comercial Free Development
0..*
price : int basePrice : int
FUOC PID_00145182 31 Problemas de modelado con UML
Adems de los coches, quieren gestionar motocicletas (de cara al turismo) y furgo-
netas y camiones (para el mundo laboral). De cada uno de estos quieren almace-
nar los rasgos caractersticos (matrcula, pasajeros para los turismos, TARA para los
camiones, etc.), el tipo de carn necesario y el precio por da del vehculo.
Hay dos tipos de clientes: casuales y de leasing. Todos los clientes pueden alqui-
lar cualquier tipo de vehculo. La diferencia est en que los clientes casuales
realizan el pago en el momento de retirar el vehculo del local, mientras que
los clientes de leasing, dado que por la propia definicin realizan un alquiler a
largo plazo, se les remiten facturas a las empresas mensualmente. Por este mo-
tivo, los clientes de leasing deben aportar informacin sobre su empresa (en
caso de no tener ficha en MoveFast) para poder realizar el alquiler (adicional-
mente, tienen un 10% de descuento en el clculo de los alquileres).
Se pide el diagrama UML que incluya las clases, relaciones, atributos y mto-
dos que participan en el diseo de la funcionalidad descrita.
Solucin:
Coche (Car)
Motocicleta (Motorbike)
Furgoneta (Van)
Camin (Truck)
Cliente Casual (Casual)
Cliente de Leasing (Leasing)
Empresa (Company)
Alquiler (Rental)
FUOC PID_00145182 32 Problemas de modelado con UML
Del enunciado se deduce que existe una herencia en los tipos de vehculo
que ofrece la empresa de alquiler de coches y otra en los tipos de cliente.
Notad que tanto la clase Vehicle como la clase Client son clases abstractas,
dado que no se pueden instanciar directamente (es decir, todos los vehculos
y clientes sern de un tipo concreto).
MoveFast
Rental
initialDay : Date
finalDay : Date Client
Vehicle
print() : String id : String
plateNumber : String Company
name : String
licenseType : String
licenseType : String id : String
priceDay : int
name : String
printReceipt() : String
address : String
printBill() : String
MoveFast
0..*
Rental
0..*
0..* initialDay : Date
finalDay : Date Client
Vehicle 0..*
print() : String id : String
plateNumber : String Company
name : String
licenseType : String
licenseType : String id : String
priceDay : int
0..* 0..* name : String
printReceipt() : String
address : String
printBill() : String
En primer lugar, les interesa separar los clientes segn si son de negocios o
clientes particulares, dado que a los clientes empresariales les facturan los
viajes mensualmente; por lo tanto, debern almacenar sus datos bancarios
para poder facturar a final del mes. Para los clientes particulares, les interesa
conocer los datos estndar que necesitaramos de cualquier cliente: nombre
y apellidos, direccin postal y el DNI para las reservas.
Los tipos de servicios que ofrece la agencia son muy diversos, desde billetes
de avin a coches de alquiler, pasando por noches de hotel o excursiones
organizadas, as como tambin paquetes de viajes que estn formados por
diferentes elementos (por ejemplo, un paquete de viaje puede estar formado
por una excursin y una noche de hotel).
Las reservas de los clientes pueden estar en tres estados (realizadas, con-
firmadas y pagadas). En caso de que una reserva est realizada, pero no
confirmada, si la agencia de viajes pide eliminar una oportunidad de via-
je, esta reserva se debe anular (borrar del sistema), pero antes se ha de
enviar un correo electrnico para que el cliente sepa que la reserva ha
sido anulada.
Se pide el diagrama UML que incluya las clases, relaciones, atributos y mto-
dos que participan en el diseo de la funcionalidad descrita.
FUOC PID_00145182 35 Problemas de modelado con UML
Solucin:
Cliente (Customer)
Servicio (Service)
Cliente Particular (Customer)
Cliente de Negocios (BusinessCustomer)
Billete de Avin (Flight)
Coche de Alquiler (Car)
Noche de Hotel (Hotel)
Excursin Organizada (Excursion)
Paquete de Viajes (Packet)
Reserva (Reservation)
Del enunciado se puede deducir que existe una herencia en los tipos de ser-
vicio que ofrece la empresa de viajes:
Service
1..*
Finalmente, slo hace falta relacionar estos dos conceptos (servicio y cliente)
mediante una clase asociativa (Reservation) que permite guardar informacin
sobre las reservas:
FUOC PID_00145182 36 Problemas de modelado con UML
TravelAgency
Reservation
state : int
Service Customer
TravelAgency
Reservation
state : int
Trip
Customer BusinessCustomer
price : double
1..*
available : int name : String bancAccount : String
0..* 0..* address : String
DNI : String
discount : int initialDate : Date date : Date initialDate : Date date : Date
finalDate : Date from : String finalDate : Date startingPoint : String
category : String to : String location : String
initialLocation : String company : String dobleBed : boolean
finalLocation : String fare : String
FUOC PID_00145182 37 Problemas de modelado con UML
Para cada centro de trabajo quieren saber qu personal tienen asignado, tanto las
personas que estn de cara al pblico como los conductores que se encargan de
mover los vehculos entre las diferentes oficinas donde los tienen aparcados. Adi-
cionalmente, los conductores pueden tener que realizar traslados de coches entre
oficinas, en el caso de que un cliente deje el coche en una oficina diferente.
Todos los empleados tienen un sueldo base, pero los conductores, en caso de
que deban realizar un traslado de vehculos, reciben una cantidad fija adi-
cional por las molestias del desplazamiento.
Se pide el diagrama UML que incluya las clases, relaciones, atributos y mto-
dos que participan en el diseo de la funcionalidad descrita.
Solucin:
Vehculo (Vehicle)
Empleado (Employee)
Comercial (Salesman)
Conductor (Driver)
Oficina (Office)
Traslado (VehicleTransfer)
Coche (Car)
Motocicleta (Motorbike)
Furgoneta (Van)
Camin (Truck)
FUOC PID_00145182 38 Problemas de modelado con UML
Del enunciado se puede deducir que existe una herencia entre los tipos de
empleados, donde Employee es la superclase y Driver y Salesman son las sub-
clases.
Office
IsAssignedTo
Employee
Vehicle
VehicleTransfer
Driver
Una vez definido el modelo de datos, aadimos los atributos y mtodos que
necesite el modelo que acabamos de disear (ved el diagrama completo).
MoveFast
0..*
Office
IsAssignedTo 1
location : String 0..*
0..* 0..* e-mail : String
phone : String
Employee
Vehicle
0..* id : String
plateNumber : String
0..* name : String
licenseType : String 0..* baseSalary : int
priceDay : int
VehicleTransfer
date : String
Nos ha pedido si le podemos crear una aplicacin que le permita, dada una
descripcin de una pieza (por ejemplo, el filtro del aire) y dado un modelo y
un ao (por ejemplo, SEAT 127, ao 1980), obtener directamente el cdigo
de la pieza correspondiente a aquel modelo para pedirla al distribuidor (as
como tambin el precio y el tiempo estimado necesario para cambiarlo).
Sobre los clientes, nicamente le hace falta almacenar la matrcula del vehcu-
lo, el nombre, telfono y direccin del propietario. Con estos datos y el tipo de
reparacin que necesita (puede repetirse en el tiempo) puede ir trabajando.
Se pide el diagrama UML que incluya las clases, relaciones, atributos y mto-
dos que participan en el diseo de la funcionalidad descrita.
Solucin:
Pieza (Part)
Modelo (Model)
Pieza del Modelo (ModelPart)
Reparacin Estndar (Repair)
Cliente/Vehculo (Client)
Reparacin Efectiva (RepairPart)
Existe una pieza (Part) especfica para cada modelo (Model), que representare-
mos mediante una clase asociativa (ModelPart) entre las dos clases anteriores.
Una vez hemos definido el modelo de datos, podemos incluir los atributos y
mtodos que necesite el modelo que acabamos de disear (ved el diagrama
completo).
Workshop
0..* 0..*
Client
Repair
0..* 0..* plate : String
description : String
phone : String
baseCost : int
name : String
address : String
0..*
0..*
0..* Model 0..* 1
Part brand : String
model : String 0..*
description : String 0..* 0..* year : int
IsOwnedBy
getEquivalent(m : Model) : ModelPart
ModelPart
RepairVehicle
code : String 0..* 0..*
initialDate : Date
cost : int
finalDate : Date
time : int
changePart(p : Part) : void
FUOC PID_00145182 42 Problemas de modelado con UML
1) Crear una nueva cuenta de usuario: de cada usuario se debe guardar el nom-
bre y apellidos, as como la direccin postal. El usuario elegir un nombre de
usuario que debe ser nico, y un password. Se deber guardar informacin de
una o ms tarjetas de crdito que el usuario podr elegir para pagar los diferen-
tes pedidos que haga. De las tarjetas se guardar el tipo de tarjeta, nmero,
titular (segn aparece en la tarjeta), y la fecha de expiracin (mes/ao).
Se pide el diagrama UML que incluya las clases, relaciones, atributos y mto-
dos que participan en el diseo de la funcionalidad descrita.
Solucin:
Artculo (Item)
Artculos con estoc (StockableItem)
Libro (Book)
Informe Digital (DigitalReport)
CD-ROM
Usuario (UserAccount)
Tarjeta de Crdito (CreditCard)
Carrito de la Compra (ShopingBasket)
Pedido (Order)
Recomendacin (Recommendation)
Las clases Item y StockableItem son abstractas, ya que representan partes co-
munes de otras clases.
El resto de las clases que representa a los diferentes tipos de Item son subcla-
ses de una de las anteriores: Book, DigitalReport y CDRom. La clase abstracta
StockableItem contiene la funcionalidad especfica de artculos sujetos a ges-
tin de existencias, que es igual para todas sus subclases.
Cuando el usuario haga efectiva la compra, los contenidos del carrito se bo-
rrarn, creando antes un nuevo pedido (Order). Los pedidos estarn asociados
a los tems y, adems, hace falta una clase asociativa, no slo para almacenar
la cantidad de cada Item, sino porque es necesario guardar el precio al que se
vendieron (ya que puede ser diferente al precio actual del producto). Los
pedidos sern cargados a la tarjeta de crdito que el usuario especifique, que-
dando esto reflejado en la asociacin entre Order y CreditCard.
a) La clase Item incluye mtodos comunes a todos los artculos: son los m-
todos accesores a sus atributos (getRef/setRef, getName/setName, getPublica-
tion/setPublication y getPrice/setPrice).
1
Bookshop
hasUsers
1 0..*
OrderLine
Book CdRom
getPages() getSize()
setPages() setSize()
FUOC PID_00145182 46 Problemas de modelado con UML
Conocer todos los libros y revistas que un usuario tiene actualmente en prs-
tamo, as como informacin respecto a si se encuentra en penalizacin y la
informacin personal del usuario. Consideramos que un usuario puede to-
mar prestados un mximo de cinco documentos simultneamente. Para
simplificar, supondremos que no es necesario guardar un historial de prs-
tamos.
Se pide el diagrama UML que incluya las clases, relaciones, atributos y mto-
dos que participan en el diseo de la funcionalidad descrita.
Solucin:
Hemeroteca (Library)
Usuario (User)
Libro (Book)
Revista (Magazine)
Monogrfico (Monography)
Documento (Document)
Prstamo (Loan)
Finalmente, hay una clase Loan entre User y Document, que permite gestionar
los prstamos.
Library
1 hasMonographies
newDocument()
hasUsers 1
newUser() 1 hasMagazines
listBooks()
listMonographies()
getDocAvailability()
listLoans()
1
listPendingLoans() isBorrowed 1
0..* 1 Document
borrowDoc(d : Document)
listLoans()
0..*
Book Magazine
0..* author : String volume : Integer
title : String number : Integer
price : Double
0..*
Monography
author : String
title : String
FUOC PID_00145182 49 Problemas de modelado con UML
3) Los dispositivos son aquellos que permiten a los equipos adquirir datos
del exterior. Para los dispositivos, en general interesar saber informacin
comn especfica. Hoy por hoy, en la tienda virtual slo se dispone de un
tipo de dispositivo, los DVD (con caractersticas adicionales propias), aunque
en un futuro prximo se catalogarn nuevos dispositivos.
Se pide el diagrama UML que incluya las clases, relaciones, atributos y mto-
dos que participan en el diseo de la funcionalidad descrita.
Solucin:
Producto (Product)
Equipo Informtico (Computer)
Dispositivo (Device)
DVD
Pedido (Order)
Cliente (Customer)
Mayorista (WholeSaler)
Proveedor (Supplier)
La clase Order es una clase que representa un pedido realizado por un cliente a la
tienda virtual. La clase asociativa SubOrder entre Order y Product representa una
parte de un pedido realizado por un cliente de la tienda virtual, donde se especi-
fica cada uno de los productos que ha pedido y el nmero de unidades pedidas.
Para los tipos de producto se establece una jerarqua de herencia que une a la
clase Product con las subclases Computer, Device y DVD para tipificar los art-
culos que vende la tienda.
Se establecen relaciones de asociacin entre Customer y Order (ya que desde una
Order podemos acceder al Customer que la ha hecho efectiva) y entre Supplier y
Product (ya que desde un Supplier podemos acceder a los Products que suministra).
La clase Order guarda el coste como la suma de los precios de todos los pro-
ductos pedidos. La clase asociativa SubOrder contiene como atributo el n-
mero de unidades solicitadas de cada producto en un mismo pedido. El cl-
culo se realiza a travs del mtodo computeCost de la clase Order, que a su vez
llama al mtodo computeCost de la clase SubOrder.
1 Store
0..*
Supplier Customer 1
0..* 1
id : String id : String
name : String name : String
address : String address : String 1
1 cost : Double
WholeSaler
computeCost()
0..* discount : Double
supplies
Product 0..*
0..50
id : String 0..*
name : String
stock : Integer
price : Double
quantity : Integer
computeCost()
Computer Device
processor : Enum
ramMb : Integer
diskGb : Integer
DVD
FUOC PID_00145182 52 Problemas de modelado con UML
Kot tiene una divisin comercial que alquila vehculos para sus trabajadores.
Los vehculos alquilados son de dos categoras: utilitarios y de gama alta. Los
trabajadores de Kot se clasifican en responsables de la divisin, jefes inter-
medios y comerciales.
4) Aadir material al sistema: permite aadir un nuevo material, que son los
regalos que los comerciales harn a los clientes. De cada material nos inter-
esa la descripcin y el precio de coste.
FUOC PID_00145182 53 Problemas de modelado con UML
Se pide el diagrama UML que incluya las clases, relaciones, atributos y mto-
dos que participan en el diseo de la funcionalidad descrita.
Solucin:
Editorial (Kot)
Coche (Car)
Material (Material)
Persona (Person)
Trabajador (Worker)
Cliente (Customer)
Documento de Identidad (IdentityCard)
Gastos (Expense)
Gastos de Combustible (ExpenseGas)
Gastos de Kilometraje (ExpenseKm)
Gastos de Material (ExpenseMaterial)
Informe (Report)
FUOC PID_00145182 54 Problemas de modelado con UML
La clase Person es abstracta, puesto que representa la parte comn de las cla-
ses Worker y Customer y no tiene sentido instanciarla en el contexto del
enunciado.
Hay diferentes tipos de gastos. Algunos son generales, como pueden ser las
comidas, el alojamiento o el lavado del coche, que son representadas por la
clase Expense. De esta clase heredan ExpenseGas, ExpenseKm y ExpenseMaterial,
que representan respectivamente los repostes de combustible del vehculo de
empresa, los kilmetros recorridos con el coche y el material promocional
regalado a los clientes por los comerciales.
La clase asociativa Report incluye todos los datos necesarios para los informes
de gastos, y relaciona a los objetos de la clase Car con los de la clase Worker.
Kot
1 hasStuff
addCar()
addWorker()
hasCars 1 removeWorker() 1 hasCustomers
addCustomer()
addReport()
Person
reportExpense()
assignCar() firstName : String
newOperation() lastName : String
setIdentityCard()
1 0..*
Report 1
Customer
hasWorkers
test : String
company : String
0..* 0..* isRemoved : boolean
Car Worker
Todas las averas tendrn una descripcin de la avera y una estimacin del
tiempo necesario para repararla. Las averas elctricas, adems, han de indi-
car el voltaje de la lnea y el tipo de corriente (alterna o continua).
Las averas en los trenes pueden ser de dos tipos: averas en la locomotora,
donde se deber indicar el tipo de la locomotora (diesel o elctrica) y el ao
de fabricacin; o averas en los vagones, donde deber de especificar si se
trata de un vagn de mercancas o pasajeros y el nmero de asientos. Ade-
ms, todas las averas en los trenes, sean del tipo que sean, han de indicar el
nmero de matrcula del vagn o locomotora. Las averas son excluyentes, es
decir, no pueden ser de dos tipos a la vez.
El nombre de la lnea.
Cada vez que se produzca una incidencia, se deber registrar un ticket con la
lnea donde se ha producido la incidencia, la parada, y el tipo de avera.
Adems, para asegurar la calidad del servicio y la reparacin, tambin se
guardar el nombre del mecnico que ha reparado la avera y el nombre del
inspector que ha revisado que todo funciona correctamente. Cada incidencia
tendr un identificador nico, y tendr asociada la fecha y la hora en que se
produjo la incidencia y cundo se solucion sta. Dicha informacin se utili-
zar para listar las averas ms recientes.
Se pide el diagrama UML que incluya las clases, relaciones, atributos y mto-
dos que participan en el diseo de la funcionalidad descrita.
Solucin:
TENFE
Trabajador (Worker)
Incidencia a Reparar (Ticket)
Ruta (Route)
Parada (Stop)
Estado de los Tickets (TicketStatus)
Avera (Breakdown)
Tipos de Averas (TrainBreakdown, ElectricBreakdown, GeneralBreakdown,
LocomotiveBreakdown y CoachBreakdown)
FUOC PID_00145182 58 Problemas de modelado con UML
La aplicacin debe permitir controlar los trabajadores, las rutas y las inciden-
cias. Por ese motivo, hace falta una clase TENFE compuesta por trabajadores
(Worker), tickets de incidencias (Ticket) y rutas (Route). Hay una relacin de
agregacin entre TENFE y estas tres clases.
Tiene sentido que una ruta siempre tenga al menos una parada. Como una
parada puede formar parte de ms de una ruta, la relacin entre ellas es de
agregacin (no excluyente) y no de composicin (excluyente).
Los tickets (Ticket) estn formatos por tres atributos (identificador, fecha de la
avera y fecha de la reparacin).
Como son slo dos valores para cada clase, hemos modelado los tipos de
vagn y de locomotora como atributos con valores booleanos (por ejemplo:
electricDiesel: true | false). Si se prev la existencia de ms tipos, podramos
haber definido atributos estticos con los tipos de vagn en CoachBreakdown,
FUOC PID_00145182 59 Problemas de modelado con UML
TENFE
Route
Worker
addTicket() name : String
id : String 0..* 1 addWorker() 1 0..*
contract : Date addRoute() addStop()
hasWorkers hasRoutes
supervises(t : Ticket) listRecentBreaks()
0..*
repairs(t : Ticket)
1
1 1 hasTickets
0..* {ordered}
isSupervisedBy 0..* 0..*
Stop
Ticket
name : String
isRepairedBy 0..* id : String city : String
0..1 1
originated : Date latitude : Float
refersTo
fixed : Date longitude : Float
Breakdown setStatus()
description : String
1 1
estimated : Date
1 involves TicketStatus
plate : String
NEW_INCIDENCE : Integer
WORK_IN_PROGRESS : Integer
hasStatus 1 FIXED : Integer
DISCARDED : Integer
CoachBreakdown LocomotiveBreakdown
Por otro lado, las preguntas pueden definirse como dependientes o no depen-
dientes del tiempo cuando se asocian a un test determinado. En las primeras,
se requiere almacenar el tiempo estimado que el estudiante debera tardar en
elaborar su contestacin, y se define una penalizacin expresada como por-
centaje de la puntuacin de la pregunta, que se aplicar si el estudiante su-
pera el tiempo estimado al contestar. En el caso de las preguntas no depen-
dientes, estas dos caractersticas (tiempo y penalizacin) tienen un valor
nulo. Una misma pregunta puede ser dependiente del tiempo en un test e
independiente en otro test diferente.
Solucin:
Test (Test)
Estudiante (Student)
Pregunta (Question)
Pregunta Simple (SimpleQuestion)
Pregunta Mltiple (MultipleQuestion)
Pregunta Ordenada (SortingQuestion)
Licencia (Licence)
Respuesta Correcta (CorrectAnswer)
Respuestas Test (AnsweredTest)
Respuesta Pregunta (AnsweredQuestion)
Respuesta Pregunta Simple (AnsweredSimple)
Respuesta Pregunta Mltiple (AnsweredMultiple)
Respuesta Pregunta Ordenada (AnsweredSorting)
1..*
1 1..*
AnsweredTest AnsweredQuestion
Student
1..* 1..*
-NI : Integer
Test
1 -creationDate : Integer
15..20 1..* -type : String
Question
+obtainMaximalMarks() : void {sequential}
-questionSentence : String
1..*
1..* 1..*
Descriptor
AnsweredSorting
1 1 1 -name : String
+corrects +ordered
1..*
1..* 1..*
correct 1 has
CorrectAnswer 1
has
1..*
has
1..*
FUOC PID_00145182 64 Problemas de modelado con UML
De los partidos se almacenarn los equipos que han jugado y los goles ano-
tados por cada uno de ellos.
Solucin:
Equipo (Team)
Competicin (Competition)
Liga (League)
Copa (Cup)
Jornada (Round)
Persona (Person)
Jugador (Player)
Entrenador (Trainer)
Partido (Match)
FUOC PID_00145182 66 Problemas de modelado con UML
1 1
1 1..* SportsClub
1 1..*
Team
Trainer Player 1..*
-id : Integer
-additionalSalary : Integer
-name : String
1 -sport : String
1
1..*
Person 1..* 1
+winner
-name : String +plays
-id : Integer
-baseSalary : int 1..* 1..*
Competition 1
Round
-ci : Integer
-number : Integer
-name : String
-state : String
1..* 1
+getResults() : void {sequential}
1
1..*
-id : Integer
1..*
MatchTeam
-goals : Integer
-result : String
FUOC PID_00145182 68 Problemas de modelado con UML
Los programas de la productora son tan exitosos que se emiten diversas veces
por diferentes cadenas de emisin. En cada emisin del programa, se selec-
cionan los invitados que participaran en el programa, si es preciso. De cada
emisin se almacena en qu cadena se emite y la fecha de emisin. De cada
cadena interesada en emitir los programas la productora almacena su identi-
ficador, el nombre, la direccin y un telfono de contacto.
Dada la descripcin del problema a resolver, se pide el diagrama UML que in-
cluya las clases, relaciones, atributos y mtodos que participan en el diseo de
las funcionalidades requeridas.
Solucin:
Productora (Producer)
Cadena (Channel)
Presentador (Presenter)
Invitado (Guest)
Emisin (Broadcasting)
Programa (Program)
Programa Entretenimiento / tertulia (Entertainment)
Programa de Divulgacin (NewsReport)
Programa de Competicin (Competition)
Person
1..* 1..*
Producer -dni : Integer
Channel
-name : String
-id : Integer -address : String
1..* 1..* -phone : String
-name : String
-address : String
-phone : String isOnAir
1..* 1..*
Broadcasting
1..* 0..*
-date : Date
Guest
1 0..* +invites
Program -theme : String Presenter
PresenterProgram
-date : String
Solucin:
Contenido (Content)
Contenido Imagen (Image)
Contenido Audio (Audio)
Contenido Vdeo (Video)
Contenido Documento (Document)
Cooperador (Cooperator)
Rol (Role)
1
+ ONG
1
1
1..*
1..*
+ Content 1..*
+ Cooperator
-id : String 1..* +has authors 0..1 1..* 1..*
-id : Integer + Role
-description : String
-filePath : String -id : String
1..* +has readers roles 1..*
1..*
1..*
+has authors roles
+ Video
Todos los empleados tienen un sueldo base, que se calcula del siguiente modo:
Los administrativos tienen un plus para las comidas (dado que estn en
una zona industrial ligeramente apartada).
El personal de logstica tambin tiene el plus para las comidas y, dado que
por turnos realizan tareas por la noche, tambin tienen un plus por noc-
turnidad.
Se pide el diagrama UML que incluya las clases, relaciones, atributos y mto-
dos que participan en el diseo de las funcionalidades requeridas.
Una empresa, que tiene una pgina web en la que nicamente se muestra
informacin sobre sus productos, quiere ahora aadir un sistema para ges-
tionar sus pedidos a travs de Internet.
FUOC PID_00145182 75 Problemas de modelado con UML
Se pide el diagrama UML que incluya las clases, relaciones, atributos y mto-
dos que participan en el diseo de las funcionalidades requeridas.
Problema 3: MEC
Se pide el diagrama UML que incluya las clases, relaciones, atributos y mto-
dos que participan en el diseo de las funcionalidades requeridas.
Programadores, para los cuales se deben conocer los ficheros fuente de los
que son responsables.
Los modelos y los ficheros fuente son dos tipos de entregable. De un entre-
gable se sabe a qu proyecto pertenece. Un entregable no puede compartirse
entre distintos proyectos.
Se pide el diagrama UML con las clases, atributos y relaciones entre clases
necesarias para modelar el clculo del coste estimado de un proyecto.
Todos ellos comparten una clase Board, que representa al clsico tablero cua-
driculado de dimensiones N M que se usa para jugar. El tablero diseado
debe ser vlido para todos esos juegos, que comparten la disposicin de las
casillas y la manera de acceder a las casillas mediante un par de coordenadas.
Los juegos en cuestin estarn diseados en clases aparte; una de estas clases,
llamada Game, estar unida al tablero mediante una relacin de asociacin.
El juego en cuestin va a pedirle al tablero poder colocar piezas o fichas en
sus casillas. Cada juego ofrece un conjunto de piezas de tipo distinto:
El ajedrez tendr rey (King), reina (Queen), torre (Rook), alfil (Bishop), caba-
llo (Knight) y pen (Pawn), todas ellas de tipo ChessPiece y ocupando una
casilla.
Las damas slo tendrn piezas de tipo dama (Draught), que ocupan una
casilla.
El juego de los barcos tendr fichas de tipo barco (Ship), que tienen la parti-
cularidad de ocupar ms de una casilla, todas ellas adyacentes. Hay fichas
de tamao 1 casilla (dragaminas o minesweeper), 2 casillas (fragatas o frigate),
3 casillas (cruceros o cruiser), y 4 casillas (portaaviones o aircraft carrier).
Todas las piezas, sean del juego que sean, tienen un color para identificar el
jugador al que pertenecen.
Se pide disear el UML que incluya las clases, asociaciones y atributos nece-
sarios para modelar el tablero y las piezas de una forma reutilizable para los
distintos juegos, as como modelar las operaciones de colocar una pieza en
una casilla y averiguar si una casilla del tablero est ocupada.
deben disponer de los derechos que ya tienen personas y robots, entre los
cuales est el de poder participar en votaciones de referendos.
Se pide el diagrama UML que incluya las clases, relaciones, atributos y mto-
dos que participan en el diseo de las funcionalidades requeridas.
Se pide el diagrama UML que incluya las clases, relaciones, atributos y mto-
dos que participan en el diseo de la funcionalidad requerida.
FUOC PID_00145182 79 Problemas de modelado con UML
Unos grandes almacenes nos han encargado una aplicacin para la gestin
de sus trabajadores.
En esta empresa, existen diversos tipos de trabajadores. Por un lado, los ven-
dedores, los cuales son los encargados de hacer el mximo nmero posible
de ventas, ya que reciben una pequea comisin por cada venta. Por otro
lado, los directivos, que se dedican a monitorizar el funcionamiento correcto
de su rea (organizar sus vendedores, elegir los productos que se vendern,
dnde se situarn, etc.). Adems, cada directivo tiene un gestor administrati-
vo que se encarga de las cuestiones jurdicas y administrativas. Supondremos
que tanto los gestores administrativos como los vendedores tienen como
responsable a un nico director.
Se pide el diagrama UML que incluya las clases, relaciones, atributos y mto-
dos que participan en el diseo de las funcionalidades requeridas.
Cada fiesta tendr un organizador, que ser el encargado de realizar todas las
peticiones a BCN_NDF. Para cada una de las fiestas se pueden contratar un
conjunto de servicios, por ejemplo, limpieza del recinto, montaje del escena-
rio, etc. Cada uno de estos servicios tiene un coste asociado que, en princi-
pio, no variar en el tiempo (para simplificar el modelo). Estos servicios se
pueden contratar en cualquier momento hasta que el evento ya se ha produ-
cido.
En el caso de que ocurra algn incidente, se quiere registrar, dado que en-
tonces, para futuras convocatorias del mismo organizador, se pueden dene-
gar peticiones o establecer condiciones ms restrictivas.
Se pide el diagrama UML que incluya las clases, relaciones, atributos y mto-
dos que participan en el diseo de la funcionalidad descrita.
Para ello, nos han pedido que les ayudemos, por lo que hemos estado una
semana junto a ellos para captar su modo de proceder, y poder ofrecerles un
programa que se adapte totalmente a sus necesidades.
Hemos detectado que cada ejemplar de libro, revista, pelcula (tanto en VHS
todava tienen algunas as y los socios las piden como en DVD) tiene su
correspondiente etiqueta con un identificador. Para cada identificador, tie-
nen una ficha con un conjunto de datos caractersticos del ejemplar corres-
pondiente (por ejemplo, de los libros tienen las pginas y la edicin; de las
revistas, la editorial, el nmero, el mes y el ao; de las pelculas, el formato y
la duracin; y, en el caso de los DVD, los idiomas).
Se pide el diagrama UML que incluya las clases, relaciones, atributos y mto-
dos que participan en el diseo de la funcionalidad descrita.
Una entidad bancaria quiere mantener una agenda de las reuniones y citas
con clientes que tienen sus empleados. De cada evento se quiere saber la
fecha, hora de inicio y duracin.
Las reuniones son para la realizacin de trabajos dentro de los distintos grupos
de trabajo instaurados en el banco, y las citas son peticiones que realizan los
clientes para la realizacin de cualquier tipo de consulta sobre sus cuentas.
Las citas son pedidas con antelacin por los clientes y, posteriormente, el
empleado acepta o rechaza la cita segn su disponibilidad (esta respuesta es
notificada al cliente mediante el correo electrnico). Las citas rechazadas son
eliminadas del sistema. Las citas aceptadas aaden un campo de texto con el
nombre de la sala donde se realizarn.
Las reuniones son convocadas por un empleado, el cual introduce una cade-
na de texto con el tema a tratar y la manda a los distintos asistentes, que
deben aceptar la peticin igual que hacen con las citas de los clientes.
Los empleados estn localizados en oficinas, por lo que las citas nicamente
pueden ser de clientes de sus oficinas; las reuniones no tienen en cuenta esta
restriccin, ya que puede haber grupos de trabajo de distintas oficinas.
Se pide el diagrama UML que incluya las clases, relaciones, atributos y mto-
dos que participan en el diseo de la funcionalidad descrita.
FUOC PID_00145182 82 Problemas de modelado con UML
Los clientes deben poder realizar los pedidos en los quioscos (de los cuales
almacena la direccin y el telfono para confirmar las entregas), y por Inter-
net (en este caso, la direccin ser la de cada cliente para poder enviarles los
productos directamente). Para facilitar su gestin, los clientes nicamente
pueden estar inscritos en uno de los dos mtodos de distribucin.
Los productos disponibles son colecciones que estn formadas por un con-
junto de productos (libros, juegos, etc.), todos ellos del mismo tipo. De cada
producto interesa guardar sus datos bsicos (de los libros, el ttulo y el autor;
de los juegos, la plataforma y el tipo de soporte, etc.).
Se pide el diagrama UML que incluya las clases, relaciones, atributos y mto-
dos que participan en el diseo de la funcionalidad descrita.
Se pide el diagrama UML que incluya las clases, relaciones, atributos y mto-
dos que participan en el diseo de la funcionalidad descrita.
Se pide el diagrama UML que incluya las clases, relaciones, atributos y mto-
dos que participan en el diseo de la funcionalidad descrita.
FUOC PID_00145182 84 Problemas de modelado con UML
Se quieren conocer las estadsticas de los partidos jugados, los equipos y ju-
gadores que han jugado, qu equipos lo han hecho como locales o como
visitantes, y el nmero de goles por partido.
Para poder ofrecer estas estadsticas, el sistema tendr que gestionar los datos
de dos tipos de empleados: los taquilleros y los agentes de seguridad. De los
dos se necesita guardar el nombre, los apellidos, el DNI, la direccin, el tel-
fono de contacto y el nmero de la seguridad social. De los taquilleros se
necesita saber, adems, el nmero de taquilla que tienen asignada. De los
agentes de seguridad nos interesa saber, adems, a qu parte del terreno de
juego estn asignados.
El hotel quiere llevar un registro de sus clientes. As, de todos ellos interesar
almacenar los siguientes datos: NIF, nombre y direccin. Se quiere aplicar
una poltica de descuentos a los clientes. En este sentido, el hotel distingue
dos tipos de clientes distintos:
Por un lado, los clientes estndar. A estos clientes se les aplicar un por-
centaje de descuento sobre su factura, en funcin del coste acumulado
por el cliente en estancias anteriores. Por lo tanto, har falta mantener ac-
tualizado este dato.
Por otro lado, tenemos los clientes VIP. Para stos, el descuento se calcu-
lar en funcin del nmero de aos que hace que el cliente es VIP. Por lo
tanto, har falta conocer el ao en que el hotel otorg a este cliente la
consideracin de VIP.
Cdigo de identificacin
Cliente que hace la reserva
Alojamiento asociado
Fecha de inicio de la estancia
Fecha de finalizacin de la estancia
Acceso a una reserva: a partir del NIF del cliente y la fecha de entrada, la
operacin devolver todos los datos de las reservas asociadas al cliente.
Se pide el diagrama UML que incluya las clases, relaciones, atributos y mto-
dos que participan en el diseo de la funcionalidad descrita.
La aplicacin deber permitir calcular las tasas que tienen que pagar las
compaas areas en funcin del peso transportado, el tipo de aparato, los
metros de pista necesarios para hacer el aterrizaje, as como la experiencia
del piloto, y el uso de la terminal por parte de los pasajeros.
Los aviones de lnea regular pueden ser utilizados por el transporte de mer-
cancas (carga), o bien por el transporte de pasajeros. De los aviones nos
interesar conocer, adems:
El volumen del aparato: las frmulas que calculan el coste del aterrizaje
tienen en cuenta los metros de pista necesarios para la operacin de
aterrizaje. En este sentido, las frmulas tambin necesitan conocer el
volumen que ocupa el aparato.
Piloto: para evaluar el coste del aterrizaje, se utilizar como parmetro las
horas de vuelos acumuladas por parte del piloto.
Se pide el diagrama UML que incluya las clases, relaciones, atributos y mto-
dos que participan en el diseo de la funcionalidad descrita.
AirUOC realiza dos tipos de vuelos, los vuelos regulares y los vuelos contra-
tados. Los primeros son vuelos con rutas predefinidas, codificadas con un
cdigo numrico. Estos vuelos tienen una salida peridica, y el precio por
pasajero est definido con independencia del nmero de pasajeros del avin.
En los vuelos regulares, como en la mayora de compaas areas, existen dos
modalidades de vuelo: Business Class, ms cmoda pero ms cara, y Turista,
un 30% ms econmica que la anterior. La segunda tipologa de vuelos, los
vuelos contratados, se basan en el alquiler de un avin, generalmente de un
nmero pequeo de pasajeros, para realizar un viaje en una fecha y hora
concretadas. En este caso no hay ruta predefinida, sino que se establece el
origen, el destino del vuelo y las escalas, y a partir de esta informacin y del
nmero de viajeros, se establece el precio a pagar para cada pasajero. En este
caso, siempre se establece una nica tarifa, la Business Class.
Se pide el diagrama UML que incluya las clases, relaciones, atributos y mto-
dos que participan en el diseo de las funcionalidades requeridas.
Cada venta se registra en una factura, con el DNI del cliente, el NIF del ven-
dedor y el listado de productos comprados. El importe de la venta se calcula
a partir del precio de los productos listados en la factura. Dicho registro de
facturas debe estar organizado de modo que pueda saberse, de una factura,
toda la informacin asociada. Adems, deben poder obtenerse todas las fac-
turas que corresponden a las compras de un cliente. Finalmente, deben po-
der obtenerse todas las facturas que corresponden a las ventas de un vende-
dor.
Se pide el diagrama UML que incluya las clases, relaciones, atributos y mto-
dos que participan en el diseo de las funcionalidades requeridas.
Para obtener una evaluacin fiable de los costes que comporta un paciente,
el gerente nos pide la implementacin de un nuevo aplicativo que permita
evaluar, al final del da, la ocupacin de los recursos, el uso de los recursos de
transporte y los recursos estticos generados por cada paciente, y la informa-
cin de los pacientes que ha entendido cada enfermera.
FUOC PID_00145182 91 Problemas de modelado con UML
Los pedidos debern indicar si el transporte puede utilizarse por mar o no, y
si es o no urgente. La asignacin de vehculos a pedidos se har de modo que
se utilicen el mnimo nmero de recursos para servirlos. Es decir, se elegirn
los vehculos con mayor capacidad de carga posible para atender el pedido.
En caso de que el pedido sea de carcter urgente, la prioridad sern los veh-
culos rpidos, aunque la asignacin de cargas no sea ptima. Una vez elegido
el vehculo ms apropiado, la totalidad de cargas correspondiente a un pedi-
do se transportarn nicamente con dicho vehculo.
Los productos se clasifican en libros, vdeos y CD, con las caractersticas pro-
pias que se especifican a continuacin:
Se consideran tres tipologas de CD. Los CD compactos, que son los tpi-
cos CD de msica; los CD-ROM, que son CD con juegos de ordenador; y
los DVD, que renen las caractersticas de los vdeos y de los CD-ROM.
De cada CD deber almacenarse la cartula y su cdigo de barras. De los
FUOC PID_00145182 93 Problemas de modelado con UML