c'est exactement ça !dans le livre il donne comme exemple des objets composites comme les dictionnaires les listes, des objets qui sont eux-meme composés d'objets (donc avec des méthodes)
donc ça me perturbe au niveau des méthodes!
Voilà un petit exemple construit "sur les genoux" pour voir comment on accède à un objet inclus dans un autre:
class Objet1(object):
def affiche(self):
print "je suis dans l'objet1 inclu dans l'objet2"
class Objet2(object):
def __init__(self):
self.obj1 = Objet1()
def affiche(self):
print "je suis dans l'objet2"
obj2 = Objet2()
obj2.affiche()
# affiche: je suis dans l'objet2
obj2.obj1.affiche()
#affiche: je suis dans l'objet1 inclu dans l'objet2
par exemple une liste de "mots" (objet)
mots=[jambon,fromage,confiture,chocolat]
c'est bien un objet composite (source livre),un objet
composé d'objets (ici des chaines)
on me dit tout est objet en python, j'ai donc la liste
avec ses attributs et ses méthodes disponibles
et des chaines de caractère avec ses atributs et ses méthodes disponibles
j'avoue je suis perdu
mots est une liste composée de len(mots)=4 éléments qui sont des chaines de caractères.
mots[2] est le 3e élément de la liste (puisque les indices commencent à zéro), c'est à dire "confiture": c'est une chaine.
On peut donc appliquer à mots[2] les méthodes des chaines: par exemple, mots[2].upper() met confiture en majuscule: ===> "CONFITURE".
Une liste peut comporter n'importe quoi, y compris des listes (qui, elles-mêmes, etc...): on arrive donc à représenter des arbres: mots=["jambon","fromage","confiture",["tartine", ["pain", "beurre"]], "chocolat"]. On attendra "pain" avec: mots[3][1][0] qui, étant une chaine de caractères, pourra bénéficier des méthodes associées: mots[3][1][0].upper() ===> "PAIN".
ok je te donne un exemple d'objet composite du livre
il s'agit d'une classe rectangle avec ses atributs largeur hauteur coin
et coin serait un objet point (X,Y)
ce schéma montre clairement un exemple d'objet composite maintenant comment ça se passe avec les objets tels que la liste donnée comme exemple (je te jure,j'arrive pas à comprendre )
Qu'est-ce que tu veux dire par "comment ça se passe", précisément ?
J'ai l'impression que cette notion t'a été introduite trop tôt et qu'elle est en train de te mettre dans le flou plus qu'autre chose.
Une liste, c'est un objet dont le rôle est de "contenir" d'autres objets. Ses méthodes (à la liste), permettent d'accéder à ses éléments, de la parcourir, de lui ajouter ou de lui retirer des éléments, etc.
Maintenant, si tu veux utiliser l'un de ses éléments, il te suffit d'y accéder en utilisant les méthodes de la liste (ou la syntaxe appropriée, ce qui revient complètement au même), afin de récupérer l'élément qui t'intéresse.
À partir de là, il n'est pas spécialement utile de faire la distinction entre aggrégation, association et composition en ce qui te concerne (d'ailleurs l'exemple donné par fred est aussi un peu incomplet à mon goût). En python, ça se traduit simplement par le fait qu'un objet composite, c'est un objet qui encapsule ("possède") d'autres éléments.
Par exemple : Une "personne", à la sécu, est composée d'une adresse, d'un nom, et d'un numéro de sécurité sociale. Une voiture est composée d'un moteur, de roues, d'une carosserie.
Ce qui caractérise un objet composite, c'est que les éléments qui le composent n'ont plus de raison d'exister lorsque tu détruis cet objet, et inversement : une voiture sans roue ne sert à rien, au même titre qu'une roue sans voiture. La durée de vie d'un objet composite est intimement liée à celle des éléments qui le composent.
À l'inverse, dans une relation d'agrégation ou d'association, la durée de vie de l'agrégat est complètement indépendante de celle des objets agrégés.
Mais encore une fois, tout ceci, ce n'est que de la théorie, et tu ne devrais pas te prendre la tête là-dessus si ça ne te semble pas clair. Il arrivera juste un moment où ça te semblera couler de source (et tu t'en foutras complètement de savoir le nom que ça porte), à force de concevoir des programmes orientés objet.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Python c'est bon, mangez-en.
Python c'est bon, mangez-en.
Python c'est bon, mangez-en.