Programmation Orientée Objets Paradigmes Notions 1 De la programmation classique vers la programmation orientée objet La programmation classique telle que étudiée au travers des langages C, Pascal… définie un programme comme étant: un ensemble de données sur lesquelles agissent des procédures et des fonctions. Les données constituent la partie passive du programme. Les procédures et les fonctions constituent la partie active; Programmer dans ce cas revenait à: définir un certain nombre de variables (structures, tableaux…) écrire des procédures pour les manipuler sans associer explicitement les unes aux autres. 2 De la programmation classique vers la programmation orientée objet Exécuter un programme se réduit alors à appeler ces procédures dans un ordre décrit par le séquençage des instructions et en leur fournissant les données nécessaires à l’accomplissement de leurs tâches. 3 De la programmation classique vers la programmation orientée objet Dans cette approche données et procédure sont traitées indépendamment les unes des autres sans tenir compte des relations étroites qui les unissent. Les questions qu’on peut poser dans ce cas: 1. Cette séparation (données, procédures) est elle utile? 2. Pourquoi privilégier les procédures sur les données (Que veut-on faire?)? 3. Pourquoi ne pas considérer que les programmes sont avant tout des ensembles objets informatiques caractérisé par les opérations qu’ils connaissent? Les langages objets sont nés pour répondre à ces questions. Ils sont fondés sur la connaissance d’une seule catégorie d’entités informatiques: les objets. Un objet incorpore des aspects statiques et dynamiques au sein d’une même notion. 4 De la programmation classique vers la programmation orientée objet Un programme est constitué d’un ensemble d’objets chacun disposant d’une partie procédures et d’une partie données. Les objets interagissent par envoie de messages. Un objet peut recevoir un msg qui déclenche: Une fonction qui modifie son état ou Une fonction qui envoie un msg à un autre objet 5 De la programmation classique vers la programmation orientée objet Programmation classique Programmation Orienté e Objet 6 Les principes de la POO La notion d’objet Un objet = un concept, une idée ou une entité du monde physique voiture, personne, étudiant, animal, fenêtre graphique, forme géométrique, ... Dans un programme, un objet s’apparente à une variable Un objet est caractérisé par trois notions les attributs : données de l’objet / variable qu’il contient et représentant son état les méthodes (fonctions membres) : caractérise son comportement, l’ensemble des actions que l’objet peut réaliser, accès/modification des données une identité, qui permet de le distinguer de manière unique des autres objets, indépendamment de son état 7 Les principes de la POO La notion d’objet (exemple livre) propriétés d’un livre dans une bibliothèque état (emprunté / disponible / perdu) date de la fin de l’emprunt titre auteur nombre de pages Pour un livre donné, ces propriétés ont des valeurs! 8 Les principes de la POO La notion d’objet (exemple livre) opérations sur un livre d’une bibliothèque emprunter rendre perdre voler 9 Les principes de la POO La notion de classe Les objets ayant des mêmes propriétés et les mêmes méthodes peuvent être mis dans une classe. Une classe sera définie par les propriétés et les méthodes sur ses éléments. 10 Les principes de la POO La notion de classe (exemple: Classe des livres) propriétés - état (emprunté / disponible / perdu) - date de la fin de l’emprunt - Titre - Auteur - nombre de pages méthodes – – – – emprunter rendre perdre voler 11 Les principes de la POO La notion de classe Une classe est un ensemble des propriétés et des méthodes. Dans le programme propriétés variables méthodes procédures (code) ENCAPSULATION 12 Les principes de la POO Une classe dans un programme une classe est une collection de données et des méthodes sur ces données. Une classe est une encapsulation des données et du code. La notion de l’encapsulation est la création des classes donne une organisation naturelle des fonctions (méthodes) permet d’effectuer la modification locale du code 13 Les principes de la POO Instanciation Un objet est une instanciation d’une classe Les propriétés (i.e. des variables) de la classe ont des valeurs. Les méthodes de la classe fonctionnent sur l ’objet. 14 Les principes de la POO Une instance de la classe livre propriétés – état = emprunté – date de la fin de l’emprunt = 2003/03/20 – titre = Concepts of objectoriented programming – auteur = David N. Smith – nombre de pages = 189 méthodes – emprunter – rendre – perdre – voler 15 Les principes de la POO Comment créer un objet? Dans chaque classe, il y a une méthode spéciale: La méthode constructeur Cette méthode permet de créer un nouveau objet de la classe en définissant les valeurs des propriétés et en donnant accès aux méthodes sur cette objet. 16 Les principes de la POO Une instance de la classe livre propriétés – état = emprunté – date de la fin de l’emprunt = 2003/03/20 – titre = Concepts of objectoriented programming – auteur = David N. Smith – nombre de pages = 189 méthodes – emprunter – rendre – perdre – voler – livre méthode constructeur 17 Les principes de la POO Objet comme valeur d’une propriété Un objet peut être la valeur d’une propriété 18 Les principes de la POO Exemple : Objet comme valeur d’une propriété Classe auteur propriétés – nom (String) – prénom (String) – état (mort/vivant) – prix (liste) méthodes – obtenir prix – auteur 19 Les principes de la POO Exemple : Objet comme valeur d’une propriété Classe livre propriétés méthodes – état (emprunté / disponible / perdu) – date de la fin de l’emprunt – titre – auteur – nombre de pages – – – – – emprunter rendre perdre voler livre La valeur est une instanciation de la classe auteur 20 Les principes de la POO Hiérarchie des classes Example : classification des espèces La hiérarchie va des classes générales vers les classes spécifiques véhicle voiture camion 4x4 utilitaire moto 21 Les principes de la POO Hiérarchie des classes voiture classe mère utilitaire classe dérivée 22 Les principes de la POO Héritage la classe dérivée possède TOUTES LES PROPRIETES DE SA CLASSE MERE TOUTES LES METHODES DE LA CLASSE MERE 23 Les principes de la POO Héritage des propriétés (exemple) voiture fabriquant chauffeur Utilitaire Propriétés héritées fabriquant, chauffeur cargaison quantité 24 Les principes de la POO Héritage des méthodes (exemple) voiture démarrer arrêter Utilitaire Méthodes héritées démarrer, arrêter charger décharger 25 Les principes de la POO Un programme orienté objet modélisation du domaine à l’aide des classes définition des classes création des instances messages entre les objets (appel des méthodes) 26 Les principes de la POO Polymorphisme permettre de redéfinir dans une classe dérivée les méthodes dont elle hérite de sa classe mère une même méthode possède alors plusieurs formes Les avantages du polymorphisme sont les suivants : Les fonctions ayant la même sémantique ont le même nom, programmation est plus souple. Si on veut ajouter une classe Rectangle… ! Il suffit d’ajouter les méthodes dessiner et effacer dans cette classe. Dans le cas de la programmation procédurale, il aurait fallu reprendre le code et l’enrichir. 27 Éléments de modélisation d’un programme orienté objet Représentation d’une classe Reprenons la classe Personne précédente encapsulation définition des méthodes accessibles à l’extérieure de la classe = méthodes publiques nom de la classe Visibilité des attributs / méthodes − # + privés protégés publiques Personne -CIN : string +nom : string +prenom : string #adresse : string #date_naissance : date +dort() : void +mange() : void +travaille() : void attributs méthodes 28 Éléments de modélisation d’un programme orienté objet Relation d’héritage Intérêt de l’héritage : transfert des propriétés d’une classe mère vers les classes filles généralisation : factorisation de classes en regroupant des propriétés communes spécialisation : ajout d’attributs et méthodes Personne -CIN : string … Héritage public en C++ le plus utilisé + accessibles par tous − accessibles de la classe elle-même uniquement # accessibles de la classe elle-même et des classes dérivées +dort() : void … Etudiant -CNE : int +etudie() : void 29 Éléments de modélisation d’un programme orienté objet Relation d’association, de composition et d’agrégation Association exprime une liaison sémantique bidirectionnelle entre deux classes rôle nom Personne Proprietaire 1 Possède 0..* Livre Cardinalités Les cardinalités expriment le nombre d’instances associées un livre appartient à une et une seul personne une personne possède aucun livre ou plusieurs 30 Éléments de modélisation d’un programme orienté objet Relation d’association, de composition et d’agrégation Agrégation/Composition : relation entre classes, indiquant que les instances d’une classe sont les composants d’une autre Agrégation exprime une relation de composition faible les objets agrégés ont une durée de vie indépendante de celle de l’agrégat 0..* Email attaché Composition 0..* Fichier exprime une relation de composition forte les objets agrégés ont une durée de vie dépendante de celle de l’agrégat Vélo 1 2 Roue 31