Sobes.tech
Junior — Middle

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.