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