Você está na página 1de 18

Licenciatura em Engenharia Informática

EAPLI

Trabalho Prático
Submissão 3

1050124 – Beatriz Amador


1060097 – Solange Ribeiro
1060093 – José Rodrigues

Maio 2009
EAPLI 2008-2009

Enunciados para Aulas PL


Caso 2

Gestão de aluguer de automóveis


1 Enunciado 1
Pretende-se desenvolver um software de suporte a diversas actividades duma empresa de aluguer de automóveis. Este
software deve permitir registar contratos de aluguer, entregas e devoluções de automóveis, com cálculo automático do
preço a pagar pelos seus clientes.
Os clientes contactam a empresa presencialmente através dum funcionário, para elaboração de contratos de aluguer.
Embora um cliente possa alugar mais do que um automóvel em simultâneo, é realizado um contrato em separado para
cada automóvel alugado. Cada contrato é realizado por um único cliente, para um determinado período de tempo,
determinado grupo de automóvel e automóvel No contrato também deve ser indicado quais os condutores autorizados.
Os dados dos clientes incluem o nome, endereço, telefone e email, e observações.
Os dados dos condutores registados no contrato incluem nome, endereço e detalhes sobre a sua carta de condução
(número e data de validade).
O valor do aluguer é calculado aquando da elaboração/assinatura do contrato, segundo a tabela de preços em vigor.
A entrega do automóvel ao cliente ocorre imediatamente após a elaboração do contrato. A devolução dos automóveis
pode ser feita no próprio escritório da empresa, num serviço de “Meet and Greet” de um aeroporto ou estação de
comboios, além de qualquer hotel. Quando a devolução não é feita no escritório da empresa, acresce uma taxa a pagar.
Após a devolução o automóvel é preparado para o próximo aluguer (e.g. limpeza, manutenção, reabastecimento).
A empresa tem vários automóveis para alugar. Cada automóvel tem informação de matrícula, ano de fabrico, ano de
aquisição pela empresa, cor, cilindrada, e grupo de automóveis.
Os grupos de automóveis descrevem automóveis independentemente da marca, por exemplo:

Grupo A Grupo B Grupo C


• Nº de portas: 3 • Nº de portas: 5 • Nº de portas: 5
• Combustível: gasolina • Combustível: gasolina • Combustível: gasolina
• Classe: utilitário • Classe: utilitário • Classe: familiar compacto
• Ar condicionado: não • Ar condicionado: não • Ar condicionado: sim

Neste momento a gestão dos automóveis, de grupos de automóveis e de manutenção não são consideradas relevantes
para serem suportadas pelo sistema.
Resolução:

1.1 Casos de uso

Actor E1 E2
Use Case
principal Breve/Casual 1 Completo 2
UC1 Adicionar Cliente B
UC2 Elaborar Contrato Aluguer(breve) B
UC3 Elaborar Contrato Aluguer B R
UC4 Devolução Automóvel Funcionário B R
UC5 Pesquisa de cliente B
UC6 Seleccionar Automóvel B
UC7 Entregar Automóvel B R
1 B = Formato Breve
1 R = refine, S = start C = Formato Casual

1.1.1
1.1.2 Caso de Uso 1 (UC1): Adicionar Cliente (breve)
O funcionário solicita uma ficha de cliente ao sistema.
Introduz os dados completos do cliente.
O sistema adiciona novo registo de cliente.
1.1.3 UC2: Elaborar contrato de Aluguer (breve)
O cliente solicita ao funcionário um contrato de aluguer.
O funcionário insere os dados necessários para a elaboração do contrato de aluguer.
O sistema calcula e apresenta o valor a pagar.
O funcionário confirma.
O sistema regista o contrato no registo de contratos.

1.1.4 UC3: Elaborar contrato de Aluguer (completo)


Actores
Funcionário

Partes interessadas e seus interesses


• Funcionário: efectuar um contrato de aluguer de forma expedita e sem erros;
• Empresa de aluguer: Efectuar o contrato de aluguer sem erros;
• Cliente: ter uma resposta simples, rápida e cómoda.

Pré-condições
???
Pós-condições
É registado um contrato de aluguer de um automóvel a um cliente na empresa.
Fluxo Principal de Acções (Sucesso)

0. O cliente solicita ao funcionário um contrato de aluguer.

1. O funcionário inicia um novo contrato de aluguer no sistema.

