Sobes.tech
Junior — Middle

Paaiškinkite, ką reiškia Liskovo pakaitumo principas ir kaip jis taikomas objektinio programavimo srityje.

sobes.tech AI

Atsakymas iš AI

Liskovo pakaitos principas (Liskov Substitution Principle, LSP) yra vienas iš penkių SOLID principų objektinio programavimo srityje. Jis teigia, kad paveldėjimo būdu sukurtų klasių objektai turi būti keičiami vienas į kitą be programos teisingumo pažeidimo.

Paprasčiau tariant, jei klasė B paveldi iš klasės A, tai B klasės objektai turi elgtis taip, kad juos galima naudoti vietoj A klasės objektų be netikėtų klaidų ar logikos pakeitimų.

Tai pasiekiama užtikrinant, kad subclass:

  • Nepažeistų pagrindinės klasės invariansų.
  • Neapribotų metodų išankstinių sąlygų (reikalautų griežtesnių įvesties duomenų).
  • Neplėstų post-sąlygų (teiktų mažiau garantuotų rezultatų).

Pavyzdys:

class Bird {
    func fly() {
        print("Paukštis skraido")
    }
}

class Sparrow: Bird {
    override func fly() {
        print("Gervė skraido")
    }
}

// LSP pažeidimas, jei pridedame klasę Penguin, kuri negali skraidyti
class Penguin: Bird {
    override func fly() {
        fatalError("Pingvinas negali skraidyti")
    }
}

Šiame pavyzdyje Penguin pažeidžia LSP, nes jis negali būti naudojamas vietoj Bird be klaidų. Geriau būtų sukurti atskirą sąsają skraidantiems paukščiams.

Taip LSP padeda kurti klasių hierarchijas, kurios lengvai plečiamos ir prižiūrimos, ir išvengti netikėtų klaidų keičiant objektus.