Sobes.tech
Junior — Middle

Тавзеҳ диҳед, ки принсипи ивазкунии Лисков чӣ маъно дорад ва чӣ гуна дар барномасозии объектӣ-баҳсшаванда истифода мешавад.

sobes.tech AI

Ҷавоб аз AI

Принсипи ивазшавии Лисков (Liskov Substitution Principle, LSP) яке аз панҷ принсипи SOLID дар барномасозии объектӣ мебошад. Он мегӯяд, ки объектҳои синфи зер бояд бо объектҳои синфи асосӣ ивазшаванда бошанд, бидуни тағир додани дурустии барнома.

Ба сурати содда, агар синфи B аз синфи A мерос гирад, пас объектҳои синфи B бояд тавонанд ба таври ки онҳоро ба ҷойи объектҳои синфи A истифода бурдан мумкин аст, бе хатогиҳои ногаҳонӣ ё тағирот дар логика.

Ин тавассути таъмин кардани он, ки синфи зер:

  • Инвариантҳои синфи асосиро вайрон накунад.
  • Пеш шартҳои методҳоро маҳдуд накунад (дархост кардани маълумоти воридотии қатъӣтар).
  • Пост шартҳоро васеъ накунад (натиҷаҳои камтар кафолатнок диҳад).

Масалан:

class Bird {
    func fly() {
        print("Ҳамвор парвоз мекунад")
    }
}

class Sparrow: Bird {
    override func fly() {
        print("Қазоқ парвоз мекунад")
    }
}

// Вайрон кардани LSP агар класс Penguin илова карда шавад, ки парвоз наметавонад
class Penguin: Bird {
    override func fly() {
        fatalError("Пингвин парвоз наметавонад")
    }
}

Дар ин мисол, Penguin LSP-ро вайрон мекунад, зеро онро бидуни хатогӣ ҷойгузин кардан мумкин нест. Беҳтар буд, ки интерфейси алоҳида барои парвозкунандагон эҷод шавад.

Инчунин, LSP кӯмак мекунад, ки hierarchy-ҳои синфҳо осонтар васеъ ва нигоҳдорӣ шаванд, ва аз хатогиҳои ногаҳонӣ дар ҷойгузинии объектҳо пешгирӣ мекунад.