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

 C++ Discussion :

Rappel avant examen C++ et UML


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut Rappel avant examen C++ et UML
    Bonjour à tous.

    Voila l'examen arrive enfin.

    Je suis en pleine révision et il y a une chose que j'arrive pas à me mettre en tête, c'est l'implémentation en C++ différente relation entre classes que l'on voie en UML.
    L'agrégation, la composition, l'héritage.

    Pour l'héritage il me semble que cela s'écrit avec le nom de la classe suivit de : puis le nom de la classe hérité:

    class tExemple : NomClassHeritage.

    Je continu à chercher mais merci de votre aide.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    188
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 188
    Par défaut
    Bonjour,

    L'UML permet de modéliser, il n'y a pas forcement d'implémentation direct des notions d'UML en c++.

    Alors pour l'héritage évidement il existe en c++ comme dans tout langage orienté objet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class ClasseMere {
    ...
    }
     
    class ClasseFille : public ClasseMere{
    ...
    }
    Pour plus d'info cf la FAQ.

    pour la composition ce qui correspond le plus a priori sa serai les membres d'une classe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    class Livre{
        Page page1
        Page page2
        Page page3
    }
    (désolé pour les exemples foireux évidemment on ferais plutôt un tableau de pages.)
    Les objets Page seront détruits avec le livre.

    Enfin l'agrégation peut être fais grâce à des pointeurs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class Email{
        Email(fichier *f){
    	fichierAttache = f; 
        }
     
        Fichier *fichierAttache;
    };
    ici le fichier sera juste lier a l'instance de Email et ne sera pas détruit avec lui.
    on peut aussi utiliser les références.

  3. #3
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut
    Merci pour ce rappel

  4. #4
    Membre émérite
    Homme Profil pro
    R&D imagerie 3D / prog embarquée
    Inscrit en
    Mars 2007
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : R&D imagerie 3D / prog embarquée
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2007
    Messages : 419
    Par défaut
    Bonjour,

    Note tout de même que dans le cas général, une agregation et une composition est faite sur une collection d'objets.

    Le code devient alors:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    class Livre{
        Page pages[3];
    };
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    class Email{
        Email(Fichier **f, int count){
            for(int i=0; i<count; i++)
               fichiersAttaches.push_back(f[i]);
        }
     
        vector<*Fichier> fichiersAttaches;
    };
    Un petit lien : http://ootips.org/uml-hasa.html

  5. #5
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Citation Envoyé par djuju Voir le message
    Note tout de même que dans le cas général, une agregation et une composition est faite sur une collection d'objets.
    Pourrais-tu développer ?

  6. #6
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Dans l'aggrégation, la notion de propriété est plus relâchée que dans la composition. Dans tous les cas, nous avons une relation forte, mais la composition exclut par définition le partage.

    Donc, oui on peut composer avec des membres sans passer par du pointeur, mais ce n'est pas exclu pour autant si tant est que l'on force ce non partage.

    (Dans la cas général, une personne reste composée d'un seul nom ...)

    Si l'aggrégation est possible via référence, la composition nullement (à moins de mettre en place des alias à l'intérieur d'un même objet). Toutefois, on la rencontrera plutôt pour de simple mises en relation. Chose que les pointeurs permettent aussi.

    Pour les héritages UML, c'est lh'éritage public qui leur correspond en C++. Le C++ dispose aussi d'un héritage de pure importation de code (i.e. qui exclut tout substituabilité) (-> l'héritage privé), qui dans mes souvenirs est totalement absent en UML.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  7. #7
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut
    J'arrive pas encore à bien saisir car j'ai quelque souvenir (j'arrive pas à retrouver mon court sa m'énerve) pour l'agrégation et la composition il y en avait un que l'on implémentait avec un new et pas l'autre.

    ce qui donnerais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class ClMere
    {
       ClFille *maFille;
    }
    et lorsque l'on en a besoin se serait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    maFille = new ClFille;
     
    maFille.MethodeFille(); //je sais plus si faut un . ou un ->
    Je pense qu'il faut rajouter le

    Cela correspondrais à l'agrégation suivant ce que vous m'avez donner plus haut

    **************************************
    Et pour l'autre je me souviens d'une chose comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class ClMere
    {
       ClFille MaFille;
    }
    mais après je sais plus comment l'utiliser ???

    Il faut rajouter le

    **************************************

    Pour l'héritage il me semble que l'on ajoute par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class ClFille : public ClMere
    {
     
    }
    Je pense que l'on peut utilisé directement les méthodes public de ClMere dans ClFille comme si elles étaient déclarés dans ClFille.

    il faut rajouter le

    **************************************

    Pour l'association je sais plus car j'ai trouvé des chose qui ressemble beaucoup à l'agrégation

  8. #8
    Membre émérite
    Homme Profil pro
    R&D imagerie 3D / prog embarquée
    Inscrit en
    Mars 2007
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : R&D imagerie 3D / prog embarquée
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2007
    Messages : 419
    Par défaut
    Citation Envoyé par gl Voir le message
    Pourrais-tu développer ?
    Bonjour,

    La notation UML permet de spécifier une multiplicité de l'objet qui "agrége" ou qui "compose". Même si cette multiplicité est à 1 ce n'est pas le cas le plus inclusif (ou général, mais c'est vrai que c'est un abus de langage) offert par la notation UML.

    Ju

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

Discussions similaires

  1. Attribute pour examen AVANT l'exécution !?
    Par ijk-ref dans le forum C#
    Réponses: 0
    Dernier message: 05/07/2012, 22h40
  2. Rappel avant la fermeture d'un excel
    Par marinef dans le forum Macros et VBA Excel
    Réponses: 29
    Dernier message: 07/05/2010, 10h01
  3. [OL-2003] Rappeler au destinataire d'adresser une réponse avant une date précise
    Par hélios44 dans le forum Outlook
    Réponses: 2
    Dernier message: 27/11/2009, 10h53
  4. [Calendrier] Anniversaire rappelé quelques jours avant
    Par Rian83 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 14
    Dernier message: 28/06/2009, 18h13
  5. [Methode]UML avant merise, ou le contraire ?
    Par azertyman dans le forum Méthodes
    Réponses: 6
    Dernier message: 31/08/2006, 15h32

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