Sobes.tech
Junior — Middle

Care principiu al programării orientate pe obiecte se leagă de principiul de substituție al Liskov?

sobes.tech AI

Răspuns de la AI

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

То есть, если класс B наследуется от класса A, то объекты класса B должны вести себя так, чтобы их можно было использовать вместо объектов класса A без неожиданных ошибок или изменений в поведении.

Это помогает создавать иерархии классов, где подклассы расширяют функциональность базовых классов, не нарушая их контракт.

Пример:

class Bird {
  void fly() {
    print('Птица летит');
  }
}

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

// Нарушение LSP, если подкласс не может летать
class Ostrich extends Bird {
  @override
  void fly() {
    throw Exception('Страус не умеет летать');
  }
}

Здесь Ostrich нарушает принцип Лисков, так как не может заменить Bird без изменения поведения.