Sobes.tech
Junior — Middle
200

Pourriez-vous donner un exemple d'utilisation du principe de Liskov dans un code ou un système pratique?

Entreprises à qui on a demandé
Pashapay

Réponse de l'IA

sobes.tech IA

Принцип подстановки Лисков (Liskov Substitution Principle) гласит, что объекты подкласса должны быть взаимозаменяемы с объектами базового класса без нарушения корректности программы.

Пример на Dart (Flutter):

abstract class Bird {
  void fly();
}

class Sparrow implements Bird {
  @override
  void fly() {
    print('Воробей летит');
  }
}

class Ostrich implements Bird {
  @override
  void fly() {
    throw Exception('Страус не умеет летать');
  }
}

void makeBirdFly(Bird bird) {
  bird.fly();
}

void main() {
  makeBirdFly(Sparrow()); // Работает корректно
  makeBirdFly(Ostrich()); // Нарушение принципа Лисков
}

В этом примере класс Ostrich нарушает принцип Лисков, так как не может корректно заменить Bird (не умеет летать). Чтобы соблюсти принцип, лучше разделить интерфейсы, например, выделить интерфейс летающих птиц.