[RESOLU] Bien structurer son code : plus de classes ou booléens?

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Gabriel76
Messages : 2
Inscription : 10 Mai 2017 18:41

[RESOLU] Bien structurer son code : plus de classes ou booléens?

Message par Gabriel76 » 17 Nov 2017 14:34

Bonjour à tous,

J'ai un petit projet en solitaire d'entrainement, où il s'agit ici de gérer une petite ferme. Je m'interroge sur l'implémentation en code des animaux. Il est très possible que cette question ait déjà été posée mais je ne sais pas comment la formuler autrement et la retrouver avec la recherche. Si c'est le cas un lien seul me répondra et je supprimerais le post.

J'ai trois animaux en tête : les moutons, les vaches et les lamas (moi j'aime bien les lamas).
Les moutons et les lamas ont de la laine qui grandit et peut être tondue.
les lamas et les vaches (femelles) produisent du lait.

Mon problème est le suivant :
Doit-je écrire trois classes héritant de la classe mère 'Animal'? Auquel cas les fonctions 'tire-lait' et 'tonte' seront juste copiées collées dans les trois classes?
Ou la classe 'Animal' possède un string 'Espèce' et des booléens 'lait' et 'laine', et les fonctions publiques 'tonte' et 'tire-lait' modifient les valeurs qui vont avec?

Autre exemple d'un problème similaire :
On doit pouvoir préparer la terre pour planter.
Est-ce que la tuile possède un booléen 'Peut être transformé en ferme' ? Et un string 'nature du sol' qui change de valeur(ou un enum)?
Ou est-ce qu'il y a des classes 'Sol de pierre' et 'Sol de terre' héritant de la classe 'Sol' et seule la seconde possède la fonction de transformation en champs? dans ce cas le champs est une nouvelle classe héritant de 'Sol'?

Merci d'avance pour vos réponses. Gabriel

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6208
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Bien structurer son code : plus de classes ou booléens?

Message par boubouk50 » 17 Nov 2017 15:15

Pour les classes et les héritages, je vois plutôt cela comme un regroupement de données redondantes, un peu comme une classification scientifique d'espèces. Animal > Mammifère > Carnivore > Canidé > Chien.
Chaque "étage" va posséder des caractéristiques que tous les membres vont partager.
Animal -> Se nourrit de substance organique et pluricellulaire.
Mammifère -> Animaux vertébrés et allaités (d'où les mamelles)
Carnivore -> Alimentation
Canidé -> morphologie, poils, couleur
Chien -> Race, nom
Dans l'idée, les embranchements permettent de donner des attributs spéciaux à chaque sous-classes pour ne pas avoir un gros fourbi.

Pour ton cas très simple, il est facile de tout mettre sous Animaux avec des attributs simples dont une valeur défaut (0 ou false) enlève une capacité, surtout si ça relève du oui/non et/ou de la quantité.
Mets tu peux aussi créer des classes Laine, Lait, Viande, etc. Que tu ajoutes à tes animaux, ceux-ci posséderont donc ces capacités en plus, sans que ce soit directement lié à la classe mère, puisque chacun est indépendant de l'autre.
Pour tes sols, en fonction de tes besoins, tu peux avoir une seule classe, avec des attributs tels Ressources (type), Quantité (extraction), Prix Unitaire, etc. Si tous tes terrains sont sur le même schéma. Les attributs spéciaux peuvent être ajoutés par la suite car rien n'empêche le multihéritage.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Gabriel76
Messages : 2
Inscription : 10 Mai 2017 18:41

Re: Bien structurer son code : plus de classes ou booléens?

Message par Gabriel76 » 17 Nov 2017 17:23

Merci de ta réponse très rapide et claire.

L'idée des classes 'Laine' 'Viande' 'Lait' a rajouter ma parait très bien adaptée a mon problème.

Pour les sols, je sais ce que je vais faire, j'y ai réfléchi ente-temps.

Encore merci, et à bientôt.

Verrouillé

Revenir vers « Scripting »