Sobes.tech
Junior

Que signifient les relations "suis" et "ai" en programmation orientée objet?

sobes.tech IA

Réponse de l'IA

La relation "est-un" (is-a) est une héritage. La classe dérivée "est" une classe parente et hérite de ses propriétés et comportements.

// Classe parente
class Animal {
    void eat() {
        System.out.println("L'animal mange");
    }
}

// Classe dérivée
class Dog extends Animal {
    void bark() {
        System.out.println("Le chien aboie");
    }
}

Dans cet exemple, Dog "est" Animal.

La relation "possède" (has-a) est une composition ou une agrégation. Un objet "possède" une référence à un autre objet comme partie de son état.

class Engine {
    void start() {
        System.out.println("Le moteur démarre");
    }
}

class Car {
    private Engine engine; // La voiture "possède" un moteur

    public Car() {
        this.engine = new Engine();
    }

    void drive() {
        engine.start();
        System.out.println("La voiture roule");
    }
}

Ici, Car "possède" Engine. La composition implique une relation forte (le cycle de vie de l'objet contenu dépend de celui qui le contient), l'agrégation est plus faible (les objets peuvent exister indépendamment). L'exemple montre la composition.

Différences clés:

  • "Est-une" (is-a) — héritage, définit une hiérarchie de types.
  • "Possède" (has-a) — composition/agrégation, définit la structure de l'objet par l'inclusion d'autres objets.