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 :

Classe imbriqu�es et ind�pendantes


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Administrateur de base de donn�es
    Inscrit en
    Avril 2017
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 54
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activit� : Administrateur de base de donn�es

    Informations forums :
    Inscription : Avril 2017
    Messages : 7
    Par d�faut Classe imbriqu�es et ind�pendantes
    Bonjour tous,
    j'ai une question sur la d�claration de classes et leur utilisation (� appliquer � un servomoteur).

    J'aurais ces 2 classes

    Classe TypeRotation
    int Vitesse
    int NbDegres
    int TempsArret
    bool SensHoraire


    Classe TypeBrassage
    int NbAllerRetour
    TypeRotation Aller
    TypeRotation Retour


    Sachant que je voudrais utiliser des variables de TypeRotation et TypeBrassage, comment je construis le plus proprement possible le TypeBrassage qui a 2 TypeRotation diff�rents ?

  2. #2
    Expert �minent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activit� : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par d�faut
    Salut,

    Tout simplement: comme tu l'as fait

    Tu as un fichier d'en-t�te TypeRotation.hpp (Rotation.hpp ? ) qui ressemble �
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #ifndef TYPEROTATION_HPP
    #define TYPEROTATION_HPP
    /* j'utilise une structure, car, pour l'instant, je ne vois pas ce que cela 
     * changerait d'en faire une classe
     */
    struct TypeRotation{   // struct Rotation ?
        int vitesse;      // int speed ?
        int nbDegres; // int degrees ?
        int tempArret; // int stopTime ?
        bool sensHoraire; // bool rightToLeft ?
    };
    #endif //TYPEROTATION_HPP
    et un fichier d'en-t�te TypeBrassage.hpp qui ressemble �
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #ifndef TYPEBRASSAGE_HPP
    #define TYPEBRASSAGE_HPP
    #include <TypeRotation.hpp>
    /* Même remarque que pour TypeRotation ;) */
    struct TypeBrassage { // Brewing ?
    /* Dans l'idéal, on place les données les plus grandes en haut des structures
     * (pour une sordide histoire d'alignement, quand cela fait sens ;) )
     */
       TypeRotation aller; // Rotation forth ?
       TypeRotation retour; // Rotation back ?
       int nbAllerRetour;   // int routes ?
    };
    #endif // TYPEBRASSAGE_HPP
    (il est souvent pas mal d'�crire son code en anglais, bien que tu aies �vit� de tomber dans l'utilisation d'une moiti� de termes en anglais et de l'autre moiti� en francais ... les commentaires proposent des noms dans la lange de shakespeare )

    De cette mani�re, en fonction des besoins, tu pourras soit inclure "uniquement" TypeRotation.hpp, si tu n'a vraiment besoin de connaitre que la rotation, ou bien, tu pourras d�cider d'inclure TypeBrassage.hpp si tu as besoin de connaitre les deux types (la rotation et le brassage)

    L'id�e �tant toujours de n'inclure que ce qui est strictement indispensable, ni plus (parce que cela ne fait que donner du taf inutile au compilateur) ni moins (parce que, de toutes fa�ons, cela le fera r�ler)
    A m�diter: La solution la plus simple est toujours la moins compliqu�e
    Ce qui se con�oit bien s'�nonce clairement, et les mots pour le dire vous viennent ais�ment. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 f�vrier 2014
    mon tout nouveau blog

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Administrateur de base de donn�es
    Inscrit en
    Avril 2017
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 54
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activit� : Administrateur de base de donn�es

    Informations forums :
    Inscription : Avril 2017
    Messages : 7
    Par d�faut
    Merci de ta r�ponse, elle me pla�t car bien structur�e et expliqu�e
    J'arrive de l'univers du VisualBasic donc je ne connais pas les " struct "
    J'�tudie �a reviendrai avec du code plus pr�cis que j'ins�rerai comme toi (comment on fait �a ?)

  4. #4
    Nouveau membre du Club
    Femme Profil pro
    Administrateur de base de donn�es
    Inscrit en
    Avril 2017
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 54
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activit� : Administrateur de base de donn�es

    Informations forums :
    Inscription : Avril 2017
    Messages : 7
    Par d�faut
    Je viens de lire sur les Structures en C++

    �a me semble la bonne solution car tout est public dans la structure Rotation et Brassage.

    Comme c'est un tout petit programme, tout serait mis dans le m�me fichier.

    Pour l'anglais, �a me parait naturellement plus proprre en effet mais je veux que ce soit facilement compr�hensible par un public large.

    Une question que je n'ai pas trouv� dans ma recherche pour les classes ou structures, comment acc�de-t'on aux donn�es de rotation d'un brassage ?

    If Brassage.Aller.Vitesse>10
    Ou

    Je dois sortir la structure Rotation dans une variable avant ?

    Merci de ta r�ponse

    (je te conseille de regarder la vid�o
    "Uncle Bob Clean Code"
    qui d�crit comment et pourquoi �crire du ccode proprement
    Tu pourras continuer plus ta d�marche de bon code qui semble tr�s bien parti !!!)

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Administrateur de base de donn�es
    Inscrit en
    Avril 2017
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 54
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activit� : Administrateur de base de donn�es

    Informations forums :
    Inscription : Avril 2017
    Messages : 7
    Par d�faut
    Rebonjour,
    je reste sur la d�finition de classes car je pense qu'il y aura des m�thodes associ�es � chacune des classes

    Pas contre, je ne comprends toujours pas comment instancier et bien d�clarer ces imbrications de classes

    voici ci-dessous mon code


    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
     
     
    class TypeRotation
    {
        public:
            int NbDegres;
            int Vitesse;
            int TempsArret;
            int Sens;
            TypeRotation(int  intDegres,
                         int  intVitesse,
                         int  intTempsArret);
    };
     
     
     
     
     
    TypeRotation::TypeRotation(int  intNbDegres,
                                          int  intVitesse,
                                          int  intTempsArret)
    {
        NbDegres=intNbDegres; 
        Vitesse=intVitesse; 
        TempsArret=intTempsArret; 
    };
     
     
     
     
     
    class TypeBrassage
    {
        public: 
            TypeRotation RotationAller;
            TypeRotation RotationRetour;
            int          NbAllerRetour;
            TypeBrassage(int  intNbAllerRetour,
                         TypeRotation trAller,
                         TypeRotation trRetour);
    };
     
     
     
     
     
    TypeBrassage::TypeBrassage(int intNbAllerRetour,
                                           TypeRotation trAller,
                                           TypeRotation trRetour)
    {
        NbAllerRetour=intNbAllerRetour;
        RotationAller=Aller; 
        RotationRetour=Retour;        
    };
     
     
     
     
     
    void loop()
    {
        TypeRotation  RotationCourte(158,3,2);
        TypeRotation  RotationLongue(158,3,2);
        TypeBrassage  BrassageAmple(2,RotationLongue,RotationLongue);
        TypeBrassage  BrassageSerre(3,RotationCourte,RotationCourte);
     
        exit(0);
    };

  6. #6
    R�dacteur/Mod�rateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : Canada

    Informations professionnelles :
    Activit� : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par d�faut
    Tes classes ne sont pas du tout imbriqu�es.
    Tu as 2 classes, c'est tout, et une utilise l'autre.
    Et vu que les variables sont de simples variables (et pas pointeur ou r�f�rence), il faut que son type soit totalement connu avant de l'utiliser.
    Donc Rotation doit �tre d�clar�e avant Brassage.
    La bonne pratique est g�n�ralement de mettre chaque classe dans un fichier diff�rent, puis tu inclues ce dont tu as besoin, quand tu en as besoin.
    As-tu lu un cours de C++ ? �a me semble assez basique, t'as d� rater une �tape.
    Pensez � consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation r�seau ?
    Aucune aide via MP ne sera dispens�e. Merci d'utiliser les forums pr�vus � cet effet.

+ 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. Classe et Fen�tre ind�pendante
    Par croc14 dans le forum MFC
    R�ponses: 61
    Dernier message: 14/06/2006, 07h57
  3. Classe imbriqu�e
    Par dj.motte dans le forum C++
    R�ponses: 10
    Dernier message: 13/04/2006, 07h34
  4. classes imbriqu�es
    Par smedini dans le forum C++
    R�ponses: 10
    Dernier message: 10/12/2005, 13h16
  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