2. O funcionário identifica o cliente no sistema (id).

3. O funcionário identifica o automóvel no sistema (matricula).

4. O funcionário insere local de devolução.

5. O funcionário insere dados do condutor autorizado (Nome, Endereço, CartaCondNum, CartaCondValidade).

O passo 5 repetido para todos os condutores autorizados.

6. O funcionário insere dados do serviço que o cliente pretende contratar (nomeServiço, Quant., Preço).

O passo 6 repetido para todos os serviços pretendidos.

6. O funcionário confirma o contrato de aluguer.

7. O sistema calcula e apresenta o valor a pagar pelo aluguer de acordo com os serviços contratados, (incluindo
eventuais taxas).

8. O funcionário informa o cliente sobre o valor a pagar.

9. O sistema solicita confirmação.

10. O funcionário confirma.

11. O funcionário solicita ao cliente os dados do seu cartão de crédito.

12. O funcionário insere dados para autorização de débito de eventuais despesas (combustível, danos automóvel, etc).

13. O sistema emite cópia(s) do contrato de aluguer para efeitos de assinaturas pelas partes interessadas.

14. O sistema emite autorização de débito para ser assinado pelo cliente.

15. O sistema regista o novo contrato.

16. O sistema apresenta a informação “Contrato registado com sucesso” e termina.

17. O cliente dirige-se ao parque auto com uma cópia do contrato para receber o automóvel.

Cenários alternativos

*a. A qualquer momento o cliente desiste do contrato. (O use Case termina)

10a. O cliente não aceita o valor a pagar mas, para reduzir custos decide alterar o período de aluguer.
1. O funcionário não confirma e altera o período de aluguer.
2. O fluxo principal é retomado. (passo 9).
Requisitos Especiais
??

Tecnologia e Lista de Variações dos Dados


??

Frequência de Ocorrência
??

Dúvidas em Aberto
• Qual a identificação a utilizar para o cliente?
• Qual a identificação a utilizar para o grupo de automóveis e para o automóvel?
• Qual a frequência diária de alugueres?
• O funcionário deve estar ou não identificado e autenticado no sistema, para elaborar o contrato?
• Como deve ser tratado o pagamento dos serviços prestados (Devem ser facturados, etc?)?
• Devemos incluir gestão da conta cliente(Para permitir o acesso à consulta da situação (devedor/credor) do cliente)?

1.1.5 UC4: Devolução Automóvel (Breve)


O funcionário identifica o automóvel no sistema.
O sistema apresenta os dados completos do mesmo e o funcionário confirma a devolução no sistema.

1.1.6 UC5: Pesquisa Cliente (Breve)


O funcionário introduz os dados do cliente, de acordo com os critérios de pesquisa no sistema.
O sistema apresenta lista de clientes que satisfazem os critérios inseridos.

1.1.7 UC6: Seleccionar Automóvel (Breve)


O funcionário identifica no sistema o tipo/grupo de automóvel que o cliente pretende.
Da lista apresentada pelo sistema, o funcionário selecciona o automóvel escolhido pelo cliente.

1.1.8 UC7: Entrega Automóvel (Breve)


O funcionário do parque auto identifica no sistema o contrato (contratoId).
O funcionário insere os dados do estado do automóvel no sistema.
O funcionário entrega a chave e o automóvel ao cliente.

1.1.9 UC7: Entrega Automóvel (completo)


Actores
Funcionário

Partes interessadas e seus interesses


• Funcionário: efectuar o registo de entrega do automóvel de forma expedita e sem erros;
• Empresa de aluguer: Efectuar a entrega do automóvel ao cliente de forma expedita;
• Cliente: Dispor do automóvel no mínimo espaço de tempo.

Pré-condições
Existir um contrato de aluguer para aquele cliente e para aquele automóvel.
Pós-condições
É registada no sistema a entrega do automóvel.

Fluxo Principal de Acções (Sucesso)

0. O funcionário solicita ao cliente a copia do contrato de aluguer.

1. O funcionário inicia Entrega de Automóvel

2. O funcionário identifica o contrato no sistema(idContrato).

3. O sistema mostra os dados do contrato (incluindo os dados do automóvel).

4. O funcionário confirma os dados.

5. O funcionário insere no sistema o local de entrega, data, hora, Km e nivelCombustível no sistema.

