Sobes.tech
Junior

Mida tähendavad suhted "olen" ja "omama" objektorienteeritud programmeerimises?

sobes.tech AI

Vastus AI-lt

Seos "on-" (is-a) on pärimine. Alamtüüp "on" vanematüüp ja pärib selle omadused ja käitumise.

// Vanematüüp
class Animal {
    void eat() {
        System.out.println("Loom sööb");
    }
}

// Alamtüüp
class Dog extends Animal {
    void bark() {
        System.out.println("Koer haukub");
    }
}

Selles näites, Dog "on" Animal.

Seos "omab" (has-a) on kompositsioon või agregatsioon. Üks objekt "omab" viidet teisele objektile kui osa selle olekust.

class Engine {
    void start() {
        System.out.println(" Mootor käivitus");
    }
}

class Car {
    private Engine engine; // Auto "omab" mootorit

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

    void drive() {
        engine.start();
        System.out.println("Auto sõidab");
    }
}

Siin, Car "omab" Engine. Kompositsioon tähendab tugevat seost (sisaldava objekti elutsükkel sõltub sellest, kes seda sisaldab), agregatsioon on nõrgem (objektid võivad eksisteerida sõltumatult). Näide näitab kompositsiooni.

Peamised erinevused:

  • "on-" (is-a) — pärimine, määratleb tüüpide hierarhia.
  • "omab" (has-a) — kompositsioon/agregatsioon, määratleb objekti struktuuri teiste objektide kaasamise kaudu.