OOP -də proqram kodunun oxunaqlı, çevik və anlaşıqlı edən beş prinsip üçün mnemonikadır. Bu prinsiplər agile proqramlaşdırmaya və obyekt yönümlü proqramlaşdırmaya tətbiq olunsa da, həmçinin agile proqramlaşdırma və adaptiv proqramlaşdırma metodologiyaları üçün də baza fəlsəfəsi ola bilər.
Sinfin üzərində dəyişiklik etmək üçün yalnız bir səbəb ola bilər.
- Dəstəklənəbilmə: Əgər sinif vahid bir işə cavabdehdirsə onu başa düşmək və dəyişmək daha asan olur.
- Testediləbilmə: Bir məqsədi olan sinif üçün unit test yazmaq daha asandır.
- Çeviklik: Vahid cavabdehliyi olan sinif üzərində dəyişiklik sistemin əlaqəli olmayan digər hissələrinə təsir etmir. [1]
Proqram entity -ləri əlavə üçün açıq, dəyişiklik üçün bağlı olmalıdırlar.
- Genişləndiirləbilmə: Yeni funksionallıqar mövcud olan proqram kodunu dəyişmədən əlavə edilə bilər.
- Stabillik: Yeni əlavələr zamanı səhvərin çıxması riskini azaldır.
- Çeviklik: Dəyişən ətləblər asan adaptasiya olmaq imkanı yaradır.[2]
Baza tipləri istifadə edən funskiyalar bilmədən alt sinifləri də istifadə edə bilməlidirlər.
- Polimorfizm: Kodu daha çevik edir, eyni metodları təkrar istifadə etmək imkanı artır.
- Etibarlılıq: Alt siniflərin baza sinif prinsiplərinə riayət etməsinə zəmanət yaradır.
- Düzgün proqnozlaşrılıma: Baza sinfin alt sinif ilə əvəzedilməsinə zəmanət yaranır.[3]
Müştərilər üçün nəzərdə ttulmuş çoxsaylı interfeyslər bir ümumi interfeysdən yaxşıdır.
- Bölünmə: Siniflər arasında asılılığı azaldır. Kodu daha çox modullara bölünmüş və dəstəklənə bilən edir.
- Çeviklik: İntefeysləri daha məqəsəduyöun implementasiya etmək imkanı verir.
- Lazımsız asılılıqları yığışdırır: Lazım olmayan metodlardı implementasiyası yığışdırılır.
Asılılıqlar abstraskisya üzərində qurulmalıdır.
- Zəif asılılıq: Modullar arasında asılılığı azaldır, modullar daha çevik olur, testət asanlaşır.
- Çeviklik: ASılı siniflərə xətər yetirmədən interfeyslərdə dəyişikik etməyə imkan verir.
- Dəstəklənəbilmə: Proqram kodunu başa düşmək və dəyişmək daha asan olur.
- ↑ "Single Responsibility Principle" (PDF). objectmentor.com. Archived from the original on 2 fevral 2015.
- ↑ "Open/Closed Principle" (PDF). objectmentor.com. Archived from the original on 5 sentyabr 2015.
- ↑ "Liskov Substitution Principle" (PDF). objectmentor.com. Archived from the original on 5 sentyabr 2015.