Sobes.tech
Junior — Middle

Proqramlaşdırma təcrübəsində Liskov-un yerinə qoyma prinsipinin necə tətbiq olunduğuna nümunə göstərə bilərsinizmi?

sobes.tech Süni İntellekt

AI-dan cavab

Liskov Əvəzetmə Prinsipi (Liskov Substitution Principle, LSP) deyir ki, alt sinifin obyektləri, əsas sinifin obyektləri ilə əvəz oluna bilər və proqramın düzgün işləməsinə zərər verməməlidir.

JavaScript (Node.js) nümunəsi:

class Bird {
  fly() {
    console.log('Quş uçur');
  }
}

class Sparrow extends Bird {
  fly() {
    console.log('Qartal uçur');
  }
}

class Ostrich extends Bird {
  fly() {
    throw new Error('Ostrich uça bilməz');
  }
}

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

const sparrow = new Sparrow();
makeBirdFly(sparrow); // Qartal uçur

const ostrich = new Ostrich();
makeBirdFly(ostrich); // Xəta — LSP pozulur

Burada Ostrich sinfi, əsas sinfin davranışını (fly metodu) dəstəkləmir, ona görə də Liskov Əvəzetmə Prinsipi pozulur. LSP-ə riayət etmək üçün, uçan və uçmayan quşları ayırmaq daha yaxşıdır, məsələn, interfeyslər və ya ayrı əsas siniflər vasitəsilə.