Coder une Calculatrice Windows en C# - C'est le test de la calculette |
Alors permettez que je vous présente ma solution.
Ce code source fonctionne avec toute version de Visual Studio mais cette solution a été développée avec Visual Studio Community 2017.
Visual Studio Community 20017 |
Cahier des charges de la Calculatrice en C#
On va d'abord se fixer quelques limites dans un mini cahier des charges.Présentation du projet
Il s’agit d'écrire un programme qui fasse la même chose que la Calculatrice livrée avec Windows, dans sa version "standard". On ne développera pas la version "calculatrice scientifique".Pour simplifier encore un peu le développement
On ne développera pas le menu, ni l’aide, ni les fonctions suivantes : "Rac", "%", "1/x".
La calculatrice ressemblera donc à ceci :
Maquette de la Calculatrice Windows en C# |
Et on va se fixer un temps limite développement du projet disons 4 heures.
Livraison du projet
Ecrire l'application comme s'il s'agissait d'une "vraie" application professionnelle, en vue d'être commercialisée.Le code source de l'application doit être fourni, sous la forme d'un fichier .ZIP contenant le répertoire complet du projet C#.
Le projet en C#
Choix du Template de départ : Application Windows Forms (.NET Framework)
Donc on y a va, on fait : Ficher->Nouveau->Projet, on choisi :
Solution Visual Studio Calculette |
Structure de la solution du projet :
Structure de la Solution Calculatrice |
On verra que l'on va utiliser deux objets. La Form s'appelle FormCalculatrice et j'ai ajouté un petit fichier "readme.txt" ça fait plus pro. On peut y écrire par exemple l'historique du développement ou une ToDoList des chose qu'il reste à faire.
Conception Objet de la Calculatrice
On a besoin de deux objets, l'un pour effectuer le Calcul, l'autre pour gérer les fonctions Mémoires.
Objet Calcul
Vous trouverez les sources en bas de cet article, je ne vais donc pas trop détailler mais simplement on imagine que l'objet Calcul.cs prendra 3 états :
Les trois états de l'objet Calcul.cs |
Objet Memoire ou Memory
Vous rappelez-vous à quoi servent les touches mémoires de la Calculatrice ?
MC : Memory Clear
MR : Memory Read
MS : Memory Save
M+ : Memory Add
Heureusement, j'avais un bon vieux Windows XP sous la main, il est vrai pour l'instant que l'aspect de cette calculatrice ressemble plus à celle de Windows XP qu'à celle de Windows 10... en tous les cas celle que j'ai sous Windows 7 ne me présente plus l'aide de la Calculette Windows et son aspect est très différent mais restons à nos moutons.
Il m'a suffit de faire "bouton droit" sur la touche et de Cliquer sur "Qu'est ce que c'est ?" pour obtenir la réponse :
Calculatrice en C# Trouver les fonctions mémoires |
L'application Calculatrice m'affiche maintenant la réponse à quoi sert la touche "MC" :
Calculatrice fonctions mémoires |
Voici l'aide correspondante à la touche "MC" de la Calculatrice. L'objet mémoire aura donc trois états :
Les trois états de l'objet Memory.cs |
Conception de l'IHM
Aujourd'hui on dit UI ou UX bref, elle nous est donnée donc on copie au plus prêt :
Windows Forms de la Calculatrice |
Il faut un outil de graphiste pour trouver la taille des boutons en pixels, je vous donne le résultat :
- Width : 35
- Height : 25
Programme principal de la Calculette
Pour la Testabilité & Evolution tous les boutons "chiffre" sont câblés sur la même gestion d'events :
buttonNumber_Click() |
Tous les boutons "Operands" sont également câblés ainsi :
buttonOperand_Click() |
On y gère l'état de l'objet "Calcul" qui passe de AquireOperand1 à BeginAquireOperand2
Enfin la gestion de l'events clique sur "Equal" qui exécute le calcul en utilisant l'Opérand1 et l'Opérande2 :
buttonEqual_Click() |
Qui prend en compte le fonctionnement particulier de la Calculette comme par exemple lorsque le résultat du calcul précédent devient l'Opérande1 pour le calcul suivant.
Je vous laisse découvrir le reste des codes sources dans le .ZIP à télécharger à la fin de cet article.
Gestion des touches tapées au clavier dans la Calculette
La Calculatrice Windows est utilisable au clavier numérique pad et touches d'opérations. Pour faire la même chose dans notre Calculette nous allons cabler l'event KeyPress de la Form :
FormCalculatrice_KeyPress() |
Code source de la fonction FormCalculatrice_KeyPress()
FormCalculatrice_KeyPress() |
Astuce concernant la gestion des touches du clavier
Si vous en restez là, cela ne fonctionne pas. En effet il faut passer l'event à la Form sinon elle ne le gère pas. Pour ce faire il faut setter la propriété "KeyPreview" de la Form à True.
Pour gérer les événements clavier mettre à True la propriété KeyPreview |
Conclusion
Voilà c'est fini ! En gros les grandes parties de ce petit projet "Test de la Calculette Windows". Qui n'est finalement pas si petit.
C'est vraiment désobligeant quand on vous demande d'effectuer ce genre de test pendant l'entretien d'embauche alors que vous avez une expérience comme la mienne en développement de logiciel.
Que même s'il existe un "mini" cahier des charges les pièges sont nombreux et vous ne manquerez pas de tomber dedans. Donc j'espère avoir cassé les pattes de ces recruteurs peu scrupuleux.
La prochaine fois nous verrons comment coder une calculette en WPF avec le modèle MVVM (Model View ViewModel) de Prims et l'utilisation d'un EventToCommand.
Ou peut-être que l'on choisira ASP.NET avec le modèle MVC (Model View Controller) pour en faire une application Web, ou bien en faire une application Multi-plateforme avec ASP.NET Core et Angular2.
Revenez nous voir.
Download Source Code - Calculator in C#
Have fun! Don't forget to go to the beach!
22/10/2018 : 2294
22/06/2019 : 3944 quel succès apparemment le sujet vous intéresse.
C'est vraiment désobligeant quand on vous demande d'effectuer ce genre de test pendant l'entretien d'embauche alors que vous avez une expérience comme la mienne en développement de logiciel.
Que même s'il existe un "mini" cahier des charges les pièges sont nombreux et vous ne manquerez pas de tomber dedans. Donc j'espère avoir cassé les pattes de ces recruteurs peu scrupuleux.
La prochaine fois nous verrons comment coder une calculette en WPF avec le modèle MVVM (Model View ViewModel) de Prims et l'utilisation d'un EventToCommand.
Ou peut-être que l'on choisira ASP.NET avec le modèle MVC (Model View Controller) pour en faire une application Web, ou bien en faire une application Multi-plateforme avec ASP.NET Core et Angular2.
Revenez nous voir.
Download calculator sources code
Here on github :
Here you can find Calculator sources code
Have fun! Don't forget to go to the beach!
Statistiques over years
2017 : 1826 visites22/10/2018 : 2294
22/06/2019 : 3944 quel succès apparemment le sujet vous intéresse.
24/11/2020 : 7140 bientôt tout le monde saura coder une calculette.
17/11/2022 : 13302
En 2022, j'ai pu exécuter les sources sur ma machine Windows 10 avec Visual Studio Community 2019.
Cet article vous a plu vous a aidé dans votre pratique de développeur, surtout laissez-moi votre commentaire.
Même, juste un petit merci, would be please ;)
Tres bon tuto merci beaucoup , je galerais pour trouver le code convenable à m+ mc et m- merci encore
RépondreSupprimer