2
respostas

[Dúvida] diferença de metodo

Na hora de botar o nome da profissão de "paulo".. eu coloquei:

paulo.setProfesion("Programador");

System.out.println(paulo.getProfesion());

apertei Run e emprimiu:

"programador"

minha pergunta é.. qual que é a diferencia entre o exemplo colocado em aula:

conta.getTitular().setProfissao("programador");ou Cliente titularDaConta = conta.getTitular(); titularDaConta.setProfissao("programador");

ten diferença? em relação ao comportamento de meu codigo?

2 respostas

Olá Angela, tudo bem?

Sim, há uma diferença no comportamento do código. No seu exemplo, você criou um objeto paulo e chamou diretamente os métodos setProfesion e getProfesion desse objeto. Isso é válido se a classe Paulo tiver esses métodos definidos como públicos.

No exemplo dado em aula, há uma diferença no sentido de que estamos usando métodos de acesso (getTitular()) para acessar o objeto titular que já foi criado anteriormente, em vez de criar um novo objeto como você fez. Em seguida, estamos chamando o método setProfissao nesse mesmo objeto titular. Isso é útil porque, em muitos casos, a classe Conta não precisa criar objetos Cliente toda vez que precisa acessar o titular da conta. Em vez disso, ela pode simplesmente acessar o objeto já criado anteriormente.

Além disso, o uso de getters e setters pode tornar a classe "anêmica", ou seja, uma classe que não possui comportamento próprio, apenas um conjunto de campos e métodos de acesso a esses campos. O exemplo dado em aula mostra que é possível evitar isso e permitir que a classe tenha comportamento próprio.

Oiii Angela! Tudo certo?

Não tem diferença no comportamento, os dois recuperam o cliente que é o titular da conta e mudam a profissão dele. A diferença que temos é que, ao fazer Cliente titularDaConta = conta.getTitular(); titularDaConta.setProfissao("programador");, estamos primeiro armazenando o titular em uma variável para depois mudar a profissão, e esse armazenamento pode ser útil caso a gente precise usar esse titular outras vezes.

Por exemplo, se quiséssemos mudar nome, cpf e profissão teríamos que recuperar 3 vezes o mesmo titular, usando a primeira forma:

conta.getTitular().setProfissao("programador");
conta.getTitular().setNome("Joao");
conta.getTitular().setCpf("123456789-10");

Já na segunda forma, fazemos essa recuperação uma vez só, o que é mais fácil e pode ser mais rápido:

Cliente titularDaConta = conta.getTitular();
titularDaConta.setProfissao("programador");
titularDaConta.setNome("Joao");
titularDaConta.setCpf("123456789-10");

Espero ter ajudado! Abraços e bons estudos!