Лисковдун алмаштыруу принциби эмне экенин жана ал объектке багытталган программалоодо кандай колдонулушу керектигин түшүндүрүңүз.
sobes.tech AI
AIден жооп
Liskov алмаштыруу принциби (Liskov Substitution Principle, LSP) объект-ориенттелген программалоодо SOLID беш принциптин бири болуп саналат. Ал объекттин туундусунун объектиси негизги класс объектиси менен алмаштырылганда, программа тууралыгын өзгөртпөшү керектигин билдирет.
Жөнөкөй айтканда, эгер B классы A классынын мурас алса, анда B классынын объекттери A классынын объекттеринин ордуна колдонулушу керек, күтүлбөгөн каталар же логикада өзгөрүүлөрсүз.
Бул төмөнкүлөрдү камсыз кылуу аркылуу жетишилет:
- негизги класс invariants бузулбашы керек.
- методдордун алдынкы шарттары (катуу кирүү маалыматтарын талап кылуу) чектелбеши керек.
- пост шарттары (азыркы натыйжаларга кепилдик бербөө) кеңейтилбеши керек.
Мисал:
class Bird {
func fly() {
print("Учкан куш")
}
}
class Sparrow: Bird {
override func fly() {
print("Кекеч учуп жатат")
}
}
// LSP бузуу, эгер Penguin классы кошулса жана ал учпаса
class Penguin: Bird {
override func fly() {
fatalError("Пингвин учпайт")
}
}
Бул мисалда Penguin LSP бузат, анткени ал Bird ордуна колдонулбайт, каталар менен. Учкан куштар үчүн өзүнчө интерфейс аныктоо туура болот.
Ошентип, LSP класстардын хиерархияларын кеңейтүүгө жана колдоого жеңил кылууга жардам берет, жана объекттердин алмаштырылышында күтүлбөгөн каталардан сактайт.