6. O funcionário insere os dados do estado físico do automóvel(riscos, falha de equipamento, etc).

7. O funcionário confirma entrega.

8. O sistema emite comprovativo da entrega.

9. O funcionário solicita ao cliente a assinatura do comprovativo.

10. O funcionário termina o registo da entrega.

11. O sistema regista a entrega e apresenta a mensagem “Entrega registada com Sucesso”.

12. O funcionário entrega as chaves do automóvel e uma copia do comprovativo de entrega.

Cenários alternativos

3a. O funcionário verifica que os dados do automóvel ou/e os dados do contrato não estão correctos.
1. O sistema não permite alterar os dados do contrato e o use case termina.
9a. O cliente não concorda com os dados do estado físico do automóvel e não assina o comprovativo.
1. O sistema permite alterar ao dados do estado físico e retoma o passo 7.
2. O funcionário não altera os dados físicos do automóvel, não confirma o registo de entrega no sistema e o caso
de uso termina.

Requisitos Especiais
??

Tecnologia e Lista de Variações dos Dados


??
Frequência de Ocorrência
??

Dúvidas em Aberto
• Qual a frequência diária de entregas?
• O funcionário deve estar ou não identificado e autenticado no sistema, para efectuar a entrega?

1.1.10 UC4: Devolução do Automóvel (completo)


Actores
Funcionário

Partes interessadas e seus interesses


• Funcionário: efectuar o registo devolução do automóvel de forma expedita e sem erros;
• Empresa de aluguer: Efectuar a recepção do automóvel de forma expedita;
• Cliente: Devolver o automóvel com o mínimo de incómodo.

Pré-condições
Existir um contrato de aluguer para aquele cliente.
Pós-condições
É registada no sistema a devolução do automóvel.

Fluxo Principal de Acções (Sucesso)

0. O cliente informa o funcionário que pretende devolver o automóvel e mostra a copia do contrato de aluguer.

1. O funcionário inicia o registo da devolução.

2. . O funcionário identifica o contrato no sistema(idContrato).

3. O sistema mostra os dados do contrato (incluindo os dados do automóvel).

4. O funcionário confirma os dados.

5. O funcionário insere no sistema o local devolução, data, hora, Km e combustível no sistema.

6. O funcionário insere os dados do estado físico do automóvel(riscos, falha de equipamento, etc).

7. O funcionário confirma a devolução.

8. O sistema calcula custos adicionais(Para serem liquidados pela autorização de débito).

9. O sistema emite comprovativo da devolução(incluindo os custos adicionais).

10. O funcionário solicita ao cliente a assinatura do comprovativo(confirma que aceita os valores calculados no passo
8).

11. O funcionário termina o registo da devolução.

12. O sistema regista a devolução e apresenta a mensagem “Devolução registada com Sucesso”.
13. O funcionário entrega uma copia do comprovativo de devolução ao Cliente .

Cenários alternativos

2a. O funcionário verifica que os dados do automóvel não correspondem ao do automóvel que o cliente está a
devolver.
1. O funcionário não confirma os dados, informa o cliente do problema e o use case termina.

Requisitos Especiais
??

Tecnologia e Lista de Variações dos Dados


??

Frequência de Ocorrência
??

Dúvidas em Aberto
• Qual a frequência diária das devoluções
• O funcionário deve estar ou não identificado e autenticado no sistema, para efectuar o registo da devolução do
automóvel?
• Como deve ser tratado o pagamento dos custos adicionais (Deve ser emitida factura, recibo, etc?)?

1.2 Diagrama dos Uses Cases

Sistema

Adicionar Cliente

Pesquisar Cliente

Include

Funcionário Elaborar Contrato


Aluguer

Include

Seleccionar Automóvel

Devolução Automóvel
Entrega Automóvel
1.3 Diagramas de Sequência de Sistema (SSD)

UC3 – Elabora contrato de aluguer UC1 – Adicionar Cliente

