Tenho uma dúvida significativa sobre encapsulamento: No caso do bytebank criamos uma classe para os dados do Cliente e uma Classe para os dados da conta. Porem, quando vou acessar, tenho de criar um nome para os dados do cliente e um nome para os dados da conta, tendo de acessa-los da mesma forma separadamente, ou um a um.
A criação de classes neste caso é para deixar o codigo mais "organizado"? Vou colocar o exemplo abaixo que fiz seguindo o tutorial para esclarecer a dúvida: Conta. java: `package byteBank;
public class Conta { private double Saldo; private int agencia; private int numero; private Cliente titular;
public void deposita(double valor) {
this.Saldo += valor;
}
public boolean saca(double valor) {
if (this.Saldo >= valor) {
this.Saldo -= valor;
return true;
} else {
return false;
}
}
boolean transfere(double valor, Conta destino) {
if (this.Saldo >= valor) {
this.Saldo -= valor;
destino.deposita(valor);
return true;
} else {
return false;
}
}
public boolean zerar (double valor) {
if (this.Saldo >= valor) {
this.Saldo -= Saldo;
return true;
} else {
return false;
}
}
public double getSaldo() {
return this.Saldo;
}
public void setSaldo(double Saldo) {
this.Saldo = Saldo;
}
public int getAgencia() {
return this.agencia;
}
public void setAgencia(int agencia) {
this.agencia = agencia;
}
public int getNumero() {
return this.numero;
}
public void setNumero(int numero) {
this.numero = numero;
}
public Cliente getTitular() {
return titular;
}
public void setTitular(Cliente titular) {
this.titular = titular;
}
}
`
Cliente.java:
package byteBank;
public class Cliente {
private String nome;
private String CPF;
private String Profissao;
public String getNome() {
return this.nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCPF() {
return this.CPF;
}
public void setCPF(String cpf) {
this.CPF = cpf;
}
public String getProfissao() {
return this.Profissao;
}
public void setProfissao(String profissao) {
this.Profissao = profissao;
}
}
Ao fazer o teste, para conseguir setar o nome da pessoa e o cpf eu preciso da mesma forma criar um espaço para ela dentro da classe cliente. Nao seria mais pratico apenas deixar estes dados dentro da classe conta? Ou é, necessariamente, pensando em uma lógica de organização e caso determinados atributos da conta mudem, nao correr o risco de impactar os atributos do cliente?
Segue o codigo do teste:
package byteBank;
public class CriaConta {
public static void main(String[] args) {
Conta contaPaulo = new Conta();
Conta contaAndreia = new Conta();
Cliente Paulo = new Cliente();
Cliente Andreia = new Cliente();
contaPaulo.setSaldo(500.00);
System.out.println("O saldo de Paulo é " + contaPaulo.getSaldo());
contaPaulo.setAgencia(4415);
System.out.println("A agência de Paulo é " + contaPaulo.getAgencia());
contaPaulo.setNumero(6949334);
System.out.println("O número de Paulo é " + contaPaulo.getNumero());
contaAndreia.setAgencia(4234);
System.out.println("A agência de Andréia é " + contaAndreia.getAgencia());
contaAndreia.setNumero(54456564);
System.out.println("O número de Andréia é " + contaAndreia.getNumero());
contaAndreia.setSaldo(486486684.00);
System.out.println("O saldo de Andréia é " + contaAndreia.getSaldo());
System.out.println("O titular de Andréia é " + contaAndreia.getTitular());
Paulo.setNome("Paulo Silveira");
System.out.println("O nome é " + Paulo.getNome());
Paulo.setCPF("55468616516");
System.out.println("O CPF é " + Paulo.getCPF());
Paulo.setProfissao("Programador");
System.out.println("A profissão é " + Paulo.getProfissao());
Andreia.setNome("Andréia Michaelsen");
System.out.println("O nome é " + Andreia.getNome());
Andreia.setCPF("54524554545");
System.out.println("O CPF é " + Andreia.getCPF());
Andreia.setProfissao("Estudante");
System.out.println("A profissão é " + Andreia.getProfissao());
}
}