Estou com uma dúvida referente à codificação de uma classe de associação.
Basicamente, o problema trata sobre uma Locadora que é composta por seus carros e clientes, onde ao realizar a locação de um veículo, deve-se manter a km inicial (antes da locação), a km final (depois da locação), o valor total da locação (km final - km inicial * valor km rodado) e o cliente.
|Cliente| ....................................... |Carro|
|
|
|
|
|Locação|
Onde colocar a classe Locação? Como atributo de Cliente? de Carro? de Locadora?
Segue abaixo parte do código, desde já obrigado:
public class Locadora {
private ArrayList <Cliente> clientes = new ArrayList <Cliente>();
private ArrayList <Carro> carros = new ArrayList <Carro>();
public class Locacao {
private Data dataFim;
private Data dataInicio;
private double kmFinal;
private double kmInicial;
private double vlrAluguel;
public class Carro {
private String placa;
private String modelo;
private String cor;
private String chassi;
private int ano;
private double kmRodado;
private boolean alugado;
private Tipo tipo;
public class Cliente {
private String rg;
private String cpf;
private String tel;
private String nome;
private String endereco;
private String contato;
// Um cliente pode alugar mais de um carro
private ArrayList <Carro> carrosAlugados = new ArrayList <Carro>();
Locação é a associação entre o Cliente e o Carro, certo?
tente:
public class Locacao {
private Data dataFim;
private Data dataInicio;
private double kmFinal;
private double kmInicial;
private double vlrAluguel;
private Carro carro; // um cliente pode llocar mais de uma carro por vez? se sim, isso vira uma coleção
private Cliente cliente;
public class Carro {
private String placa;
private String modelo;
private String cor;
private String chassi;
private int ano;
private double kmRodado;
private boolean alugado;
private Tipo tipo;
private List<Locacao> locacoes = new ArrayList<Locacao>(); // um carro pode ter sido locado várias vezes por vários clientes (ou pelo mesmo cliente várias vezes)
public class Cliente {
private String rg;
private String cpf;
private String tel;
private String nome;
private String endereco;
private String contato;
private List<Locacao> locacoes = new ArrayList<Locacao>(); // um cliente pode ter locado vários carros (ou o mesmo carro várias vezes)
[quote=wbdsjunior]Locação é a associação entre o Cliente e o Carro, certo?
tente:
public class Locacao {
...
private Carro carro; // um cliente pode llocar mais de uma carro por vez? se sim, isso vira uma coleção
private Cliente cliente;
public class Carro {
...
private List<Locacao> locacoes = new ArrayList<Locacao>(); // um carro pode ter sido locado várias vezes por vários clientes (ou pelo mesmo cliente várias vezes)
public class Cliente {
...
private List<Locacao> locacoes = new ArrayList<Locacao>(); // um cliente pode ter locado vários carros (ou o mesmo carro várias vezes)
[/quote]
Ok, só uma dúvida: então um cliente tem uma locação, e a locação também tem um cliente?
Obrigado pela resposta.
[quote=jhonatta]Ok, só uma dúvida: então um cliente tem uma locação, e a locação também tem um cliente?
Obrigado pela resposta.[/quote]
sim. reflita…
mundo real:
olhando para uma locação (imagine um papel) você reconhece o cliente que locou o carro. e se você perguntar a um cliente, ele saberá dizer quais locações (data, carro, etc) fez.
no seu programa:
um cliente (o programa que instanciará a Locação ou o Cliente) pode perguntar (chamar uma método) ao objeto Locação qual é o cliente que locou o carro ou para o objeto Cliente, quantas locações ele fez. você “desenha” como no mundo real, sacou? mas se seu cliente (o programa) instanciar apenas a Locação, você não precisará fazer essa associação no Cliente (o objeto) e vice-versa.