1
resposta

Princípio de Liskov - Problema inicial

No problema inicial tínhamos um laço 'for' parecido com esse abaixo:

List<ContaComum> listaContas = new ArrayList<>();

listaContas.add(new ContaComum(1000));
listaContas.add(new ContaComum(300));
listaContas.add(new ContaComum(250));
listaContas.add(new ContaEstudante(1000));

listaContas.forEach(conta -> {
    conta.rende();
        System.out.println(conta.getSaldo());
});

Quando utilizamos a composição, deixamos de ter o método rende() para os dois tipos de conta, assim teríamos que fazer duas listas e dois laços 'for' para resolver um problema de somatória de valores.

Qual princípio e como poderíamos fazer para resolver este problema?

Muito obrigado

1 resposta

Olá Thiago, tudo bem? Peço desculpas pela demora em ti responder! Não entendi muito bem sua dúvida, mas a questão é que se você estiver com as contas como no início do vídeo, usando herança, e você trocar para composição, então você continuar usando o método rende(), desde que cada uma implemente esse método, no caso é essencial que a ContaEstudante tenha esse método mesmo que retornando uma exceção, e no caso você poderia simplesmente tratar essa exceção dentro do for e assim poderia utilizar ambos os tipos de contas dentro da mesma lista, apesar de não ser tão comum, já que agora uma não herda mais da outra, e geralmente passamos a tratar ambas separadas, cada tipo em uma lista diferente.

Espero ter esclarecido sua dúvida!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software