Junior
Obyektga yo'naltirilgan dasturlashda meros va tarkib o'rtasidagi farqlar nimada?
sobes.tech AI
AIdan javob
Merosi:
- "is-a" munosabat:
- Farqli sinf ota sinfning maydonlari va metodlarini meros oladi.
- Mavjud sinflarning maxsus versiyalarini yaratish uchun ishlatiladi.
- Qattiq hierarxiyalar va ko‘p meros olish muammolariga olib kelishi mumkin.
Kompozitsiya:
- "has-a" munosabat:
- Sinf boshqa sinflarning instansiyalarini o‘z maydonlari sifatida o‘z ichiga oladi.
- Vazifalarni bajarishni ichki ob'ektlarga topshiradi.
- Moslashuvchanlik va komponentlarni almashtirish imkonini beradi.
Java misoli:
// Meros
class Vehicle { // Asosiy sinf
void start() { /* ... */ }
}
class Car extends Vehicle { // Vehicle'dan meros
// Car uchun maxsus metodlar
}
// Kompozitsiya
class Engine { // Element
void start() { /* ... */ }
}
class AnotherCar { // Kompozitsiyani ishlatadigan sinf
private Engine engine; // Engine instansiyasini o‘z ichiga oladi
AnotherCar(Engine engine) {
this.engine = engine;
}
void start() {
engine.start(); // Delegatsiya
}
}
Farqlar jadval shaklida taqdim etilishi mumkin:
| Mezon | Meros | Kompozitsiya |
|---|---|---|
| Munosabat | "-dir" (is-a) | "-ga ega" (has-a) |
| Qattiqlik | Ko‘proq qattiq | Ko‘proq moslashuvchan |
| Qayta foydalanish | Sinf hierarxiyalari orqali | Ob'ekt instansiyalari orqali |
| Xulq-atvor o‘zgarishi | Metodlarni qayta yozish | Ichki ob'ektlarni almashtirish |
| Qo‘llash | Maxsuslashtirish, funksionallikni kengaytirish | Yig‘ish, qismlardan qurish |
Kompozitsiya ko‘pincha merosdan afzalroq bo‘lib, u ko‘proq moslashuvchanlik va sinflar o‘rtasida kamroq bog‘liqlikni ta'minlaydi.