Liskov o'rnini almashtirish prinsipi nima ekanligini va u ob'ektga yo'naltirilgan dasturlashda qanday qo'llanilishini tushuntiring.
sobes.tech AI
AIdan javob
Liskov Substitution Principle (LSP) — bu obyektlar ob'ektga asoslangan dasturlashda SOLID besh tamoyilidan biridir. U shuni bildiradiki, voris klassaning obyektlari asosiy klassaning obyektlari bilan almashtirilganda, dastur to'g'riligini o'zgartirmasligi kerak.
Oddiy qilib aytganda, agar B klassi A klassidan meros olsa, B klassining obyektlari A klassining obyektlari o'rnini bosishi mumkin, kutilmagan xatoliklar yoki mantiqiy o'zgarishlarsiz.
Bu quyidagilarni ta'minlash orqali amalga oshiriladi:
- Asosiy klassning invariantlarini buzmaslik.
- Metodlarning old shartlarini (kuchliroq kirish ma'lumotlarini talab qilish).
- Post shartlarini kengaytirmaslik (kamroq kafolatlangan natijalar berish).
Misol:
class Bird {
func fly() {
print("Qush uchadi")
}
}
class Sparrow: Bird {
override func fly() {
print("Qushqush uchadi")
}
}
// LSP buzilishi, agar Penguin klassi qo'shilsa va u uchmaydigan bo'lsa
class Penguin: Bird {
override func fly() {
fatalError("Pingvin uchmaydi")
}
}
Bu misolda, Penguin LSP ni buzadi, chunki uni Bird o'rnida ishlatib bo'lmaydi xatoliklar bilan. Ularning o'rniga uchadigan qushlar uchun alohida interfeys ajratish yaxshiroq bo'ladi.
Shu tarzda, LSP klasslar hierarhiyalarini kengaytirish va qo'llab-quvvatlash uchun yordam beradi, obyektlarni almashtirishda kutilmagan xatoliklarni oldini oladi.