Deuxième semestre

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

Objectifs

​L’objectif du cours est de présenter la démarche, les savoir-faire et les outils pour développer des applications simples traitant des données. Parmi les concepts abordés, on retrouve :

​​La programmation orientée objet (POO). Elle est au cœur des langages de programmation modernes, permet de compartimenter les données et leur traitement, et facilite le développement modulaire d’applications. L’objectif principal est de comprendre les concepts de la programmation objet en concevant des classes simples, éventuellement organisées de façon hiérarchique.​

​​La structuration du code. Les fonctionnalités sont réparties dans des modules et des paquets suivant une structure logique.

​La documentation du code. Elle permet d’indiquer aux développeurs et aux utilisateurs ce que fait chaque implémentation, par exemple les descriptions et les types de variables attendues en entrée et renvoyées en sortie. Elle peut également être utilisée pour générer automatiquement une documentation d’un paquet.

​Les exceptions. Elles permettent d’identifier d’éventuels problèmes dans le code et sont soulevées lorsqu’un problème est rencontré. La pile d’appels permet d’identifier quelles parties du code ont été exécutées avant de soulever l’exception.​

​Les tests. Ils sont essentiels au développement de toute code pour s’assurer que chaque module fonctionne correctement lorsqu‘il est isolé des autres modules (tests unitaires) et lorsqu’il interagit correctement avec d‘autres modules (tests d’intégration), et que les fonctionnalités du paquet marchent correctement (tests fonctionnels).

​Le style de code. Il est plus facile de lire et comprendre du code lorsque le même style de code est utilisé par tous les développeurs.

​L’implémentation de ces concepts dans un langage de programmation. Le langage de programmation utilisé dans ce cours est Python.

​​Le formalisme UML. Il 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 / de classe), méthode (publique / protégée / privée) (d’instance / de classe), héritage, abstraction

​Structuration du code : module, paquet

​Documentation du code : docstrings, doctests

​Exceptions : pile d’appels, types d’exceptions, messages d’erreurs

​Tests : tests unitaires, tests d’intégrations, tests fonctionnels, pytest

​Style de code: PEP8, PEP257

​Diagrammes UML : diagrammes de classes et d‘instances, relations entre classes

Prérequis

​Algorithmique et complexité​