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

Langage C++ Discussion :

mettre une class dans une autre


Sujet :

Langage C++

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2009
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 100
    Points : 36
    Points
    36
    Par défaut mettre une class dans une autre
    bonjour j'essaye un exercice qui consiste a crée une class bibliotheque et une class livre , ensuite je doit pouvoir ajouter des livre dans une bibliotheque.

    j'auraiss voulu savoir si ma méthode étais bonne?

    je vouss met le 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
    #include "bibliothque.h"
     
    using namespace std;
     
     
    livre::livre(string t, string a, int is)
    {
     
    	titre=t;
    	auteur=a;
    	isbn=is;
    }
     
    Bib::Bib(string v, string a, int c)
    {
    	cout<<"constructeur de bibliotheque"<<endl;
    	i=0;
    	ville=v;
    	adresse=a;
    	code=c;
    }
    void Bib::afficher()
    {
    	cout<<ville <<" " <<adresse <<" " <<code<<endl;
    }
     
     
     
    void livre::afficher()
    {
    	cout<<titre<<" " <<auteur<<" " <<isbn <<endl;
    }
     
    void Bib::ajouterlivre(string t, string a, int is)
    {
     
    	tab[i].modifier(t,a,is);
    	i++;
    }
     
    void livre::modifier(string t, string a, int is)
    {
    	titre=t;
    	auteur=a;
    	isbn=is;
    }
     
    void Bib::affichertous()
    {
    	for (int j=0;j<i;j++)
    	{
    		tab[j].afficher();
    	}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include "bibliothque.h"
     
    void main()
    {
     
    	Bib b1("comines","chaussée de ten brielen",7780);
    b1.afficher();
    b1.ajouterlivre("proutttt","jeanlol",1000);
    b1.affichertous();
     
     
    }
    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
    #include <iostream>
    #include <string>
    #define MAX 10
     
    using namespace std;
     
     
    class livre{
    	string titre;
    	string auteur;
    	int isbn;
     
    public:
    	livre(string t="",string a="",int is=0);
    	void afficher();
     
    	void modifier(string t="",string a="",int is=0);
    };
     
     
     
    class Bib{
     
    	string ville;
    	string adresse;
    	int code;
    	int i;
    	livre tab[MAX];
     
     
     
    public:
     
    	Bib(string v,string a,int c);
    	void afficher();
    	void ajouterlivre(string t="",string a="",int is=0);
    	void affichertous();
    };
    mon prog fonctionne mais jee ne sais pas si c'est bon.
    et est ce que ça un nom de faire ce genree de chose en c++ ?

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    Oui et non.
    1/Le nom de la variable pour le nombre de livre : i. C'est un nom trop court et trop 'commun' car i est souvent utilisé comme nom de variable. Le nom de la variable devrait être plus explicite quand à son rôle : nombre_ouvrage par exemple. Idem pour tab qui pourrait s'appeler 'collection_livres' par exemple. Et bib, pourrait être bibliothèque. Faut pas être fainéant sur les noms car ils facilitent la lecture du code. Un nom bien choisi, explicite et sans ambigüité est aussi important qu'une doc bien faite.

    2/L'utilisation d'un tableau statique livre tab[MAX] n'est pas pertinente dans ce cas. Typiquement tu pourrais avoir un std::vector si les ajouts et les suppressions ne sont pas trop fréquent ou une std::list s'ils sont très fréquent.

    3/Ensuite sur la forme, j'aurais tendance à bien séparer les deux classes dans des fichiers séparés : livres.h/livres.cpp pour la classe livre et bibliothèque.h/bibliothèque.cpp pour la classe Bib. Bien sur bibliothèque devra inclure l'en-tête de livre puisqu'elle s'en sert. Mais l'inverse n'est pas vrai (livre ne connait pas bibliothèque). Ca permet d'utiliser livre indépendamment de bibliothèque. Par exemple dans librairie qui vend des livres au lieu de les prêter, ou dans sac qui contient les livres dans mon sac, etc...

Discussions similaires

  1. utilisation d'une variable d'une class dans une autre class
    Par the watcher dans le forum Langage
    Réponses: 7
    Dernier message: 31/08/2010, 14h01
  2. 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
  3. Détecter une action d'une classe dans une autre classe
    Par Pirokkk dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 12/05/2008, 12h14
  4. Réponses: 3
    Dernier message: 29/04/2008, 14h14
  5. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04

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