IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Conseils conception logiciel


Sujet :

avec Java

  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 10
    Points : 4
    Points
    4
    Par défaut Conseils conception logiciel
    Bonjour à toutes et tous,

    J'espère ne pas m'être trompé de section pour poster ma demande... Si c'était le cas, je m'en excuse auprès du modo.

    Je suis actuellement en train de réfléchir au développement d'un programme permettant de créer des listes d'armée pour un jeu de simulation (en l’occurrence Warhammer Battle). Je dois créer plusieurs types de personnages composés des mêmes caractéristiques (une dizaine), mais avec des valeurs différentes pour chacun. Par ailleurs, je devrai aussi créer des types d'équipement qui modifieront les caractéristiques de mes personnages. Je me demandais quelle serait la meilleur solution:
    • créer une classe par type de personnage (sachant que j'en ai plusieurs centaines!)
    • ou tout répertorier dans un fichier XML, sachant que les caractéristiques de chaque personnage restent fixes, pour ensuite désérialiser


    Le fait est que je peux créer une classe de base (peut-être une classe abstraite?) et que chaque personnage en dériverait, mais je vais vite me retrouver avec une montagne de classes, ce qui n'est peut-être pas l'idéal.

    Bref, je voudrais avoir votre avis sur la solution la plus efficace. Petite précision: je suis novice en JAVA et, à ce titre, il y a encore des concepts qui ne sont pas totalement claires pour moi (notamment les abstractions et les interfaces).

    Merci beaucoup de votre aide et longue vie à ce site!

    Alex

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 565
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 565
    Points : 21 630
    Points
    21 630
    Par défaut
    Il n'y a aucun intérêt à créer des classes différentes si les objets ont toujours le même comportement et que seules leurs caractéristiques changent. Comme te le laissait penser, en effet, le fait qu'il y en ait des centaines.

    Pour remplir ces caractéristiques, je conseille pas spécialement le XML. Ça a l'air d'être tout simple, tu peux le faire avec des .properties ou des CSV-like par exemple.

  3. #3
    Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Salut Thelvin et merci de ta réponse.

    Tu as résumé la situation mieux que je ne l'aurait fait: mes personnages diffèrent uniquement par la valeur de leurs caractéristiques, leurs méthodes consisteront toutes à, éventuellement, leur appliquer des modificateurs.

    Pour le CSV, pas trop de souci je pense; j'imagine qu'il être plus facile d'interagir avec ce format qu'avec le XML (enfin, j'espère...)

    En revanche, je ne connaît absolument pas les .properties, peux-tu m'en dire un peu plus?

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 670
    Points : 10 677
    Points
    10 677
    Par défaut
    Il faut tester le principe surtout que "les caractéristiques" peuvent avoir plusieurs significations, mais les traits sont un bon candidat

    En gros, tu crées 2 classes template: human/ personnage, armor/ arme.
    Peut-être que dans ta classe human/ personnage tu auras une collection d'armor/ arme

    Et ensuite, tu vas créer des traits pour chaque type d'human/ personnage et chaque armor/ arme.

    Alors effectivement, cela va sûrement faire "une montagne de classes", mais je pense que cela sera mieux que parser un fichier
    Et un bon IDE te permettras de naviguer rapidement dans toutes tes classes.

    À voir

    Édit: Faire cela en Java n'est pas réellement possible

  5. #5
    Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par foetus Voir le message
    Il faut tester le principe surtout que "les caractéristiques" peuvent avoir plusieurs significations, mais les traits sont un bon candidat
    Les traits? Je ne connaissais absolument pas ce type de classe, je vais me renseigner. Merci de l'info.

    Citation Envoyé par foetus Voir le message
    En gros, tu crées 2 classes template: human/ personnage, armor/ arme.
    Peut-être que dans ta classe human/ personnage tu auras une collection d'armor/ arme
    C'était un peu mon intuition de départ mais la mise en oeuvre est encore un peu embrouillée, j'ai un peu de mal à imaginer comment ajouter les valeurs de caractéristiques contenues dans la classe arme aux même caractéristiques de la classe personnage (c'est peut-être pas très clair...). A voir, donc.

    Citation Envoyé par foetus Voir le message
    Faire cela en Java n'est pas réellement possible
    Tu parles des traits? Cela expliquerait pourquoi je n'ai entendu parler de ça nulle part... Je vais quand même creuser de ce côté.

    Je pense que je vais mélanger les 2 méthodes: stockage des caractéristiques dans des fichiers CSV et un système d'héritage, étant donné que je vais devoir créer quelques personnages avec des profils spécifiques (comme des cavaliers qui cumulent leur profil avec celui de leur monture, ou des pièces d'artillerie qui font appel à 3 profils!).

    Merci beaucoup de votre aide, je reste à l'affût de la moindre idée.

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 565
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 565
    Points : 21 630
    Points
    21 630
    Par défaut
    Qu'ils soient possibles ou non, les traits consistent à avoir une multitude de classes et l'intérêt en est plus que douteux quand le comportement est toujours le même et que seules les caractéristiques changent. Ce genre de mauvaises conceptions se paie de manière
    ... Quand, par contre, il y a des comportements différents et pas juste une affaire de points, c'est une autre histoire. Mais, effectivement, il est probable qu'une hiérarchie simple d'interfaces et classes suffisent.

    Citation Envoyé par ArsRobota Voir le message
    En revanche, je ne connaît absolument pas les .properties, peux-tu m'en dire un peu plus?
    Avant tout je précise qu'à mon avis, si les données sont toujours le même genre, il vaut mieux un CSV, ou un CSV par genre de données. (Un CSV humains, un CSV armures par exemple.) Ces trucs-là peuvent même être lus/modifiés avec Excel.

    Donc, les fichiers .properties. En gros c'est comme un fichier INI mais sans section. Un ensemble de paires nom/valeur. Nettement plus simple à gérer qu'un XML, mais pas capable des mêmes choses... Dont on a pas besoin dans le cas présent.
    J'ai pas trouvé de tutoriel ici, mais j'en ai trouvé un là : http://www.mkyong.com/java/java-prop...file-examples/

  7. #7
    Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par thelvin Voir le message
    J'ai pas trouvé de tutoriel ici, mais j'en ai trouvé un là : http://www.mkyong.com/java/java-prop...file-examples/
    J'ai trouvé le même lien il y a peu! J'ai pu comparer avec un autre article de mkyong sur le traitement des CSV, et l'exemple de méthode qu'il fournit fonctionne à merveille (hormis le fait que sa méthode ne distingue pas les lignes commentées et les lignes vides, contrairement à ce que j'avais pu lire dans ce tuto. Pas grave, je suis sûr que je peux contourner cela).

    Bref, j'ai donc créé un petit fichier CSV contenant les type de données exacts et j'arrive à les extraire et les manipuler. Je pensais alors mettre en place une sélection automatique de la classe personnage ou de la classe arme selon la ligne extraite du CSV, et ensuite injecter les données de ladite ligne dans les différentes variables de la classe.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [POO] Conseils pour conception logicielle en php
    Par mithrendil dans le forum Langage
    Réponses: 14
    Dernier message: 07/02/2008, 17h19
  2. demande de conseil conception site web e-commerce
    Par jsdar dans le forum E-Commerce
    Réponses: 4
    Dernier message: 10/04/2007, 16h38
  3. conseil conception espace client
    Par grinder59 dans le forum Langage
    Réponses: 9
    Dernier message: 04/04/2007, 11h46
  4. Conception logiciel en C# et multithreading jusqu'où?
    Par pi100 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 21/02/2007, 19h33
  5. [Forum][Conseil] Quel logiciel de forum choisir (gratuit ou jusqu'à +- 20EUR)
    Par sjrd dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 20/01/2006, 09h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo