Estudos gratuitos da ER Soluções WebVer outros conteúdos grátis
ER Soluções WebEstudos · Arquitetura Limpa

9. LSP: Princípio da Substituição de Liskov

Subtipos devem ser substituíveis pelos tipos-base.

Quadrado tentando substituir Retângulo: setW e setH não funcionam independentes, teste falha
Quadrado não é Retângulo substituível: altura e largura não variam sozinhas.

Resumo

Perguntas-chave

responda de cabeça, depois abra
Por que Quadrado não deve ser subtipo substituível de Retângulo?
Retângulo permite largura e altura independentes. Quadrado não; código cliente que assume isso quebra.
LSP vale só para herança?
Não. Vale para qualquer interface: classes Java, Ruby duck typing, serviços REST.
Qual o sintoma de violação de LSP na arquitetura?
Ifs especiais por tipo/fornecedor. Mecanismos extras para tratar exceções contaminam o sistema.

Exercícios de fixação

0/5 respondidas
1.
Um código cliente faz r.setW(5); r.setH(2); assert(r.area() == 10). Passar um Quadrado faz o teste falhar. O que isso mostra?
2.
Um agregador de táxi integra várias empresas por REST. Uma empresa usa um campo diferente na URI. A pior solução seria:
3.
O LSP se aplica a:
4.
No exemplo License, por que PersonalLicense e BusinessLicense respeitam o LSP?
5.
Quem formulou a definição original de subtipos usada no princípio?
Seu progresso fica salvo neste navegador.