Liskov Substitution Principle (LSP)
Założenie: Zrozumieć i zilustrować zasadę podstawienia Liskov (LSP) w PHP za pomocą prostego przykładu.
Krok po kroku:
- Stworzenie klasy bazowej: Zdefiniujmy klasę bazową
Kwadrat
, która ma metodę obliczającą pole. - Stworzenie klasy pochodnej: Utwórzmy klasę pochodną
Prostokat
dziedziczącą poKwadrat
, dodając metodę ustawiania różnych długości boków. - Demonstracja naruszenia LSP: Spróbujmy użyć obiektu
Prostokat
w miejscu obiektuKwadrat
. Zauważmy, że zachowanie się różni. - Poprawne rozwiązanie (zaawansowane): Aby uniknąć naruszenia LSP, należałoby przeprojektować klasy, np. wprowadzając interfejs
Figura
z metodąpole()
.
bok = $bok;
}
public function pole() {
return $this->bok * $this->bok;
}
}
?>
szerokosc = $szerokosc;
}
public function pole() {
return $this->bok * $this->szerokosc;
}
}
?>
pole() . "
"; // Wynik: 25
echo "Pole prostokąta: " . $prostokat->pole() . "
"; // Wynik: 50
// Naruszenie LSP - funkcja oczekująca kwadratu nie działa poprawnie z prostokątem.
function obliczPoleKwadratu(Kwadrat $kwadrat){
return $kwadrat->pole();
}
echo "Pole z funkcji: " . obliczPoleKwadratu($prostokat); // Wynik: 50 - nie jest to pole kwadratu!
?>
Ten przykład pokazuje podstawowe zasady Liskov Substitution Principle. Zachęcamy do dalszego zgłębiania tematu programowania obiektowego w PHP!