Вы находитесь на странице: 1из 14

INGENIERA DEL SOFTWARE DE GESTIN II PROBLEMAS DE DIAGRAMAS DE COLABORACIN "GESTIN DE TRENES DE LAS COMPAAS FERROVIARIAS"

En el sistema de gestin de una compaa ferroviaria se debe mantener la informacin relativa a trayectos y trenes que los realizan. Todos estos datos estn estructurados segn el siguiente diagrama de clases:
1 ofrece 1..* 1 posee 1..* 1 realiza * * *

Compaa Ferroviaria

Tren

Trayecto
*

Partida
Horario

Destino
Horario

Trnsito
Horario

Estacin

Una de las funciones que hay que disear para este sistema es la Establecimiento de un Nuevo Trayecto. La definicin de dicha funcin es: Compaa::NuevoTrayecto(ep,ed: Estacin; hp,hd: Hora; l-et: Lista[Estacin,Hora]) donde ep es una referencia a la estacin de partida, ed una referencia a la estacin de destino, hp y hd las horas de partida y destino, l-et es una lista de referencias a estaciones de trnsito y la hora de dicho trnsito. Esta funcin deber buscar un tren que est disponible e incluir el nuevo trayecto en el sistema, segn el diagrama de clases anterior. Otra de las funciones que hay que disear para este sistema es Suprimir un Trayecto. La definicin de dicha funcin es: Compaa::QuitarTrayecto( ep,ed: Estacin; hp,hd: Hora ) donde ep es una referencia a la estacin de partida, ed una referencia a la estacin de destino, y hp y hd las horas de partida y destino. Como parte de la supresin de un trayecto, esta funcin deber (1) buscar el trayecto en cuestin, (2) suprimir tanto su partida como su destino, (3) suprimir todos los trnsitos, y (4) liberar al tren que realizaba el trayecto.

Se pide: 1 El diagrama de colaboracin que corresponde a las funciones descritas anteriormente. 2 El reparto de las operaciones en el diagrama de clases de la figura.

"GESTIN DE LIGA DEPORTIVA"

En el sistema de gestin de una liga deportiva se debe mantener la informacin relativa a equipos y partidos. Todos estos datos estn estructurados segn el siguiente diagrama de clases:
Liga
1..*

Equipo
1 visitante

local 1

juega contra

1..*

Partido

Una de las funciones que hay que disear para este sistema es relativa a un Nuevo Partido. De esta manera, cuando un usuario vaya a incluir un nuevo partido para una liga concreta, se llamar al mtodo correspondiente indicando tanto el equipo local como el visitante.

Se pide: 1 El diagrama de colaboracin que corresponde a la funcin descrita anteriormente. 2 El reparto de las operaciones en el diagrama de clases de la figura.

INGENIERA DEL SOFTWARE DE GESTIN II PROBLEMAS DE DIAGRAMAS DE COLABORACIN "GESTIN DE VUELOS DE LAS COMPAAS AREAS"

PROBLEMA A En un Sistema de Gestin de Reservas Areas se debe guardar la informacin relativa a las compaas areas y sus vuelos, los aeropuertos, los pasajeros y sus billetes, etc. Todos estos datos estn estructurados segn el siguiente diagrama de clases:
Compaa Cdigo Denominacin Billete 1 Cdigo asignado a * 1 posee contiene * Salida Fecha y Hora Avin Cdigo Modelo Capacidad Negocios Capacidad Turista 1 sufre efecta * * Vuelo Cdigo Tarifa 1..* asignada a 1 1..* * solicita Pasajero 1 Apellidos Nombre N Pasaporte Puerta Seccin Nmero

1..*

1..* 1..*

1..* 1 tiene Aeropuerto Cdigo Denominacin 1

Llegada * Incidencia Descripcin Fecha y Hora * ocurre en Fecha y Hora

0..1

