#Python : Programmer une calculatrice en orienté objet

Dernière mise à jour du code :

http://pastebin.com/Hu472k4k

calculatrice_new

Il y a quelques semaines, j’ai rédigé un article sur une calculatrice que j’avais programmée en Python. A cette époque, je découvrais le langage Python ainsi que le module Tkinter et cette calculatrice m’avait permis de mettre en pratique les connaissances acquises au fil des chapitres. Au tout début, le code était bancal et la calculatrice était infectée de bugs. Puis, j’ai appris à structurer mon code et le résultat était beaucoup plus propre.

La calculatrice fonctionnait du feu de Dieu mais le problème est qu’on y trouvait une palanquée de variables globales… Et ça, c’est pas génial. Dans des programmes beaucoup plus lourds, c’est un véritable nid à bugs.

Et puis j’ai abordé le chapitre des classes et des méthodes. J’ai découvert ces nouveaux concepts qui permettaient d’explorer le monde de la programmation orientée objet (POO). Du coup, je me suis dit :

Tiens! Mais dans la vie normale cette calculatrice, c’est un objet. Pourquoi donc ne pourrais-je pas utiliser la programmation orientée objet pour justement fabriquer un objet? Ce serait une bonne idée, non?

Fort de cette réflexion profonde, je suis parti à l’assaut de cette méthode de programmation très puissante et j’ai retravaillé le code de ma calculatrice. J’ai créé une classe Clavier qui contient une méthode constructeur mais également une méthode touches permettant d’instancier toutes les touches de la calculatrice. Chaque touche est un objet, comme dans la vraie vie en fait!

Et puis j’ai créé une deuxième Classe Opérations qui permet d’instancier les différentes opérations d’affichage et de calcul (soustraction, multiplication, etc…). Donc, ces opérations sont également des objets, mais des objets abstraits… Si vous ne comprenez rien à ce que je raconte, c’est normal. Je ne peux pas vous en vouloir.

Le gros avantage avec la programmation orientée objet, c’est que tous les attributs sont encapsulés dans des classes et des méthodes. Ils n’interfèrent pas avec les attributs des autres objets. Donc, il n’y a pas de risques de conflits. C’est un peu abstrait, j’en conviens, mais c’est une manière de coder différente de la programmation impérative et il n’y a pas d’autre choix que de la mettre en pratique si on veut en découvrir toutes les facettes.

Au bout du compte, si vous lisez attentivement mon nouveau code, vous constaterez qu’il n’y a plus de variables globales… Verschwunden! comme on dit ici en Allemagne. Elles ont disparues. Le code n’est pas plus court mais il est écrit de telle manière qu’il en devient portable. Il est découpé en portions qui, certes, s’imbriquent et interagissent, mais il ne s’agit plus d’un enchevêtrement de variables et de fonctions difficile à démêler (même pour celui qui l’a écrit).

Donc, en guise de conclusion, je dirais que c’est mieux.

Publicités

Auteur : Ordinosor

Bienvenue sur Miamondo, mon blog personnel. "Mia mondo", c'est de l'espéranto et ça signifie "Mon monde" en français. Je m'appelle Benoît alias Ordinosor, Français expatrié en Allemagne. Mes centres d'intérêt sont les distributions GNU/Linux, le langage de programmation Python, la science-fiction et l'espéranto.

2 réflexions sur « #Python : Programmer une calculatrice en orienté objet »

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s