IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

UML Discussion :

classe dans une classe ?


Sujet :

UML

  1. #1
    tut
    tut est déconnecté
    Membre averti
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    Points : 394
    Points
    394
    Par défaut classe dans une classe ?
    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...

  2. #2
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2004
    Messages : 84
    Points : 95
    Points
    95
    Par défaut
    tu es sur que la composition ne convient pas ?

  3. #3
    tut
    tut est déconnecté
    Membre averti
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    Points : 394
    Points
    394
    Par défaut
    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.

  4. #4
    Membre du Club

    Inscrit en
    Mai 2003
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 27
    Points : 48
    Points
    48
    Par défaut
    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 ?

  5. #5
    Futur Membre du Club
    Inscrit en
    Juin 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 6
    Points : 7
    Points
    7
    Par défaut message
    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.

  6. #6
    tut
    tut est déconnecté
    Membre averti
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    Points : 394
    Points
    394
    Par défaut
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class A
    {
       class B
       {
       };
    };
    on peut faire ça en Java et C++.

  7. #7
    Futur Membre du Club
    Inscrit en
    Juin 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 6
    Points : 7
    Points
    7
    Par défaut re
    tu definis un paquetage.

  8. #8
    Membre du Club

    Inscrit en
    Mai 2003
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 27
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par tut
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class A
    {
       class B
       {
       };
    };
    on peut faire ça en Java et C++.
    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.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 12
    Points : 14
    Points
    14
    Par défaut C'est le concept d'hyperclasse
    C'est le concept d'hyperclasse que vous avez là.

  10. #10
    Membre du Club

    Inscrit en
    Mai 2003
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 27
    Points : 48
    Points
    48
    Par défaut Re: C'est le concept d'hyperclasse
    Citation Envoyé par oravelon
    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.

    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 ?

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 12
    Points : 14
    Points
    14
    Par défaut
    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...

  12. #12
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 705
    Points : 393
    Points
    393
    Par défaut
    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é>>

  13. #13
    Membre du Club

    Inscrit en
    Mai 2003
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 27
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par oravelon
    Qu'est ce qu'il y aurait comme relation entre bateau et voiture ?
    Voiture serait-il incluse dans Bateau ? Je ne comprends pas.
    Pas de relation, je disais "bateau" dans le sens exemple habituel

    Citation Envoyé par oravelon
    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...
    Ce que tu décris içi n'est qu'un simple héritage avec une spécialisation du véhicule.

    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

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 12
    Points : 14
    Points
    14
    Par défaut
    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.

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 12
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par n.patricia
    Ce que tu décris içi n'est qu'un simple héritage avec une spécialisation du véhicule.

    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
    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.
    Si possible avec les attributs et tout...

  16. #16
    Membre du Club

    Inscrit en
    Mai 2003
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 27
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par Alec6
    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é>>
    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.

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 12
    Points : 14
    Points
    14
    Par défaut Re: [UML] classe dans une classe ?
    Citation Envoyé par tut
    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...
    ce qui serait bien c'est que tu donnes un exemple précis de modélisation dans le monde réel. Merci.
    Si possible avec les attributs et tout...

  18. #18
    Membre du Club

    Inscrit en
    Mai 2003
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 27
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par oravelon
    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.
    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.

  19. #19
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 32
    Points : 14
    Points
    14
    Par défaut Re: [UML] classe dans une classe ?
    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
    Citation Envoyé par PowerAMC
    Il est possible de déclarer une classe au sein d'une autre classe ou d'une interface, créant ainsi un classificateur interne. Les classificateurs internes permettent d'améliorer la lisibilité générale de votre modèle en regroupant des classes ou interfaces logiquement liées. Une classe déclarée au sein d'une autre classe ou d'une interface appartient au même espace de nom que cette dernière.
    Dans les exemples, on voit que ce sont surtout les interfaces qui sont inclusent dans une classe.
    www.gribouillon.com

  20. #20
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 167
    Points : 220
    Points
    220
    Par défaut
    Citation Envoyé par tut
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class A
    &#123;
       class B
       &#123;
       &#125;;
    &#125;;
    on peut faire ça en Java et C++.
    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.
    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.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Eval d'une propriété d'une classe dans une classe
    Par bizet dans le forum ASP.NET
    Réponses: 4
    Dernier message: 28/10/2008, 09h43
  2. Créer une classe dans une classe
    Par FabaCoeur dans le forum C++
    Réponses: 9
    Dernier message: 02/06/2007, 20h26
  3. [POO] Une Classe dans une Classe. C'est possible?
    Par FrankOVD dans le forum Langage
    Réponses: 2
    Dernier message: 18/05/2006, 22h02
  4. [POO] Utilisation d'une classe dans une classe !
    Par Okinou dans le forum Langage
    Réponses: 3
    Dernier message: 16/02/2006, 14h34
  5. Une classe dans une classe...
    Par Baquardie dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 30/09/2005, 19h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo