Sobes.tech
Junior

Тафовутҳои байни мерос ва таркиб дар барномасозии объектӣ чӣ гунаанд?

sobes.tech AI

Ҷавоб аз AI

Мурас:

  • Муносибат "ист" (is-a).
  • Клас-потомок мерос мегирад майдонҳо ва методҳо класи-отбос.
  • Истифода мешавад барои эҷоди версияҳои махсуси синфҳои мавҷуда.
  • Мумкин аст ба иерархияҳои сахт ва мушкилоти бо меросгирии бисёр оварда расонад.

Таркиб:

  • Муносибат "дор" (has-a).
  • Класс намунаҳои синфҳои дигарро ҳамчун майдонҳояш дорад.
  • Вазифаҳоро ба объектҳои дарунсохт вогузор мекунад.
  • Флексибиллик ва имконияти иваз кардани компонентҳоро таъмин мекунад.

Масалан дар Java:

// Мерос
class Vehicle { // Клас асосӣ
    void start() { /* ... */ }
}

class Car extends Vehicle { // Мерос аз Vehicle
    // Методҳои махсуси Car
}

// Таркиб
class Engine { // Компонент
    void start() { /* ... */ }
}

class AnotherCar { // Класс, ки таркибро истифода мебарад
    private Engine engine; // Дарбаргири Engine

    AnotherCar(Engine engine) {
        this.engine = engine;
    }

    void start() {
        engine.start(); // Вогузорӣ
    }
}

Фарқиятҳоро метавон дар шакли ҷадвал пешниҳод кард:

Меъёр Мерос Таркиб
Муносибат "ист" (is-a) "дор" (has-a)
Мушкилот Қатъӣ Гибки
Истифодаи такрорӣ Тартибҳои синфӣ Тартибҳои объектӣ
Тағйироти рафтор Азнавсозии методҳо Иваз кардани объектҳои дарунсохт
Барнома Мутахассисӣ, васеъ кардани функсионал
  • | Агрегатсия, сохтани аз қисмҳо |

Таркиб дар аксар ҳолатҳо нисбат ба мерос беҳтар аст, зеро он бештар флексибиллик ва камтар вобастагиро байни синфҳо таъмин мекунад.