Princípios SOLID de bom projeto orientado a objetos

preview_player
Показать описание


Este vídeo faz parte do curso Laboratório de Programação Orientada a Objetos na plataforma coursera:

Рекомендации по теме
Комментарии
Автор

Quando você fala sobre o princípio de substituição de Liskov não fica claro exatamente qual é a propriedade violada. O problema não está na necessidade ou não de colocar ifs em determinados métodos. Para verificar -- dados tipos S e T tais que S <: T -- a validade do princípio é necessário:

1) Especificar os invariantes de classe da classe T, e garantir que cada instância de T satisfaz tais invariantes (obviamente).
2) Provar que toda instância de S satisfaz os invariantes de T.

Portanto, não é possível falar em violação do princípio sem exibir tais elementos.

No exemplo abaixo não há violação do princípio.

class Retangulo {
// invariante: altura >= 0 e largura >= 0
final double altura;
final double largura;
Retangulo(double altura, double largura) {
assert(altura >= 0 && largura >= 0);
this.altura = altura; this.largura = largura;
}
double area() { return altura * largura; }
}

class Quadrado extends Retangulo {
Quadrado(double lado) { super(lado, lado); }
}

AnaMaria-wivp