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.