Bonjour,
Comment représente-t-on en UML une classe définie dans (c'est à dire à l'intérieur de ) une autre classe ? sur un diagramme statique de classes.
Ce n'est pas de l'aggrégation, ni de la composition, ni aucun autre lien que je connaisse...
Bonjour,
Comment représente-t-on en UML une classe définie dans (c'est à dire à l'intérieur de ) une autre classe ? sur un diagramme statique de classes.
Ce n'est pas de l'aggrégation, ni de la composition, ni aucun autre lien que je connaisse...
tu es sur que la composition ne convient pas ?
La composition porte sur la relation entre deux classes (agrégation forte), mais pas sur la définition de la classe, et donc la portée de cette définition.
Je suis assez d'accord sur la composition ou l'agrégation.
Au final, tu vas utiliser un attribut qui sera instance de cette classe.
Pour moi, définir une classe dans une classe n'est qu'une question de langage de programmation qui l'autorise ou pas mais pas une question de concept. A quel concept correspondrait la définition d'une classe dans une classe ?
Bonjour,
Tu veux donc modeliser deux classes , une etant contenu dans une autre.
Cela correspond a beaucoup de modeles ;
Prenons le cas d'une commande qui contient des lignes de commande; Les lignes de commande sont composés d'un numero d'article et de son libellé. On distingue deux types de commande : les commandes en france les commandes hors france.
Maintenant les classes creees sont :
Commande
LigneCommande
CommandeHorsFrance
CommandeFrance
Article
Maintenant il faut modeliser les relations entre les classes:
les objets instances de Commande font generaliser les objets instances de CommandeHorsFrance et les objets instances CommandeFrance c'est pour cela que le lien a definir est le lien de generalisation.
les objets instances de LigneCommande sont contenus dans les objets instances de Commande. Le lien est donc un lien d'agregation qui diminue le degré de dependance des objets.
Les objets instance de Article sont attributs des objets instances de la classe LigneCommande. Un lien d'association est donc possible pour la communication.
Voila ce que je voulais te dire.
Les communications entre objets sont definis en fonction des elements que tu definis mais parfois UML donne un vocabulaire plus important pour l'exprimer alors que la semantique est identique.
Non, désolé, mais je ne pense pas que ce soit non plus une généralisation.
Mon problème se pose sur un conteneur qui gère une collection d'objets, ces objets étant des instances d'une classe définie dans le conteneur, pour des problèmes d'encapsulation et de visibilité : les classes faisant appel au conteneur n'ont pas à connaitre la classe contenue.
Ma question est de savoir comment ce cas se représente en UML :
on peut faire ça en Java et C++.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 class A { class B { }; };
tu definis un paquetage.
Je me répète mais à quel concept cela se rapporte ? Je pense qu'il n'y en a pas et qu'il n'y a aucune chance de le retrouver dans UML. C'est plus une capacité des langages à définir une portée limitée dans la définition des classe.Envoyé par tut
C'est le concept d'hyperclasse que vous avez là.
Il me semble que c'est plus un concept lié aux bases de données relationnelles.Envoyé par oravelon
Une explication peut-être pour comprendre un peu mieux ?
Si on prend l'exemple "bateau" de la voiture. La voiture serait une hyperclasse de quoi ?
Toute classe est potentiellement une agrégation ou une composition d'autres classes, ce qui a des implications sur le cycle de vie et la navigation dans les instances. Qu'est qu'une hyperclasse apporte de plus ?
Qu'est ce qu'il y aurait comme relation entre bateau et voiture ?
Voiture serait-il incluse dans Bateau ? Je ne comprends pas.
Moi je prendrai plutôt le cas de Véhicule et voiture.
Véhicule comprend tous les types de véhicule comme vélo, moto, voiture.
Alors véhicule est donc super-classe ou hyperclasse de voiture.
Voiture va donc hériter tous les attributs et les méthodes de véhicules, plus ses attributs spéciaux à voiture (par exemple : "4 roues", ...etc)
Alors que les attributs de véhicule en général serait par exemple : Année, couleur...
C'est encore plus complexe qu'un système relationnel et car il y a un notion d'héritage pour les classe internes non statics (ont accès aux membres meme privées du la classe externe, pour le contraire c'est pas si simple surtout avec les attributs) pour les statics c'est sioux et en plus une classe impriquée peut etre parcourue par un bloque du programme comme une section entre singleton.
Une classe interne c'est en gros un bloc de programme entre {} mais nommé.
Sans conter les différences entre C++ et JAVA
Au final je ne suis pas sur que cette représentation existe bien que j'ai déjà vu des classes avec d'autres classes à l'intérieur graphiquement, mais on a tendance à le déchiffrer comme composition. Le mieux c'est une relation avec <<Imbriqué>>
Pas de relation, je disais "bateau" dans le sens exemple habituelEnvoyé par oravelon
Ce que tu décris içi n'est qu'un simple héritage avec une spécialisation du véhicule.Envoyé par oravelon
Le concept d'hyperclasse est un peu différent si j'ai bien compris et s'applique aux bases de données relationnelles.
Le cas exposé plus loin est la modélisation d'une classe dans une autre qui ne se rapproche d'aucun concept à mon avis. Je maintiens donc
Je ne vois pas ce qui serait compliqué avec l'héritage.
De toutes façons on peut aussi arriver à l'héritage multiple si on continue la discussion. (dans ce cas ce ne serait pas pris en compte dans les langages comme Java par exemple).
Peux-tu donner un exemple concret qu'on puisse en discuter ... Merci.
D'accord j'ai un peu dévié du sujet, mais ce qui serait bien c'est que tu donnes un exemple précis de modélisation dans le monde réel. Merci.Envoyé par n.patricia
Si possible avec les attributs et tout...
Ceci concerne les instances des classes. Je pense qu'on n'est assez loin de la notion de portée liée à la définition d'une classe dans une classe. Mais bon, pourquoi pas.Envoyé par Alec6
ce qui serait bien c'est que tu donnes un exemple précis de modélisation dans le monde réel. Merci.Envoyé par tut
Si possible avec les attributs et tout...
C'est bien ce que je veux dire, il n'y a pas d'exemple dans le monde réel. J'attends justement que l'on m'en donne un mais je n'y crois pas. Pour moi, la composition, l'agrégation et l'association sont les seules relations entre classe.Envoyé par oravelon
Sous PowerAmc, il y a le classificateur interne, nommé aussi "Inner Classifier", c'est un lien interne
Voila ce que j'ai trouvé dans l'aide
Dans les exemples, on voit que ce sont surtout les interfaces qui sont inclusent dans une classe.Envoyé par PowerAMC
www.gribouillon.com
Ca ne se représente pas car c'est conceptuellement invalide. Définir une classe dans une autre classe implique que la classe contenue est inconnue du modèle, ce qui au niveau concept fait que puisque le modèle ne connait pas la classe c'est que la classe n'existe pas dans le modèle, voilà pourquoi c'est invalide et donc non représentable.Envoyé par tut
La relation entre les classe dans le cas décrit est obligatoirement une aggrégation (ou composition), ce n'est pas parce qu'un objet est contenu dans un autre que cela impliquent que les appelants du conteneur savent ce qu'est le contenu. Et si vraiment tu as des contraintes spécifiques à représenter au niveau encapsulation et visibilité alors comme l'a dit datamind il faut que tu utilises un package.
Franckintosh, penseur différent.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager