Sobes.tech
Junior — Middle

გთხოვთ, ახსენით, რა არის ლისკოვის ჩანაცვლების პრინციპი და როგორ გამოიყენება იგი ობიექტზე ორიენტირებულ პროგრამირებაში.

sobes.tech AI

პასუხი AI-სგან

Liskov փոխարինման սկզբունքը (Liskov Substitution Principle, LSP) օբյեկտ-կողմնորոշված ծրագրավորման SOLID հինգ սկզբունքներից մեկն է: Այն ասում է, որ ենթակլասի օբյեկտները պետք է փոխարինելի լինեն հիմնական դասի օբյեկտների հետ՝ առանց ծրագրի ճիշտությունը փոխելու:

Պարզ ասած, եթե B դասը ժառանգում է A դասից, ապա B դասի օբյեկտները պետք է պահեն այնպիսի վարքագիծ, որ կարող են օգտագործվել A դասի օբյեկտների փոխարեն՝ առանց անսպասելի սխալների կամ տրամաբանության փոփոխությունների:

Սա հասնում է այն ապահովելով, որ ենթակլասը չի պետք է.

  • խախտի հիմնական դասի invariants-ը,
  • սահմանափակի մեթոդների նախապայմանները (պահանջելով ավելի խիստ մուտքային տվյալներ),
  • կամ ընդլայնի post-պայմանները (պատասխաններ տալով ավելի քիչ երաշխավորված):

Օրինակ՝

class Bird {
    func fly() {
        print("Թռչող թռչուն")
    }
}

class Sparrow: Bird {
    override func fly() {
        print("Կաքավը թռչում է")
    }
}

// Եթե ավելացնենք Penguin դասը, որը չի կարող թռչել՝
class Penguin: Bird {
    override func fly() {
        fatalError("Պինգվինը չի կարող թռչել")
    }
}

Այս օրինակով, Penguin խախտում է LSP-ը, քանի որ այն չի կարող օգտագործվել որպես Bird՝ սխալների հետ։ Ավելի ճիշտ կլինի առանձնացնել թռչող թռչունների ինտերֆեյսը:

Այսպիսով, LSP-ը օգնում է ստեղծել դասերի հիերարխիաներ, որոնք հեշտ է ընդլայնել և պահպանել, և խուսափել անակնկալ սխալներից՝ փոխարինելով օբյեկտները։