Queria criar uma resposta ao tópico: "Não entedi como ficaria o ProcessadorDeInvestimentos" https://cursos.alura.com.br/forum/topico-nao-entedi-como-ficaria-o-processadordeinvestimentos-57887
Mas o fórum acabou criando um tópico novo.
Com relação ao ProcessadorDeInvestimentos sugerido pela resposta do Rafael, depois da utilização da composição ao invés da herança.
O código nem compila. Uma vez que ContaDeEstudante deixou de ser uma ContaComum, pois a herança deixou de existir.
Essa é uma das desvantagens da Composição, agora não dá mais pra utilizar os objetos de maneira uniforme (não dá pra usar o polimorfismo).
Acho que o código ficaria assim:
public class ProcessadorDeInvestimentos {
public static void main(String[] args) {
//Batch pra render todas as contas comuns
for (ContaComum conta : contasDoBanco()) {
conta.rende();
System.out.println("Novo Saldo:");
System.out.println(conta.getSaldo());
}
//Render contas de estudantes
contaDeEstudanteCom(200).rende(); //Não funciona, pois esse método foi retirado
}
private static List<ContaComum> contasDoBanco() {
return Arrays.asList(umaContaCom(100), umaContaCom(150));
//retirei contaDeEstudanteCom(200) da chamada acima
}
private static ContaDeEstudante contaDeEstudanteCom(double amount) { //mudei o tipo de retorno
ContaDeEstudante c = new ContaDeEstudante();
c.deposita(amount);
return c;
}
private static ContaComum umaContaCom(double valor) {
ContaComum c = new ContaComum();
c.deposita(valor);
return c;
}
}