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

Salvar Pessoa e Endereço usando OO com Java

Olá Pessoal,

Estou criando um cadastro de associados usando java para aprendizado, mas sempre tive a seguinte dúvida:

Usando OO Pessoa e Endereco são classes distintas, mas na tela de cadastro as informações estão na mesma tela.

No caso pessoa tem um método salvar e um método salvarEndereço que chama o método salvar de endereço.

É correto pensar assim? É uma boa prática?

Desde já Obrigado,

2 respostas

Acredito que isso seria acoplar demais o código. Eu chamaria os dois métodos separados, um de cada vez e não um dentro do outro.

solução!

Bom dia Cesar tudo bom?

Acho que essa sua dúvida não possui uma resposta certa, depende do problema que você está tentando resolver.

Por exemplo, se você tiver um atributo do tipo String que representa seu endereço não há necessidade de criar uma classe Endereço só para isso.

Por outro lado, caso seu Endereço seja mais complexo (contendo atributos como cep,rua,numero,bairro,pais e etc), ai sim vale a pena criar uma classe exclusiva para ele.

No seu caso, ao invés do método salvarEndereco() você poderia usar composição, que no caso, seria colocar a classe Endereco como atributo da classe Pessoa, pois, parando para pensar, uma pessoa tem um endereço correto?

Essa brincandeira com "tem um" serve para definir atributos de uma classe. Quando algo "tem" alguma coisa, essa coisa nada mais é do que um atributo de algo. Logo você poderia implementar assim:

public class Pessoa{
    private Endereco endereco;

private void setEndereco(Endereco endereco){
    this.endereco = endereco;
}

private Endereco getEndereco(){
    return this.endereco;
}

public class Endereco {
    private String rua;
    private String numero;
    private String cep;
    private String cidade;
    private String estado;
    private String pais;

    public String getRua() {
        return rua;
    }

    public void setRua(String rua) {
        this.rua = rua;
    }

    public String getNumero() {
        return numero;
    }

    public void setNumero(String numero) {
        this.numero = numero;
    }

   //Outros getters/setters
}

Para setar os atributos de Endereco você pode usar um construtor na classe Endereco. Algo assim:

Pessoa pessoa = new Pessoa();
pessoa.setEndereco(new Endereco("Rua x", "123");

Seu construtor pode ter vários outros atributos, esses foram apenas para exemplificar.

Ou setar normalmente:

Pessoa pessoa = new Pessoa();
Endereco endereco = new Endereco();
endereco.setRua("Rua x");
endereco.setNumero("123");
pessoa.setEndereco(endereco);

Pronto, agora para acessar qualquer um dos atributos da classe endereco você usa a ponte que você criou entre pessoa e endereco, algo assim:

pessoa.getEndereco().getRua();
pessoa.getEndereco().getNumero();

Espero ter ajudado, bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software