Partage
  • Partager sur Facebook
  • Partager sur Twitter

Besoin de conseil, je stagne sévère..!

le C++, l'héritage le polymorphisme comment ne pas devenir fou

Sujet résolu
    30 mars 2019 à 14:45:58

    Bonjour, bonsoir je vais me présenter un peu comme c'est la première fois que je vais poster un message sur un forum.. j'espère que je ne vais pas vous faire perdre votre temps car j'ai vu que ça rageait un peu si le post n'étais pas au bon endroit, Bref j'ai 30ans est ça fait une 5 à 6 que je programme tout seul dans mon garage. J'ai commencé par le C ou je passais mon temps à créer des applications éducatifs, et des petits éditeurs 2D, de fil en aiguille ils ont sortie la SDL2 donc tout réapprendre lol et mon frère m'a payer un bouquin sur le C++, ou franchement je m'éclate mais depuis un an je stagne, et pourtant j'ai depuis une collection de bouquin sur le sujet et toute les aides que je trouve sur les forum; En gros ce que je recherche c'est cours sur la POO que j'arriverai à capter, car quand je lis les forums beaucoup de personne se contredisent donc pour un noob imginaient que dépite un peu. Bon ben y'a plus de place alors je vais m'arrêter là merci d'avance!

    -
    Edité par Bl@ck Leg 88 30 mars 2019 à 14:58:45

    • Partager sur Facebook
    • Partager sur Twitter

    Que  l’obscurantisme retourne à l'obscurité....  Tchao

      30 mars 2019 à 17:45:23

      La POO, c'est d'abord et avant tout, une façon de penser à la conception de ton programme. A première vue, elle peut laisser penser qu'elle est difficile, mais en fait, pas tant que ça, pour peu qu'on l'aborde sous le bon angle. La plupart des cours vont te présenter la chose sous le regard de l'encapsulation des données, et si tu suis cette voie, tu n'arriveras à rien et pour cause, ça n'a aucun sens. La véritable approche consiste à penser en terme de service, un peu comme une pièce de théâtre, les acteurs jouent leurs rôles, les techniciens, machinistes font évoluer les lumières, les décors pour accompagner le bon  déroulement de la pièce...

      Le point fondamental, c'est la notion de service, un objet doit rendre des services, comment il les rends, je m'en fous,  c'est son problème, pas le mien...  

      -
      Edité par int21h 30 mars 2019 à 17:49:22

      • 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
        30 mars 2019 à 18:05:44

        Le souci c'est que j'ai fais trop de programmation dit procédurale en electronique et je n'arrive pas du coup à comprendre le concept, enfin si quand je suis dans mes bouquin c'est magique, tout est beau et dès que je me retrouve devant mon Pc c'est la page blanche de l'écrivain.  Et tu as tout as fait cerné mon problème, ça me parle déritage d'encapsulation de polymorphysme...  Et tout de suite ça me fait des fichiers sources de partout et comme je suis pas mal magnaque sur les bords, je me dit que ça ne doit pas être la bonne solution; Pis la où j'habite va trouver quelqu'un qui pourrai me conseiller sur l'approche à prendre.
        • Partager sur Facebook
        • Partager sur Twitter

        Que  l’obscurantisme retourne à l'obscurité....  Tchao

          30 mars 2019 à 19:41:16

          Tu n'as pas pu en faire plus que moi ou d'autres ;) Le secret c'est de penser en terme de service, Je ne crée pas une classe pour le plaisir, je la crée pour qu'elle assure un service dont j'ai besoin dans mon programme. Si je pense services, j'ai un fil clair, un service à rendre => une classe ;) Après vient le polymorphisme et tout le toutim, l'encapsulation par exemple, si je pars bille en tête, alors oui c'est un problème, si je pense service, elle devient naturelle, ce que j'encapsule ce n'est pas une donnée quelconque, ce sont les variables qui vont me servir à rendre mon service, la tambouille interne dans laquelle personne n'à a venir mettre son grain de sel ;) C'est privé, c'est chez moi, tu touches pas ^^

          -
          Edité par int21h 30 mars 2019 à 19:56:54

          • 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
            30 mars 2019 à 22:22:30

            Yes bon ça me rassure tout ça, c'était bien l'idée que je m'étais fais quand je me suis lancé dans le C++, le un service -> une class c'était tellement logique, mais comme tout ce que j'ai pu voir les mecs avais 5 fichiers d'entête alors que j'en avais une bonne vingtaines je me suis trpo remis en question pour rien et là c'est tout plein de nœud dans ma tête, je vais démêler tout ça en repartant sur des petits programmes, un grand merci à toi et si tu avais un pti tuto cool pour m'imager tout ça je cracherai pas dessus..
            • Partager sur Facebook
            • Partager sur Twitter

            Que  l’obscurantisme retourne à l'obscurité....  Tchao

              31 mars 2019 à 4:11:34

              Le bon nombre de fichiers header, c'est celui qui va bien ;) Un petit détail, plus important qu'il ne parait, on passe beaucoup plus de temps à relire son code qu'à l'écrire. Tout ce qui peut aider à relire son code est donc bénéfique. Avoir beaucoup de fichier, n'est pas un problème. Le tout, c'est que tout soit bien rangé ;)
              • 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
                31 mars 2019 à 4:22:05

                Oh oui ça je vois très bien ce que tu veux dire quand je faisais encore que du C et que je faisais une longue pause 2-3 semaines sans coder et que j'ai pas pensé à commenter et je l'avais dans l'os

                • Partager sur Facebook
                • Partager sur Twitter

                Que  l’obscurantisme retourne à l'obscurité....  Tchao

                  31 mars 2019 à 7:28:00

                  J'abonde complètement dans le sens d'int21h.

                  Je rajouterai que beaucoup d'approches présentées confondent factorisation de données et fausse encapsulation avec une vraie pensée objet -- qu'elle soit adapté ou non à un problème particulier, on est pragmatiques en C++.

                  Dans le monde procédural, on a nos données, on les agrège et on les traite. De nombreux mauvais cours OO vont faire la même chose avec des classes en foutant toutes les données en privée, et en collant getters et setters à tour de bras. Quelqu'un de censé ne peut que se demander ce qui change vraiment à ce qui était fait avant pour au final ne voir aucune différence notable et utile. Et c'est vrai. Ce n'est pas coller les données ensemble l'objet. L'OO, c'est trouver un délégué et lui demander de faire quelque chose pour nous. La fameuse pensée orienté services.

                  Concernant les livres, j'aime bien /Designs Patterns tête le première/, traduis chez je ne sais plus qui. Ca part de divers problème et montre comment agencer des objets pour les résoudre proprement.

                  Côté exercice qui met l'accent sur les choses pertinentes, il y a le "javaquarium" (c'est dire si l'OO est assez agnostique) que l'on trouve sur le site Zeste de Savoir -- après on pourrait critiquer que l'objet n'est pas l'approche la plus pertinente ici, mais c'est un autre sujet.

                  -
                  Edité par lmghs 31 mars 2019 à 7:29:23

                  • Partager sur Facebook
                  • Partager sur Twitter
                  C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
                    31 mars 2019 à 8:13:32

                    En faite si je comprend bien il n'y a pas de paradigme qui impose une approche parfaite de la programmation  en C++, chacun y va de sa sauce
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Que  l’obscurantisme retourne à l'obscurité....  Tchao

                      31 mars 2019 à 10:43:57

                      Oui et non, le langage laisse une grande liberté quant à l'implémentation (y compris la possibilité de se tirer une balle dans le pied), les choix que je vais faire seront peut être différents de ceux que fera un autre programmeur, parce que nos expériences respectives sont différentes, et nos "domaines de confort" sont différents aussi, je vais peut être choisir du polymorphisme paramétrique (des templates) là où un autre programmeur choisira une autre voie. Ce qui importe, c'est le résultat, est ce que mon programme fait ce qu'il est censé faire? est ce qu'il le fait bien? Au final, c'est ce qui compte vraiment. S'il peut y avoir de la divergence sur des points de détails, il n'y en a quasiment pas sur les grandes lignes.

                      -
                      Edité par int21h 31 mars 2019 à 10:46: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
                        1 avril 2019 à 16:48:51

                        De toutes façons, la conception/programmation orientée-objets a beaucoup de mérites, mais pas celui d'être une solution miracle applicable à toutes les situations.

                        Dans les points importants

                        > est ce que mon programme fait ce qu'il est censé faire? est ce qu'il le fait bien?

                        j'ajouterais : est-ce que le type qui relira le programme derrière moi sera content de trouver du code facile à comprendre, ou aura envie de me pousser dans l'escalier.

                        Sachant que le type en question, ça risque d'être moi même dans quelques semaines quand je me serai rendu compte qu'il y a comme qui dirait un résultat inattendu, voire légèrement incorrect.. "Pas grave, c'est juste pour moi, qu'il disait".

                        -
                        Edité par michelbillaud 1 avril 2019 à 16:53:48

                        • Partager sur Facebook
                        • Partager sur Twitter

                        Besoin de conseil, je stagne sévère..!

                        × 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