Modelo de Casos de Uso, Modelo del Dominio y Diagramas de

Anuncio
Gestión de Reservas de
V l
Vuelos
Modelo de Casos de Uso
Modelo del Dominio
Flujo de Eventos
Diagramas de Secuencia
MODELO DE CASOS DE USO
Devolver Billete
Banco
Iniciador
Cliente
Realizar Reserva
<<extend>>
Ofrecer a la Lista Espera
Anular Reserva
<<include>>
Comprar Billete
Eliminar Reservas Caducadas
C
Compañia
ñi Aérea
é
Obtener Estadísticas
<<extend>>
MODELO DEL DOMINIO
Vuelo Concreto
+horaSalida: String
+horaLlegada: String
+fecha: Date
+n mB siness int
+numBusiness:
+numPrimera: int
+numTurista: int
Vuelo
+código:
ódi
String
St i
+cuidadSalida: String
+ciudadLlegada: String
+aeropuertoSalida: String
+aeropuertoLlegada: String
+terminalSalida: int
+terminalLlegada: int
SusVuelosConcretos >
*
1
1
susReservassinConfirmar>
+billetesLibres()
+getbilleteLibre()
+setBillete()
+getNumeroBillete()
+setVueloConcreto()
+getNumBilletes(tarifa)()
+getReservas()
+getReservasSinConfirmar()
+getPrimeraReservaSinConfirmar()
+getNumBilletesReservados()
1
*
*
billetes>
Reserva Sin Confirmar
Billete
+tarifa: {business,primera,turista}
+numero: int
+fecha: Date
+numero: int
+tarifa: {business,primera,turista}
+estado: string = {libre,reservado,comprado}
+fechaReserva: Date
+fechaCOmpra: Date
+precio: Float
+new()
+getViajero()
*
< quiereReservar
*
+setBillete()
+getPrecio()
+setViajero(viajero: Viajero)
+setEstado()
+setFechaReserva()
+getVueloConcreto()
+getTarifa()
1
Viajero
+nombre: String
+telefono: String
+direccion: String
+getEmail()
+new()
+new()
+sendEmail()
0..1
compradoOreservado
Flujo de Eventos: REALIZAR RESERVA
*********************************************
- El cliente dará la tarifa, ciudades de salida y llegada, y fecha de salida
- El sistema mostrará los datos de los vuelos que en esa fecha salen desde la ciudad de salida a la de llegada (horas, números, aeropuertos,...)
- El cliente escogerá un vuelo
- El sistema buscará si hay billetes libres en ese vuelo con esa tarifa
- Si los hay, se pondrá el billete como reservado, con la fecha actual como fecha de reserva y se devolverá el número de billete
- Si no hay billetes libres, se meterá al cliente en una lista de espera para ese vuelo (si así lo desea).
Flujo de Eventos Alternativo
*************************************
-Si no hay billetes libres para el vuelo, el cliente podrá escoger otro de los vuelos mostrados por el sistema
Flujo de Eventos: ANULAR RESERVA
****************************************************************
- El cliente da el número del billete reservado
- El sistema quita la fecha de la reserva y el billete se pone con el estado “libre”
- El sistema busca si hay reservas sin confirmar para el vuelo de la reserva anulada y
si las hay EXTENDS OFRECER RESERVA A LISTA DE ESPERA
Flujo de Eventos Alternativo
*************************************
- Si el número no es de un billete reservado no se podrá cancelar
Flujo de Eventos: DEVOLVER BILLETE
**********************************************
- El cliente da el número de un billete comprado
- Se devuelve el precio del billete al cliente
- Se quitan las fechas de la reserva y de la compra y se pone el estado a "libre"
- El sistema busca si hay reservas sin confirmar para el vuelo de la reserva anulada y
si las hay EXTENDS OFRECER RESERVA A LISTA DE ESPERA
Flujo de Eventos Alternativo
*************************************
- Si el número no es de un billete reservado no se podrá devolver
Flujo de Eventos: COMPRAR BILLETE
*********************************************
- El cliente dará el número de la reserva
- El cliente pagará el precio del billete
- Se pondrá la fecha actual y el estado del billete como “comprado"
Flujo de Eventos Alternativo
*************************************
- Si el número no es de un billete reservado no se podrá comprar
Flujo de Eventos: OFRECER A LA LISTA DE ESPERA
****************************************************************
- PRECONDICIÓN: el vuelo concreto al que se refiere será conocido
- Se buscará la primera reserva sin confirmar correspondiente al vuelo
- Se pondrá el billete correspondiente como reservado
- Se obtendrá la dirección electrónica del cliente que realizó la reserva
y se le enviará un correo electrónico avisándole de que tiene reserva
Flujo de Eventos: OBTENER ESTADÍSTICAS
****************************************************************
- El sistema buscará todos los vuelos concretos
- Para cada vuelo concreto y tarifa se mostrarán los siguientes datos:
Cantidad de billetes vendidos y porcentaje, porcentaje de reservas, y cantidad de reservas en lista de espera
Flujo de Eventos: ELIMINAR RESERVAS CADUCADAS
*****************************************************************
- El sistema buscará todos los billetes reservados
- Para cada billete, calculará la diferencia entre la fecha de la reserva y la fecha de salida del
vuelo reservado
reservado, y si hay menos de 15 días EXTENDS CANCELAR RESERVA
Requisitos NO FUNCIONALES
************************************
Este caso de uso se ejecutará diariamente, y será configurado por el actor “Compañía Aérea"
FLUJOS DE
EVENTOS
REALIZAR RESERVA
: Controlador
: AccesoBD
: IU
vci : Vuelo Concreto
C : Cliente
datos: tarifa, csalida,cllegada, fsalida
BL : Bill
Billete
t
vc1,vc2,...,vcn := obtenerVuelos(csalida,cllegada,fsalida)
vc1, vc2,...,vcn := getVuelos(csalida,cllegada,fsalida)
loop mientras no hay billete
vci
buscarBilleteLibre(tarifa,vci): Billete
BL := getbilleteLibre(tarifa)
[hay billete] : BL
alt reservar
[BL es un billete para reservar]
n,tfno,dir
setClienteABillete(BL,n,tfno,dir): void
setClienteABillete(BL,n,tfno,dir): void
VJ := getOrCreateViajero(n,tfno,dir)
setViajero(VJ): void
RSC : Reserva Sin Confirmar
setEstado("reservado", fechaactual): void
store(BL)
[no hay billetes libres y se quiere entrar en lista de espera]
n, tfno, dir,vci
añadirListaEspera(n,tfno,dir,tarifa,vci): void
RSC := newReservaSinConfirmar(n, tfno,dir,tarifa,vci)
VJ := getOrCreateViajero(n,tfno,dir)
RSC := new(tarifa,fechaactual, vci, VJ)
store(RSC)
Se asignarán números
de reserva correlativos
ANULAR RESERVA
: IU
: Controlador
: AccesoBD
C : Cliente
B : Billete
V : Viajero
VC : Vuelo Concreto
numbillete
anularReserva(numbillete)
B := liberarBillete(numbillete)
b := getBillete(numbillete)
setViajero(null): void
setEstado("libre"): void
setFechaReserva(): void
store(B): void
RSC : Reserva Sin Confirmar
VC := getVueloConcreto()
tarifa := getTarifa()
RSC := getPrimeraReservaSinConfirmar(tarifa)
VJ := getViajero()
deleteReservaSinConfirmar(RSC): void
delete(RSC): void
VC := sendEmail(B)
extends RESERVAR VUELO
Al viajero VJ se le reserva
el vuelo VC
OBTENER ESTADÍSTICAS
: Compañia Aérea
: IU
: Controlador
: AccesoBD
VCi : Vuelo Concreto
Pedir Estadísticas
obtenerEstadisticas(): void
VC1,VC2,...,VCn := getVuelosConcretos()
Estadistica es una CLASE sin PERSISTENCIA. Desde
la :IU se podrá acceder a sus valores.
loop VCi
loop cada tarifa
NBC := getNumBilletesComprados(tarifa)
NBL := getNumBilletesLibres(tarifa)
Ei : Estadistica
NR := getReservas(tarifa)
NRSC := getReservasSinConfirmar(tarifa)
new(VCi,NBC,NBL,NR,NRSC,tarifa)
E1,E2,...Em
getNumBilletesVendidos(): void
getNumBilletesReservados(): void
getNumBilletesTotales(): void
getNumReservasListaEspera()
DEVOLVER BILLETE
Banco es un ACTOR que es un sistema.
: IU
: AccesoBD
: Controlador
: Cliente
B : Billete
Se invocará a su API
API.
En este caso suponemos que se
llama "devolverDinero(cantidad,numCuenta)"
numbillete,numCuenta
d
devolverBillete(numbillete,numCuenta):
l Bill t (
bill t
C
t ) void
id
B := getBillete(numbillete)
: Banco
Valor := getPrecio()
devolverDinero(valor,numCuenta)
liberarBillete(numbillete): void
Se hace liberarBillete y ofrecer billete a lista de
espera igual que en el caso de uso "Anular Reserva"
Descargar