Sobes.tech
Junior

Ką reiškia santykiai "esu" ir "turiu" objektų orientuoto programavimo kontekste?

sobes.tech AI

Atsakymas iš AI

Santykis "yra-" (is-a) yra paveldėjimas. Paveldėjimo klasė "yra" tėvinė klasė ir paveldi jos savybes ir elgesį.

// Tėvinė klasė
class Animal {
    void eat() {
        System.out.println("Gyvūnas valgo");
    }
}

// Paveldėta klasė
class Dog extends Animal {
    void bark() {
        System.out.println("Šuo loja");
    }
}

Šiame pavyzdyje, Dog "yra" Animal.

Santykis "turi" (has-a) yra kompozicija arba agregacija. Vienas objektas "turi" nuorodą į kitą objektą kaip savo būsenos dalį.

class Engine {
    void start() {
        System.out.println("Variklis įjungtas");
    }
}

class Car {
    private Engine engine; // Automobilis "turi" variklį

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

    void drive() {
        engine.start();
        System.out.println("Automobilis važiuoja");
    }
}

Čia, Car "turi" Engine. Kompozicija reiškia stiprią ryšį (gyvavimo ciklas įdėto objekto priklauso nuo to, kas jį apima), agregacija yra silpnesnė (objektai gali egzistuoti nepriklausomai). Pavyzdys rodo kompoziciją.

Pagrindiniai skirtumai:

  • "yra-" (is-a) — paveldėjimas, apibrėžia tipų hierarchiją.
  • "turi" (has-a) — kompozicija/agregacija, apibrėžia objekto struktūrą įtraukiant kitus objektus.