1 Programmation Orientée Objet ● Qu'est-ce qu'un objet ● Collaboration des objets ● Les classes ● Relations entre les classes – “Utilise”, “Contient”, “Hérite” ● Vocabulaire
2 Qu'est-ce qu'un objet ● “Something you can do things to” (G. Booch) ● Un objet = une entit é qui a son é tat et son comportement – L' objet maintient son état dans une ou plusieurs variables ● Variable = une donnée nommée par un identificateur – L'objet implante son comportement par les méthodes ● Méthode = une fonction associée à un objet variable Comportemen t (méthodes) État (variables ) ● Un objet est une entité informatique comprenant des variables et des méthodes
3 Qu'est-ce qu'un objet ● Exemples d'objets du monde r é el: – Chien avec l' é tat d éfini par son nom, couleur, race, position,... et comportement comme assis, couch é, apporte, aboie... nom coule ur positi on Assis Apporte Couché Le chien modelisé comme objet informatique nbVite sse actVit esse coule ur Accelére Freine Change la vitesse Le vélo modelisé comme objet informatique – V é lo avec l' é tat d éfini par son nombre de vitesses, vitesse actuelle, couleur,... et comportement comme: accélère, change la vitesse,...
4 « Encapsulation » ● Les variables forment un noyau de l'objet et les méthodes forment une enveloppe qui entoure le noyau et le cache aux autres objets du programme ● Le paquetage des variables d'objet sous la garde de ses méthodes s'appelle « encapsulation » variable Services publiques (Interface) État (variables ) Services internes (non-accessible de l'extérieur)
5 Collaboration des objets ● L'objet apparaît comme un composant d'un programme qui en contient beaucoup d'autres ● C'est par l'interaction de ses objets que le programme ach è ve un plus haut niveau de sa fonctionnalité et complexité ● Les objets interagissent l'un sur l'autre en s'envoyant des messages Le vélo Vous change la vitesse (premièreVitesse) Le message comprend: – L'objet destinataire à qui le message est adress é (le v é lo) – Le nom de la méthode à accomplir (changeVitesse) – Le paramètre (ou les paramètres) dont la méthode a besoin (premièreVitesse)
6 Les classes ● Dans le monde réel on a plusieurs objets du m ê me type: – Votre chien ou le chien de votre voisin est toujours un chien parmi beaucoup de chiens dans le monde – En parlant OO (Orienté Objet) – on dit que notre chien est une instance de la classe des objets connus comme chiens ● Une classe est un prototype qui déclare des propriétés communes à un ensemble d'objets (des variables et des méthodes) – Elle apparaît aussi comme un moule ou une usine à partir de laquelle il est possible de créer des objets ● Une instance est une occurrence, une réalisation d'un objet de classe donnée nom coule ur positi on Assi s Apporte La classe chien nom coul eur positi on Assi s Apporte Viky couché fauve Mon chien (Une instance) nom coul eur positi on Assi s Apporte débout blanche Chien de Sébastian (Une instance) Bella Couch é
7 Les classes – notation UML ● UML (Unified modelling language) = un langage graphique de modélisation des données et des traitements nom coule ur positi on Assi s Apporte La classe chien Chien nom couleur position Assis() Couché() Apporte() Nom de la classe Données membres ou attributs Fonctions membres ou méthodes Chien Si les détails de la classe ne sont pas importants dans le contexte, la classe peut être bien représentée par un simple rectangle Nom de la classe Couch é
8 Relations entre les classes « Contient » ● La conception du programme consiste à d é finir les entités des objets d écrits par les classes ainsi que leurs relations ● La relation « Contient » (“Has”) – Une classe (A) peut contenir une (des) autre(s) classe(s) (B, C,...) – On dit que la classe A est une composite de B, C,... – Ex. notre classe V élo peut contenir la variable boiteDeVitesses qui n'est pas de type primitif (int, float,...) mais de type de la classe BoiteDeVitesses Vélo boit eDe Vitte sse s BoiteDeVitesses
9 Relations entre les classes « Utilise » ● La relation « Utilise » (“Use“) – Une classe (A) peut avoir besoin d'utiliser une autre classe (B) sans la contenir – Typiquement la classe A envoie des messages à la classe B qui n'est pas contenue comme sa donnée membre – Ex. notre classe V élo peut définir la méthode lubrifier qui utilise comme paramètre l'objet du type Huile Vélo Vous lubrifier(huile) Huile
10 Relations entre les classes « Hérite »... ● La relation « Hérite » (“Is a“) – Une classe (A) peut hériter de l'état (des variables) et du comportement (des méthodes) d'une autre classe (B) – On dit que la classe A représente un super-type (super-classe) de la classe B, représentant un sous-type (sous-classe) – Ou que la classe A représente une généralisation de la classe B, représentant une spécialisation de la classe A – Ou que la classe A représente une classe de base de la classe B, représentant une classe dérivée de la classe A – Par exemple un vélo de montagne, un vélo de route ou un vélo tandem sont tous du type vélo Vélo de montagne Vélo de route Vélo tandem
11... Relations entre les classes « Hérite » – Les sous-classes partagent les mêmes états et les mêmes méthodes, mais ils peuvent ajouter leurs propres données membres et/ou méthodes ● Ex. un vélo tandem a une siège en plus – Les sous-classes peuvent aussi redéfinir la méthode héritée de sa super-classe et fournir son implantation spécialisée ● Ex. un vélo montage peut redéfinir la méthode « ChangeVitesse » pour que le cycliste puisse profiter de ses vitesses spéciales Vélo de montagne Vélo de route Vélo tandem
12 Vocabulaire ● Objet = une entité informatique comprenant des variables et des méthodes ● Variable = une donnée nommée par un identificateur ● Méthode = une fonction associée à un objet ● Encapsulation = le paquetage des variables d'objet sous la garde de ses méthodes ● Message = le moyen de l'interaction et communication parmi les objets ● Classe = un prototype qui déclare des propriétés communes à un ensemble d'objets (des variables et des méthodes) ● Instance = est une occurrence, une réalisation d'un objet de classe donnée ● « Contient » = La classe A contient la classe B si une de ses variable est une instance de la classe B ● « Utilise » = La classe A utilise la classe B si elle a besoin d'une instance de la classe B dans une de ses méthodes ● « Hérite » = La sous-classe B hérite de l'état (des variables) et du comportement (des méthodes) de sa super-classe A