Bonjour,
SVP. Quelle est la différence entre association, agrégation et composition ? Veuillez m’expliquer en termes d’implémentation.
merci d’avance.
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.
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.
public class Appartement {
private Pieces p;
public Appartement() {
p = new Pieces();
}
}