Prezados, boa noite!
Estou com duvida em composição, vou compartilhar um exemplo que criei aqui para tentar ir direto ao ponto.
Observe as 3 classes abaixo:
public class Cliente {
private String nome, rg, cpf;
public Cliente(String nome, String rg, String cpf) {
this.nome = nome;
this.rg = rg;
this.cpf = cpf;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getRg() {
return rg;
}
public void setRg(String rg) {
this.rg = rg;
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
}
public class Endereco {
private String rua, bairro, cep;
private Cliente cliente;
public Endereco(String rua, String bairro, String cep, Cliente cliente) {
this.rua = rua;
this.bairro = bairro;
this.cep = cep;
this.cliente = cliente;
}
public String getRua() {
return rua + "do Cliente " + cliente.getNome();
}
public void setRua(String rua) {
this.rua = rua;
}
public String getBairro() {
return bairro;
}
public void setBairro(String bairro) {
this.bairro = bairro;
}
public String getCep() {
return cep;
}
public void setCep(String cep) {
this.cep = cep;
}
}
public class Main {
public static void main(String[] args) {
Cliente cliente = new Cliente("marcos", "rg XXX", "cpf XXX");
Endereco endereco = new Endereco("rua XXX", "bairro XXX", "cep XXX", cliente);
System.out.println(endereco.getRua());
}
}
Isso que postei acima esta compilando sem problemas, e até acredito que usei corretamente a composição. A minha duvida é o seguinte...
Pensando no exemplo acima, eu precisei fazer a composição de Endereço com Cliente, correto? Isso me obrigou a criar o objeto Cliente e o Endereço, e no construtor da classe Endereço precisei passar a referencia de Cliente. Supondo a necessidade de além da composição de Endereço com Cliente, eu tivesse mais uma classe para Formação Academica, outra para Comprovação de Renda e asssim vai... Eu teria que criar um objeto para cada nova classe, e alem disso, ainda ter que passar sempre ela no CONSTRUTOR?
No meu projeto real, eu ja tenho todos os dados em um JSON, eu quebrei em classes, para efeito de REFATORACAO... Mas eu preciso gerar umas Strings de QUERYS, que precisa pegar os atributos entre as classes.
Gostaria de saber se existe alguma forma das referencias serem criadas por dentro do codigo e não pela MAIN (pela MAIN eu só teria a primeira criação de objeto), e assim elas forem se atualizando dinamicamente entre as classes.
Uma opção seria usar STATIC, mas quebra meu ENCAPSULAMENTO.
Se existir uma opção, gostaria de saber como. Agora mais importante do que ter uma opção, é saber se a forma como defini as classes para funcionarem, se estão corretas tambem.
Desde ja obrigado.