Este documento resume um hangout sobre o Princípio da Substituição de Liskov. Os participantes discutiram como classes derivadas devem poder ser substituídas por suas classes base sem alterar o comportamento do cliente. Exemplos ilustraram como violações deste princípio, como classes derivadas mais restritivas, podem causar problemas em frameworks e bibliotecas. O público também enviou exemplos e teve dúvidas respondidas.
1. Hangout OOD - Princípio
da Substituição de Liskov
17/06/2014
Apoio
2. Participantes:
• João Batista Neto – Moderador Hoster
• Priscila Mayumi Sato – Slides
• Ivo nascimento – Controlador do chat
• Luís OtavioDaniel Ribeiro - Ignorado
3. Pauta
• Repassar o que foi discutido no hangout passado e apontar o link
para a gravação.
• Abordar, com profundidade e exemplos, o princípio de design
O.C.P.
• Aberto mas fechado, como algo pode ser aberto mas fechado?
• Como saber se meu código não está fechado?
• Ilustrar casos do mundo real, através de exemplos em frameworks
ou bibliotecas conhecidas, o uso de L.S.P. e as consequências que
esse uso trouxe para o FW ou biblioteca.
7. Substituição de Liskov
• “O termo mais importante do principio de Liskov: o
cliente. Quando falamos de OO é a objetos. Temos o
cliente que consome o objeto qualquer. No Liskov
quando o cliente utiliza determinado participante ele
precisa confiar no participante original. Seu
participante consegue não ser alterado pela variação?
Essa é a grande pergunta do Liskov: poder substituir o
participante sem alterar o cliente.” João
8. Substituição de Liskov
• “Além da assinatura temos a expectativa do retorno.
No pre conditions iremos abortar o input e no pro
conditions iremos abortar output.” Ivo
• “As classes derivas não podem ser mais fortes que as
originais. Por exemplo: um dos parâmetros é um inteiro
e a classe pai determina que ele é entre 1 e 10. A
classe filha não pode restringir de 1 a 4, mas pode de 1
a 15. Essa é a questão do input.” Luiz Otávio
9. Substituição de Liskov
• “O filho não pode ser mais restritiva que a classe pai.”
Ivo
• “Você pode substituir uma classe por sua classe base. A
pergunta é: qual a consequência dessa substituição”
João