Quelle est la différence entre Association, Agrégation et Composition?

Bonjour,

SVP. Quelle est la différence entre association, agrégation et composition ? Veuillez m’expliquer en termes d’implémentation.

merci d’avance.

Pour deux objets, A et B, les relations peuvent être définies comme suit:

Association - Exemple: A utilise B

public class A {         
    private B obj;
};

NB : l’essentiel est que B soit sémantiquement lié à A plutôt qu’une simple dépendance (comme un int ou un string).

Composition - Je suis le propriétaire d’un objet et je suis responsable de sa durée de vie. Lorsque A disparaît, B disparaît aussi

public class A {
    private B obj = new B(); 
}

Agrégation - J’ai un objet que j’ai emprunté à quelqu’un d’autre. Lorsque A disparaît, B peut continuer à exister.

public class A { 
    private B obj; 
    A(B obj) { 
       this.obj = obj; 
    }
}

Association (a-un)
Cela signifie qu’il existe presque toujours un lien entre les objets (ils sont associés). L’objet Commande a un objet Client

public class Commande {
    private Client client
}

Aggregation (a-un + tout-ou-partie)
Type particulier d’association où il y a une relation réciproque entre deux objets. Ils peuvent cependant vivre l’un sans l’autre.

aa

public class PlayList {
    private List<Song> songs;
}

OU

public class Ordinateur {
    private Moniteur moniteur;
}

Composition (a-un + tout-ou-partie + possession)
Type particulier d’agrégation. Un Appartement est composé de quelques Pièces. Une Pièce ne peut exister sans un Appartement. Lorsqu’un appartement est supprimé, toutes les pièces associées sont également supprimées.

aa

public class Appartement {
    private Pieces p;
    public Appartement() {
       p = new Pieces();
    }
}