Sobes.tech
Junior — Middle
96

Liskov ауыстыру қағидаты деген не және ол объектіге бағытталған бағдарламалауда қалай қолданылады?

Сұралған компаниялар
Магнит Тех

AI-дан жауап

sobes.tech AI

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

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

Это достигается тем, что подкласс не должен:

  • Нарушать инварианты базового класса.
  • Сужать предусловия методов (требовать более строгие входные данные).
  • Расширять постусловия (давать менее гарантированный результат).

Пример:

class Bird {
    func fly() {
        print("Птица летит")
    }
}

class Sparrow: Bird {
    override func fly() {
        print("Воробей летит")
    }
}

// Нарушение LSP, если добавить класс Penguin, который не умеет летать
class Penguin: Bird {
    override func fly() {
        fatalError("Пингвин не умеет летать")
    }
}

В этом примере Penguin нарушает LSP, так как его нельзя использовать вместо Bird без ошибок. Правильнее было бы выделить интерфейс летающих птиц отдельно.

Таким образом, LSP помогает создавать иерархии классов, которые легко расширять и поддерживать, избегая неожиданных ошибок при замене объектов.