L - Liskov Substitution (Принцип підстановки Барбари Лісков)

L - Liskov Substitution (Принцип підстановки Барбари Лісков)
Якщо П є підтипом Т, будь-які об'єкти типу Т, присутні у програмі, можуть замінюватися об'єктами типу П без негативних наслідків для функціональності програми.

У випадках, коли клас-нащадок не здатний виконувати ті ж дії, що і клас-батько, виникає ризик появи помилок.

Якщо у вас є клас і ви створюєте на його базі інший клас, вихідний клас стає батьком, а новий його нащадком. Клас-нащадок повинен виконувати такі ж операції, як і клас-батько. Це називається спадковістю.

Необхідно, щоб клас-нащадок був здатний обробляти самі запити, як і батько, і видавати той самий результат. Або результат може відрізнятися, але при цьому ставитися до того ж типу. На малюнку це показано так: клас-батько подає каву (у будь-яких видах), отже, для класу-нащадка прийнятно подавати капучіно (різновид кави), але неприйнятно подавати воду.

Якщо клас-нащадок не задовольняє цим вимогам, значить, він дуже відрізняється від батька і порушує принцип.

Призначення

Принцип служить у тому, щоб забезпечити сталість: клас-батько і клас-нащадок можуть використовуватися однаковим чином без порушення роботи програми.