Composition et agrégation
Les classes et les objets peuvent être liés les uns aux autres. L'héritage décrit une relation "EST A". UN LION EST UN ANIMAL. Cette relation est facilement exprimée en utilisant l'héritage, où
Animal
serait la classe parent et
Lion
serait l'enfant. Mais toutes les relations dans le monde ne sont pas correctement décrites de cette façon. Par exemple, un clavier a certainement une relation avec un ordinateur, mais
ce n'est pas un ordinateur . Les mains ont une certaine relation avec une personne, mais elles ne sont pas une personne. Ces cas représentent un type de relation différent - pas "EST A", mais "A A". Les mains ne sont pas une personne, mais une personne A des mains. Un clavier n'est pas un ordinateur, mais un ordinateur A UN clavier. "A UN"
. La différence entre ces concepts réside dans la « rigueur » des relations. Prenons un exemple simple : Nous avons un
Car
. Chaque voiture a un moteur. De plus, chaque voiture peut transporter des passagers. Quelle est la différence fondamentale entre les champs
Engine engine
et
Passenger[] passengers
? Si le passager
A
est assis à l'intérieur d'une voiture, cela ne signifie pas que les passagers
B
et
C
ne peuvent pas également être dans la voiture. Une voiture peut accueillir plusieurs passagers. De plus, tous les passagers peuvent sortir de la voiture, mais elle continuera à fonctionner sans problème. La relation entre la
Car
classe et le
Passenger[] passengers
tableau est moins stricte. C'est ce qu'on appelle
l'agrégation . Voici un bon article sur ce sujet :
Relations entre classes (objets). Il fournit un autre bon exemple d'agrégation. Disons que nous avons une
Student
classe qui représente un étudiant et une
StudentGroup
qui représente un groupe d'étudiants. Un étudiant peut être membre d'un club de physique, d'un fan club étudiant de Star Wars ou d'un club de comédie.
La composition est un type de relation plus strict. Lors de l'utilisation de la composition, un objet a un autre objet, mais il ne peut pas appartenir à un autre objet du même type. L'exemple le plus simple est un moteur de voiture. Si une voiture a un moteur, alors ce moteur ne peut pas appartenir à une autre voiture. Comme vous pouvez le voir, cette relation est beaucoup plus stricte que celle de
Car
et
Passengers
.
GO TO FULL VERSION