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 принцибин бузуп жатат, анткени подкласс негизги классдын жүрүм-турумун колдобойт. Идеалында, иерархияны башкача долбоорлоо керек, мисалы, учуп жүргөн куштар үчүн интерфейс бөлүп берүү.