Junior
Obyekt yönümlü proqramlaşdırmada irsiyyət və tərkib arasındakı fərqlər nələrdir?
sobes.tech Süni İntellekt
AI-dan cavab
Miras:
- "-dır" (is-a) münasibəti.
- Uşa sinfi, valide sinfinin sahələrini və metodlarını miras alır.
- Mövcud sinflərin ixtisaslaşdırılmış versiyalarını yaratmaq üçün istifadə olunur.
- Sərt ierarxiyalara və çoxlu irs problemlərinə səbəb ola bilər.
Tərkib:
- "-ə malikdir" (has-a) münasibəti.
- Sinif digər sinflərin nümunələrini sahələri kimi daxil edir.
- Tapşırıqları daxilindəki obyektlərə həvalə edir.
- Elastiklik və komponentlərin dəyişdirilməsi imkanını təmin edir.
Java nümunəsi:
// Miras
class Vehicle { // Əsas sinif
void start() { /* ... */ }
}
class Car extends Vehicle { // Vehicle-dan irsən
// Car üçün xüsusi metodlar
}
// Tərkib
class Engine { // Element
void start() { /* ... */ }
}
class AnotherCar { // Tərkibdən istifadə edən sinif
private Engine engine; // Engine nümunəsini daxil edir
AnotherCar(Engine engine) {
this.engine = engine;
}
void start() {
engine.start(); // Həvalə
}
}
Fərqlər cədvəl şəklində təqdim oluna bilər:
| Kriteriya | Miras | Tərkib |
|---|---|---|
| Münasibət | "-dır" (is-a) | "-ə malikdir" (has-a) |
| Sərtlik | Daha sərt | Daha elastik |
| Yenidən istifadə | Sinif hierarxiyaları vasitəsilə | Ob'ekt nümunələri vasitəsilə |
| Davranış dəyişməsi | Metodların üst- yazılması | Daxil olan obyektlərin dəyişdirilməsi |
| Tətbiq | Xüsusiləşdirmə, funksionallığın genişləndirilməsi | Yığım, hissələrdən qurma |
Tərkib ümumiyyətlə mirasdan üstün sayılır, çünki daha çox elastiklik və sinflər arasında daha az asılılıq təmin edir.