Sobes.tech
Junior — Middle

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.