Deuxième semestre

Introduction à la programmation objet, à la documentation et aux tests

Objectifs

Découvrir la programmation orientée objet. Elle est au cœur des langages de programmation moderne, elle permet de compartimenter les données et leur traitement et elle facilite le développement modulaire d’applications. L’objectif principal est de comprendre les concepts de la programmation orientée objet en concevant des classes simples, éventuellement organisées de façon hiérarchiques. ; Apprendre à structurer son code. Les fonctionnalités doivent être réparties dans des modules, des sous- paquets et des paquets suivant une structure logique. ; Prendre le réflexe de documenter son code. La documentation de code permet d’indiquer aux développeurs et aux utilisateurs ce que fait chaque fonctionnalité. Elle inclut une description des arguments attendus en entrée ainsi que des variables renvoyées en sortie. Elle peut également être utilisée pour générer automatiquement la documentation d’un paquet. ; Apprendre à lever des exceptions. Les exceptions permettent d’identifier d’éventuels problèmes dans le code et sont levées lorsqu’un problème est rencontré. La pile d’appels permet d’identifier quelles parties du code ont exécutées avant la levée de l’exception. ; Prendre le réflexe d’écrire et d’exécuter des tests. Les tests sont essentiels au développement de tout code pour s’assurer que chaque module fonctionne correctement lorsqu’il est isolé des autres modules (tests unitaires) et lorsqu’il interagit avec d’autres modules (tests d’intégration), et que les fonctionnalités du paquet marchent correctement (tests fonctionnels). ; Respecter un style de code. Il est plus facile de lire, et donc de comprendre, du code lorsque le même style de code est utilisé par tous les développeurs. Il est donc important de prendre des bonnes habitudes concernant le style de code écrit. ; Implémenter les concepts mentionnés ci-dessus dans un langage de programmation. Le langage de programmation utilisé dans ce cours est Python. ; Apprendre le formalisme UML. Celui-ci fixe les conventions nécessaires à la description des fonctionnalités attendues vis-à-vis d’un code, la description du lien entre les données, la description des cas d’usage, etc. C’est un langage puissant pour permettre la communication entre développeur et maître d’œuvre, mais aussi pour aider le développeur d’une application à en concevoir les composantes.

Plan

​Programmation orientée objet : classe, instance, attribut (public, protégé, privé) d’instance et de classe, méthode (publique, protégée, privée) d’instance, de classe et statique, héritage, abstraction. ; Structuration du code : paquets, sous-paquets, modules. ; Documentation du code : docstrings, doctests. ; Exceptions : pile d’appels, types d’exceptions, messages d’erreurs. ; Tests : tests unitaires, test d’intégration, tests fonctionnels. ; Style de code : PEP8, PEP257, Ruff, Black. ; Diagrammes UML : diagrammes de classes, diagrammes d’instances.

Prérequis

​Algorithmique : structures de données (variables), structures de contrôle (séquences, boucles). ; Programmation en Python : variables, fonctions, types natifs (nombres entiers, nombres flottants, chaînes de caractères, listes, t-uplets, ensembles, dictionnaires), boucles (for, if elif else, while).