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.