Sobes.tech
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.