La operacin asignacin de un nuevo slot de vuelo consiste en la inscripcin completa en el sistema de toda la informacin relativa a un nuevo vuelo asignado a una compaa. La especificacin de esta funcin es la siguiente: NuevoSlotVuelo(as,al:Aeropuerto; hs,hl: Fecha y Hora) Una vez que le llega al sistema esta peticin, se desencadena una interaccin que tiene los siguientes pasos: (1) se crea una nueva instancia para el vuelo que va a incluirse en el sistema, asignando a los aeropuertos correspondientes la salida y la llegada; (2) se busca un avin de la compaa que est disponible y, a continuacin, se asigna al vuelo y, correspondientemente, al avin se le asigna el vuelo; (3) se le adjudica una puerta de embarque en el aeropuerto de salida, buscando para ello una puerta libre en dicho aeropuerto y asignando a la puerta seleccionada el vuelo en cuestin. Otra operacin es quitar la asignacin de un slot de vuelo, con la siguiente especificacin: QuitarSlotVuelo(v:Vuelo) Se pide: 2) El diagrama de colaboracin correspondiente a las interacciones descritas anteriormente. 3) Asignar las operaciones necesarias a cada clase en el diagrama de clases.

"GESTIN DE RECINTO INDUSTRIAL"

En el sistema de gestin de un recinto industrial se debe mantener la informacin relativa a compaas, edificios y aparcamientos. Todos estos datos estn estructurados segn el siguiente diagrama de clases:
Autorizacin Departamento
1..*

Compaa
*

Horario PrecioAlquiler

se ubica en 1..* 1..* 1..*

Edificio

Aparcamiento

1..*

Plaza

Algunas de las funciones que hay que disear para este sistema son Nueva Autorizacin, Anular Autorizacin de Aparcamiento y Anular Todas Autorizaciones de una Compaa. Se pide: 1 El diagrama de colaboracin que corresponde a la funcin descrita anteriormente. 2 El reparto de las operaciones en el diagrama de clases de la figura.

"GESTIN DE UNIVERSIDADES" En el sistema de gestin de una universidad se debe mantener la informacin relativa a proyectos fin de carrera y tesis que se realizan. Todos estos datos estn estructurados segn el siguiente diagrama de clases:
Universidad
1..* se relaciona con 1..*

Persona

{ subset } 1..*

{incomplete,overlapping}

Departamento
1 0..1 se adscribe a 1..* { subset }

Profesor

Pfc

Alumno

{incomplete}
es director de 1

{complete,disjoint}

Doctor
1 *

Grado

Postgrado
*

Tesis

Una de las funciones que hay que disear para este sistema es Asignar Proyecto Fin de Carrera. La definicin de dicha funcin es Departamento::AsignarPfc ( g:Grado ) donde g es una referencia al alumno de grado que realiza el proyecto fin de carrera. Se debe buscar automticamente al profesor tutor, que ser aqul que tenga menos proyectos fin de carrera dirigidos. Otra funcin que hay que disear para este sistema es BorrarAlumnoPostgrado. La definicin de dicha funcin es Universidad::BorrarAlumnoPostgrado (pg:Postgrado ) donde pg es una referencia al alumno de postgrado cuyos datos hay que borrar. Ntese que al eliminar la informacin que corresponde al alumno, se debe borrar tambin la informacin relativa a su tesis doctoral. Finalmente, otra funcin que hay que disear para este sistema es AadirDpto. La definicin de dicha funcin es Universidad::AadirDpto (lp:Lista[Profesor], lpd:Lista[Profesor,Doctor],d:Doctor ) donde lp es la lista de referencias a objetos de la clase Profesor (no doctores) que se adscribirn al departamento, lpd es la lista de referencias a objetos de la clase Doctor que tambin se adscribirn al departamento, y d es una referencia al objeto de la clase Doctor que ser el director, de manera que deber encontrarse en la lista de profesores doctores.

Se pide: 1 El diagrama de colaboracin que corresponde a la funcin descrita anteriormente. 2 El reparto de las operaciones en el diagrama de clases de la figura.

