Junior — Middle
Obyekt yönümlü proqramlaşdırmada Liskovun yerinə qoyma prinsipinin nümunəsini verə bilərsinizmi?
sobes.tech Süni İntellekt
AI-dan cavab
Liskov Əvəzolunma Prinsipi (Liskov Substitution Principle, LSP) deyir ki, alt sinifin obyektləri əsas sinifin obyektləri ilə əvəz oluna bilər və bu, proqramın düzgünlüyünü pozmadan edilə bilər.
C# nümunəsi:
class Bird {
public virtual void Fly() {
Console.WriteLine("Quş uçur");
}
}
class Sparrow : Bird {
public override void Fly() {
Console.WriteLine("Qartal uçur");
}
}
class Ostrich : Bird {
public override void Fly() {
throw new NotSupportedException("Ostrich uça bilməz");
}
}
void MakeBirdFly(Bird bird) {
bird.Fly();
}
// İstifadə:
MakeBirdFly(new Sparrow()); // düzgün
MakeBirdFly(new Ostrich()); // LSP-ni pozur, çünki istisna atır
Bu nümunədə, Ostrich sinfi, Bird əsas sinfinin davranışını (metod Fly) dəstəkləmədiyi üçün Liskov Əvəzolunma Prinsipini pozur və istisna atır. LSP-yə riayət etmək üçün, sinif hierarxiyasını dəyişmək və ya interfeysləri bölmək lazımdır ki, alt siniflər dəstəklənməyən davranışları həyata keçirməsinlər.