:Sistema Sistema
Funcionário Funcionário
NovoContrato Aluguer( ) AdicionaCliente(nome, endereço, tel, email, Obs)
IdentificaCliente(clienteId)
Cliente Adicionado
Mostra dados do cliente
ConfirmaCliente
IdentificaAutomóvel(matricula)
Mostra dados do automóvel UC2 – Entrega Automóvel
ComfirmaAutomóvel()
Introduzir LocalDevolução() Sistema
Introduzir DataContrato()
Funcionário
Serviço (descrição, preçoUnit, quant,) Loop IdentificaContrato(contratoId)
Mostra Dados do contrato
Condutor (Nome, Endereço, Carta Loop
CondNum, CartaCondValidade) IntroduzDadosEntrega(estadoFisico, km,
combustível, localEntrega, data hora)
ConfirmaContrato () Confirma
MostraValorTotal Emite comprovativo
ConfirmaContrato ()
AutorizaçaoContrato(nºCartaoCredito,etc)
Emite cópia contrato
Emite autorização de debito UC4 – Devolução Automóvel
Contrato registado com sucesso

Sistema
Funcionário
IdentificaContrato(contratoId)
Mostra Dados do contrato

IntroduzDadosDevolução(estadoFisico,
km, combustível, localDevol., data hora)
Confirma
Emite comprovativo
UC 5 – Pesquisa de cliente UC 6 – Seleccionar Automóvel

:Sistema :Sistema
Funcionário Funcionário
PesquisaCliente(critérios de pesquisa) SelecionaAutomovel(grupoAutomoveis)

Mostra Lista de clientes ApresentaListaAutomóveisDisponível

SelecionaAutomóvel

MostraAutomóvel

UC4 – Devolução de automóvel

:Sistema UC7 – Entrega de automóvel


Funcionário
:Sistema
NovaDevolucaoAuto(localDevolução, data, hora)
IdentificaContrato(contratoId)
Funcionário
Mostra dados do contrato (inclui dados do NovaEntregaAuto(localEntrega, data, hora)
automóvel)
IdentificaContrato(contratoId)
ConfirmaContrato() Mostra dados do contrato
Insere dados devolução(km, ConfirmaContrato()
nivelCombustivel)
Insere dados entrega(km, nivelCombustivel)
Insere dados estadoFisicoAuto(Riscos,
amolgagelas, falhasEquip, etc) Insere dados estadoFisicoAuto(Riscos,
amolgagelas, falhasEquip, etc)
ConfirmaDevolução ()
ConfirmaEntrega ()
CalculaCustosAdicionais ()
Emite comprovarivo de entrega
Emite comprovarivo de devolução
TerminaRegistoEntrega ()
TerminaRegistoDevolução ()
Entrega registada com sucesso
Devolução registada com sucesso
1.4 Modelo de Domínio
O processo de construção do modelo de domínio é baseado nos casos de uso e na descrição do enunciado.

1.4.1 Racional para identificação de classes de domínio


Para a identificação de classes de domínio usa-se a lista de categorias das aulas TP (sugeridas no livro). Como resultado
temos a seguinte tabela de conceitos (ou classes, mas não de software) por categoria:
Categoria Classes candidatas

Transacções • (Registo de) Cliente


• Contrato Aluguer
• Devolução Automovel
• Entrega de automóvel
Linhas de transacções • Automóvel alugado
• Automóvel devolvido
Produtos ou serviços • Automóvel
relacionados com transacções
Registos (de transacções) • Registo (transacções)

Papéis das pessoas • Funcionário

Lugares • Empresa de Aluguer

Eventos • Registo de cliente


• Contrato de Aluguer
• Entrega do Automóvel
• Devolução
Objectos físicos • Copia(s) de Contrato de Aluguer
• Autorização de Débito
• Automóvel
Especificações e • Automóveis

descrições

Catálogos • Registo de automóveis


• Registo de Serviços

Conjuntos • Grupo de Automóveis

Elementos de conjuntos • Automóvel alugado


• Automóvel devolvido
(Outras) Organizações • ?

Outros sistemas (externos)


Registos (financeiros), de • Copia(s) contratos de aluguer
trabalho, contractos, docu- • Autorização de Débito
mentos legais • Comprovativo de entrega
• Comprovativo de devolução
Instrumentos financeiros • ?

Documentos • ?
referidos/para executar as
tarefas
1.4.2 Modelo de domínio (sem atributos)

RegistoCliente
EmpresaAluguer Cliente
RegistoContratoAluguer

Funcionario
RegistoDevolucao

RegistoEntrega

RegistoEntrega

RegistoServiços

RegistoAutorizaçãoDebito

GrupoAutomoveis

Automovel
LinhaCondutor ContratoAluguer
LinhaServicos
Devolucao

Entrega

Serviços

