Liskov Substitution Principle (LSP) — obyektga yo‘naltirilgan dasturlashda qo‘llaniladigan 5 ta asosiy SOLID tamoyillaridan biridir. Ushbu tamoyil 1987-yilda Barbara Liskov tomonidan taklif qilingan.
Agar
SclassTclass ning vorisi (ya’niTdan meros olgan) bo‘lsa, undaTturidagi obyekt ishlatiladigan barcha joylardaSobyektini ham qo‘llash mumkin bo‘lishi kerak va bu o'zgarishlar noto‘g‘ri ishlashga olib kelmasligi lozim.
🔁 Boshqacha aytganda:
"Voris class ota class o‘rniga ishlatilganda tizim buzilmasligi kerak."
🔒 LSP dastur ishonchliligi va kengaytirilishini ta’minlaydi.
Agar bu tamoyil buzilsa:
- Kodni test qilish qiyinlashadi
- Kutilmagan xatoliklar chiqadi
- Polimorfizmning foydasi yo‘qqa chiqadi
public class Hayvon
{
public virtual void Yurish() => Console.WriteLine("Yuryapti");
}
public class Baliq : Hayvon
{
public override void Yurish()
{
throw new NotImplementedException(); // ❌ Baliq yurmaydi
}
}Baliq class Hayvondan meros olgan, lekin u "Yurish" metodini to‘liq bajara olmaydi. Bu LSP ga zid.
public abstract class Hayvon {}
public class QuruqlikHayvoni : Hayvon
{
public void Yurish() => Console.WriteLine("Yuryapti");
}
public class Baliq : Hayvon
{
public void Suzish() => Console.WriteLine("Suzmoqda");
}📌 Har bir class o‘ziga xos metodlarni olgan. Endi hech kim noto‘g‘ri xatti-harakatni kutmaydi, LSP saqlangan.
| Holat | LSP buzilganmi? | Izoh |
|---|---|---|
| Voris class ota class metodini bekor qilsa | ✅ Ha | Noto‘g‘ri implementatsiya |
| Voris class yangi metod qo‘shsa | ❌ Yo‘q | Bu holatda muammo yo‘q |
| Ota calss ning metod yoki xususiyatlari buzilsa | ✅ Ha | Tizim noaniq ishlaydi |
classDiagram
class Hayvon {
+void HarakatQil()
}
class Qush {
+void HarakatQil()
}
class Baliq {
+void Suzish()
}
Hayvon <|-- Qush
Hayvon <|-- Baliq
🧩 LSP quyidagilarni ta'minlaydi:
- ⚙️ Kutilgan funksionallik
- 🤝 Oson testlash
- 🛠️ Yaxshi dizayn
Unutmang: Agar voris clsss ota class o‘rniga ishlatilganda xatolik bersa, dizayn noto‘g‘ri bo‘lishi mumkin! 😉
📢 Boshqa SOLID tamoyillar bilan solishtirganda LSP kuchliroq samaradorlik beradi.