Junior — Middle
202
Liskov prinsipinin praktik kod və ya sistemdə istifadəsinə nümunə göstərə bilərsinizmi?
Şirkətlər soruşuldu
Pashapay
AI-dan cavab
sobes.tech Süni İntellekt
Принцип подстановки Лисков (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 (не умеет летать). Чтобы соблюсти принцип, лучше разделить интерфейсы, например, выделить интерфейс летающих птиц.