Chapitre 1 : Fondements de la POO - Critères de qualité d un logiciel - Types Abstraits de Données (TAD) - Modularité - POO vs Programmation procédurale POO \ N.EL FADDOULI 2 Critères de qualité d un logiciel La correction : Un logiciel doit exécuter exactement les tâches définies par sa spécification et fournir exactement les résultats demandés. Robustesse: le logiciel est capable de bien fonctionner dans des conditions anormales. L extensibilité : Possibilité d intégrer facilement de nouvelles fonctionnalités suite aux changements de spécification. L efficience : Temps d exécution dexécution, taille mémoire, etc. La portabilité : Facilité d exploiter un même logiciel dans différentes implémentations. La réutilisabilité : La possibilité d utiliser certaines parties du logiciel pour résoudre un autre problème. POO \ N.EL FADDOULI 3 1
Types Abstraits de Données (TAD) Un TAD est un ensemble d opérations pour lesquelles on définit une syntaxe et une sémantique et sont applicables à un ensemble d objets. Exemples: Pile empiler(), dépiler(), sommet() Ensemble ajouter, supprimer, appartient Rectangle tracer(), périmètre(), surface(), zoomer(), Fenêtre Afficher(), cacher(), agrandir(), déplacer() Polynôme Evaluer, Dériver, Somme, Produit, On s intéresse au concept du type du point de vue logique et non pas à son implémentation (les structures de données utilisées) POO \ N.EL FADDOULI 4 Types Abstraits de Données (TAD) Formellement un TAD est défini par: 1) Sa spécification qui indique: Sa signature (son interface): sa syntaxe, les noms des types utilisés pour sa définition ainsi que les noms des opérations et les types de leurs arguments Un ensembles d axiomes définissant les propriétés des opérations. Cet ensemble doit être consistant (pas de contradiction) et complet (décrire toutes les propriétés du type abstrait). Ces axiomes indiquent les Pré-conditions (Ce qu'exige une opération) et les Post-conditions (ce qu'elle garantit) 2) Sa représentation elle décrit comment les objets du TAD sont implémenté (structure de donnée utilisées). POO \ N.EL FADDOULI 5 2
TAD: Spécification Exemple: Type Pile Utilise élément Opérations InitPile : -- Pile {crée une pile vide} PileVide: Pile -- booléen {détermine si la pile est vide } Sommet: Pile -- élément {donne le sommet de la pile} Fin Empiler : Pile x élément -- Pile {ajoute un élément à la pile} Dépiler : Pile -- Pile {élimine le sommet de la pile} POO \ N.EL FADDOULI 6 TAD: Spécification Exemple: (suite) Les axiomes: p: Pile e: élément PileVide(p)=Vrai Dépiler(P) : Erreur PileVide(p)=Vrai Sommet(P): Erreur Dépiler (Empiler (p, e)) = p Sommet (Empiler (p, e)) = e PileVide (InitPile ( )) = Vrai PileVide (Empiler (p, e)) = Faux POO \ N.EL FADDOULI 7 3
TAD: Spécification Il y a parfois une opération particulière appelé constructeur et qui spécifie comment créer un objet du type. Exemple: Constructeur du type Pile InitPile : -- Pile Les données d un objet d un TAD sont accédées au travers d opérations simples appelées fonctions d accès (getters et setters) permettant d'avoir la valeur d une donnée ou la modifier. POO \ N.EL FADDOULI 8 TAD: Représentation A ce stade on dois choisir les structures de données à utiliser et développer les algorithmes des opération du TAD. Exemple: Type Pile Représentation tableau t[max] entier s Opérations InitPile(p) { p.s= -1; } PileVide(p) { return p.s < 0; } PilePleine(p) { return p.s = (MAX-1); } Empiler (p, e) { p.s= p.s+1; p.t[p.s] = e; } Depiler(p) { p.s = p.s-1; } Sommet(p) { return p.t[p.s]; } Fin POO \ N.EL FADDOULI 9 4
TAD: Représentation On doit également traiter les exceptions dans les algorithmes des opérations en utilisant les pré-conditions déjà précisées dans les axiomes. Exemple: Empiler (p, e) { Si PilePleine(p) Ecrire_Erreur("Pile Plaine") Sinon p.s=p.s+1 p.t[p.s]=e FinSI } Exercices (1) Modifier les autres opérations pour traiter les cas d exceptions (2) Ecrire un algorithme qui détermine si un mot et palindrome POO \ N.EL FADDOULI 10 Fondements de la POO - Production de logiciels de qualité en respectant les contraintes de temps et de coûts Moyens techniques et organisationnels POO: Répondre aux besoins de réutilisation de maintenabilité - L Abstraction: Manipulation de données par des opérations spécifiques indépendamment des détails de leur implantation (structure interne). - La Modularité: Regroupement des procédures ou fonctions et des données manipulées en unités indépendantes -- réutilisation, encapsulation POO \ N.EL FADDOULI 11 5
Modularité Pour réduire la complexité d'un système, on le décompose en plusieurs sous-systèmes appelés modules. Ils doivent être indépendants et réutilisables. Un module a une interface bien spécifiée qui précise les fonctions et les procédures ainsi que les données à utiliser (services). Ces fonctions et procédures sont logiquement regroupées et partagent généralement les mêmes données spécifiées dans le même module (encapsulation) Laréussite de la décomposition dépendd du degré d indépendancedé d entre les modules (degré de couplage doit être faible). Un module peut être utilisé dans un autre système (réutilisable). La conception modulaire d un logiciel facilite sa mise au point et sa maintenance POO \ N.EL FADDOULI 12 Modularité Module Gestion_Biblio Tableau Livre; Fonction Initialier Fonction Initialier {... } Proc ASjouter (Livre L) {...} Proc Supprimer (Livre L) {...} Fonction chercher Id (ident id) Livre Fonction chercher_id (ident id) Livre {...} Fonction chercher_titre(chaine t) Livre {...} etc end POO \ N.EL FADDOULI 13 6
Programmation Procédurale (PP) Principe: Algorithmes + Structures de données = Programme Dans la PP, la conception d un programme est conduite par traitements: Elle consiste à décomposer le programme en fonctions (modules) simples. main() Données init() calcule() factorise() compare() trie() permute() Données POO \ N.EL FADDOULI 14 Programmation Orientée Objet (POO) Elle privilégie les données Quelles sont les objets (données) traités? Déterminer TADs (structure + opérations spécifiques) des objets utilisés. L implémentation de chaque TAD donne lieu à une classe. Dans le programme on manipule des instances d une classe Objets Un module est composé d un ensemble de classes. Données Données init() calcule() factorise() trie() compare() permute() POO \ N.EL FADDOULI 15 7
Programmation Orientée Objet (POO) OBJET = Données + Méthodes (Opérations). Un objet est une association de données et de fonctions (méthodes) qui agissent sur ces données. POO: Programmation dans laquelle un programme est organisé comme un ensemble d'objets coopérant ensemble par des échanges de messages entres eux (appels des services (fonctions) offerts par leurs classes) POO \ N.EL FADDOULI 16 8