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