CopiaAutorizaçaoDébito
Condutor
CopiaContrato
AutorizaçaoDebito
1.4.3 Racional para identificação de relações de domínio
Para a identificação das relações entre as classes de domínio aplica-se a lista de categorias.

Como resultado temos a seguinte tabela de relações por categoria:

Categoria A relação B
A está fisicamente (ou logicamente) contido em • Contrato está contido em Registo de
B Contratos
• Devolução está contida em Registo de
Devoluções

A é uma descrição de B • Grupo de Automóveis descreve Automóvel


A é conhecido/capturado/registado por B • Cliente está registado em Registo de Clientes
• Contrato é registado em Registo de
Contratos
• Devolução é registada em Registo de
Devoluções

A é fisicamente (ou logicamente) membro de B • Automóvel (emprestado) é membro de


Contrato
• Automóvel (devolvido) é membro de
Devolução
• Cópia(Contrato) está relacionado com
Contrato

A é uma subunidade organizacional de B •


A usa ou gere B • Funcionário gere/usa Registo

A está relacionado com uma transacção de B • Devolução está relacionada com Contrato
1.4.4 Modelo de domínio

Automovel
1.4.5 GrupoAutomoveis Condutor RegistoEntrega
Marca, modelo, grupoAuto, nomeGrupo, numPortas, nome, endereco, cartaNum,
matricula, cor, anoFabrico, combustivel, classe, data validade arrayEntregas
anoAquisição Descreve 1..* cilindrada, arCondicionado
1
listaAutomovel() listaGrupoAutomovel() listaCondutor() addEntrega()
1..* getEntrega()

1 1 1..* 1..*

RespeitanteA
RespeitanteA 1 EstadoFisicoAuto
Regista Servicos

Contem
idEstadoFisicoAuto,
LinhaCondutor CondutorDe 1 idContrato, Descrição
idServico

RespeitanteA
infoCondutor 1 preço getInfoEstadoFisicoAuto()
descriçaoServico

listaInfoCondutor() LinhaServico Contem 1


Regista
1 Serviço 1..* ServicosDe 1 1..*
1
Quantidade RegistoEstadoFisi
Contem

1 1 coAuto
calculoTotalLinha() Entrega
arrayFisicoAuto
Detém RespeitanteA idEntrega, data, hora,
RespeitanteA

1 1 ,localEntrega, km,
1..* combustivel, estadoFisico
Contem

1 getEstadoFisicoAuto
1 (estadiofisicoAutoId)
ContratoAluguer addEstadoFisicoAuto(
Devolucao estadofisicoAuto)
Detém
1 1 idContrato, infoCliente, 1
idDevolucao, data, hora, infoAutomovel, dataInicio,
dataFim, dataContrato,
estadoFisico, local RegistoCliente
Devolucao, km, 1 arrayCondutor, arrayServiços, 1..*
combustivel, idContrato autorizaçaoDebitoId
arrayClientes
calculaPeriodoAlug()
calculaPreco() CalculaValorContrato()
1..*
1..* 1 Detém 1 addClinte(Cliente)
EmpresaAluguer
1..* getCliente()
RespeitanteA

1..*
Capturado

nome, endereço,
Capturado

em

numContribuinte
1
Registado em
em

listaEmpresa()
1
1
RegistoDevolucao 1..* 1..* 1..* 1..*
RegistoContratoAluguer
Cliente
Detém

arrayDevolucao
Detém

arrayContratosAluguer
idCliente, nome, endereço,
telef, email, observ
Recebe

addDevolucao() 1
addContratoAluguer()
listaCliente()
getContratoAluguer() RespeitanteA
1..* 1..* 1..*
1..*
Gere

Recebe
Gere

1 1

Funcionario 1
1 1
AutorizaçaoDebito RegistoAutorizaçao
idFuncinario, nome, CopiaAutorizaçao CopiaContrato
endereço, telef, biNum autorizaçãoId, ClienteId,
Debito
contratoId, arrayAutorizaçãoDebito()
listaFuncionario() numCartaoCredito, data,
GetInfoCartaoCredito()
GetAutorizaçãoDebito(autor
1 1 izaçãoId)
1..*
Registado em 1 1..*
Gere
Gere
1.4.5 Diagrama de Classes do Use Case Elaborar Contrato de Aluguer

ContratoAluguerController RegistoContratoAluguer Condutor AutorizaçaoDébito

