je suis perdu dans mon projet d'informatique

a marqué ce sujet comme résolu.

Bonjour!

voilà, je progresse dans le projet d’info mais je suis perdu car bien que le code compile, impossible de savoir si je pars dans la bonne direction.

on doit rendre un diagramme de classes du projet, voici un premier Jet, est-ce bien ça qu’ils attendent? Est-il logique ?

On doit faire un jeu style RPG d’un perso dans sa maison et la ville.. tous les attributs sont toujours private ci dessous

texte
texte

Ce que je n’aime pas dans ce diagramme… et où j’ai besoin de conseil svp

  • la classe People est très longue et sera bien plus longue encore à l’avenir,…
  • faut-il vraiment placer Popup et MyRandom??
  • faut-il placer tous les getters & setter?
  • le diagramme final sera TRES TRES grand, vu que je vaiis mettre d’autres objets (pommes, poires, nouveaux personnages…etc)

et avec tout ça j’ai pas encore écrit tout le côté interface graphic et gestions des événements souris, clavier… ce diagramme risque d’être énormmme, je suis mal parti ??

désolé je panique un peu…..

PS: le code java je veux bien le donner mais il est dans un fichier .zip, comment le mettre ici ?

Personnellement, quand je développe, je garde toujours en tête les règles des Calisthenics Objects.

Elles sont très utiles pour se poser les bonnes questions pendant le développement. Par exemple :

  • Quelle est la différence entre Baby et Adult ? Est-ce que ce n’est pas plutôt un état défini par son âge ?
  • Est-ce qu’un objet de type Food peut changer de calories ? Ou est-ce que c’est à l’appelant de définir le niveau d’un objet Drink ?
  • Une personne peut-elle changer de nom/prénom ?
  • Est-ce que l’énergie d’un personnage ne devrait pas finalement être gérée par son sommeil/alimentation ?
  • Qu’est-ce qu’implique, en termes d’impact sur tout le code, d’ajouter un nouvel indicateur dans la classe People ?

Quelle est la différence entre Baby et Adult ? Est-ce que ce n’est pas plutôt un état défini par son âge ?

En fait, dans le cahier des charge ils précisent: " Il doit y avoir au moins trois différentes sortes de personnages possibles (par exemple bébés, enfants et adultes)."

Est-ce qu’un objet de type Food peut changer de calories ? Ou est-ce que c’est à l’appelant de définir le niveau d’un objet Drink ? Une personne peut-elle changer de nom/prénom ? Est-ce que l’énergie d’un personnage ne devrait pas finalement être gérée par son sommeil/alimentation ?

Erreur de logique je pense….. c’est corrigé.

Qu’est-ce qu’implique, en termes d’impact sur tout le code, d’ajouter un nouvel indicateur dans la classe People ?

RomHa Korev

c’est quoi un indicateur? un membre?

nouveau diagramme avec ajouts et corrections :

te
te

Personnellement, quand je développe, je garde toujours en tête les règles des Calisthenics Objects.

RomHa Korev

C’est marrant parce qu’autant les commentaires sur le diagramme proposés (dans le reste du message) sont très pertinents et intéressants, autant je suis allé voir (pour comprendre le lien) cette histoire de "object calisthenics" et c’est en gros n’importe quoi, on utilise un mot grec compliqué pour désigner une suite de règles sans aucun rapport les unes entre les autres (ne jamais utiliser le mot clé else…), ni avec les questions de conception dans ce fil ou les pistes de réponses (fort utiles) fournies dans le post.

Sans doute que l’article n’est pas très clair, dans ce cas. J’avoue l’avoir parcouru rapidement et il me paraissait plus pertinent que de lancer les règles sans la moindre explication.

Cependant, cela reste un exercice très intéressant et les règles ne sont pas à suivre à la la lettre mais plutôt des questions à se poser sur des concepts généraux comme SOLID.

Par exemple, l’interdiction du else n’est autre que le principe de la responsabilité unique et du retour au plus tôt. Elle revient à se demander pourquoi est-ce que j’ai besoin d’utiliser un else ? Si la réponse est parce que j’ai d’autres instructions à la suite, c’est que je pourrais sortir le bloc if/else dans une nouvelle fonction.

Quant aux autres règles, elles donnent de bonnes indications sur ce qui ne va pas dans le diagramme. Par exemple, la règle interdisant de wrapper les primitives et de ne pas avoir plus de deux attributs me feraient englober les positions X et Y dans une nouvelle classe (ce qui rendra plus simple l’ajout d’une troisième dimension). Pareil pour le nom et prénom et les différents états (même si là je m’autoriserais à en avoir plus de deux…).

En fait, dans le cahier des charge ils précisent: " Il doit y avoir au moins trois différentes sortes de personnages possibles (par exemple bébés, enfants et adultes)."

"Trois sortes de personnages" n’implique pas forcément trois classes différentes. Cela peut simplement être la représentation que tu en fais dans ton interface graphique.

c’est quoi un indicateur? un membre?

Je pensais plus à hygiene, hunger, energy, etc.

Il y a encore des points que tu peux revoir. Par exemple, est-ce que l’attribut money de ta classe Family n’est pas redondant avec celui de la classe Adult (autrement dit, est-ce que ce n’est pas plus simplement la somme des attributs money de chaque Adult) ?

Il faudrait aussi rendre les actions un peu plus explicites, à mon avis. Toujours sur la classe Family, que signifie une fonction add ? Ne serait-ce pas plus logique d’avoir makeBaby(), marry(), etc. ?

+1 -0

Par exemple, est-ce que l’attribut money de ta classe Family n’est pas redondant avec celui de la classe Adult (autrement dit, est-ce que ce n’est pas plus simplement la somme des attributs money de chaque Adult) ?

en fait l’attribut money de la classe Family représente l’argent sur le compte de la famille, qui en toute généralité est différent de la somme des montants des comptes des adultes.

Toujours sur la classe Family, que signifie une fonction add ? Ne serait-ce pas plus logique d’avoir makeBaby(), marry(), etc. ?

Family est une "classe statique", c’est à dire qu’elle se comporte comme la classe Math en Java : attributs/méthodes toutes static et public,

c’est une classe qui représente l’état de la famille. Family.members permet d’accèder à la liste des membres, Family.money à l’argent du compte familial, il suffit de taper Family.addMoney(int) pour ajouter de l’argent…

peut-être que mettre Family en tant que classe statique est un mauvais choix ? mais pourquoi dans ce cas?

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte