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 :

[Implémentation] Constructeurs et classes imbriquées


Sujet :

UML

  1. #1
    Membre éclairé
    Avatar de m-mas
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2003
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2003
    Messages : 576
    Points : 719
    Points
    719
    Par défaut [Implémentation] Constructeurs et classes imbriquées
    Bonjour,
    n'ayant pas un outil qui me génère du code à partir de mes diagrammes UML, je me pose certaines questions sur le passage des classes UML en code.

    Ce n'est pas simple et évident pour une première expérience !

    Ma question : Est ce que chaque classe nécessiste impérativement un constructeur ?

    je m'explique : j'ai une classe A qui possède seulement 2 attributs libelle et description (pas de méthodes). Quand je définie en code ma classe, je défini bien évidament 2 variables libelle et description de type chaines de caratères, ensuite dois je définir un constructeurs pour instancier ces 2 variables ou des propriétées avec Get et Set ?

    Est ce qu'il y a des règles à ça ?

    En vous remerciant !

    PS : langage utilisé VBNET (ou C#) mais je pense que c'est une question générale UML.

  2. #2
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 534
    Points : 6 723
    Points
    6 723
    Par défaut Re: [UML][IMPLEMENTATION] Constructeur ou pas constructeur ?
    Citation Envoyé par Morsi
    n'ayant pas un outil qui me génère du code à partir de mes diagrammes UML, je me pose certaines questions sur le passage des classes UML en code.

    Ce n'est pas simple et évident pour une première expérience !
    alors il faut vite changer d'outil UML et ne plus en utiliser un ne permettant que de faire des dessins, meme s'il sont très jolis

    Ma question : Est ce que chaque classe nécessiste impérativement un constructeur ?
    dans l'absolu cela dépend du langage, car celui-ci peut produire un constructeur par défaut

    je m'explique : j'ai une classe A qui possède seulement 2 attributs libelle et description (pas de méthodes). Quand je définie en code ma classe, je défini bien évidament 2 variables libelle et description de type chaines de caratères, ensuite dois je définir un constructeurs pour instancier ces 2 variables ou des propriétées avec Get et Set ?
    Je supose que tes variables sont des attributs ... il va aussi falloir apprendre les bon intitulés

    C'est à toi de voir, si ta classe est seulement un data sans réel comportement associé il peut être inutile de définir des get/set., mais tu auras du mal à mettre un point d'arret dans les modifications de la chose ce qui peut poser des problemes lors du debug.

    Est ce qu'il y a des règles à ça ?
    les architectes diront qu'il est obligatoire que les attributs soient private ou protected et qu'il faut définir des get/set : les attributs représentent l'implémentation de la chose, les opérations fournissant un comportement pouvant masquer l'implémentation. Mais bon, le but être dans le monde réel avec de vrais programme, avoir des règles absolues c'est le meilleur moyen de faire n'importe quoi n'importe comment et de pondre des usines à gaz inutilisable. Il faut être pragmatique ... pas fanatique !

  3. #3
    Membre éclairé
    Avatar de m-mas
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2003
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2003
    Messages : 576
    Points : 719
    Points
    719
    Par défaut
    Merci bruno_pages pour la réponse

    Oui les variables ... sont des attributs en langage UML mais en code ils deviennet des variables d'instance !

    Bref, cela m'aide à voir plus clair !
    Tu as raison entre le monde réel et le monde théorique il y a une différence.

    et pour l'outil de modélisation, tu comprend que mon budget est limité

  4. #4
    Membre éclairé
    Avatar de m-mas
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2003
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2003
    Messages : 576
    Points : 719
    Points
    719
    Par défaut
    De question en question !! continuons dans l'implémentation UML !

    j'ai 3 classes A, B et C avec :

    * une association entre la classe C et B (de C vers B)
    * une composition entre la classe C et A (losange plein du côté de A)

    A
    | ==> composition
    B
    | ==> Association
    C
    selon ce que j'ai bien lu et compris, pour implémenter A et B:

    * définir la classe A avec ses attributs et méthodes (ajouter un attribut de type B)
    * faire une classe B imbriqué dans A pour implémenter la composition

    Si on veut maintenant implémenter la classe C :
    * Définir la classe C avec ses méthodes et attributs
    * Puisqu'il y a une association entre C et B, il faut définir un attribut dans C de type B sauf que la classe B n'est pas visible puisqu'elle est impriqué dans A

    j'espère que vous m'avez bien compris.

    Vous remerçiant de votre aide

  5. #5
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 534
    Points : 6 723
    Points
    6 723
    Par défaut
    Citation Envoyé par Morsi
    et pour l'outil de modélisation, tu comprend que mon budget est limité
    je te dirai bien d'utiliser bouml, mais je ne gère que C++, Java et Idl, pas C#

    Citation Envoyé par Morsi
    j'ai 3 classes A, B et C avec ...
    ...
    * faire une classe B imbriqué dans A pour implémenter la composition
    alors là je ne comprends pas, il est inutile de définir une classe pour implémenter une composition

    Si je reprends l'énoncé suivant :
    j'ai 3 classes A, B et C avec :

    * une association entre la classe C et B (de C vers B)
    * une composition entre la classe C et A (losange plein du côté de A)
    donc (j'ai suposé que les deux relations étaient uni directionnelles) :

    et une génération C++ donnera (je n'ai mis que les attributs) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    class A {
      protected:
        C c;
    };
    
    class B {
    };
    
    class C {
      protected:
        B * b;
    };
    idem en Java, mais sans '*' bien-sûr

  6. #6
    Membre éclairé
    Avatar de m-mas
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2003
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2003
    Messages : 576
    Points : 719
    Points
    719
    Par défaut
    Merci encore une fois bruno

    voila c'est à peu prés ça, en fait moi je pensais à ça (qui est identique à ce que tu as fais)



    mais je n'arrive pas à traduire ton code en C# et comme je l'ai dis, moi j'ai suivi les règles de Pascal Roques pour les traductions qui m'a donné ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class A
    '...
         Private class B
         '...
         End class
    End class
    
    Public class C
        Private att1 as int32
        '...
        Private b1 as B '==> Error here, because he didn't see class B, it s indeed A :/
    End class

  7. #7
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 534
    Points : 6 723
    Points
    6 723
    Par défaut
    Il y a comme un quiproquo : dans ton mail tu dis
    une composition entre la classe C et A (losange plein du côté de A)
    et tu mets une composition (aggregation par valeur) entre A et B, et je ne vois pas toujours pas pourquoi B devrait être une sous classe de A

  8. #8
    Membre éclairé
    Avatar de m-mas
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2003
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2003
    Messages : 576
    Points : 719
    Points
    719
    Par défaut
    je me suis trompé dans la description des classes !
    mais tu as raison !! je viens de m'appercevoir que dans le tuto que je suis en train de lire
    Par contre, la notion de classe imbriquée peut s'avérer intéressante pour traduire la composition. Elle n'est ce pendant pas du tout obligatoire
    je comprend trés bien que dans ce cas, elle est impossible (l'imbrication)

    je déclare 3 classes !!

    Merci beaucoup ! j'ai encore appris une chose aujourd'hui

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C#]Remonter des événements dans des classes imbriquées
    Par Kcirtap dans le forum Windows Forms
    Réponses: 9
    Dernier message: 14/12/2013, 12h43
  2. Constructeurs / Destructeurs / Classes imbriquées
    Par XAMLdev dans le forum Langage
    Réponses: 4
    Dernier message: 29/07/2013, 19h55
  3. Réponses: 11
    Dernier message: 23/07/2009, 10h29
  4. Classe imbriquée et son constructeur
    Par toninlg dans le forum C++
    Réponses: 7
    Dernier message: 30/09/2006, 06h21
  5. Intérêt des classes imbriquées ?
    Par elitost dans le forum Langage
    Réponses: 5
    Dernier message: 21/10/2005, 09h30

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