Liskov Substitution Principle (LSP) – принцип заміщення (функції, які використовують покажчики на базові класи, повинні мати можливість використовувати об'єкти похідних класів, не знаючи про їх конкретні типи. Для створення взаємозамінних частин ці частини мають відповідати контракту, що дозволяє замінювати ці частини одна одною. Цей принцип насправді говорить про спадкування, про те, як правильно успадковуватись, і при цьому як правильно абстрагуватися.
Проблеми:
- Перевірка абстракції на конкретний тип
- Помилкове успадкування. Порушення договору під час реалізації інтерфейсу. В результаті ми повинні вставляти милицю і зменшувати рівень абстракції.
=========================================================
практичні завдання:
-
Напишіть програму для розрахунку оплати за електроенергію. Створіть базовий клас для всіх типів лічильників електроенергії, що має метод обчислення вартості спожитої електроенергії. Реалізуйте кілька підкласів лічильників, наприклад, звичайний, двотарифний, багатотарифний тощо. Перевизначте метод для кожного підкласу так, щоб він коректно обчислював вартість відповідно до тарифів. Створіть List посилань на об'єкти базового класу та заповніть його об'єктами кожного з підкласів. Напишіть метод для виведення вартості спожитої електроенергії для кожного лічильника.
-
Напишіть програму для роботи з базою даних працівників. Створіть базовий клас для всіх співробітників, які мають методи для отримання їх даних та виведення інформації. Реалізуйте кілька підкласів співробітників, наприклад менеджер, інженер, бухгалтер тощо. Для кожного підкласу перевизначте методи базового класу так, щоб виводили відповідну інформацію про співробітника. Створіть List посилань на об'єкти базового класу та заповніть його об'єктами кожного з підкласів. Напишіть метод для виведення інформації про кожного працівника.