ElaboraContratoAluguer()
SetCliente(clienteId)
setAutomovel(matricula) ElaboraContratoAluguer() Condutor(Nome, endereco,
SetDataInicio(Data) addContrato( ) CartaCondNum,
SetDataFim(Data) CartaCondValidade)
SetLocalDevoluçao(local) AutorizaçãoDebito
SetCondutor(nome, endereco, (numCartaoCredito, Banco)
cartaCondNum,
cartaCondValidade)
SetServiço(nomeServiço,. preço,
quant)
RegistoCliente RegistoAutorizaçãoDébito
SetAutorizaçãoDebito
(numCartaoCredito, Banco)
ConfirmaContrato()
TerminaContrato() SetAutorizaçãoDebito
(numCartaoCredito, Banco)
InfoCliente = addAutorizaçãoDebito(Autorização
getInfoCliente(clienteId) Debito)
ContratoAluguer

Contrato() Registocondutor LinhaContrato Condutor


SetCliente (InfoCliente)
SetAutomovel(infoAutomovel)
SetDataInicio(Data)
SetDataFim(Data)
SetLocalDevoluçao(local) setCondutor(Nome, endereco, LinhaContratoCondutor(infoCond
SetAutorizaçãoDebito CartaCondNum, utor)
(infoAutorizaçãoDebito) CartaCondValidade) addLinhaContratoCondutor()
CalculaValor Pagarl()
ListaValorPagar()
ValidaContrato()
EmiteCopiaContrato()
Emite autorização de Débito LinhaContrato Serviço
Registo Automovel
Serviço

LinhaContratoServiço(serviço,
quant) getInfoAutomovel(matricula)

Serviço(nomeServiço, preço)
Diagrama de Sequência (interacção) Caso de Uso – Devolução de Automóvel

DevoluçãoController Registo DevoluçãoAuto Registo Expert


DevoluçãoAuto ContratoAluguer
1 - O cliente pretende devolver
o automóvel à empresa de
2-IniciarDevoluçãoAutomóvel aluguer e apresenta uma cópia
(localDevolução, data, hora) iniciarDevoluçãoAutomóvel Registo do contrato ao funcionário.
(localDevolução, data, hora)
CriarDevoluçãoAuto(local EstadoFisicoAuto 2 – O RegistoDevoluçãoAuto
Devolução, data, hora) agrega DevoluçõesAuto.
3- SetContrato(contratoId)
4- Contrato = getContrato(contratoId) 3 - O funcionário identifica o
EstadoFisicoAuto contrato no sistema.
SetContrato (contrato.getInfoContrato())
5-setDadosDevolução (km, 4 - O Registo ontratoAluguer
nivelCombustivel) agrega ContratosAluguer.
setDadosDevolução (km, nivelCombustivel)
6-setEstadoFisicoAuto (riscos, 5- O funcionário introduz a num
amolgagelas, falhas Equip, etc) Km e nível de combustível, que
7- setEstadoFisicoAuto(riscos, amolgagelas, falhasEquip, etc) efa=criarEstadoFisicoAuto (Riscos, os indicadores do automóvel
amolgagelas, falhasEquip, etc) apresentam.
setEstadoFisicoAuto(efa.getInfoEstadoFisicoAuto())
addEstadoFisicoAu
6-O funcionário introduz
to(efa)
introduz os dados dos estado
físico do automóvel.
11- ConfirmaDevolução()
7- O RegistoEstadoFisicoAuto
Emite comprovativo de Devolução (inclui os custos calculaCustos agrega EstadoFisicoAutos.
adicionais a debitar ao cliente) Adicionais()
8- O funcionário confirma a
11- TerminaDevolução() devolução

addDevolução( ) 9 – O RegistoDevoluçãoAuto
adiciona a DevoluçãoAuto.
Diagrama de Sequência (interacção) Caso de Uso – Entrega de Automóvel

EntregaController Registo EntregaAuto Registo Expert


