Partage
  • Partager sur Facebook
  • Partager sur Twitter

Création d'un tableau d'objets dynamique

    1 décembre 2019 à 12:47:45

    Salut,

    Bon, je suis bloquer sur un exco en C++ nécessitant l'utilisation des classes.
    Evidemment j'ai déjà fais de la POO avec du Javascript et du PHP, mais je trouve que sur le coup c'est bien différent.
    Tout d'abord voici mon code en commençant par le fichier.h :

    #include <String>
    
    
    
    class Livre
    {
    private:
        std::string _titre;
        int _anneParution;
        double _prix;
    
    public:
    
        Livre()
        {
            
        }
    
        void setTitre(std::string titre)
        {
            this->_titre = titre;
            
        }
    
        int setParution(int anneParution)
        {
            
        }
    
        double setPrix(double prix)
        {
            this->_prix = prix;
        }
    
        void getTitre() const
        {
            std::cout << _titre << std::endl;
        }
    
        int getParution()
        {
            
        }
    
        double getPrix()
        {
        
        }
    
        
    };

    Le fichier .cpp :

    #include <iostream>
    #include <string>
    #include "Livre.h"
    #include <vector>
    using namespace std;
    
    int main()
    {
        int reponse{ 0 };
        int i{ 0 };
        
    
        string saisirLivre{ "" };
        int saisirAnnee{ 0 };
        double saisirPrix{ 0.0 };
        
        vector<Livre> livreObjets;
    
        return 0;
    }



    Objectif :
    Créer un tableau d'objets dynamique pour que l'utilisateur puisse décider du nombre d'objets qu'il souhaite créer tous provenant de la class Livre.

    Pour l'instant je fais des tests pour arriver au moins à donner en 1er lieu un titre à des objets de la classe Livre, mais je bloque, je n'y arrive pas si quelqu'un peut m'aider ça serait super.
    Tout d'abord l'utilisation de vector<Livre> dans le .cpp est elle un bon début?

    • Partager sur Facebook
    • Partager sur Twitter
      1 décembre 2019 à 13:46:20

      Salut

      • Ligne 1 de ton fichier.h, c'est <string> et non <String>
      • Ligne 14 de ton fichier.h, Livre() est le constructeur, c'est là lui d'initialiser tes variables membres
      • Inutile d'utiliser this
      • Pourquoi mettre des setters et getters sur toutes tes variables membres ? Autant tout mettre dans l'accessibilité public ça sera plus simple, ta classe doit être pensé en terme de services et non de données.
      • Ligne 2 dans ton fichier fichier.cpp, inutile d'inclure <string>, ton fichier.h l'importe déjà étant donné que tu l'as inclus.

      Pour l’utilisation d'un std::vector<Livre>, si c'est juste pour ça je dirais oui, ça dépend de ton programme aussi.

      -
      Edité par XxAnoth-ChaxX 1 décembre 2019 à 14:15:43

      • Partager sur Facebook
      • Partager sur Twitter
        1 décembre 2019 à 22:35:18

        Bonjour,

        Je me permet d'ajouter que les fonctions membre setTitre et setParution n'ont rien a faire dans ta classe, en effet, une fois décidé, ces 2 informations ne changent jamais pour un livre donné.

        De plus, l'utilisation abusive du couple getters / setters est une mauvaise pratique, car cela ruine le principe même de l'encapsulation, garde bien en tête que les fonctions membre doivent avoir du sens (changer le titre d'un livre n'a aucun sens).

        Egalement, ta classe a clairement une sémantique d'entité, par conséquent elle ne doit être ni copiable, ni assignable.

        Utilise des références constantes en paramètres, histoire d'éviter les copies inutiles lorsque tu donnes autre chose qu'un type natif en paramètre.

        Enfin, concernant ton problème:
        Le choix du conteneur std::vector est un bon choix, cela t'évite de gérer manuellement la mémoire.
        Pour insérer des objets dans le conteneur, au choix:
        - Soit la fonction membre emplace_back() de la classe std::vector.
        - Soit la fonction membre push_back() associée à la sémantique de mouvement.
        - Utiliser les pointeurs intelligents.

        -
        Edité par Deedolith 1 décembre 2019 à 22:36:32

        • Partager sur Facebook
        • Partager sur Twitter

        Création d'un tableau d'objets dynamique

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown