Sobes.tech
Junior — Middle

Կարող եք տալ օրինակ, թե ինչպես է Լիսկովի փոխարինման սկզբունքը կիրառվում ծրագրավորման պրակտիկայում?

sobes.tech AI

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

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

Օրինակ JavaScript-ում (Node.js):

class Bird {
  fly() {
    console.log('Թռչունը թռչում է');
  }
}

class Sparrow extends Bird {
  fly() {
    console.log('Կաքավը թռչում է');
  }
}

class Ostrich extends Bird {
  fly() {
    throw new Error('Զվարճալի չէ թռչել');
  }
}

function makeBirdFly(bird) {
  bird.fly();
}

const sparrow = new Sparrow();
makeBirdFly(sparrow); // Կաքավը թռչում է

const ostrich = new Ostrich();
makeBirdFly(ostrich); // Խախտում է LSP

Այստեղ, Ostrich դասը խախտում է Liskov փոխարինման սկզբունքը, քանի որ ենթասահմանը չի աջակցում հիմնական դասի (fly մեթոդի) վարքագիծը: Լավ կլինի դասերը բաժանել թռչող և չթռչող թռչունների, օրինակ՝ ինտերֆեյսների կամ առանձին հիմնական դասերի միջոցով։