Sobes.tech
Junior

Ի՞նչ են նշանակում հարաբերությունները "ես" և "ունենամ" օբյեկտային ծրագրավորման մեջ։

sobes.tech AI

Պատասխան AI-ից

Հարաբերությունը "ես-է" (is-a) ժառանգություն է։ Դերակատար դասը "է" ծնողական դաս և ժառանգում է նրա հատկությունները և վարքագիծը։

// Ծնող դաս
class Animal {
    void eat() {
        System.out.println("Համայնքը ուտում է");
    }
}

// Դերակատար դաս
class Dog extends Animal {
    void bark() {
        System.out.println("Եղջերու հաչում է");
    }
}

Այս օրինակով, Dog "է" Animal։

Հարաբերությունը "իմում" (has-a) նշանակում է կոմպոզիցիա կամ ագրեգացիա։ Մի օբյեկտ "ունի" հղում մյուս օբյեկտին որպես իր վիճակի մաս։

class Engine {
    void start() {
        System.out.println("Մեխանիզմը սկսվեց");
    }
}

class Car {
    private Engine engine; // Մեքենան "իմում" շարժիչ

    public Car() {
        this.engine = new Engine();
    }

    void drive() {
        engine.start();
        System.out.println("Մեքենան շարժվում է");
    }
}

Այստեղ, Car "իմում" Engine։ Կոմպոզիցիան նշանակում է ուժեղ կապ (ապարատի կյանքի ցիկլը կախված է այն, ով այն պարունակում է), ագրեգացիան՝ ավելի թույլ (օբյեկտները կարող են գոյություն ունենալ անկախ։ Օրինակը ցույց է տալիս կոմպոզիցիա։

Հիմնական տարբերությունները՝

  • "է-" (is-a) — ժառանգություն, սահմանում է տիպերի հիերարխիա։
  • "իմում" (has-a) — կոմպոզիցիա/ագրեգացիա, սահմանում է օբյեկտի կառուցվածքը այլ օբյեկտների ներառմամբ։