Sobes.tech
Junior — Middle

Կարող եք բացատրել SOLID-ի L սկզբունքը և դրա նշանակությունը կոդի նախագծման ժամանակ?

sobes.tech AI

Պատասխան AI-ից

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

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

Նախագծման արժեքը՝

  • ապահովում է ճիշտ ժառանգություն և բազմակողմություն:
  • օգնում է խուսափել անսպասելի սխալներից՝ ընդլայնելիս:
  • խթանում է ճկուն և ընդլայնելի ճարտարապետությունների ստեղծումը:

C++ օրինակ՝

class Bird {
public:
    virtual void fly() {
        // թռիչքի իրականացմանը
    }
};

class Sparrow : public Bird {
    // ճնճղուկը կարող է թռչել, ամեն ինչ կարգին է
};

class Ostrich : public Bird {
public:
    void fly() override {
        throw std::logic_error("Ճնճղուկը չի կարող թռչել");
    }
};

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