LOCADORA DE VEÍCULOS ! " $ % & ! ' % # ( ) ) * '$ + ) $ ) $ , - . , & / 0 , & $ !1 " & !/ & ! ! ! & # 2 /3 & # ) & # ) & 1 # & # * # 0 & & & # * ' ) ) # * # * ) $ ) ) * 0 # # # !"# $ % # &!' ' ' 4 0 % * ) () & / " 5 $ & () # & *+ ( , !1 -. /" #& 0 &1 & !/ & 2 ! ! # & # ) & # . ) & . ) 2/("& & $ %"/"$ , $% 3% # -",&(", ,&4 2! ("/" # / &3 %" ,& +&5/.( 4 & 0 2 # * 6 & & & )' & , * 2+"!. ("6 %,& ()&!, +&5/.( 4 2&!/ () , +&5/.( 4 # & # * ' ) ) ) + # * # * 7 ) $ ) ) ) * 0 # # # # & ) 2& +" %/ ) ) * ) -"%# 78 4 # 9' $ ,& &: & !8 2/("& & $ %"/"$ , $% 3% # ,& -",&(", ,&4 ) $ & ;' $ ,& &: & !8 2+"!. ("6 %,& ()&!, +&5/.( 4 0 ) & * & <'& %& !$ !,& &: & !8 2! ("/" 0 ! ) ) ) # & 7 / &3 %" ,& +&5/.( 4 & 2&!/ () , +&5/.( 4 & ) # & # 0 # # & ) & 8 & & 9 3 =' $ ,& &: & !8 2& +" %/ -"%# 78 4 $ ) 1>/>, ,& "-"/ %>-"(% % !/( !!&!,& $ ?("!& & ,&!/%&+&% !%&!$ 1 : %) ! 1"(", ,&! ) ; . ! 4 < & = * ? 4 14 4 & >1 >4 ' @ A + ) $ . ) "! ,& !.1! + 7 ! "+ !*&# 6.(/( !!&!!&(&/" ) & 3 ' 4 & ! ! ) & ) ) ' & ("& &'!"# ) ) * 4 ! ! ) ) ) ) ! ) ! / ,! ) ! )' / ! "(" (* ,"/" ) , ' ) & 4 . & 0 B = & & & , ! )' +& ?%" ,& +&5/.( !! & & C ! C ) & = & ) ) ) ) ! < ! ! ) )' & )' 4 . ! . )' ! * ) &%-"(, /("& &' 4 ) * % 3% # ,& -",&(", ,&' &!&%+ ! ) )' E & . F ! &5/.( ! ' * * ) ) ) & )' ) & * ) ) D ) : & % &78 ! ) & D * ' * & : & & ) ' & 4 ? G ? + + E 4 G G G * G ) class Analysis Model Proteção (from Reservar Veículo) IUReserva (from Reservar Veículo) PerfilCliente ProgramaFidelidade (from Reservar Veículo) (from Reservar Veículo) CtrlReserva (from Reservar Veículo) Inventário (from Reservar Veículo) Cliente Filial (from Reservar Veículo) (from Reservar Veículo) Reserva (from Reservar Veículo) Veículo (from Reservar Veículo) 5 % ! + ' ' + ) ) ) ) 0& * / ) 0 ' + 0 % - ) + B- & $ & 0 G% %"1. !" "/" "!, !/( !!&! 6 sd Seq Reserv ar Veículo cliente IUReserv a CtrlReserv a Filial PerfilCliente Cliente Inv entário Veículo Proteção Reserv a num fidelidade num fidelidade? fornece num num fidelidade obter perfil obter cliente solicitar locais, datas, horários datas, horários e locais? locais, datas, horários locais, datas, horários buscar veículos data e hora buscar veículos satisfaz critérios mostrar veículos lista de veículos veículo escolhido veículo escolhido prepopular obter informações obter informações proteção obter info por estado, local, etc. solicitar dados cliente, proteções dados cliente, proteções? escolhas proteção popular com info. recebidas obter email enviar reserva por email obter número confirmação mostrar reserva e confirmação reserva e confirmação 7 class Analysis Model «entity» Cliente «boundary» IUReserv aVeic PerfilCliente «control» CtrlReserv aVeic + + fumante preferenciaCategoriaVeic «entity» Filial «entity» Inv entário + + + + + + + + email endereço nome telComercial telResidencial Reserv a ProgramaFidelidade endereço estadoFederação IDFilial + saldoPontos + + + + + custoEstimado dataInício dataTérmino horaInício horaTérmino «entity» Veículo «entity» Proteção + + + + coberutraAdicional custoDiario exclusões limitesResponsabilidade + + + acessorio categoriaVeic estado % ' ' + # # 0 , &( 7@&!& %& /( !!&!,& ) ?("!& */ $5.( A &:&%/5/" B 8 class Classes de análise (completo) «boundary» IUReserv aVeic «entity» Filial «control» CtrlReserv aVeic 1 1 1 1 1 1 1 + + + endereço estadoFederação IDFilial 1 1 1 PerfilCliente 1 fumante preferenciaCategoriaVeic 1 * «entity» Cliente 1 + + «entity» Inv entário + + + + + email endereço nome telComercial telResidencial * «entity» Veículo reserva * + + + acessorio categoriaVeic estado Reserv a ProgramaFidelidade + %/ saldoPontos + + + 1 + + < é aplicada 0..1 /(."%' & custoEstimado dataInício dataTérmino horaInício horaTérmino «entity» Proteção + + * + + coberturaAdicional custoDiario exclusões limitesResponsabilidade ' 7 & ' % ) * ? ' # $ ) !&3.% 7 $ / ' " &%- /& % & < &/ % "!# ,& D , 4 + %QE: C# F ,,R / & % * ) 0) )' ' D$ % ! &/ "!# ,& # $(&# & 6 34 HC # )F )# 0 6 IJ < + LMNO)C: P M + %%4 78 M & ) " ) &!&%+ % 0 $ ) ' &/ "!# ,& % C& 1 3< # # 3< 1< , 2 4 ,4 K ,3< ?("!& 0 + ' 6 )6 $&%!"! "% ' 1 2 F & ) 0 " % ) 6 9 deployment proj eto casos de uso Serv idor WEB «http» «http» «http» Nav egador 1 Nav egador N-1 Nav egador 2 4 Nav egador N «http» * ) SD @ & A ) 0) & & 10 sd Reserv ar Veículo (prj ) «jsp page» «jsp page» «servlet» :IUReserva :MostraInventario :CtrlReserva :DataAccess :Cliente pág. de reserva veíc, IDFilial e datas POST veic, IDFilial e datas :Filial popular(IDFilial) buscarFilial(IDFilial) preencher(regDB) validar(datas) verifica se a filial estará aberta nos dias e horários solicitados ok «entity» :Inventario popular(IDFilial, datas, catVeic) buscarVeiculos(this) «entity» :Veiculo preencher(regDB) adicionar(veiculo) armazena coleção veics. na sessão forward pág. inventario mostrar inventário mostra todos veícs. disponíveis 11 + SD ) $ + * * 6% ) class Classes proj eto (delta 1) DataAccess + + «jsp page» IUReserv a buscarFilial(int) : regDB buscarVeiculos(Inventario) : regDB «entity» Inv entario «servlet» CtrlReserv a «jsp page» MostraInv entario + + «instantiate» «entity» Filial «instantiate» + + + endereco estadoFederecao IDFilial + + + popular(int) : void preencher(regDB) : void validar(Date[2]) : boolean adicionar(Veiculo) : void popular(int, Date[2], int) : void 1 1 1 * «entity» Veiculo + + + acessorio categoriaVeic estado + preencher(regDB) : void &,& !&' - SD 12 sd Efetiv arReserv a (prj delta2) «jsp page» «jsp page» «jsp page» «servlet» :IUReserva :MostraInventario :Confirmacao :CtrlReserva :DataAccess :Cliente :PerfilCliente :Inv entario :Veiculo escolhe um veíc. POST "reservar" veicID escolhe um veículo para reservar indisponibiliza o veic. por período de tempo = tout marcarReservado(veicID) marcarReservado(tout) obterIDCli :Cliente popular(cliID) buscarCliente(cliID) preencher(regDB) associar(PerfilCliente) setarPai(this) dispatcher.forward(Confirmacao) controle pegar obj. cliente da sessão obter campos obterPerfil obter dados mostra info. e pede para completar continuar poderia ser +detalhado atualizar cliente e perfil POST confirmação realizada !" # $ % &' ( ) * (+ , % , - , , . / . 0 . ( 0 $ '0 , - 0 ,) 1 13 class Classes proj eto (delta 2) DataAccess «jsp page» IUReserv a + + + + buscarCliente(cliID) : regDB buscarFilial(IDFilial) : void buscarPerfil(cliID) : regDB buscarVeiculos(Inventario) : regDB «servlet» CtrlReserv a «jsp page» MostraInv entario «instantiate» «jsp page» Confirmacao + + fumante: Boolean preferenciaCategoriaVeic + + + popular(cliID) : void preencher(regDB) : void setarPai(Cliente) : void 1 1 1 + + + endereco estadoFederecao IDFilial + + + popular(int) : void preencher(regDB) : void validar(Date[2]) : boolean 1 * «entity» Veiculo + + + + + email endereço nome telComercial telResidencial + + + + + associar(PerfilCliente) : void Cliente() obterPerfil() : PerfilCliente popular(cliID) : void preencher(regDB) : PerfilCliente # SD % 3 F & adicionar(Veiculo) : void popular(int, Date[2], int) : void 1 «entity» Cliente «entity» PerfilCliente + ) ' + + + acessorio categoriaVeic estado + + marcar(tout) : void preencher(regDB) : void ) 0 % 3 E 0 ) ) ?1%"/ ,& 1C& ! T 0 $% :D! )' ) ' ' ! 0 & H C) ) < ) ' , 0 0 0 4 0 & K! D ) 0 , ), & % 0 D 1C& + + «entity» Filial «instantiate» 4 «entity» Inv entario 0) $ 0 K 0 0 class Classes proj eto (delta 3) FabricaObj etos BDCliente InPersist Conexao RegistroBD Statement InSGBDR 14 sd Reserv ar Veículo (com camada de persistência) «servlet» :FabricaObjetos :InPersist :InSGBDR :CtrlReserva criar(class=Cliente, cliID) :Cliente BDCliente(Cliente) :BDCliente buscar(cliID) connect(BD, user, pwd) :Conexao connect obj conexão getStatement Statement :Statement obj. statement executarQuery(SQLString) exec cmdo SQL RegistroDB :RegistroBD popular registro BD obter valor de cada campo setar campos com valores de registro BD ok retorna obj Cliente 15