Натхненний цією відповіддю:
Принцип заміщення Ліскова вимагає цього
- Передумови не можна посилити в підтипі.
- Послідовності не можуть бути ослаблені в підтипі.
- Інваріанти супертипу повинні зберігатися в підтипі.
- Обмеження історії ("правило історії"). Об'єкти вважаються модифікованими лише завдяки їх методам (інкапсуляція). Оскільки підтипи можуть вводити методи, відсутні в супертипі, то введення цих методів може дозволити зміни стану підтипу, які неприпустимі в супертипі. Обмеження історії забороняє це.
Я сподівався, що хтось опублікує ієрархію класів, яка порушує ці 4 пункти, і як їх вирішити відповідно.
Я шукаю детальне пояснення для навчальних цілей щодо того, як визначити кожен із 4-х пунктів в ієрархії та найкращий спосіб його виправити.
Примітка.
Я сподівався опублікувати зразок коду для роботи людей, але саме питання полягає в тому, як визначити несправні ієрархії :)