Selgitage, mida tähendab Liskovi asenduspõhimõte ja kuidas seda rakendatakse objektorienteeritud programmeerimises.
sobes.tech AI
Vastus AI-lt
Liskovi asendusprintsi (Liskov Substitution Principle, LSP) on üks viiest SOLID põhimõttest objektorienteeritud programmeerimises. See ütleb, et alamsüsteemi objektid peaksid olema asendatavad põhiklassi objektidega ilma programmi korrektsust muutmata.
Lihtsamalt öeldes, kui klass B pärineb klassist A, siis peaksid B klassi objektid käituma nii, et neid saaks kasutada A klassi objektide asemel ilma ootamatute vigade või loogika muutusteta.
See saavutatakse tagades, et alamsüsteem:
- Ei riku põhiklassi invariante.
- Ei kitsenda meetodite eeltingimusi (nõudes rangemaid sisendandmeid).
- Ei laienda post-tingimusi (andma vähem garanteeritud tulemusi).
Näide:
class Bird {
func fly() {
print("Lind lendab")
}
}
class Sparrow: Bird {
override func fly() {
print("Varblane lendab")
}
}
// LSP rikkumine, kui lisame klassi Penguin, kes ei saa lennata
class Penguin: Bird {
override func fly() {
fatalError("Pingviin ei saa lennata")
}
}
Selles näites rikub Penguin LSP-d, kuna seda ei saa kasutada asendajana Bird ilma vigadeta. Paremini oleks defineerida eraldi liides lendavatele lindudele.
Seega aitab LSP luua klasse hierarhiaid, mida on lihtne laiendada ja hooldada, ning vältida ootamatuid vigu objektide asendamisel.