Partage
  • Partager sur Facebook
  • Partager sur Twitter

obtenir schema UML code C++pour un pythoniste

Sujet résolu
    6 janvier 2017 à 7:52:50

    Salut,

    voici ma source : https://sourceforge.net/projects/dunelegacy/files/dunelegacy/0.96.4/dunelegacy-0.96.4-src.tar.bz2/download

    il s' agit du code du jeu Dune2 celebre dans les annees 90.

    Je suis pythoniste et en attendant de me mettre au C++, je voudrai d' abord ré-écrire le code en python

    à partir du diagramme UML, mais je ne sais pas comment passer du code C++ à l' UML, je ne connais vaguement que gcc pour compiler. Je suis sur linux.

    • Partager sur Facebook
    • Partager sur Twitter
      6 janvier 2017 à 7:58:27

      Salut,

      As tu regarde du cote des solutions suivantes ?

      http://stackoverflow.com/questions/405953/generating-uml-from-c-code

      • Partager sur Facebook
      • Partager sur Twitter
        6 janvier 2017 à 14:23:31

        sous linux je laisse tombé microsoft, Bouml payant, starUML a une lib obsolete (libgcrypt11), doxygen à l' air bien mais je galere à l ' utiliser correctement.

        merci j' ai un debut de piste a creuser avec doxygen.

        • Partager sur Facebook
        • Partager sur Twitter
          6 janvier 2017 à 19:36:14

          buffalo974 a écrit:

          sous linux je laisse tombé microsoft, Bouml payant, starUML a une lib obsolete (libgcrypt11), doxygen à l' air bien mais je galere à l ' utiliser correctement.

          merci j' ai un debut de piste a creuser avec doxygen.


          Salut,

          De manière générale, doxygen ne sert pas qu'à créer des diagrammes UML, mais il est vrai qu'il peut également servir à cela.

          Le plus facile pour configurer correctement doxygen est sans doute de passer par son interface graphique (doxywizard), et de sélectionner les bonnes options:

          Pour sélectionner les fichiers qui seront pris en compte, le plus facile est sans doute de choisir le dossier parent dans lequel se trouvent toutes tes sources.  Par exemple, si tu as extrait l'archive de dune dans /home/buffallo/src/dune/ (toute l'arborescence des sources), le plus facile est de faire pointer l'entrée "source code directory" (dans le "wizard, section "project") sur /home/buffalo/src/dune, et de veiller à cocher l'option "scan recursively".

          toujours dans la partie "wizard", dans la section "mode" cette fois, tu seras sans doute bien inspiré de cocher "All entities", afin d'être sur d'obtenir toutes les classes définies.  Autrement, seules les classes et les fonctions qui présentent effectivement un commentaire "doxygen" seront ajoutées, ce qui pourrait tout aussi bien se résumer à ... une documentation vide :p

          Si tu as également installé graphviz (ce que je te conseillerais sincèrement de faire), dans l'entrée "Diagrams" (toujours dans "wizard"), je te conseillerais bien de sélectionner "use dot tool from graphviz package" au lieu de "use build-in class diagram generator".

          (note au passage que, s'il y a des fichiers destinés aux tests unitaires et à d'autres joyeusetés du genre, il seront également pris en compte :P)

          Cependant, il se peut que tous chemins d'accès soient représentés sous la forme de "/home/buffalo/src/dune/module1/src/fichier.cpp, ce qui risque, à terme, d'être relativement difficile de t'y retrouver.  Dans le mode "expert", toujours dans la section "project", tu pourras définir les options "strip from path" et "strip from inc path" afin de supprimer dossiers les plus "communs" (typiquement : /home/buffalo/src/dune)

          Toujours dans le mode expert, tu devras sans doute envisager, dans la section "build", de cocher toutes les options EXTRACT_xxx, et de décocher toutes les options HIDE_xxx histoire de ne pas passer à coté de quelque chose qui pourrait t'intéresser.

          Pour la génération de diagrammes, tu devras prendre le mode "expert" et sélectionner l'entrée "dot".  Tu y trouveras pas mal d'options susceptibles de t'intéresser, dont, entre autres "template relations", "call graph" et "caller graph".

          Note enfin que, si l'outil est puissant, il ne remplace très certainement pas la précision d'un diagramme de classes déterminé avant le développement (tel que cela devrait être fait en théorie), mais, comme tu n'as pas vraiment le choix en l'occurrence... faudra bien faire avec ;)

          Note aussi que python et C++ sont et resteront des langages très différents, et que la traduction d'un langage vers l'autres, même lorsqu'ils utilisent à priori le même paradigme et une syntaxe très semblable, reste toujours un jeu particulièrement ardu, à cause de la différence de philosophie des différents langages.

          Si bien que l'idéal pour tenter de relever un tel défi est très certainement de maitriser suffisamment les deux langages que pour pouvoir déterminer à l'avance les incompatibilités qui ne manqueront pas d'apparaitre, histoire de pouvoir rapidement envisager une "autre approche" permettant de les contourner.

          Tu connais déjà python, et tu as donc fait la moitié du chemin.  Mais je crois sincèrement que tu devrais attendre d'avoir atteint une certaine maitrise de C++ avant de te lancer un tel défi.

          Il faut bien te dire que la syntaxe de C++ n'est pas plus difficile que celle de python ou de java.  Mais s'il n'y avait que la syntaxe, tu aurais encore de la chance ;)

          • Partager sur Facebook
          • Partager sur Twitter
          Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs  à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
            6 janvier 2017 à 22:58:46

            merci pour les details, et oui dans le fond je suis d' accord.
            • Partager sur Facebook
            • Partager sur Twitter

            obtenir schema UML code C++pour un pythoniste

            × 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