Junior — Middle
Vai jūs varat sniegt piemēru par Liskova aizvietošanas principu objektorientētajā programmēšanā?
sobes.tech AI
Atbilde no AI
Liskova aizvietošanas princips (Liskov Substitution Principle, LSP) nosaka, ka apakšklases objektiem jābūt aizvietojamiem ar pamata klases objektiem, nemainot programmas pareizību.
Piemērs C#:
class Bird {
public virtual void Fly() {
Console.WriteLine("Putns lido");
}
}
class Sparrow : Bird {
public override void Fly() {
Console.WriteLine("Vārna lido");
}
}
class Ostrich : Bird {
public override void Fly() {
throw new NotSupportedException("Ostrus nevar lidot");
}
}
void MakeBirdFly(Bird bird) {
bird.Fly();
}
// Lietošana:
MakeBirdFly(new Sparrow()); // pareizi
MakeBirdFly(new Ostrich()); // pārkāpj LSP, jo izsauc izņēmumu
Šajā piemērā, Ostrich klase pārkāpj Liskov aizvietošanas principu, jo tā neatbalsta pamata klases Bird (metodes Fly) uzvedību, izsaucot izņēmumu. Lai ievērotu LSP, ir jāmaina klases hierarhija vai jāsadala saskarnes, lai apakšklases neveiktu nepalaidotu uzvedību.