Liskov-un yerinə qoyma prinsipinin nə demək olduğunu və obyekt yönümlü proqramlaşdırmada necə tətbiq olunduğunu izah edin.
sobes.tech Süni İntellekt
AI-dan cavab
Liskov Əvəzləmə Prinsipi (Liskov Substitution Principle, LSP) obyekt yönümlü proqramlaşdırmada SOLID beş prinsipindən biridir. Bu prinsip deyir ki, alt sinif obyektləri, əsas sinif obyektləri ilə dəyişdirildikdə, proqramın düzgünlüyünü dəyişməməlidir.
Sadə dillə desək, əgər B sinfi A sinfindən irsdirsə, B sinfinin obyektləri, A sinfinin obyektləri yerinə istifadə oluna bilər, gözlənilməz səhvlər və ya məntiqdə dəyişiklik olmadan.
Bu, aşağıdakı şərtlərə əməl etməklə təmin edilir:
- Əsas sinifin invariantsini pozmamaq.
- Metodların əvvəlki şərtlərini (daha sərt giriş məlumatları tələb etmək).
- Postşərtləri genişləndirməmək (daha az zəmanətli nəticələr vermək).
Nümunə:
class Bird {
func fly() {
print("Quş uçur")
}
}
class Sparrow: Bird {
override func fly() {
print("Qarğa uçur")
}
}
// LSP pozuntusu, əgər Penguin sinfi əlavə olunarsa və uça bilməzsə
class Penguin: Bird {
override func fly() {
fatalError("Pinguin uça bilmir")
}
}
Bu nümunədə, Penguin LSP-ni pozur, çünki onu Bird yerinə istifadə etmək mümkün deyil, səhvlərlə. Uçan quşlar üçün ayrıca interfeys təyin etmək daha düzgün olardı.
Beləliklə, LSP, sinif hierarxiyalarını asanlıqla genişləndirmək və dəstəkləmək üçün kömək edir və obyektlərin dəyişdirilməsi zamanı gözlənilməz səhvlərdən qaçınmağa kömək edir.