Conception d'une calculatrice (objet)

Résolu
Durf Messages postés 2 Date d'inscription mardi 29 avril 2014 Statut Membre Dernière intervention 29 avril 2014 - Modifié par cs_Julien39 le 1/05/2014 à 20:13
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 1 mai 2014 à 20:01
Bonjour à tous,

voilà j'ai commencé l'apprentissage du JAVA. J'avais quelques notions en programmation mais n'ayant jamais pratiqué assidument je suis reparti de zéro pour être sur. Bref, c'est pour la petite histoire...

Venons-en au vif du sujet ! Je m'exerce en réalisant la traditionnelle calculatrice pour m'assurer de ma compréhension des JFrame, JButton et autre JPanel. Mais je me pose une question sur l'architecture du projet. Par cela, j'entends :

Pour créer ma calculatrice je créé une méthode avec un type de bouton perso et une pour mon écran (label).

La convention (si il y en a une ?) est-elle de plutôt créer une class externe (exemple un package nommé interface et deux classes, une bouton et une ecran) ou tout mettre dans ma classe Main ?

Alors je sais que pour une minuscule projet comme mon TP calculatrice ça ne change rien mais c'est histoire de prendre de bonne habitude.

Pour la solution "classe externe" je crois y voir l'intérêt de pouvoir modifier plus simplement la methode et avoir une lisibilité plus grande.

Pour la solution "tout dans le Main" j'y vois la solution de simplicité en terme de programmation car pour le moment je galère à essayer de mettre en place la premier ;-p.


Merci a tous par avance de vos précieux retours et conseils.

Cordialement.

Durf

4 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
29 avril 2014 à 09:37
Salut,

La décomposition en classe de ton projet t'appartient, il n'y a pas de "meilleure" solution, je peux t'en proposer une :
- Une classe Abstraite Bouton qui étend JButton
- Une classe BoutonChiffre qui étend Bouton
- Une classe BoutonOperateur qui étend Bouton
- Une classe Ecran qui étend JLabel
- Une classe Calculatrice qui étend JPanel

Calculatrice est un singleton accessible partout dans le code avec la méthode getInstance().
Les classes Bouton servent à modifier les valeurs de l'écran et envoient dans le singleton calculatrice les éléments qui permettront de faire le calcul.
La classe Ecran affiche

C'est peut être un peu complexe si tu commence mais cela te donnera une idée de ce que tu peux faire.
Tu peux opter pour une décomposition plus simple ou prendre celle là. Si tu ne comprend pas certains choses, dis le moi.

Bon courage.
2
Durf Messages postés 2 Date d'inscription mardi 29 avril 2014 Statut Membre Dernière intervention 29 avril 2014
29 avril 2014 à 13:34
Tout d'abord, merci beaucoup pour ces précisions.

@cs_Julien39 :

Ok j'avoue que dans mon idée première se rapprochait de ta solution à ceci près que j'avais une classe Bouton sans "sous-classe". Mais ta proposition a le mérite d'être (en tout cas pour moi) explicite.
Si je comprends bien la classe Abstraite Bouton définit les paramètres graphiques ou visuels du bouton en gros la forme, taille, fond ect...
Et les deux autres classe bouton la création des différents bouton en fonction de leur utilisation (chiffre ou opérateur) mais en utilisant la méthode de création de la classe Abstraite.

Ai-je bien compris ?

Donc en gros je je le voulais c'est possible de faire un programme même énorme totalement dans le main ?

@Pharaonju :
J'utilise Eclipse !


Cordialement

Durf
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
1 mai 2014 à 20:01
Oui, tu as bien compris l'idée.

Tu peux toujours tout faire dans une main, et même redéfinir des fonctions statiques dans la classe principale.

Mais dans ce cas là, tu ne fais pas de la programmation objet. Ce n'est ni bien ni mal, c'est un choix.

Mais tu risques d'avoir un code énorme et assez peu lisible, les objets Swing sont très clairement faits pour être utilisés avec une décomposition en classes de ton code, et donc, ca risque d'être très lourd à gérer.
0
Pharaonju Messages postés 7 Date d'inscription lundi 11 juin 2007 Statut Membre Dernière intervention 29 avril 2014
29 avril 2014 à 09:51
Bjr. Trouve tois un IDE comme Netbeans. c'est plus facile.

--
-2
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
29 avril 2014 à 11:42
Quel rapport avec la question ?
0
Rejoignez-nous