boa tarde, sou iniciante em java e meu prof. de programação e daqueles que só passa teoria a pratica (codigo), vai aprender em casa, mais afinal sem exemplo fica difícil entender quando a teoria e extensa, ele passou um trabalho que seria incrementar as funções de colletions num código já pronto feito com vetores e exceções que eu achei mais fácl. e eu estou perdido por que não sei se esta funcionando ou não, alguém poderia me dar uma dica vou deixar o diagrama por que o código esta em 5 classes.
como sou novo não consigo anexar nenhum arquivo. mais pra vcs entenderem melhor a tarefa é uma locadora de veiculos:
Uma empresa de locação de veículos necessita de um sistema para armazenar as informações de sua frota de veículos. Para todos os veículos, é necessário armazenar informações como: modelo, marca, placa, ano, valor a ser cobrado por quilometro rodado e quilometragem rodada. Além disso, existe a possibilidade de alugar veículos de carga. Ao realizar a locação de um veículo, deve-se informar o cliente que realizou a locação, a km inicial (km do momento da locação) e a data de início. Ao finalizar uma locação, informar a data de fim, atualizar a quilometragem do veículo com base na quilometragem rodada durante a locação e calcular o valor total a ser pago pelo cliente (km final – km inicial * valor km rodado). O sistema deve permitir a listagem de locações ativas, listagem de locações finalizadas e listagem de clientes (contendo somatório dos valores já pagos).
Diagrama de classes de domínio:
class Locadora
Cliente
- nome: String
- Cliente()
- Cliente(String)
- getNome(): String
- setNome(String): void
Locacao
- ativa: boolean
- cliente: Cliente
- kmFinal: int
- kmInicial: int
- valorKm: double
- veiculo: Veiculo
- estaAtiva(): boolean
- finalizar(int): void
- getCliente(): Cliente
- getVeiculo(): Veiculo
- Locacao(Cliente, Veiculo)
- setCliente(Cliente): void
- setVeiculo(Veiculo): void
- valorTotal(): double
Locadora
~ clientes: Cliente ([])
- CONTADORCLIENTE: int = 0
- CONTADORLOCACAO: int = 0
- CONTADORVEICULO: int = 0
~ locacoes: Locacao ([])
~ marcas: Marca ([])
~ modelos: Modelo ([])
~ veiculos: Veiculo ([])
- adicionarCliente(Cliente): void
- adicionarVeiculo(Veiculo): void
- alugarVeiculo(Veiculo, Cliente): Locacao
- finalizarLocacao(Veiculo, int): void
- finalizarLocacao(String, int): void
- getClientes(): Cliente[]
- getModelos(): Modelo[]
- getVeiculos(): Veiculo[]
- Locadora()
Marca
- nome: String
- getNome(): String
- Marca()
- Marca(String)
- setNome(String): void
Modelo
- marca: Marca - nome: String
- getMarca(): Marca
- getNome(): String
- Modelo()
- Modelo(String, Marca)
- setMarca(Marca): void
- setNome(String): void
Veiculo
- ano: int - km: int
- modelo: Modelo
- placa: String
- valorKm: double
- getAno(): int
- getKm(): int
- getModelo(): Modelo
- getPlaca(): String
- getValorKm(): double
- setAno(int): void
- setKm(int): void
- setModelo(Modelo): void
- setPlaca(String): void
- setValorKm(double): void
- Veiculo()
- Veiculo(Modelo, int, int, String, double)
PARTE 1: Utilizando como base o projeto de Locadora de veículos, modifique as classes de domínio para utilizar a API Collections.
Regras:
Coleção entre Locadora e Cliente não pode permitir clientes duplicados (utilize o CPF para identificar clientes duplicados);
Coleção entre Locadora e Veiculo deve ser ordenada por placa;
Implementar na classe Locadora os métodos para buscar cliente por CPF e buscar veículo por placa;
ATENÇÃO: Todos os arrays deverão ser substituídos por uma implementação de collections.
PARTE 2: Utilizando como base o projeto de Locadora de veículos, modifique as classes para implementar e tratar, utilizando tratamento de exceções, as seguintes regras:
Regras: O atributo nome do cliente não pode ser nulo;
Um Veículo não pode ter duas locações simultâneas;
Ao término de uma locação, a quilometragem final do veículo não pode ser menor que a quilometragem atual;
Não podem existir dois veículos com a mesma placa;
O valor do quilometro rodado não pode ser menor ou igual a zero;
ATENÇÃO! Toda quebra de regra deverá ser tratada em local específico, de tal forma que permita o retorno do estado atual do sistema e que possibilite um feedback amigável ao usuário.
PARTE 3: Criar a interface com o usuário para permitir a utilização das funcionalidades previstas para o sistema.
OBSERVAÇÕES:
Para se preparar para o próximo semestre, utilize a IDE Netbeans ou a IDE Eclipse.
Você poderá optar por criar uma interface com o usuário totalmente via texto (console), utilizando a classe Scanner para ler a partir do System.in (teclado), ou então utilizar recursos básicos de interface gráfica, como JOptionPane.