public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
}
public class Conta {
private int numero;
private double limite;
private Cliente titular;
public int getNumero() {
return numero;
}
public void setNumero(int numero) {
this.numero = numero;
}
public double getLimite() {
return limite;
}
public void setLimite(double limite) {
this.limite = limite;
}
public Cliente getTitular() {
return titular;
}
public void setTitular(Cliente titular) {
this.titular = titular;
}
}[/code]
Quando eu declaro uma variável de instância do tipo objeto dentro de uma classe (private Cliente titular), não consigo acessar os atributos deste objeto declarado de foram direta
Exemplo:
Conta conta = new Conta();
conta.titular.nome = "wagner"; //isso não compila
Logo caso eu queira acessar essa variável de instância terei que criar uma variável paralela e utilizar os get e set da classe onde foi criada
Exemplo:
[code]Cliente cliente = new Cliente();
public void setTitular(cliente) {
this.titular = cliente;
}[/code]
Dúvidas:
Qual é a vantagem em criar uma variável de instância do tipo objeto dentro de uma classe se é necessário sempre criar um objeto paralelo para manipular a mesma através dos getters e setters?
No mundo profissional de desenvolvimento utilizasse está prática de modelagem?
Isso acima nao compila mesmo amigo, se vc encapsulou sua variavel vc so acessa ela com os metodos de encapsulamento, eles server exatamente pra restringir de uma certa forma sua variavel. veja só:
[code]public class Cliente {
private String nome;
privateString cpf;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
} [/code]
Agora veja como vc teria acesso a esta variavel:
[code]public class Teste{
public static void main(String[] args) {
Cliente cliente = new Cliente();
cliente.setNome(“everton”); // devido ao encapsulamento.
}
}
[/code]
Agora veja só sem encapsulamento:
[code]public class Cliente {
public String nome; // sem encapsulamento logo devem ser publicas para vc ter acesso.
public String cpf;
[/code]
[code]public class Teste{
public static void main(String[] args) {
Cliente cliente = new Cliente();
cliente.nome // aqui vc teria acesso a ela
}
}
[/code]
era isso?
Não entendi bem o que você perguntou… você quer saber por que é importante colocar o atributo conta dentro da classe cliente ou por que é necessário colocar todos os atributos como private?
Seria bom você dar uma estudada em modificadores de acesso. Lembre-se que em java você vai programar no paradigma OO, e utilizará de todos os conceitos (nesse caso encapsulamento). Não traga para Java vícios errôneos de outras linguagens ou plataformas.
Eu entendo o que quis dizer, você quer acessar o titular a partir do Objeto Conta correto?
A sua classe você montou da forma correta, apenas o acesso ao valor está incorreto.
Seria assim:
Conta conta = new Conta();
conta.getTitular().setNome("João");
Ok?
Você pode fazer isso desde, lógico, que o Objeto titular esteja devidamente preenchido no Objeto Conta, caso contrário, acarreterá em um NullPointerException, mas a forma como acessa o valor é como citei acima.
É dificíl responder a isso pois cada um tem um ponto de vista de como implementar seus sistema/solução. Mas, acredito que esta seja uma excelente solução para você indicar relacionamentos, como por exemplo no seu caso, onde disse que para uma conta existe um cliente. Até podemos dizer que para um banco temos n contas (List de contas) e para cada conta um cliente.
É uma modelagem interessante eu acho.
Enfim, é isso.