Junior
Mit jelentenek az "vagyok" és "van" kapcsolatok az objektumorientált programozásban?
sobes.tech MI
Válasz az MI-től
Az "-a" (is-a) kapcsolat öröklés. Az alosztály "egy" szülőosztály, és örökli annak tulajdonságait és viselkedését.
// Szülőosztály
class Animal {
void eat() {
System.out.println("Állat eszik");
}
}
// Alosztály
class Dog extends Animal {
void bark() {
System.out.println("Kutya ugat");
}
}
Ebben a példában, a Dog "egy" Animal.
A "birtoklás" (has-a) kapcsolat kompozíció vagy aggregáció. Egy objektum "birtokol" egy másik objektumra való hivatkozást, mint állapotának részét.
class Engine {
void start() {
System.out.println("Motor elindult");
}
}
class Car {
private Engine engine; // Az autó "birtokol" egy motort
public Car() {
this.engine = new Engine();
}
void drive() {
engine.start();
System.out.println("Az autó halad");
}
}
Itt, a Car "birtokol" egy Engine-t. A kompozíció erős kapcsolatot jelent (a tartalmazott objektum életciklusa függ a tartalmazótól), az aggregáció gyengébb (az objektumok függetlenül is létezhetnek). A példa a kompozíciót mutatja.
Fő különbségek:
- "Egy" (
is-a) — öröklés, típushierarchiát határoz meg. - "Birtokol" (
has-a) — kompozíció/aggregáció, az objektum szerkezetét más objektumok bevonásával határozza meg.