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, les outils pour développer des applications simples traitant des données. Parmi les rnconcepts abordés, on retrouve :  La programmation orientée objet (POO). Elle est au cœur des langages de programmation modernes, elle permet de rncompartimenter les données et leur traitement, et elle facilite le développement modulaire d’applications. L’objectif principal est rnde comprendre les concepts de la programmation objet en concevant des classes simples, éventuellement organisées de façon rnhiérarchiques.  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 rnles 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 rnautomatiquement 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é. rnLa 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 rnisolé des autres modules (tests unitaires) et lorsqu’il interagit correctement avec d‘autres modules (tests d’intégration), et que les rnfonctionnalité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.  L’encapsulation de fonctionnalités dans des « bibliothèques ».  Le formalisme UML. Il fixe les conventions nécessaires à la description des fonctionnalités attendues vis-à-vis d’un code, la rndescription du lien entre les données, la description des cas d’usage, … C’est un langage puissant pour permettre la communication rnentre 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 rn/ privée) (d’instance / de classe), héritage, abstractionrn Structuration du code : module, paquetrn Documentation du code : docstrings, doctestsrn Exceptions : pile d’appels, types d’exceptions, messages d’erreursrn Tests : tests unitaires, tests d’intégrations, tests fonctionnels, pytestrn Style de code: PEP8, PEP257rn Diagrammes UML : diagrammes de classes et d‘instances, relations entre classes

Prérequis

​Algorithmique et complexité​