Sobes.tech
Junior

Ko nozīmē attiecības "esmu" un "man ir" objektorientētajā programmēšanā?

sobes.tech AI

Atbilde no AI

Attiecība "ir-" (is-a) ir mantošana. Apakšklase "ir" vecāklase un manto tās īpašības un uzvedību.

// Vecāklase
class Animal {
    void eat() {
        System.out.println("Dzīvnieks ēd");
    }
}

// Apakšklase
class Dog extends Animal {
    void bark() {
        System.out.println("Suņi rej");
    }
}

Šajā piemērā, Dog "ir" Animal.

Attiecība "man" (has-a) ir kompozīcija vai agregācija. Viens objekts "ir" atsauci uz citu objektu kā daļu no tā stāvokļa.

class Engine {
    void start() {
        System.out.println("Dzinējs ieslēgts");
    }
}

class Car {
    private Engine engine; // Mašīna "man" ir dzinējs

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

    void drive() {
        engine.start();
        System.out.println("Mašīna brauc");
    }
}

Šeit, Car "man" ir Engine. Kompozīcija norāda uz stipru saistību (dzīves cikls iekšējā objekta ir atkarīgs no tā, kas to satur), agregācija ir vājāka (objekti var pastāvēt neatkarīgi). Piemērs rāda kompozīciju.

Galvenās atšķirības:

  • "ir-" (is-a) — mantošana, definē tipu hierarhiju.
  • "man" (has-a) — kompozīcija/agregācija, definē objekta struktūru, iekļaujot citus objektus.