Calculatrice Scientifique
Presentation
Objectif principal : Une calculatrice scientifique avec interface graphique. Les operations de base plus trigo, log, puissances, factorielle, et un historique des calculs.
Technologies utilisees : Java avec Swing pour l'interface. Pattern Command pour les operations (undo/redo). BigDecimal pour la precision. Parser d'expressions pour les calculs complexes.
Fonctionnalites cles : 4 operations + sin, cos, tan, log, ln, sqrt, puissance, factorielle. Mode degres/radians. Historique avec rappel. Memoire (M+, M-, MR). Clavier + souris.
Livrables attendus : Application standalone en JAR. Interface qui ressemble a une vraie calculatrice. Tests unitaires pour les calculs.
Calendrier previsionnel : Deux semaines. Le parser d'expressions avec les priorites d'operateurs c'etait le plus technique.
Parties prenantes & criteres de succes : TP de Java au premier semestre. Premier vrai projet avec interface graphique.
Le Defi
Evaluer des expressions comme "2+3*4". La multiplication doit etre calculee avant l'addition. Et les parentheses changent tout. Un simple eval() ne suffit pas, faut un vrai parser.
La Solution
L'algorithme Shunting Yard de Dijkstra. Il convertit l'expression en notation polonaise inverse (postfixe) en respectant les priorites. Ensuite l'evaluation est triviale avec une pile. Les fonctions (sin, cos) sont traitees comme des operateurs unaires.
Architecture Technique
Classe Calculator qui gere l'etat (expression courante, memoire). Interface Operation avec implementations Add, Multiply, Sin, etc. (pattern Command). Classe ExpressionParser avec Shunting Yard. Classe CalculatorUI en Swing avec GridLayout pour les boutons. Classe History pour l'historique.
Points Cles
- Parser d'expressions complet
- Fonctions scientifiques
- Historique avec rappel
Apercu
Resultats & Apprentissages
La calculatrice marche bien, j'ai eu 17/20. Shunting Yard c'est elegant une fois qu'on a compris. Swing c'est vieux mais ca marche. J'utilise encore cette calculatrice parfois quand la calculatrice Windows bug.
Evolutions Futures
Mode graphique pour tracer des fonctions. Calcul symbolique (derivees). Variables et constantes personnalisees. Conversion d'unites integree.