UNE CALCULATRICE BIEN FAITE

William44290
Messages postés
15
Date d'inscription
vendredi 20 février 2009
Statut
Membre
Dernière intervention
30 avril 2011
- 30 avril 2011 à 10:30
cs_Julien39
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
- 1 mai 2011 à 18:59
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/53104-une-calculatrice-bien-faite

cs_Julien39
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
366
1 mai 2011 à 18:59
En fait dans mon code, j'ai considéré que les listeners étaient la partie contrôleur, ils sont propres à Swing mais peuvent êtres adaptés pour l'utilisation avec d'autres types d'ihm

J'en ai utilisé assez récemment pour faire une ihm avec jsf, il suffit d'ajouter une méthode à ton listener qui ne prend pas de paramètre et fait un appel à actionPerformed. Mais bon, je veux bien accepter que le MVC proposé n'est pas vraiment un pur modèle MVC, il ne fait pas intervenir d'ailleurs la partie notification du modèle à la vue.

Mais bon, mon but pour cette source était surtout de proposer une modélisation objet du métier (avec les quatre classes du modèle), là dessus, c'est me semble il assez propre, mais un peu noyé sous les design pattern. Je vais faire une version simplifiée du code, je te dirai quand je l'aurai postée.

Dans le modèle, j'ai définit l’opérateur comme un objet métier qui contient un symbole (+ par exemple) cela fait donc bien a mon sens partie du modèle, pour la fonction calculer, c'est vrai, on aurait pu la mettre dans le contrôleur, mais il ne me semble pas totalement irrationnel de le faire dans le modèle.

J'ai des choses à dire sur ta source que je trouve intéressante, mais je vais le faire sur ton code.
William44290
Messages postés
15
Date d'inscription
vendredi 20 février 2009
Statut
Membre
Dernière intervention
30 avril 2011

1 mai 2011 à 16:31
julien tu trouveras sur ce lien http://www.javafr.com/codes/CALCULATRICE-BIEN-FAITE_53110.aspx ma version d'une calculatrice MVC. Je suis vraiment pas fan de ce modèle mais ceci te fera une comparaison.
William44290
Messages postés
15
Date d'inscription
vendredi 20 février 2009
Statut
Membre
Dernière intervention
30 avril 2011

1 mai 2011 à 10:44
bon, la discussion commence a devenir interressante :

les interfaces pour les "touche" n'ajoute rien à la démonstration et rien du point de vue fonctionnel autant coder directement le actionlistener dans les class touche...

le "IToucheOperateurView" lui ne fait rien et ne sert à rien doit être supprimer.

ToucheOperateurView ne sert par à grand chose soit le supprimer soit faire la même chose pour les fonctions egale clear et virgule.

En fait ton ambition va au dela de MVC puisque tu intégres des designs pattern factory/singleton. je trouve que cela pollue totalement la démonstration.

De fait en l'état je ne suis plus capable de réfléchir sur le bien fondé de ton découpage MVC exemple en principe les opérateurs appartiennent à l'interface utilisateur donc font parti du contrôleur. là je ne vois plus rien. (D'ailleurs dans la vue les addActionListener ce font sur des objets ToucheOperateurControleur bizarre non ?) Perso pour moi la vue ne serait que l'affichage de la valeur (et j'aurais fais une vue décimal et une vue Hexa) en conséquence j'aurais eu deux contrôleurs différents en rapport avec les vues.

il faut peut être faire une version simple sans design pattern puis une autre version dite avancée.
cs_Julien39
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
366
1 mai 2011 à 08:42
William44290 : Suite à tes commentaires, j'ai corrigé les bugs que tu m'avais signalé, à vrai dire, je n'avais meme pas vérifié, le but de cette source était en fait de créer une calculatrice avec des concepts objet , en effet, si tu regardes les autres calculatrices sur ce site, elles ne sont pas codées avec les concepts objet :
http://www.javafr.com/codes/CALCULATRICE-SCIENTIFIQUE_42003.aspx
http://www.javafr.com/codes/CALCULATRICE_30632.aspx

D'ou le titre (certes un peu prétentieux vu l'ihm) calculatrice bien faite, mais c'était pour donner envie de regarder le code. Un titre plus objectif aurait été "calculatrice réalisée à l'aide des concepts objet".

Pour l'évaluation de la qualité d'une application, bien sur que tu t’intéresses aux scénarios exceptionnels mais, ce n'est pas la partie fondamentale du test. J'ai dit ca parce que sur tes trois commentaires, tu as souligné trois bugs sans même dire si le calcul fonctionnait lors d'une utilisation normale.

Je ne comprend pas pourquoi tu parles de "tentative" de MVC, j'ai implémenté le MVC proposé par Swing avec les listeners qui représentent le contrôleur de l'application. Peux tu m'en dire plus ?

J'ai ajouté un diagramme de classes à la place de la capture, il faudra peut être un moment pour qu'elle soit actualisée.

Merci pour l’intérêt que tu portes à cette source
William44290
Messages postés
15
Date d'inscription
vendredi 20 février 2009
Statut
Membre
Dernière intervention
30 avril 2011

30 avril 2011 à 19:01
bah au niveau conception, franchement je vois pas l'avantage. C'est compliqué, quasi illisible.

Si encore il y avait plusieurs vues (vue simple/vue scientifique) et plusieurs modèles(calcul standard/polonaise inversée) pour démontrer l'avantage de ce mode de conception mais là je n'ai rien vu de telle.

Je comprends l'objectif pédagogique et je salue l'effort de publication.
Un schéma peut-être pour expliquer serait bienvenu.

(Personnellement je trouve que les bugs même non bloquants sont insupportables, j'ai peut-être trop l'habitude des réactions des clients), Je trouve que ta façon d'évaluer la qualité d'un logiciel est franchement fantaisiste.

bref je pense qu'il faut faire preuve d'un peu plus d'ambition et proposer quelque chose de correctement bouclé.

Ou alors un titre moins raccoleur m'aurrait causé moins de déception :
"Tentative MVC sur un classique, la CALCULATRICE"
Afficher les 9 commentaires