Bonjour,
j'aimerai comprendre en détail la notion d'objet composé d'objet, son utilité
merci
-----
Bonjour,
j'aimerai comprendre en détail la notion d'objet composé d'objet, son utilité
merci
Bonjour,
Quand différents objets héritent d'un même parent et ont des méthodes partagées, ça consiste à créer un objet supplémentaire qui hérite du même parent et donc a les mêmes méthodes, mais qui est un ensemble d'objets de la famille.
Par exemple si on peut déplacer un cercle et un carré, on peut créer un ensemble (cercle + carré) que l'on pourra déplacer.
Je ne suis pas trop fan de la design-pattern-mania mais celui là est intéressant.
http://fr.wikipedia.org/wiki/Objet_composite
Quand je parle d'objets je voulais dire classe d'objets bien entendu, je me suis laissé entraîné par la définition incorrecte de wikipédia.
merci pour tes réponses ,au fete je pense etre imprécis dans ma question, c'est concernant le langage c++ sur le site du zéro (je sais pourquoi je ne m'adresse pas directement à eux?),il ya une partie "associer des classes entre elles" que je ne comprends pas , on parle bien d'objets composé d'objets (objet composite)?, j'avoue que je suis perdu
Et oui c'est le problème quand on mélange les termes objet et classe après on ne comprend plus rien ! Les anglais eux parlent de composite pattern et pas d'objets composites.
Un objet c'est ce qu'on obtient quand on instancie une classe. Par exemple j'ai une classe Rond et des objets rond1, rond2, etc....
Pour en revenir à nos moutons, on a des classes d'objets qui ont une ou plusieurs propriétés communes et donc on crée une nouvelle classe qui aura également cette (ou ces) propriété(s) et en même temps servira de conteneur. Un objet de la nouvelle classe contiendra plusieurs objets des anciennes, j'ai déjà donné un exemple plus haut et la page wikipedia en est bourrée.
Zartan, j'ai l'impression que tu parles d'héritage alors que Bladelo95 parle de composition. Héritage et composition sont deux notions différentes.
Une relation de composition entre 2 classes veux dire qu'un objet d'une des 2 classes pourra être composé d'objets de l'autre classe. Par exemple, si on veut définir une fenêtre avec des boutons, des textBox, etc., il existera une relation de composition entre la classe du conteneur (la fenêtre) et la classe de chaque type d'objet contenu.
A+
Oui, l'héritage n'est qu'un des moyens d'y arriver, on peut passer par les interfaces également (en restant simple parce que les interfaces sont une forme d'héritage).
C'est quoi une interface en C++?
A+
En C++ le mot clef interface n'existe pas alors on utilise l'héritage multiple à la place.
Bonjour,
Jack a raison, l'héritage correspond à la relation «est un» alors qu'une composition correspond à la relation «contient un», pour reprendre l'exemple de Jack, une boîte de dialogue est une fenêtre qui contient un label et deux boutons. On peut donc imaginer que la classe Dialogue sera une sous classe de Fenetre, et qu'elle contient des attributs de type Bouton et Label (en fait dans ce cas il s'agit d'aggregation qui est une forme de composition).
Comment vous faites sans utiliser l'héritage ? J'aimerai un exemple.
Un exemple ? Bon je ne suis pas c++ fluent
Code:class A { ... } class B { A a ... }
Non c'est un «objet composé d'objet(s)» comme demandé par le po ...
Ah je vois, oui c'est composite mais le patron composite c'est un truc comme ça :
Code:class Rond { public: void deplace(int dx, int dy) ; } class Carre { public: void deplace(int dx, int dy); } class CompositeRondPlusCarre { private: Rond rond: Carre carre; public: void deplace(int dx, int dy) { rond.deplace(dx, dy); carre.deplace(dx, dy); } }
C'est une façon d'implémenter le pattern, mais si tu regardes le diagramme du pattern Composite c'est un peu plus dynamique ; en gros on peut ajouter dynamiquement des objets dans un groupe d'objets puis les manipuler individuellement ou comme un groupe.
La composition est une notion «ancienne» que l'on retrouve dans la plupart des langages (C et dérivés, SQL, Pascal, ...) et des méthodes de conception, ce n'est qu'une relation d'appartenance.
Oui j'ai vu qu'il y avait une liste d'objets, j'ai simplifié en ne mettant qu'un rond et un carré.
La nouveauté que j'ai remarqué se situe au niveau de l'utilisation des mêmes méthodes entre l'objet composite et les objets "atomiques" (ce qui induit une relation d'héritage que j'ai d'ailleurs oublié d'indiquer dans mon exemple).La composition est une notion «ancienne»
Si on s'en affranchit c'est en effet quelque chose que l'on fait depuis que les objets existent.
Pas sûr. Au sens d'UML, une composition est une agrégation forte. Dans une composition, la diparition du conteneur entraine la disparition des objets contenus, ce qui est le cas avec une fenêtre.en fait dans ce cas il s'agit d'aggregation qui est une forme de composition
A+
Tout à fait exact ! je me suis planté dans le sens