bom dia galera, estou com uma dúvida basica sobre fazer composição de classes e atributos no meu codigo abaixo. eu criei 4 classes: Cliente, Conta, Programa e Endereco. A classe Cliente eu estou fazendo composição com a classe Conta e a classe Endereço eu estou fazendo composição com a classe Cliente. Então para acessar os dados do endereço do cliente eu tenho que fazer: referenciaObjeto.atributo(Conta).atributo(Cliente).atributo(Endereco), eu sei que está funcionando do jeito q eu programei, mas achei meio estranho e confuso, existe outra forma de fazer sem trabalhar com herança ou interface pq eu ainda não estou dominando esse assuntos?? valeu!!
Classe Conta:
package Contas;
public class Conta {
int numero;
// String dono;
double saldo;
double limite;
Cliente titular;
boolean saca(double valor) {
if (this.saldo < valor) {
System.out.println("Não sacou");
return false;
} else {
this.saldo -= valor;
System.out.println("Sacou!!!");
return true;
}
}
void deposita(double valor) {
this.saldo += valor;
System.out.println("Depositou!!!");
}
boolean transfere(Conta destino, double valor) {
if (this.saldo < valor) {
System.out.println("Não tem saldo disponivel para tranferir");
return false;
} else {
this.saldo -= valor;
destino.saldo += valor;
System.out.println("transferido com sucesso!!");
return true;
}
}
}
Classe Cliente:
package Contas;
public class Cliente {
String nome;
String sobrenome;
String cpf;
Endereco cliente;
}
Classe Endereco:
package Contas;
public class Endereco {
String endereco;
}
Classe Programa:
public class Programa {
/**
* @author Rodrigo Da Col
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Conta conta1 = new Conta();
Cliente a = new Cliente();
Endereco clienteA = new Endereco();
conta1.titular = a;
a.cliente = clienteA;
// conta1.dono = "Rodrigo";
conta1.limite = 200;
conta1.saldo = 1000;
conta1.numero = 1;
conta1.titular.nome = "Rodrigo";
conta1.titular.sobrenome = "Da Col";
conta1.titular.cpf = "123";
conta1.titular.cliente.endereco = "Rua da Praia";
Conta conta2 = new Conta();
Cliente b = new Cliente();
conta2.titular = b;
// conta2.dono = "Eda";
conta2.limite = 200;
conta2.saldo = 1000;
conta2.numero = 2;
conta2.titular.nome = "Eda";
conta2.titular.sobrenome = "Da Col";
conta2.titular.cpf = "321";
System.out.println("o saldo da minha conta 1 é:\n" + conta1.saldo);
System.out.println("o saldo da minha conta 2 é:\n" + conta2.saldo);
conta1.saca(200);
conta1.deposita(300);
System.out.println(conta1.saldo);
conta1.transfere(conta2, 1400);
System.out.println(conta1.saldo + " " + conta2.saldo);
System.out.println(clienteA.endereco);
}
}
A linha 22 da classe Endereco: “conta1.titular.cliente.endereco” tá certo isso??? faz parte das boas práticas de progrmação??