Objasnite šta znači Liskov princip zamene i kako se primenjuje u objektno-orijentisanom programiranju.
sobes.tech АИ
Одговор од АИ
Princip principa zamene Liskov (Liskov Substitution Principle, LSP) jedan je od pet SOLID principa u objektno-orijentisanom programiranju. On kaže da objekti podklase treba da budu zamenjivi sa objektima nadklase bez promene tačnosti programa.
U jednostavnim rečima, ako klasa B nasleđuje od klase A, objekti klase B treba da se ponašaju tako da mogu zameniti objekte klase A bez neočekivanih grešaka ili promena u logici.
To se postiže osiguravanjem da podklasa:
- Ne narušava invariante nadklase.
- Ne sužava preuslove metoda (zahteva strožije ulazne podatke).
- Ne proširuje postuslove (daje manje garantovan rezultat).
Primer:
class Bird {
func fly() {
print("Ptica leti")
}
}
class Sparrow: Bird {
override func fly() {
print("Soko leti")
}
}
// Kršenje LSP ako se doda klasa Penguin koja ne može da leti
class Penguin: Bird {
override func fly() {
fatalError("Pingvin ne može da leti")
}
}
U ovom primeru, Penguin krši LSP, jer ga nije moguće koristiti umesto Bird bez grešaka. Bilo bi bolje da se odvoji interfejs za ptice koje lete.
Na ovaj način, LSP pomaže u kreiranju hijerarhija klasa koje su lako proširive i održive, izbegavajući neočekivane greške pri zamenjivanju objekata.