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 :

Besoin d'aide sur un exercice en POO


Sujet :

C++

  1. #1
    Candidat au Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Juin 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2013
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Besoin d'aide sur un exercice en POO
    BONJOUR chers membres :
    j aimerais bien que vous me passer un cout de main en ce qui concerne cet exo :c est a dire les idées interressante pour achever mon travail
    En utilisant la classe BUILDING ,
    Données membres (Protégées) :
    - Nom : Chaine de caractères.
    - Superficie : réel
    - Adresse : Chaine de caractères

    modifier la de manière à ce qu'elle vous permettra de créer la structure suivante en declarent un nouveau type ZONE pointeur sur BUILDING




    je sais surtout po si j suis dans la bonne voie ou non . voila ce j ai fais =>
    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
     
    #include <iostream>
    #include<stdlib.h>
    #include<string>
    using namespace std;
    class BUILDING{
    public :
            string NOM;
            float superficie;
            string adresse;
            static int count_BUILDING;
    BUILDING * m_pBUILDINGtSuivant;
     
                 BUILDING(string name,float super=0,string adr="")
                 {
                                count_BUILDING++;
                                NOM=name;
                                superficie=super;
                                adresse=adr;
                                m_pBUILDINGSuivant=0;          }
     
                 BUILDING()
                 {
                        count_BUILDING++;
                 }
     
     
                 ~BUILDING()
                 {
                        count_BUILDING--;
                }
     
                 BUILDING(BUILDING &P)
                {
                    count_BUILDING++;
                    NOM=P.NOM;
                    superficie=P.superficie;
                    adresse=P.adresse;
                }
     
                void show_count(){
                    cout<<"nombre de BUILDING "<<count_BUILDING;
                }
                virtual void affiche(){
     
                    cout<<NOM<<endl;
                    cout<<"area est "<<superficie<<endl;
                    cout<<"adresse "<<adresse<<endl;
                    cout<<"counter "<<count_BUILDING<<endl;
     
                };
     
     
          };
    int BUILDING::count_BUILDING=0;

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Points : 2 502
    Points
    2 502
    Par défaut
    Bonjour,

    Comme le but à l'air d'avoir un nouveau type ZONE pointeur sur BUILDING dimension 4 x 4,
    je m'attends à pouvoir écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ZONE z1;
    z1[0][0] ; pour accéder au Building 1
    z1[0][1] ; pour accéder au Building 2
    ...
    Donc en gros, la classe ZONE devrait s'écrire comme ce qui suit.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class ZONE
    {
    	public:
    		BUILDING * operator[](int x){return buildings[x];}
    	private:
    		BUILDING buildings[4][4];
    };
    ou suivant les librairies que tu peux utiliser ou non, de la version de ton compilateur,
    tu pourras remplacer le tableau à taille fixe par des std::vector , std::tr1::array, boost::array, boost::multi_array ...

    Et pour la classe BUILDING ,
    Données membres (Protégées) :
    - Nom : Chaine de caractères.
    - Superficie : réel
    - Adresse : Chaine de caractères
    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
    class BUILDING 
    {
    	public:
    	  BUILDING ()
    	  :Index(++Count)
    	  {
    		Nom =  ""; 		Adresse = ""; 		Superficie = 0;
    	  }
     
    	  BUILDING (std::string nom, std::string adresse,double superficie)
    	  :Index(++Count)
    	  {
    		Nom = nom; 		Adresse = adresse;  Superficie = superficie;
    	  }
     
    	  const int Index;
     
    	  double GetSuperficie(){return Superficie;}
    	  void SetSuperficie(double superficie) {Superficie = superficie;}
    	  const std::string & GetNom(){return Nom;}
    	  void SetNom(std::string  nom) {Nom = nom;}
    	  const std::string & GetAdresse(){return Adresse;}
    	  void SetAdresse(std::string  adresse) {Adresse = adresse;}
     
    	protected:
    		std::string Nom;
    		std::string Adresse;
    		double Superficie;
    		static int Count;
    };
     
    int Building::Count = 0;
    L'utilisation :
    - des accesseurs Set/Get permet d'éviter de passer les données en public.
    - d'un compteur de BUILDING statique est très
    (ex : risque d'incrémentation pas souhaité lors d'utilisation de variable temporaire), qui ne fera plus correctement le boulot lors d'utilisation de conteneurs de la STL ou d'autres librairies.
    Pour un cas d'école, ça permettra de parler des limites de l'utilisation de variables statiques.

  3. #3
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Points : 2 502
    Points
    2 502
    Par défaut
    Bonjour,

    En fait dans mon exemple (comme dans l'énoncé du problème), la taille de la ZONE est fixe. On a un tableau de 4x4 Buiding créé automatiquement à la création d'une instance de ZONE au niveau de BUILDING buildings[4][4];.
    Donc en l'état on ne peut pas ajouter / supprimer de Buiding.
    (surtout avec le compteur statique)

    Pour les initialiser, le contenu des objets Building
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ZONE z1;
    z1[0][0].SetSuperficie(10.0);
    z1[0][0].SetAdresse("1, rue de ...");
    z1[0][0].SetNom("Building 1");
     
    z1[0][1].SetSuperficie(10.0);
    z1[0][1].SetAdresse("2, rue de ...");
    z1[0][1].SetNom("Building 2");
    ...
    Et si tu implémente un constructeur par copie dans Building tu pourras affecter un object Building à z1[0][0].
    Maintenant si c'est un exo sur les listes chaînées c'est sûr que ce n'est pas ce qui est souhaité.

  4. #4
    Candidat au Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Juin 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2013
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    effectivement BlueMonkey cet exo doit être résolu par les listes chaînées .

    donc je pense qu on aura besoin d une classe LISTE ou bien utilisé la Classe ZONE pour pouvoir manipuler les building .
    je sais pas si la première proposition que j ai posté reste valable ou bien il y a une autre passerelle . car l utilisation de la méthode matricielle et a proscrire par l énonce de l exo .
    y a t il d autres idées à me suggérer

  5. #5
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 196
    Points : 17 165
    Points
    17 165
    Par défaut
    J'en profite pour glisser les deux entrées habituelles de la faq pour ce type de situations:
    l'indexation d'une matrice
    la structuration d'une matrice

    Si la faq parle d'un pointeur, c'est tout à fait transposable avec une lsite chainée interne, ou une liste chainée de ZONE.

Discussions similaires

  1. [besoin d'aide] sur 2 ou 3 exercices réseaux
    Par toro dans le forum Développement
    Réponses: 9
    Dernier message: 12/07/2010, 22h59
  2. besoin d aide sur un exercice sur les pointeurs
    Par azumachakib69 dans le forum C
    Réponses: 3
    Dernier message: 28/12/2006, 02h16
  3. Besoin d'aide pour un exercice sur les registres
    Par zakuza dans le forum Assembleur
    Réponses: 5
    Dernier message: 14/04/2006, 15h23
  4. [CR] besoin d'aide sur les formules
    Par GuillaumeDSA dans le forum Formules
    Réponses: 4
    Dernier message: 10/07/2003, 13h19

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