Junior
Was bedeuten die Beziehungen "bin" und "habe" in der objektorientierten Programmierung?
sobes.tech KI
Antwort von AI
Die Beziehung "ist-ein" (is-a) ist Vererbung. Die abgeleitete Klasse "ist" eine Elternklasse und erbt deren Eigenschaften und Verhalten.
// Elternklasse
class Animal {
void eat() {
System.out.println("Tier isst");
}
}
// Abgeleitete Klasse
class Dog extends Animal {
void bark() {
System.out.println("Hund bellt");
}
}
In diesem Beispiel "ist" Dog Animal.
Die Beziehung "hat" (has-a) ist Komposition oder Aggregation. Ein Objekt "hat" eine Referenz auf ein anderes Objekt als Teil seines Zustands.
class Engine {
void start() {
System.out.println("Motor gestartet");
}
}
class Car {
private Engine engine; // Auto "hat" einen Motor
public Car() {
this.engine = new Engine();
}
void drive() {
engine.start();
System.out.println("Auto fährt");
}
}
Hier "hat" Car Engine. Die Komposition impliziert eine starke Beziehung (der Lebenszyklus des enthaltenen Objekts hängt vom umgebenden Objekt ab), die Aggregation ist schwächer (Objekte können unabhängig existieren). Das Beispiel zeigt Komposition.
Wesentliche Unterschiede:
- "Ist-ein" (
is-a) — Vererbung, definiert eine Typ-Hierarchie. - "Hat" (
has-a) — Komposition/Aggregation, definiert die Struktur des Objekts durch Einbeziehung anderer Objekte.