Compaa::NuevoTrayecto(ep,ed: Estacin; hp,hd: Hora; l-et: Lista(Estacin,Hora)


tren: Tren
<<parameter>>

2.9: AsignarTrayecto(tray)

1: tren := BuscarTren(ep,hp,ed,hd) 3: IncluirTrayecto(tray)

<<self>>

c: Compaa

2: < <cre at

2.4: AsignarCompaa(c) 2.5: AsignarTren(tren) 2.6: AsignarPartida(p) 2.7: AsignarDestino(d)

2.3.1.1: AsignarEstacin(et) 2.3.1.2: AsignarTrayecto(tray)

e>> (c,tr en,e p,hp ,ed,

<<lo cal> >

hd,l -et

2.3.1.3: IncluirTrnsito(t)
<<self>>

tray: Trayecto
2.3 :
)

<<parameter>>

t: Trnsito
> cal> <<lo

<<self>>

2.3.1

: Tren

Nue vaP ar

*[ Nu et en ev oT l-et] rn s it o(t ray ,ht )


<< p

>> reate t) : <<c tray,et,h (

2.2: d

y,hp

(tra

!!!

:= Nu

tida

estino evoD

ara me ter >>

p :=

et: Estacin

<<self>>

d) (tray,h

<<parameter>>

2.1 :

<<parameter>>

<<self>>

p: Partida

<<local>>

ep: Estacin

ed: Estacin
<<lo 2.2. cal> d: Destino 1: < > <cre ate> > (tr ay,e d,hd ) 2.2.2: IncluirDestino(d)

2.3.2: IncluirTrnsito(t)

2.1.1: p:=<<create>> (tray,ep,hp) <<self>>

<<self>>

<<self>>

2.1.1.1: AsignarEstacin(ep) 2.1.1.2: AsignarTrayecto(tray)

2.1.2: IncluirPartida(p)

2.2.1.1: AsignarEstacin(ed) 2.2.1.2: AsignarTrayecto(tray)

ofrece 1..* 1 posee AsignarTrayecto() 1..* 1 realiza <<constructor>> () AsignarCompaa() AsignarTren() AsignarPartida() AsignarDestino() IncluirTrnsito() * * * *

Compaa Ferroviaria
NuevoTrayecto() BuscarTren() IncluirTrayecto()

Tren

Trayecto

Trnsito
Horario <<constructor>> () AsignarEstacin() AsignarTrayecto()

Partida
Horario <<constructor>> () AsignarEstacin() AsignarTrayecto() 1 1

Destino
Horario <<constructor>> () AsignarEstacin() AsignarTrayecto()

Estacin
NuevaPartida() NuevoDestino() NuevoTrnsito() IncluirPartida() IncluirDestino() IncluirTrnsito()

Compaa::QuitarTrayecto(ep,ed: Estacin; hp,hd: Hora)

tren: Tren 2.4: DesAsignarTrayecto (this)


<<association>>

1: tray := BuscarTrayecto (ep,hp,ed,hd) 3: DesAsignarTrayecto (tray)

<<self>>

c: Compaa

2: < <de stro y>

>

<<p aram eter >>

2.3: * [t en tray.Transitos] <<destroy>>


: Des 2.3.1

tray: Trayecto
> tion> socia <<as

<<

iatio n>>

as so cia t

<<association>>
ion >>

t: Trnsito

narT Asig

s <<a

: Trayecto
str de < <

<<a s

>> oy

soc

tion> socia

it rns

1 2.
> n> tio a i oc ss <a

2. 2: <

o(t

<d e

>

st ro

y> >

et: Estacin

<

<<

as so c

p: Partida

<<asssociation>>

ep: Estacin

ed: Estacin

ia tio

<<a ssoc

n>

>

2.1.1: DesAsignarPartida (p)

2.2. 1: D esA sign arDe stino

iatio n>>

d: Destino
(d)

ofrece 1..* 1 posee DesAsignarTrayecto() 1..* 1 realiza <<destructor>> () * * * *

Compaa Ferroviaria
SuprimirTrayecto() DesAsignarTrayecto()

Tren

Trayecto

Trnsito
Horario <<destructor>> ()

Partida
Horario <<destructor>> ()

Destino
Horario <<destructor>> ()

Estacin
DesAsignarPartida() DesAsignarDestino() DesAsignarTrnsito()

Liga::NuevoPartido(el,ev: Equipo)

2:IncluirPartido(p)
<<self>>

l:Liga

ev:Equipo
<<parameter>>

1.3:IncluirPartidoVis(p)

el:Equipo
<<parameter>>

1: <<create>> Partido(l,el,ev)
{ new } <<local>>

p:Partido

<<self>>

1.1:AsignarEquipoVis(ev) 1.2:AsignarEquipoLocal(el) 1.5:AsignarLiga(l) 1.4:IncluirPartidoLocal(p)

Liga
1..* NuevoPartido(el,ev) IncluirPartido(p)

Equipo
local 1 IncluirPartidoVis(p) IncluirPartidoLocal(p) 1 visitante juega contra

1..*

Partido
<<create>>(ev,el) AsignarEquipoLocal(el) AsignarEquipoVis(ev) AsignarLiga(l)

Compaa::NuevoSlotVuelo(as,al:Aeropuerto, hs,hl: Fecha y Hora)

av: Avin 1: av := BuscarAvin(as,hs,al,hl) 3: IncluirSlotVuelo(slot)


<<parameter>>

2.7: IncluirSlotVuelo(slot)

<<self>>

c: Compaa

2: s lot : =

<<c reat e>>

2.3: AsignarCompaa(c) 2.4: AsignarAvin(av) 2.5: AsignarSalida(s) 2.6: AsignarLlegada(l)

(c,a v,as ,

hs,a l,h
>

<<lo cal>

l)
<<self>>

slot: Vuelo
:s: =N uev aS a lida (slo t,hs )
{ new }

:= N 2.2: l

: Avin

2.1.2: IncluirSalida(sa) 2.1.3: p := BuscarPuerta(hs)

hl) a(slot, legad uevaL

2.1

<<parameter>>

<<parameter>> <<self>>

<<self>>

s: Salida
{ new }

<<local>>

as: Aeropuerto

al: Aeropuerto
<<self>>

{ new }

lui rS ali da (s)

2.1.1: s := <<create>> (slot,as,hs) 2.1.5: AsignarPuerta(p)

2.2. 1: l :=

<<c reat

<<lo cal>

>

l: Llegada

<<self>>

2.1.1.1: AsignarAeropuerto(as) 2.1.1.2: AsignarSlotVuelo(slot)


2.1

2.2.2: IncluirLlegada(l)

e>> (slo t,al, hl)

.4:

Inc

<<parameter>>

: Puerta

2.2.1.1: AsignarAeropuerto(al) 2.2.1.2: AsignarSlotVuelo(slot)

p: Puerta

Compaa Cdigo Denominacin IncluirSlotVuelo() BuscarAvin() NuevoSlotVuelo() 1 posee 1..* Avin Cdigo Modelo Capacidad Negocios Capacidad Turista IncluirSlotVuelo() 1 sufre efecta * * 1..* 1..* Vuelo Cdigo Tarifa <<create>> AsignarAvin() AsignarCompaa() AsignarSalida() AsignarLlegada() 1..* Billete 1 Cdigo asignado a * contiene Salida Fecha y Hora * solicita

Pasajero 1 Apellidos Nombre N Pasaporte Puerta asignada a * 1 1..* Seccin Nmero IncluirSalida()

<<create>>() AsignarAeropuerto() AsignarSlotVuelo() AsignarPuerta()

1..* 1 tiene Aeropuerto Cdigo Denominacin NuevaSalida() NuevaLlegada() BuscarPuerta() IncluirSalida() IncluirLlegada() 0..1

Llegada * Incidencia Descripcin Fecha y Hora * Fecha y Hora <<create>>() AsignarAeropuerto() AsignarSlotVuelo() ocurre en

Compaa::QuitarSlotVuelo(slot:Vuelo)
av: Avin 1.3: QuitarSlotVueloLista(slot) slot: Vuelo
{ destroyed }

2: QuitarSlotVueloLista(slot)

<<self>>

c: Compaa
1: < < des tr oy> >
<<p aram eter >>

:< 1 .2 es <d

<de stro y>>

> y> tro

as: Aeropuerto

De sA

1.1: <

1 .1 .1 :

sig

na rS ali da

1.2 .1:

l: Llegada
(s)
{ destroyed }

De sAs ign arL leg ada (l )

s: Salida al: Aeropuerto p: Puerta


) aLista(s uitarSalid 1.1.2: Q
{ destroyed }

Compaa Cdigo Denominacin QuitarSlotVuelo() QuitarSlotVueloLista() 1 posee 1..* Avin Cdigo Modelo Capacidad Negocios Capacidad Turista QuitarSlotVueloLista() 1 sufre efecta * * 1..* 1..* Vuelo Cdigo Tarifa <<destructor>> 1..* Billete 1 asignado a * contiene Salida Fecha y Hora Cdigo * solicita

Pasajero 1 Apellidos Nombre N Pasaporte Puerta asignada a * 1 1..* Seccin Nmero QuitarSalidaLista()

<<destructor>>

1..* 1 tiene Aeropuerto Cdigo Denominacin DesAsignarSalida() DesAsignarLlegada() 1

Llegada * Incidencia Descripcin Fecha y Hora * ocurre en Fecha y Hora <<destructor>>

0..1

Compaa::NuevaAutorizacin(ap:Aparcamiento, h:Hora, pr:Integer)


3: IncluirAutorizacin(au) 2.1: AsignarCompaa(c) 2.2: AsignarPlaza(p)

2: a := <<create>>Autorizacin(c,p,h,pr)
<<self>>

c: Compaa

<<local>>

au: Autorizacin

<<self>>

1: p := BuscarPlaza(h,pr) 2.3: IncluirAutorizacin(au)

<<association>>

<<parameter>>

<<parameter>>

e: Edificio

<<association>>

ap: Aparcamiento

<<association>>

p: Plaza

:Plaza

Autorizacin Departamento
1..*

Compaa

Horario PrecioAlquiler <<constructor>>Autorizacin() AsignarCompaa() AsignarPlaza()

NuevaAutorizacin(ap,h,pr) Incluir() * se ubica en 1..*

1..* 1..*

Edificio

Aparcamiento
BuscarPlaza()

1..*

Plaza
IncluirAutorizacin()

Compaa::AnularAutorizacinAparcamiento(au:Autorizacin)
1.1: EliminarEnlaceCompaa() 1.2: EliminarEnlacePlaza()

2: EliminarEnlaceAutorizacin(au)

1: <<destroy>>Autorizacin()
<<self>>

c: Compaa

<<parameter>>

au: Autorizacin

<<self>>

1.3: EliminarEnlaceAutorizacin()

<<association>>

<<parameter>>

<<association>>

e: Edificio

<<association>>

ap: Aparcamiento

<<association>>

p: Plaza

Autorizacin Departamento
1..*

Compaa

Horario PrecioAlquiler <<destructor>>Autorizacin() EliminarEnlaceCompaia() EliminarEnlacePlaza()

AnularAutorizacinAparcamiento(au) EliminarEnlaceAutorizacin(au) * se ubica en 1..*

1..* 1..*

Edificio

Aparcamiento

1..*

Plaza
EliminarEnlaceAutorizacin()

Aparcamiento::AnularAutorizacionesCompaa(c:Compaa)

ap: Aparcamiento

1: la := ObtenerListaAutorizaciones (ap) 2: * [au in la] AnularAutorizacinPlaza (au)


<<parameter>>

c: Compaa
<<self>>

<<association>>

: Autorizacin

2.2: EliminarEnlaceAutorizacin (au) 2.1: <<destroy>>

<<parameter>>

2.1.1: EliminarEnlaceAutorizacin (au) au: Autorizacin


{destroyed} <<association>>

p: Plaza

Autorizacin Departamento
1..*

Compaa
ObtenerListaAutorizaciones() AnularAutorizacinPlaza() EliminarEnlaceAutorizacin() * se ubica en 1..*

Horario PrecioAlquiler <<destructor>>

1..* 1..*

Edificio

Aparcamiento
AnularAutorizacionesCompaa(c)

1..*

Plaza
EliminarEnlaceAutorizacin()

Departamento::AsignarPfc(g:Grado)

1: p := BuscarProfesor ( )

2.2: IncluirPfcLista(pfc)

2: AsignarPfc ( g )
<<self>>

d: Departamento

<<parameter>>

p: Profesor

<<self>>

2.1: <<create>> ( p, g )

<<local>>

{ new }

: Grado

<<self>>

pfc: Pfc

<<parameter>>

g: Grado

2.1.1: AsignarPfc ( pfc )

2.1.2: AsignarAlumnoGrado ( g ) 2.1.3: AsignarProfesor ( p )

Universidad
1..*

se relaciona con 1..*

Persona

{ subset } 1..*

{incomplete,overlapping}

Departamento
1 AsignarPfc () BuscarProfesor () 0..1 es director de { subset } se adscribe a 1..*

Profesor
AsignarPfc () IncluirPfcLista ()

Pfc
<<constructor>> () AsignarAlumnoGrado () AsignarProfesor ()

Alumno

{complete,disjoint}

{incomplete}
1

Doctor
1..2

Grado
AsignarPfc ()

Postgrado
*

Tesis

Universidad::BorrarAlumnoPostgrado(pg:Postgrado)

ALTERNATIVA EN CASO DE QUE ALUMNO DE POSTGRADO NO SEA PROFESOR


2: QuitarPersonaLista (pg )

1: <<destroy>>
<<self>>

u: Universidad

<<parameter>>

pg: Persona, Alumno, Postgrado


{ destroyed }

1.1: <<destroy>>

1.1.1: Des-AsignarTesis( t ) d: Persona, Profesor, Doctor t: Tesis


{ destroyed }

ALTERNATIVA EN CASO DE QUE ALUMNO DE POSTGRADO SEA TAMBIN PROFESOR


1: Postgrado.<<destroy>> u: Universidad
<<parameter>>

1.2: <<become>> pg: Persona, Profesor, Alumno, Postgrado


{ destroyed }

1.1: <<destroy>>

pg: Persona, Profesor

1.1.1: Des-AsignarTesis( t ) d: Persona, Profesor, Doctor t: Tesis


{ destroyed }

(En el examen slo se considera el primer caso)

Universidad

1..*

BorrarAlumnoPostgrado() QuitarPersonaLista()

se relaciona con 1..*

Persona

{ subset } 1..*

{incomplete,overlapping}

Departamento
1 0..1 se adscribe a 1..*

Profesor

Pfc

Alumno

{ subset } es director de

{incomplete} Doctor
*

{complete,disjoint}

Grado

Postgrado
<<destructor>>()

Des-AsignarTesis()

1 *

Tesis
<<destructor>>()

Universidad::NuevoDepartamento(lp: Lista(Profesor), lpd: Lista(Doctor), d: Doctor)

2: IncluirDptoLista(dpto)

1.3: *[p en lp] IncluirProfesorLista (p) 1.4: *[pd en lpd] IncluirProfesorLista(pd) 1.6: AsignarDIrector(d) 1.7: AsignarUniversidad(u)

1: dpto := <<create>> (lp,lpd,d,u)


<<self>>

<<self>>

u: Universidad

<<local>> { new }

dpto: Departamento

<<parameter>>

d: Profesor,Doctor

1.5: AsignarDireccin(dpto)

1.1: * [p en lp] AsignarDpto(dpto)

1.2: * [pd en lpd] AsignarDpto(dpto)

<<parameter>>

p: Profesor

<<parameter>>

pd: Profesor,Doctor

Universidad
1..*

NuevoDepartamento() IncluirDptoLista() se relaciona con 1..*

Persona

{ subset } 1..*

{incomplete,overlapping}

Departamento
1 se adscribe a 1..* <<create>> IncluirProfesorLista() AsignarDirector() AsignarUniversidad()

Profesor

Pfc

Alumno

{ subset }

AsignarDpto()

{complete,disjoint}

Grado Postgrado
*

0..1

{incomplete} Doctor
AsiignarDireccin() 1 es director de 1

Tesis

Вам также может понравиться