Junior
147
Cosa significano le relazioni "sono" e "ho" nella programmazione orientata agli oggetti?
Risposta dell'AI
sobes.tech AI
La relazione "è-una" (is-a) è ereditarietà. La classe derivata "è" una classe genitore e eredita le sue proprietà e comportamenti.
// Classe genitore
class Animal {
void eat() {
System.out.println("L'animale mangia");
}
}
// Classe derivata
class Dog extends Animal {
void bark() {
System.out.println("Il cane abbaia");
}
}
In questo esempio, Dog "è" Animal.
La relazione "ho" (has-a) è composizione o aggregazione. Un oggetto "ha" un riferimento a un altro oggetto come parte del suo stato.
class Engine {
void start() {
System.out.println("Motore avviato");
}
}
class Car {
private Engine engine; // La macchina "ha" un motore
public Car() {
this.engine = new Engine();
}
void drive() {
engine.start();
System.out.println("L'auto sta guidando");
}
}
Qui, Car "ha" Engine. La composizione implica una relazione forte (il ciclo di vita dell'oggetto contenuto dipende da quello che lo contiene), l'aggregazione è più debole (gli oggetti possono esistere indipendentemente). L'esempio mostra composizione.
Differenze chiave:
- "È-una" (
is-a) — ereditarietà, definisce una gerarchia di tipi. - "Ha" (
has-a) — composizione/aggregazione, definisce la struttura dell'oggetto attraverso l'inclusione di altri oggetti.