1. Nauka
  2. /
  3. Kursy
  4. /
  5. Programowanie obiektowe w Pythonie

Connected

ćwiczenie

Kwadrat i prostokąt

Klasycznym przykładem naruszenia zasady podstawiania Liskov jest problem koła i elipsy, znany też jako problem kwadratu i prostokąta.

Na pierwszy rzut oka wydaje się logiczne, że można zdefiniować klasę Rectangle z atrybutami h i w (dla wysokości i szerokości), a następnie zdefiniować klasę Square, która dziedziczy po Rectangle. W końcu kwadrat „jest" prostokątem!

Niestety, ta intuicja nie przekłada się na projektowanie obiektowe.

Instrukcje 1/4

undefined XP
    1
    2
    3
    4
  • Utwórz klasę Rectangle z konstruktorem przyjmującym dwa parametry, h i w, który ustawia atrybuty h i w na wartości tych parametrów.
  • Utwórz klasę Square dziedziczącą po Rectangle z konstruktorem przyjmującym jeden parametr w, który ustawia zarówno atrybut h, jak i w na wartość tego parametru.