Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Posso fazer uma pergunta de modelagem?

Suponha uma locadora de carros estilo car sharing onde pessoas alugam seus carros para outras pessoas. classes: Usuario, Carro, Pedido e classe main Principal. Usuario pode tanto se cadastrar para fornecer seu carro, como apenas para obter. Como eu poderia fazer para o sistema saber quais são os carros do usuário e como saber aquele carro pertence a qual usuário? Teria que ter uma terceira classe guarde esses valores? Carro possui usuário e usuário possui carro(s) estaria armazenando informação duplicada?

3 respostas
solução!

Boa tarde Felipe. Eu faria usuário ter uma lista de carros

Fiz assim: Usuario

package experimentos;

public class Usuario {

    private static int codigo;
    private String nome;
    private String cpf;
    private String rg;
    private Endereco endereco;
    private String telefone;
    private int idade;
    private String cnh;
    private String tipo;  //locador (quem precisa) ou locatário (quem fornece)
    private Carro carro;
    //usuário pode ter 0 a n carros
    public Usuario(String nome, String cpf, String rg, Endereco endereco, String telefone, int idade, String cnh,
            String tipo) {
        codigo++;
        this.nome = nome;
        this.cpf = cpf;
        this.rg = rg;
        this.endereco = endereco;
        this.telefone = telefone;
        this.idade = idade;
        this.cnh = cnh;
        this.tipo = tipo;
    }

    //sets e gets    
}

Carro


public class Carro{

    private Usuario usuario;
    private Seguradora seguradora;
    private String marca;
    private String modelo;
    private String renavam;
    private String combustivel;
    private String opcional;
    private String placa;
    private String opcionais; //ar, direção, trava, alarme, vidros elétricos, GNV
    private int kilometragem;
    private String cor;
    private boolean disponibilidade;

    public Carro(Usuario usuario, Seguradora seguradora, String marca, String modelo, String renavam, String placa, String combustivel, String opcional,
            int kilometragem, String cor, boolean disponibilidade) {
        super();
        this.usuario = usuario;
        this.seguradora = seguradora;
        this.marca = marca;
        this.modelo = modelo;
        this.renavam = renavam;
        this.placa = placa;
        this.combustivel = combustivel;
        this.opcional = opcional;
        this.kilometragem = kilometragem;
        this.cor = cor;
        this.disponibilidade = disponibilidade;
        usuario.setCarro(this); //aqui estou passando a referência deste carro para o atributo do objeto da classe usuário
    }
    //sets e gets
}

Assim que aprender a usar listas vou poder fazer ficar mais interessante.

Na verdade o usuário pode ter apenas um dono (usuário ) , mas este pode ter vários carros cadastrados.

Isso nos leva a um relacionamento um para muitos.

Pensando em banco, o id do usuário irá para a tabela do carro e assim eu sei de quem é cada carro.

Voltando para as classes, você teria:

public class Carro {
      private Usuario usuario;
      ......
}

public class Usuario {
       private List <Carro> listaDeCarro;
       .......
}