EntregaAuto ContratoAluguer
1 - O cliente solicita a entrega
do automóvel ao funcionário e
2-IniciarEntregaAutomóvel apresenta-lhe uma cópia do
(localEntrega, data, hora) iniciarEntregaAutomóvel Registo contrato.
(localEntrega, data, hora)
CriarEntregaAuto(localEnt EstadoFisicoAuto 2 – O RegistoEntregaAuto
rega, data, hora) agrega EntregaAutos.
3- SetContrato(contratoId)
4- Contrato = getContrato(contratoId) 3 - O funcionário identifica o
EstadoFisicoAuto contrato no sistema.
SetContrato (contrato.getInfoContrato())
5-setDadosEntrega (km, 4 - O Registo ontratoAluguer
nivelCombustivel) agrega ContratosAluguer.
setDadosEntrega (km, nivelCombustivel)
6-setEstadoFisicoAuto (riscos, 5- O funcionário introduz a num
amolgagelas, falhas Equip, etc) Km e nível de combustível, que
7- setEstadoFisicoAuto(riscos, amolgagelas, falhasEquip, etc) efa=criarEstadoFisicoAuto (Riscos, os indicadores do automóvel
amolgagelas, falhasEquip, etc) apresentam.
setEstadoFisicoAuto(efa.getInfoEstadoFisicoAuto())
addEstadoFisicoAu
6-O funcionário introduz
to(efa)
introduz os dados dos estado
físico do automóvel.
11- ConfirmaEntrega()
7- O RegistoEstadoFisicoAuto
Emite comprovativo de entrega agrega EstadoFisicoAutos.

8- O funcionário confirma a
12- TerminaEntrega() entrega

addEntregaAuto( ) 9 – O RegistoEntregasAuto
adiciona a EntregaAuto.
Diagrama de Sequência (interacção) Caso de Uso – Elaborar Contrato de Aluguer

ContratoAluguer Registo ContratoAluguer Registo Expert


Controller ContratoAluguer Cliente
1 - O cliente solicita um
Contrato de aluguer ao
2- ElaboraContratoAluguer() funcionário.
Registo
ElaboraContratoAluguer()
CriarContrato() Automovel 2 - Registo do Contrato
Aluguer agrega Contratos de
aluguer.
3- SetCliente(clienteId) Registo
InfoCliente = getInfoCliente(clienteId) 3 - O funcionário identifica o
Condutor Cliente no sistema.
SetCliente (InfoCliente)
condutor 4 - O Registo de Clientes tem
Clientes.
5- setAutomovel(matricula) 5 - O Registo Automóvel tem
infoAutomovel= getInfoAutomovel(matricula) LinhaContrato Automóveis.

SetAutomovel(infoAutomovel) Condutor
6- O funcionário introduz a
data inicio.
6- SetDataInicio(Data) Serviço
SetDataInici o(Data)
7-O funcionário introduz data
7- SetDataFim(Data) fim.
SetDataFim(Data)
LinhaContrato 8- O funcionário introduz
8- SetLocalDevoluçao(local)
SetLocalDevoluçao(local) Serviço local de devolução.

9- SetCondutor(nome, 9 – O contrato agrega linhas


Loop RegistoAutorização contratoCondutor. Um
endereco, cartaCondNum,
cartaCondValidade) setCondutor(Nome, endereco, CartaCondNum, CartaCondValidade) Débito condutor por cada linha.

9-criaCondutor(nome, 10- O contrato agrega linhas


Autorização contratoServiço. Um serviço
endereço, etc)
CriaLinhaContratoCondutor(getInfoCondutor) Débito por cada linha.
addLinha
ContratoCondutor() 11- O funcionário insere os
dados da Autorização de
Débito.
10- SetServiço(nomeServiço,. Loop
preço, quant) 12- O Registo
CriaServiço(nomeServiço, preço) AutorizaçãoDébito agrega
AutorizaçãoDébitos.
CriaLinhaContratoServiço(serviço, quant)
12- O funcionário confirma o
addLinha contrato condicionalmente.
ContratoServiço
13- O funcionário confirma o
11- SetAutorizaçãoDebito adebito=criarAutorizaçã contrato após o cliente ter
(numCartaoCredito, Banco) oDebito aceitado os valores.
12- SetAutorizaçãoDebito (numCartaoCredito, Banco) (numCartaoCredito,
Banco)

SetAutorizaçãoDebito (adebito.getInfoAutorizaçãoDebito()) addAutorizaçãoDeb


ito(adebito)
12- ConfirmaContrato()
CalculaValor
Valor a Pagar Pagarl()
13- TerminaContrato()
ValidaContrato()

Emite Copia de Contrato

Emite autorização de Débito

addContrato( )

Você também pode gostar