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ą
Prostokatdziedziczącą poKwadrat, dodając metodę ustawiania różnych długości boków. - Demonstracja naruszenia LSP: Spróbujmy użyć obiektu
Prostokatw 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
Figuraz 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!