Partage
  • Partager sur Facebook
  • Partager sur Twitter

Factorisation de 2 classes

Quand il n'y a pas grand choses à factoriser

Sujet résolu
    6 août 2015 à 12:20:27

    Bonjour à tous !

    Voilà voilà, ayant terminé ma première année d'IUT Info, je me suis rendu compte de l'importance d'avoir des projets perso en informatique. Je me suis donc lancé dans un projet (peut-être un peu long, mais je peux toujours le suspendre puis le reprendre, vu qu'il est pas mal modulable) : la création d'un jeu de stratégie au tour par tour, pour l'instant en mode console, puis dans un futur plus ou moins proche, en mode 2D vue de dessus.

    En résumé : vous avez une ville de départ par joueur, un/destrain(s) qui vont servir à acheminer des denrées à travers lesvillages de la map,reliés entre eux par desrails, et ainsi améliorer la ville de départ afin de gagner lapartie. (en italique sont mes classes à la base).

    J'ai commencé à programmer ça en JAVA en TDD avec JUnit, mais le principal est : je veux factoriser VilleDepart et Village pour créer une classe abstraite Ville/Lieu, etc. Mais j'ai un problème : à part un nom, j'ai pas beaucoup à factoriser pour l'instant... Avec l'affichage en 2D, je pense que ce sera plus utile, mais pour l'instant je sais pas si j'ai des raisons de créer Ville/Lieu.

    Du coup je devrais factoriser ou pas ?

    • Partager sur Facebook
    • Partager sur Twitter
    S SI -> 1° année -> Je passe en 2° année d'IUT Info !
      6 août 2015 à 12:44:00

      Lu'!

      La vraie question c'est : est-ce qu'il y a vraiment des variations de services entre ces deux classes ?

      • Partager sur Facebook
      • Partager sur Twitter

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

        6 août 2015 à 23:21:10

        Désolé pour la réponse tardive -_-'

        Ben ouais, y a variation, parce que la ville de départ peut level up, ne produit pas de denrée, et est associé à un joueur, contrairement à un village, qui ne peut pas level up, produit des denrées (qui servent à faire vivre et level up les villes de départ), et qui n'est pas associé à un joueur, mais qui peut être dirigé par un joueur, qui peut changer en cours de route...

        Du coup, c'est vrai que si tu le formules comme ça, j'ai pensé à ça : Mettre un attribut commun Joueur; et après la classe de la Ville/Lieu permet de savoir si c'est sa ville de départ ou un simple village possédé... Après, est-ce que c'est une bonne idée ?

        -
        Edité par CasualNib 6 août 2015 à 23:22:51

        • Partager sur Facebook
        • Partager sur Twitter
        S SI -> 1° année -> Je passe en 2° année d'IUT Info !
          7 août 2015 à 9:13:31

          Ok, ça en dit plus. Peut être qu'en jouant sur la composition tu auras une meilleure flexibilité, mais pour l'instant c'est qu'une supposition.

          Du coup la deuxième question c'est : quelles sont les actions communes que peuvent faire villages et villes de départ ? De ce que tu dis juste avant, on voit des services différents d'une classe à l'autre mais de pas variation de services commun (la raison pour laquelle on pourrait effectivement avoir un héritage).

          Rappel : l'héritage est la relation la plus forte que tu peux mettre entre deux classes. Il faut qu'il ait un sens et qu'il respecte scrupuleusement le LSP.

          • Partager sur Facebook
          • Partager sur Twitter

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

            7 août 2015 à 10:55:09

            Au final, pas grand chose : l'affichage sur la map (dans le futur) serait un point commun mais c'est géré par la classe Map, ça compte pas vraiment.

            Après c'est vrai que j'ai établi le lien en fonction des liens dans la réalité. Je dirai que les 2 peuvent accueillir un/des train(s), mais j'ai pas encore cherché à implémenter ça...

            En fait un des plus gros intérêts de cette méthode est que mes rails possèdent en attributs, 2 Ville/Lieu, qui peuvent être soit une ville de depart soit un village... Du coup, 2 attributs de la classe mère Ville/Lieu me semblait mieux

            Au niveau de la map, je comptais donner des coordonnées x,y à chaque ville, mais je comptais faire l'association Ville--Coordonnées dans Map...

            -
            Edité par CasualNib 7 août 2015 à 10:57:37

            • Partager sur Facebook
            • Partager sur Twitter
            S SI -> 1° année -> Je passe en 2° année d'IUT Info !
              7 août 2015 à 11:16:19

              L'héritage ne sert pas à mettre ensemble des classes qui ont les mêmes attributs mais des classes qui rendent les mêmes services. Il ne faut pas penser en terme de données mais en terme de services en objet.

              CasualNib a écrit:

              (1) Après c'est vrai que j'ai établi le lien en fonction des liens dans la réalité. Je dirai que les 2 peuvent accueillir un/des train(s), mais j'ai pas encore cherché à implémenter ça...

              En fait un des plus gros intérêts de cette méthode est que mes rails possèdent en attributs, 2 Ville/Lieu, qui peuvent être soit une ville de depart soit un village...

              Ici on a deux choix en fait :

              (1) Alors pourquoi ne pas avoir une classe Gare ;) . Dans l'idée une Gare est une classe qui peut recevoir un train et envoyer un train sur un rail, et qui peut donner accès au train reç. Les villes et villages observent leur gare interne (celle-ci les préviendra à l'arrivée d'un train), et peuvent donc demander à voir les trains en gare pour les manipuler.

              (2) Interface Segregation Principle. Nous avons donc un service qui est commun : les deux peuvent accueillir des trains. Est ce que ça veut dire hiérarchie avec un héritage fort ? Non. Elles implémentent juste toutes les deux une interface qui peut permettre l'arrivée et le départ d'un train.On peut alors dire que les rails sont reliés à "ClasseQuiImplémentePeutAccueillirDesTrains" et donc les différentes villes spécialiseront ce qu'on doit faire en cas d'arrivée d'un train.

              -
              Edité par Ksass`Peuk 7 août 2015 à 11:16:44

              • Partager sur Facebook
              • Partager sur Twitter

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

                7 août 2015 à 11:30:09

                Merci beaucoup c'est plus clair comme ça :)

                (Ouf, j'ai bien fait de demander...:-°)

                • Partager sur Facebook
                • Partager sur Twitter
                S SI -> 1° année -> Je passe en 2° année d'IUT Info !

                Factorisation de 2 classes

                × 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