Partage
  • Partager sur Facebook
  • Partager sur Twitter

Classe en C++

Sujet résolu
    19 octobre 2019 à 22:35:30

    Bonjour,

    je débute programmation en C++ et je bloque sur un petit truc.

    J'essaye de créer une classe Employé avec des attributs et des méthodes. J'ai une méthode qui calcule le salaire de base et une autre qui calcule le salaire. Dans cette deuxième méthode je vais avoir besoin du résultat de la méthode salaire de base (sachant qu'elle retourne un double).

    Y a un moyen pour récupérer le retour de la méthode 1 pour l'utiliser dans la 2 ? (Je suis sure que ç'a un rapport avec les pointeurs mais malheureusement je ne sais pas trop les manipuler )

    Merci.

    • Partager sur Facebook
    • Partager sur Twitter
      19 octobre 2019 à 23:49:16

      On parle de fonctions membres (par opposition aux fonctions libres, qui ne font pas partie de l'interface de la classe) pas de méthodes, mais c'est un détail.

      Pour ta question, bien sûr que la réponse est oui, j'irai presque jusqu'à dire que ta question  est idiote, une fonction membre est d'abord et avant tout  une fonction, on peut donc l'appeler depuis à peu près n'importe où, dans le cas d'une fonction membre, il y a bien sûr la restriction d'accessibilité, mais elle ne s'applique qu'en dehors de la classe, tu peux donc parfaitement appeler une fonction membre d'une classe depuis une autre fonction membre de cette classe quelle que soit l'accessibilité de la fonction membre appelante et celle de la fonction membre appelée. L'appel est également possible sur les fonctions membres public et protected des classes parentes. Pour réaliser ce type d'appel tu as deux solutions:

      class A
      {
      
          int foo(){return 5;}
      
      public:
      
         void bar();
      }

      une méthode lourdingue, en utilisant le pointeur this

      void A::bar()
      {
          auto i = this->foo();
          // la suite...
      }

      ou bien tout simplement en se souvenant des règles de portées, on est dans la classe A, foo aussi donc, le compilateur va d'abord chercher parmi les fonctions membres et si il trouve, il choisira la même instance que celle de l'appelant, ce qui nous donne:

      void A::bar()
      {
          auto i = foo();
          // la suite ...
      }

      Et ça marche pareil avec les classes parentes (aux restrictions d’accessibilité près), ce qui est logique, si B dérive de A, alors B est un A (Principe de Liskov). Je te conseille de toujours garder ce principe à l'esprit lorsque tu conçois une hiérarchie de classes, le principe de Liskov est la base de la programmation objet, si tu ne le respecte pas, tu vas au devant de graves déconvenues...



      -
      Edité par int21h 20 octobre 2019 à 0:05:32

      • Partager sur Facebook
      • Partager sur Twitter
      Mettre à jour le MinGW Gcc sur Code::Blocks. Du code qui n'existe pas ne contient pas de bug
        21 octobre 2019 à 19:18:52

        Est-ce a un employé de calculer son salaire ? Habituellement c'est confié a une personne/service tiers.
        • Partager sur Facebook
        • Partager sur Twitter
          22 octobre 2019 à 10:13:23

          Zérotisme a écrit:

          Est-ce a un employé de calculer son salaire ?

          Je doute de la pertinence de la comparaison monde réel/programme.

          • Partager sur Facebook
          • Partager sur Twitter

          Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

            22 octobre 2019 à 16:34:30

            Ksass`Peuk a écrit:

            Zérotisme a écrit:

            Est-ce a un employé de calculer son salaire ?

            Je doute de la pertinence de la comparaison monde réel/programme.


            Ca m'étonne réelement. Habituellement , meme si le sujet n'a pas forcement rapport , vous etes toujours la pour pointer les bonnes pratiques : conception , pointeur intelligents etc.

            Dis-tu ca parce que mon intervention n'a rien a voir avec sa question direct ?
            Car si c'est le car , moi je vous vois souvent conseiller les pointeurs intelligent lorsque la personne vous parle de parametres de fonctions ou autre :p
            • Partager sur Facebook
            • Partager sur Twitter
              22 octobre 2019 à 20:26:40

              Zérotisme a écrit:

              Dis-tu ca parce que mon intervention n'a rien a voir avec sa question direct ?

              Non, parce que la remarque n'est pas forcément pertinente. Si on est sur un logiciel dont le but est de déterminer le salaire en fonction de certaines catégories d'employés (et ça ressemble), ça fait tout à fait sens que la classe employé fasse ce job.

              • Partager sur Facebook
              • Partager sur Twitter

              Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

              Classe en C++

              × 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