LA PROGRAMMATION ORIENTEE OBJET
<ul><li>I  : L’APPROCHE ORIENTEE OBJET </li></ul><ul><li>II  : CONCEPTS DE LA PROGRAMMATION ORIENTEE OBJET  </li></ul>PLAN...
I  : l’Approche  Orientée Objet
LES QUALITES D’UN LOGICIEL <ul><li>On peut mesurer les qualités d’un logiciel par plusieurs critères qui sont entre autres...
LA PROGRAMMATION FONCTIONNELLE <ul><li>La découpe fonctionnelle d’un problème informatique   : il s’agit de décomposer l’é...
LA PROGRAMMATION FONCTIONNELLE <ul><li>Cette approche de l’écriture des algorithmes, utilisant systématiquement la notion ...
LA PROGRAMMATION FONCTIONNELLE <ul><li>Mais ce découpage d’un algorithme en fonctions pose les questions suivantes : </li>...
LIMITES DE LA LA PROGRAMMATION FONCTIONNELLE Maintenance complexe  : avec la factorisation des comportements, les fonction...
L’APPROCHE ORIENTEE OBJET L’approche orientée   La nécessité impérative d’une information de  bonne qualité ,  l’explosion...
II  :  Concepts de la Programmation Orientée Objet
LA PROGRAMMATION ORIENTEE OBJET (POO) <ul><li>Définition  :   </li></ul><ul><li>La Programmation orientée Objet  est un pa...
OBJETS <ul><li>Les concepts d’ objet  et de  classe  sont interdépendants. En effet, un objet appartient à une classe (c’e...
OBJETS méthode : Une méthode est une fonction ou un traitement qui manipule des attributs. Une méthode est liée à un  obje...
OBJETS <ul><li>Dans l’exemple précédent, l’objet à pour nom  SommeN . Son état est représenté par trois attributs suivants...
OBJETS La liste des méthodes constitue l’ interface  de l’ objet  pour l’utilisation : ce sont les messages que l’ objet  ...
OBJETS Encapsulation  :  On dit qu’un  objet , qui réunit dans une même entité  attributs  et  méthodes , les  encapsule ....
CLASSES Définition  :  Une classe est un ensembles d’objets qui ont en commun les mêmes méthodes et qui partagent les même...
CLASSES Exemple de classe Comme exemple, nous allons définir une classe représentant les caractères d’une personne. La déc...
CLASSES <ul><li>L’usage de l’entité  Personne  définie comme classe se ramène alors à : </li></ul><ul><li>la création d’un...
CLASSES <ul><li>Déclaration d’une classe   </li></ul><ul><li>La syntaxe de déclaration d’une classe est la suivante :  </l...
CLASSES Invocation d’une méthode   Il reste enfin à préciser comment on invoque une méthode sur un objet. Cela se fait par...
CLASSES Algorithme : déclaration de Peronne class  Personne debut privé // les attributs suivants ne sont pas accessibles ...
CLASSES catégorieDâge ()  retourne vide debut si (âge > 50) alors   écrire (‘’Personne agée’’);   sinon   si (âge < 20) al...
CLASSES utilise   Personne ;   //on connaît ainsi la classe Personne et ses attributs class  ManipulationDePersonne variab...
CLASSES <ul><li>Nous avons donc bien distingué dans l’exemple de la classe  Personne , un algorithme composé en fait de de...
CLASSES Les constructeurs  :  Exemple 2 classe  Toto debut   ……   public   Toto  (x : Entier, y : Entier) ;  // signature ...
CLASSES Algorithme : déclaration de  Personne  avec un constructeur class  Personne debut privé // les attributs suivants ...
CLASSES catégorieDâge ()  retourne vide debut si (âge > 50) alors   écrire (‘’Personne agée’’);   sinon   si (âge < 20) al...
CLASSES utilise   Personne ;   //on connaît ainsi la classe Personne et ses attributs class  ManipulationDePersonne variab...
L’HERITAGE Le concet d’héritage est central dans l’approche objet. Il est en effet très rare de concevoir un système dans ...
L’HERITAGE Toutes les propriétés de la classe quadrupède, et en particulier le fait d’avoir quatre pattes, sont automatiqu...
L’HERITAGE <ul><li>Classe Quadrupède </li></ul><ul><li>type : Chaîne </li></ul><ul><li>site : Chaîne </li></ul><ul><li>+ n...
L’HERITAGE Dans l’exemple précédent, un objet instance de la classe  Chien  peut se voir appliquer la méthode  nombreDePat...
POLYMORPHISME Les méthodes sont attachées aux classes et précisent leur comportement.  Il sera possible de donner à des mé...
SURCHARE ET REDEFINION DE METHODE Surcharge de méthode  : Il peut arriver que l’on définisse plusieurs fois une même métho...
Prochain SlideShare
Chargement dans…5
×

Poo

2 262 vues

Publié le

Publié dans : Technologie, Business
0 commentaire
2 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
2 262
Sur SlideShare
0
Issues des intégrations
0
Intégrations
54
Actions
Partages
0
Téléchargements
158
Commentaires
0
J’aime
2
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Poo

  1. 1. LA PROGRAMMATION ORIENTEE OBJET
  2. 2. <ul><li>I : L’APPROCHE ORIENTEE OBJET </li></ul><ul><li>II : CONCEPTS DE LA PROGRAMMATION ORIENTEE OBJET </li></ul>PLAN DU RAPPORT
  3. 3. I : l’Approche Orientée Objet
  4. 4. LES QUALITES D’UN LOGICIEL <ul><li>On peut mesurer les qualités d’un logiciel par plusieurs critères qui sont entre autres : </li></ul><ul><li>L’exactitude : aptitude d’un programme ou d’un logiciel à fournir le résultat voulu et a répondre ainsi aux spécifications du cahier des charges. </li></ul><ul><li>La robustesse : aptitude à bien réagir lorsque l’on s’écarte des conditions normales d’utilisation </li></ul><ul><li>L’extensibilité : facilité avec laquelle un programme pourra être adapté pour répondre à l’évolution des spécifications; </li></ul><ul><li>La réutilisabilité : possibilité d’utiliser certaines parties du logiciel pour résoudre un autre problème. </li></ul><ul><li>La portabilité : facilité avec laquelle on peut exploiter un même logiciel dans différentes implémentations. </li></ul><ul><li>L’efficience : temps d’exécution, espace mémoire occupé </li></ul>
  5. 5. LA PROGRAMMATION FONCTIONNELLE <ul><li>La découpe fonctionnelle d’un problème informatique : il s’agit de décomposer l’écriture d’un algorithme en différentes parties bien distinctes , représentant chacune une tâche bien précise et autonome . Il s’agira ensuite de bien agencer la mise en action de ces tâches pour réaliser les calculs aboutissant à la solution du problème général comme le montre la figure suivante : </li></ul>Logiciel de gestion de bibliothèque ces tâches indépendantes s’appellent des fonctions ou sous-programmes.
  6. 6. LA PROGRAMMATION FONCTIONNELLE <ul><li>Cette approche de l’écriture des algorithmes, utilisant systématiquement la notion de fonction (ou sous-programme), est très intéressante car elle permet, pour résoudre un problème, d’employer une méthode de décomposition en sous-problèmes distincts. Elle a ainsi deux avantages : </li></ul><ul><li>Elle permet, par le découpage en sous-problèmes, de résoudre des cas plus simples et bien identifiés. </li></ul><ul><li>Elle permet de réutiliser des fonctions déjà développées par ailleurs. </li></ul><ul><li>Le concepteur d’un algorithme compliqué peut ainsi définir de multiples fonctions simples, bien identifiées, dont l’agencement constituera la solution à son problème. La forme générale de son programme sera alors un ensemble de sous-programmes, et l’exécution consistera en appels de ces sous-programmes. </li></ul>Réutilisation de fonctions
  7. 7. LA PROGRAMMATION FONCTIONNELLE <ul><li>Mais ce découpage d’un algorithme en fonctions pose les questions suivantes : </li></ul><ul><li>une simple modification du programme en un point donné, ne risque t-elle pas d’entraîner en cascade, la modification d’une multitude d’autres fonctions ? </li></ul><ul><li>l’approche fonctionnelle est-elle adaptée au développement d’application complexes et qui évoluent sans cesse ? </li></ul>
  8. 8. LIMITES DE LA LA PROGRAMMATION FONCTIONNELLE Maintenance complexe : avec la factorisation des comportements, les fonctions sont devenues interdépendantes. Une simple mise à jour du logiciel à un point donné, peut entraîner , en cascade, la modification d’une multitude d’autres fonctions. En cas d’évolution majeure du logiciel (passer, par exemple, de la gestion d’une bibliothèque à celle d’un médiathèque, l’écriture du logiciel devient plus complexe. Même si la structure générale du logiciel reste valide, la multiplication des points de maintenance, engendrée par le chaînage des fonctions, rend l’adaptation très laborieuse. Il faut retoucher le logiciel dans sa globalité. L'approche fonctionnelle n'est pas adaptée au développement d'applications qui évoluent sans cesse et dont la complexité croit continuellement (plusieurs dizaines de milliers de lignes de code).
  9. 9. L’APPROCHE ORIENTEE OBJET L’approche orientée La nécessité impérative d’une information de bonne qualité , l’explosion de besoins nouveaux découlant de l’ouverture des Systèmes d’Informations (SI) ne laissent d’autres choix que de rechercher de nouvelles méthodes, beaucoup plus efficaces, pour la prise en charge des applications. L’approche orientée objet est aujourd’hui l’une des pierres angulaires de l’évolution à laquelle l’entreprise est contrainte. Elle conduit tout naturellement à une vision différente de la vision procédurale (fonctionnelle) et plus proche de la réalité des métiers. L’approche orientée objet a pour origine la programmation à objets dont les langages Smalltalk et C++ sont les représentants. Elle a obtenu ses premiers succès importants avec la programmation d’interfaces graphiques. Depuis, son application s’est généralisée à de nombreux domaines dont le génie logiciel, les systèmes repartis et les bases de données. L’approche orientée objet apporte des avantages décisifs comme la modularité , la réutilisabilité et l’ extensibilité du code qui conduisent à une meilleur productivité des développeurs et à une plus grande qualité des applications.
  10. 10. II : Concepts de la Programmation Orientée Objet
  11. 11. LA PROGRAMMATION ORIENTEE OBJET (POO) <ul><li>Définition : </li></ul><ul><li>La Programmation orientée Objet est un paradigme de programmation qui consiste à utiliser les concepts d’objets, de classes, d’encapsulation, d’héritage, de polymorphisme, de modularité… </li></ul><ul><li>Objectifs : </li></ul><ul><li>La Programmation orientée Objet répond au problème de réutilisabilité et d’extensibilité de la programmation fonctionnelle par l’ encapsulation des données et des opérations qui les manipulent dans des objets , en lieu et place des structures de données (définitions de types et des variables), des procédures ou fonctions et d’un programme principal qui appelle les procédures. </li></ul><ul><li>La Programmation orientée Objet permet une démarche de type industriel dans la conception et le développement de logiciels, processus caractérisé par la standardisation des éléments, assemblage des éléments en composants (ou objets), réutilisation possible des composants. </li></ul><ul><li>D’où, pour les applications développées : </li></ul><ul><li>Une grande fiabilité </li></ul><ul><li>Des temps d’assemblage réduits </li></ul><ul><li>Une maintenance facilitée </li></ul><ul><li>Une diminution des coûts de fabrication à long terme </li></ul>
  12. 12. OBJETS <ul><li>Les concepts d’ objet et de classe sont interdépendants. En effet, un objet appartient à une classe (c’est une instance d’une classe) et une classe décrit la structure et le comportement commun d’objets (ses instances). </li></ul><ul><li>Définition : </li></ul><ul><li>Un objet est une entité logicielle (une abstraction des données du monde réel) : </li></ul><ul><li>Qui a une identité , </li></ul><ul><li>Qui est capable de sauvegarder un état , c’est-à-dire un ensemble d’informations dans des variables internes (ses attributs ou propriétés), </li></ul><ul><li>Qui répond à des messages en déclenchant des activations internes appropriées qui changent l’état de l’objet. Ces opérations sont appelées des méthodes . Ce sont des fonctions liées à des objets et qui précisent le comportement des ces objets. </li></ul><ul><li>L’ identité de l’ objet est son nom, c’est-à-dire son identificateur. Les états de l’ objet sont les valeurs de ses variables propres, qui sont appelées des attributs . Les messages auxquels l’ objet peut répondre sont en fait les intitulés des méthodes qu’il peut déclencher : leur identificateur et le type de paramètres nécessaires. </li></ul><ul><li>Attributs : </li></ul><ul><li>Les attributs d’un objet sont l’ensemble des informations se présentant sous forme de variable et permettant de représenter l’état de l’objet. </li></ul><ul><li>Message : un message est une demande d’activation envoyé à un objet. C’est un mode de communication entre les objets de classes différentes. À l’aide d’un message, un objet d’une classe A sollicite les services d’un objet d’une classe B </li></ul>
  13. 13. OBJETS méthode : Une méthode est une fonction ou un traitement qui manipule des attributs. Une méthode est liée à un objet , elle est déclenchée à la réception d’un message particulier : la méthode déclenchée correspond strictement au message reçu. Exemple d’une entité logicielle Pour calculer la somme des n premiers entiers, il est possible de concevoir une entité logicielle appelée SommeN dont le fonctionnement revient à interpréter certains messages que l’on pourra lui envoyer (voir figure) Une telle entité, du point de vue de l’utilisateur, est une boîte noire qui réagit seulement à la réception de message. Entité , qui sait calculer la somme des N premiers entiers et l’afficher SommeN Messages initialiseToi faisSomme pour N précisé afficheSomme
  14. 14. OBJETS <ul><li>Dans l’exemple précédent, l’objet à pour nom SommeN . Son état est représenté par trois attributs suivants : </li></ul><ul><li>S : de type entier, qui représente la somme calculée, </li></ul><ul><li>N : de type entier, qui représente le nombre d’entiers successifs à sommer, </li></ul><ul><li>I : qui est un attribut permettant de compter le nombre de tours de boucle dans sa méthode de calcule de la somme. </li></ul><ul><li>L’utilisateur n’a pas à connaître le nom des attributs de l’objet, qui ne servent qu’aux calculs internes de SommeN et qui n’apportent rien à l’utilisateur, qui ne veut qu’un résultat. </li></ul><ul><li>Les trois méthodes que comporte SommeN sont : </li></ul><ul><li>initialiseToi() , méthodes sans paramètre, et qui ne retourne rien; </li></ul><ul><li>faisSmme (entier) , qui est une méthode qui reçoit comme attribut le nombre d’entiers à sommer, ne retourne rien. </li></ul><ul><li>afficheSomm ce () , qui affiche la valeur de la somme, ne retourne rien. </li></ul><ul><li>Chacune de ces méthodes est aussi le nom d’un message que l’on peut envoyer à l’objet SommeN . A la réception d’un message, l’objet active la méthode qui a le même nom. </li></ul>
  15. 15. OBJETS La liste des méthodes constitue l’ interface de l’ objet pour l’utilisation : ce sont les messages que l’ objet peut comprendre si on les lui envoie, et dont la réception déclenche les méthodes correspondantes. Signature : La précision d’une méthode (nom de la méthode), du type de ses arguments et du type de donnée retournée s’appelle signature de méthode . Exemple : int additionEntier ( int a, int b) Représentation de l’objet SommeN : vision programmeur Type de retour Précision de la méthode Type des paramètres Objet SommeN Attributs I,S : Entier N : Entier Méthodes initialiseToi () retourne vide faisSomme (Entier) retourne vide afficheSomme () retourne vide
  16. 16. OBJETS Encapsulation : On dit qu’un objet , qui réunit dans une même entité attributs et méthodes , les encapsule . Les détails de l’implémentation de l’ objet sont masqués aux autres objets du système à objets . On dit qu’il y’a encapsulation des données et du comportement des objets. L’encapsulation applique le principe d’ abstraction : un objet n’est accessible que par ses opérations visibles (son interfaces externe ). Ainsi les modifications de données restent locales aux objets et sont sans effet sur les programmes utilisateurs. L’encapsulation apporte alors indépendance entre programmes , opérations et données . Modularité : La modularité d’un logiciel consiste à regrouper des classes qui participent à la réalisation d’un service ou d’une fonctionnalité donnée au sein d’un même package (ou module ).
  17. 17. CLASSES Définition : Une classe est un ensembles d’objets qui ont en commun les mêmes méthodes et qui partagent les mêmes types d’attributs. Une classe est en sorte un type abstrait qui encapsule données et comportements. C’est une sorte de « moule », qui permet ensuite de créer autant d’instances que l’on veut, et ces instances seront des objets instances de la classe, auxquels on pourra effectivement envoyer des messages, qui activeront les méthodes correspondantes. Instance : Une instance d’une classe est un objet particulier d’une classe qui peut activer les méthodes de la classe et qui a des valeurs particulières pour ses attributs. Classe Attributs Méthodes Une instance de la classe Une autre instance de la classe Encore une instance de la classe Une classe et trois de ses instances
  18. 18. CLASSES Exemple de classe Comme exemple, nous allons définir une classe représentant les caractères d’une personne. La déclaration de la classe Personne revient à définir son nom, son adresse et son âge et à préciser comment on accède à ces informations. <ul><li>Personne </li></ul><ul><li>Attributs de la classe : </li></ul><ul><li>nom : chaîne de caractères </li></ul><ul><li>adresse : chaîne de caractères </li></ul><ul><li>âge : Entier </li></ul><ul><li>Méthodes de la classe </li></ul><ul><li>+ initialiser (chaîne de caractères, chaîne de caractères, Entier) retourne vide </li></ul><ul><li>+ catégorieDâge () retourne vide </li></ul><ul><li>+ catégorieDeResidence () retourne vide </li></ul>Chéma de da la classe Personne
  19. 19. CLASSES <ul><li>L’usage de l’entité Personne définie comme classe se ramène alors à : </li></ul><ul><li>la création d’une classe Personne </li></ul><ul><li>la création d’un objet instance de la classe Personne </li></ul><ul><li>l’activation des méthodes sur l’objet </li></ul><ul><li>La figure ci-dessous présente la classe Personne et deux instances nommées Personne1, Personne2 </li></ul><ul><li>Classe Personne </li></ul><ul><li>nom : chaîne de caractères </li></ul><ul><li>adresse : chaîne de caractères </li></ul><ul><li>âge : Entier </li></ul><ul><li>+ initialiser (chaîne de caractères, chaîne de caractères, Entier) retourne vide </li></ul><ul><li>+ catégorieDâge () retourne vide </li></ul><ul><li>+ catégorieDeResidence () retourne vide </li></ul>Personne1 nom : Bangoura adresse : ville âge : 35 Personne2 nom : Keita adresse : campagne âge : 25 Deux instances de Personne
  20. 20. CLASSES <ul><li>Déclaration d’une classe </li></ul><ul><li>La syntaxe de déclaration d’une classe est la suivante : </li></ul><ul><li>class identificateur_de_la_classe </li></ul><ul><li> debut </li></ul><ul><li> déclaration des attributs </li></ul><ul><li> </li></ul><ul><li> signature des méthodes </li></ul><ul><li> fin </li></ul><ul><li>Déclaration et instanciation d’une classe </li></ul><ul><li>La création d’une instance de classe se fait en deux temps : </li></ul><ul><li>d’abord, on déclare l’existence de l’objet instance de la classe. Cela revient à donner un identificateur à un certain objet </li></ul><ul><li>la création effective de l’instance se fait à l’aide d’un opérateur spécifique, l’opérateur new. </li></ul><ul><li>identificateur_instance : identificateur_de_la_classe; </li></ul><ul><li>identificateur_instance  new identificateur_de_la_classe (); </li></ul>
  21. 21. CLASSES Invocation d’une méthode Il reste enfin à préciser comment on invoque une méthode sur un objet. Cela se fait par l’application, sur l’identificateur de l’objet, du nom de la méthode à l’aide d’un opérateur, l’opérateur «  .  » L’appel d’une méthode sur un objet receveur est alors le suivant : instance_de_classe . méthode (); Utilisation de la classe Personne Il est maintenant possible d’utiliser la classe Personne, puisque celle-ci est déclarée et que ses méthodes ont été écrites. Il a même été possible de définir la classe dans un algorithme dont le rôle se limitait strictement à cela. Un autre algorithme va en permettre l’utilisation. Un mot-clé permet de préciser qu’elle classe est utilisée dans ce nouvel algorithme et ainsi d’identifier les méthodes employées. Ce mot-clé, placé au tout début de l’algorithme, est utlise . utilise Nom_de_classe;
  22. 22. CLASSES Algorithme : déclaration de Peronne class Personne debut privé // les attributs suivants ne sont pas accessibles de l’extérieur de la classe nom, adresse : chaîne de caractères; âge : Entier; public // les méthodes seront déclarées publiques, accessibles de l’extérieur initialiser (x : chaîne de caractères, y : chaîne de caractères, z : entier) retourne vide debut non  x; adresse  y; âge  z; fin
  23. 23. CLASSES catégorieDâge () retourne vide debut si (âge > 50) alors écrire (‘’Personne agée’’); sinon si (âge < 20) alors écrire (‘’Personne jeune ’’); sinon écrire (‘’Age moyen’’); fin catégorieDeResidence () retourne vide debut si (adresse = ‘’Ville’’) alors écrire (‘’Habitant urbain’’); sinon si (adresse =‘’Village’’) alors écrire (‘’Villageois’’); sinon écrire (‘’Habitant rural’’); fin fin
  24. 24. CLASSES utilise Personne ; //on connaît ainsi la classe Personne et ses attributs class ManipulationDePersonne variables : personne1, personne2, personne3 : Personne // déclaration de trois objets instances de la classe Personne debut personne1  new Personne (); // création effective d’un objet personne2  new Personne (); // création effective d’un autre objet personne3  new Personne (); // création du troisième objet personne1.initialiser (‘’Bemba’’, ’’ville’’,35); personne2.initialiser (‘’Loemba’’, ’’campagn2’’,35); personne1.categorieDâge (); personne1.categorieDeResidence (); fin
  25. 25. CLASSES <ul><li>Nous avons donc bien distingué dans l’exemple de la classe Personne , un algorithme composé en fait de deux parties : </li></ul><ul><li>Une partie déclaration de la classe et de ses méthodes </li></ul><ul><li>Une partie utilisation de la classe par création d’instances et envoi de messages aux instances </li></ul><ul><li>Ce type de conception sera considéré comme usuel. </li></ul>Les constructeurs : Un constructeur est une méthode particulière d’une classe permettant d’initialiser les attributs d’un objet lors de sa création effective. Elle porte le même nom que la classe et ne retourne pas de valeur. Exemple 1 classe Nama début …… public Nama () ; // signature du constructeur sans arguments fin …… fin
  26. 26. CLASSES Les constructeurs : Exemple 2 classe Toto debut …… public Toto (x : Entier, y : Entier) ; // signature du constructeur avec arguments fin …… fin La classe Personne, de l’exemple précédent, peut implémenter le constructeur suivant : Personne ( x : chaîne de caractères, y : chaîne de caractères, z : Entier) retourne vide Si nous reprenons l’algorithme de la classe Personne comportant cette fois-ci un constructeur, nous aurons :
  27. 27. CLASSES Algorithme : déclaration de Personne avec un constructeur class Personne debut privé // les attributs suivants ne sont pas accessibles de l’extérieur de la classe nom, adresse : chaîne de caractères; âge : Entier; public // les méthodes seront déclarées publiques, accessibles de l’extérieur Personne (x : chaîne de caractères, y : chaîne de caractères, z : entier) retourne vide debut non  x; adresse  y; âge  z; fin
  28. 28. CLASSES catégorieDâge () retourne vide debut si (âge > 50) alors écrire (‘’Personne agée’’); sinon si (âge < 20) alors écrire (‘’Personne jeune ’’); sinon écrire (‘’Age moyen’’); fin catégorieDeResidence () retourne vide debut si (adresse = ‘’Ville’’) alors écrire (‘’Habitant urbain’’); sinon si (adresse =‘’Village’’) alors écrire (‘’Villageois’’); sinon écrire (‘’Habitant rural’’); fin fin
  29. 29. CLASSES utilise Personne ; //on connaît ainsi la classe Personne et ses attributs class ManipulationDePersonne variables : personne1, personne2, personne3 : Personne // déclaration de trois objets instances de la classe Personne debut personne1  new Personne (‘’Bemba’’, ’’ville’’,35); // création et initialisation des attributs par le // constructeur personne2  new Personne (‘’Loemba’’, ’’Village’’,35); // création effective d’un autre objet personne1.categorieDâge (); personne1.categorieDeResidence (); personne2.categorieDâge (); personne2.categorieDeResidence (); fin
  30. 30. L’HERITAGE Le concet d’héritage est central dans l’approche objet. Il est en effet très rare de concevoir un système dans lequel il n’existe pas de classes liées par héritage Définition : Une classe peut être considérée comme héritant d’une autre si elle peut activer toutes les méthodes de cette dernière et si elle contient également tous ses attributs. Graphe d’héritage Le graphe d’héritage d’un ensemble de classes est la structure représentant la manière dont les classes sont liées les unes aux autres par héritage. Ce graphe constitue une hiérarchie. Exemple La classe Quadrupède est une classe générale. Elle se spécialise en deux sous-classes indépendantes et de même niveau de spécialisation, la classe Chien et la classe Cheval .
  31. 31. L’HERITAGE Toutes les propriétés de la classe quadrupède, et en particulier le fait d’avoir quatre pattes, sont automatiquement portées dans ces deux sous-classes. La classe Chien précise que l’animal pratique l’aboiement alors que la classe Cheval précise que l’animal est utilisé pour travailler dans des exploitations agricoles. Quadrupède Cheval Chien Une hiérarchie de trois classes
  32. 32. L’HERITAGE <ul><li>Classe Quadrupède </li></ul><ul><li>type : Chaîne </li></ul><ul><li>site : Chaîne </li></ul><ul><li>+ nombreDePattes () retour Entier </li></ul><ul><li>+ decritType () retourne vide </li></ul><ul><li>+ decritSite () retourne Chaine </li></ul><ul><li>Classe Chien </li></ul><ul><li>nom : Chaîne </li></ul><ul><li>propriétaire : Chaîne </li></ul><ul><li>+ typeDeCri () retour Chaine </li></ul><ul><li>+ sonPropriétaire () retourne Chaine </li></ul><ul><li>+ sonNom () retourne Chaine </li></ul><ul><li>Classe Cheval </li></ul><ul><li>nom : Chaîne </li></ul><ul><li>+ sonNnom () retour Chaine </li></ul><ul><li>+ sonCri () retourn Chaine </li></ul><ul><li>+ sonTravail () retourne Chaine </li></ul>Schéma du graphe d’héritage
  33. 33. L’HERITAGE Dans l’exemple précédent, un objet instance de la classe Chien peut se voir appliquer la méthode nombreDePattes (), qui retournera vraisemblablement quatre, car cette classe hérite de la classe Quadrupède et peut donc utiliser toutes ses méthodes . Les méthodes nombreDePattes (), decritType () , decritSite () s’appliquent donc à des objets de type Quadrupède, Chien et Cheval. Par contre, il est impossible d’appliquer la méthode sonPropriétaire () à un objet instance de Quadrupède ou instance de Cheval car la méthode est spécifique à la classe Chien. Définition des classes de l’héritage classe A spécialise B // A hérite de B { privé // zone de définition des éléments privés ……… public // zone de définition des éléments publics …… .. }
  34. 34. POLYMORPHISME Les méthodes sont attachées aux classes et précisent leur comportement. Il sera possible de donner à des méthodes de classes différentes le même identificateur. Cette propriété, qui revient à définir un même identificateur pour désigner plusieurs méthodes de plusieurs classes , s’appelle polymorphisme . Ainsi, la méthode déclenchée dépendra de l’objet receveur et ne pourra pas être attribuée a priori à une classe. Nous avons déjà utilisé ce concept dans l’exemple précédent. L’identificateur de méthodes sonNom() correspond soit à une méthode de la classe Chien , soit à la méthode de la classe Cheva l, qui à priori, ne sont pas les mêmes. C’est seulement lorsque le receveur sera connu, que la bonne méthode sera déclenchée.
  35. 35. SURCHARE ET REDEFINION DE METHODE Surcharge de méthode : Il peut arriver que l’on définisse plusieurs fois une même méthode pour une même classe, en gardant donc le même identificateur, mais en changeant le type ou le nombre des paramètres des méthodes récrites. Sinon, il y aurait ambiguïté dans l’appel des méthodes, puisqu’elles auraient la même signature. On dit que l’on surcharge la méthode. Ce cas de définition de méthodes ayant le même identificateur sera fréquente pour les constructeurs. Redéfinition de méthode Il peut arriver que l’on souhaite redéfinir dans une classe dérivée une méthode de la classe mère . On dit, dans ce cas, que l’on redéfinit la méthode, qui est déjà opérante dans la classe fille par héritage, par une méthode locale qui va la masquer.

×