1 / 77

Conception Orientée Objet

Conception Orientée Objet. classes, patrons, héritage, polymorphisme. But du cours. Concepts de la C onception O rientée O bjet de nouveaux types de données. Plan du cours. Classe Héritage Polymorphisme. Chapitre I Classe. Conception Objet de types structurés concepts

gefen
Télécharger la présentation

Conception Orientée Objet

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ConceptionOrientéeObjet classes, patrons, héritage, polymorphisme

  2. But du cours Concepts de la Conception Orientée Objet de nouveaux types de données Conception Orientée Objet, 2

  3. Plan du cours Classe Héritage Polymorphisme Conception Orientée Objet, 3

  4. Chapitre I Classe Conception Objet de types structurés concepts méthodologie patron Conception Orientée Objet, 4

  5. Classe Héritage Polymorphisme concepts méthodologie patron Type structuré (programmation classique) juxtaposition de « données membres » ou « champs » exemples Rationnel { Z num, N den } Client { CHC nom, N noclient, ... } Rationnel Client Z CHC ... N num nom N den noclient Conception Orientée Objet, 5

  6. Classe Héritage Polymorphisme concepts méthodologie patron Un type structuré permet une gestion globale (donc simplifiée) des données F(C nouv Client) res nouv Client Début Allouer Client A,B … Fin,Eliminer A,B,C F(nomC nouv CHC, noclientC nouv N) ??? Début Allouer CHC nomA, nomB N noclientA,noclientB … Fin,Eliminer nomA, noclientA, nomB, noclientB, nomC, noclientC Conception Orientée Objet, 6

  7. ... ... ... Classe Héritage Polymorphisme concepts méthodologie patron C C.nom Chaque objet dispose de ses propres données membres Accès au champ x d’un objet O O.x C.noclient A A.nom A.noclient F(C nouv Client) res nouv Client Début Allouer Client A,B … … A.nom == C.nom … … A.noclient = … … Fin,Eliminer A,B,C B B.nom B.noclient Conception Orientée Objet, 7

  8. ... Classe Héritage Polymorphisme concepts méthodologie patron naissance des champs A A Réservé Réservé ... "Durand" 015849 Allouer Client A construire (A,…) Allocation globale intégrant automatiquement les champs doit construire tous les champs responsabilité concepteur Conception Orientée Objet, 8

  9. A Réservé ... "Durand" 015849 Classe Héritage Polymorphisme concepts méthodologie patron mort des champs A Réservé ... "Durand" 015849 détruire (A) Rendre A, Oublier A Libération globale intégrant automatiquement les champs doit détruire tous les champs automatique en POO explicite en COO Conception Orientée Objet, 9

  10. Classe Héritage Polymorphisme concepts méthodologie patron Classe (programmation OO) type structuré + fonctions associées : « méthodes » + variables globales associées : « champs statiques » + « encapsulation » : mécanismes de restriction d’accès aux champs et aux méthodes Types plus cohérents et plus surs : outils adaptés champs et méthodes sensibles protégés Conception Orientée Objet, 10

  11. Accès aux données (consultation et mise à jour) et aux méthodes (possibilité de lancement) par : toute fonction « accès public » méthodes de la classe seulement « accès privé» Classe Héritage Polymorphisme concepts méthodologie patron Encapsulation  Amitié : La classe peut déclarer son amitié à une classe ou à une fonction. Les fonctions amies ou méthodes de classes amies ont les mêmes accès à la classe que ses propres méthodes. Conception Orientée Objet, 11

  12. Classe Héritage Polymorphisme concepts méthodologie patron Résultats de la conception d’une classe   La conception d’une classe fournit 2 documents : Le document de conception détaillée où figurent tous les champs même privés et les algorithmes de toutes les méthodes La fiche de description fonctionnelle qui résume et liste les champs et méthodes accessibles en public. Conception Orientée Objet, 12

  13. Classe Héritage Polymorphisme concepts méthodologie patron Méthodologie globale de conception   Développement d’une classe simple : Analyse Réflexions sur le rôle et les constituants de la classe liste des champs (type, nom, rôle, accès) liste des méthodes (prototype, sémantique, accès) Conception détaillée de la classe Définition algorithmique de la classe rédaction du document de conception détaillée Rédaction de la Fiche de Description fonctionnelle Conception Orientée Objet, 13

  14. Classe Héritage Polymorphisme concepts méthodologie patron analyse conception détaillée Analyse   L’analyse d’une classe simple se conduit comme suit: Identification du rôle de la classe liste des champs nécessaires et propriétés imposées fonctions obligatoires ; sémantique et accèsconstructeur/copie , destructeur, réaffecteur fonctions habituelles ; présence, sémantique, accèsconstructeur/défaut, écrire, saisir autres fonctions ; prototype, sémantique et accès Conception Orientée Objet, 14

  15. Classe Héritage Polymorphisme concepts méthodologie patron analyse conception détaillée Rôle de la classe   Réponse à la question : « Que représente un objet de ce type ? » Exemple à suivre ; classe Ratio : ces objets représentent les nombres rationnels Conception Orientée Objet, 15

  16. Classe Héritage Polymorphisme concepts méthodologie patron analyse conception détaillée Champs & Propriétés  Liste des champs (y compris statiques) avec type, nom, rôle et accès Propriétés imposées aux champs Exemple classe Ratio : champs : un numérateur Z num un dénominateur N den propriétés imposées : représentation irréductible, dénominateur non nul accès privé à num et den Conception Orientée Objet, 16

  17. Classe Héritage Polymorphisme concepts méthodologie patron analyse conception détaillée Fonctions obligatoires Ces fonctions qui doivent exister pour tout type T ont généralement sur les classes un comportement classique constructeur/copie : construction/copie champ à champ destructeur : destruction des champs réaffecteur : réaffectation champ à champ Conception Orientée Objet, 17

  18. Classe Héritage Polymorphisme concepts méthodologie patron analyse conception détaillée « Cette classe établit-elle directement des connexions à des ressources extérieures à l’objet ? » Non « Les comportements classiques sont-ils satisfaisants pour cette classe ? » Oui Non Oui Comportements spécifiques et accès à définir Comportements standards accès public Conception Orientée Objet, 18

  19. Classe Héritage Polymorphisme concepts méthodologie patron analyse conception détaillée En cas de connexion à une ressource extérieure la réflexion doit porter sur le partage ou la duplication de la ressource pour le constructeur/copie et le réaffecteur et sur la déconnexion pour le destructeur. Si ni partage ni duplication ne sont envisageables le constructeur/copie et le réaffecteur doivent être privés avec un comportement de type déroutement. inutilisables en dehors de la classe leur utilisation (dans la classe)est une faute qui génère un déroutement (et un message à l’utilisateur !) Conception Orientée Objet, 19

  20. Classe Héritage Polymorphisme concepts méthodologie patron analyse conception détaillée Il faut noter qu’en général, le comportement du réaffecteur correspond « globalement » à détruire puis reconstruire par copie. La différence sémantique entre réaffectation et construction/copie tient au fait que dans le premier cas l’objet préexiste et qu’il faut gérer l’abandon de son ancien état alors que dans le second l’objet n’est pas encore né. Conception Orientée Objet, 20

  21. Classe Héritage Polymorphisme concepts méthodologie patron analyse conception détaillée Exemple classe Ratio : pas de connexion à des ressources extérieures copie/réaffectation/destruction champ à champ OK comportement standard, accès public Conception Orientée Objet, 21

  22. Classe Héritage Polymorphisme concepts méthodologie patron analyse conception détaillée Fonctions habituelles constructeur/défaut : construction sans information écrire : sortie mode texte dans un flot saisir : saisie mode texte depuis un flot Ces fonctions existent pour beaucoup de types T . Il est habituel de se demander si elles peuvent être définies pour la classe en développement et avec quels comportements et accès. Conception Orientée Objet, 22

  23. Classe Héritage Polymorphisme concepts méthodologie patron analyse conception détaillée Exemple classe Ratio : construction / défaut : OK, valeur 0/1, public écrire : OK, num "/" den, public saisir : OK, num " " den ou num "/" den, public Conception Orientée Objet, 23

  24. Classe Héritage Polymorphisme concepts méthodologie patron analyse conception détaillée Autres fonctions Liste des autres fonctions utiles, judicieuses ou tout simplement naturelles pour ce type. prototype nom (choix fonction / opérateur) paramètres, retour, déroutements sémantique accès Penser à d’autres constructeurs et aux fonctions de conversions ! Conception Orientée Objet, 24

  25. Classe Héritage Polymorphisme concepts méthodologie patron analyse conception détaillée Exemple classe Ratio : autres constructeurs et convertisseurs construire (ex Ratio, nouv Z, nouv N) déroutable par DivPar0 conv R (nouv Ratio) nouv R conv Z (nouv Ratio) nouv Z conv Ratio (nouv Z) nouv Ratio … opérations arithmétiques op + (nouv Ratio, nouv Ratio) nouv Ratio … comparaisons op < (nouv Ratio, nouv Ratio) nouv B … sémantiques claires, accès publics Conception Orientée Objet, 25

  26. Classe Héritage Polymorphisme concepts méthodologie patron analyse conception détaillée Conception détaillée   Rédaction du document de conception détaillée description algorithmique complète des champs et méthodes prévus dans l’analyse analyse et conception de toute autre méthode jugée utile en cours de conception Conception Orientée Objet, 26

  27. Classe Héritage Polymorphisme concepts méthodologie patron analyse conception détaillée Syntaxe du document de conception détaillée   Bloc Classe contenant une suite de blocs d’accès public ou privé Nom de la classe Classe toto [ amie de <classes,fonct> ] ... privé ... public ... privé ... ... Fin de Classe Bloc d’accès Bloc Classe Bloc d’accès Bloc d’accès Conception Orientée Objet, 27

  28. Classe Héritage Polymorphisme concepts méthodologie patron analyse conception détaillée les blocs d’accès public ou privé peuvent contenir des déclarations de champs des définitions de méthodes des blocs de définition de champs statiques CHCnomNnoclient F ( … ) … Début … Fin[…] Chargement Allouer N nbclient construire (nbclient,0) Déchargement, Eliminer nbclient Conception Orientée Objet, 28

  29. Classe Héritage Polymorphisme concepts méthodologie patron analyse conception détaillée Spécificités des constructeurs Rappel : Tout constructeur doit impérativement et dans tous les cas (sauf déroutement interne) construire chacun des champs. On s’en assurera en adoptant l’habitude de commencer le bloc fonctionnel d’un constructeur par la construction des champs dans l’ordre de leur déclaration. Tout manquement à cette habitude devra être justifié et témoignera d’un besoin inhabituel. Il faudra par ailleurs contrôler que la propriété désirée est vérifiée. Conception Orientée Objet, 29

  30. Classe Héritage Polymorphisme concepts méthodologie patron analyse conception détaillée construire (r ex Ratio, R cons Ratio) Début construire (r.num,R.num) construire (r.den,R.den) Fin, Oublier R, r construire (r ex Ratio, n nouv Z, d nouv N) Déroutable par DivPar0 Début Si d==0 Alors Dérouter par DivPar0 éphémère() construire (r.num,n) construire (r.den,d) Fin, Eliminer n,d , Oublier r Conception Orientée Objet, 30

  31. Classe Héritage Polymorphisme concepts méthodologie patron analyse conception détaillée Spécificité du destructeur Rappel : Tout destructeur doit impérativement et dans tous les cas détruire chacun des champs. On s’en assurera en terminant le bloc fonctionnel du destructeur par la destruction des champs dans l’ordre inverse de leur déclaration. Conception Orientée Objet, 31

  32. Classe Héritage Polymorphisme concepts méthodologie patron analyse conception détaillée détruire (r ex Ratio) Début détruire (r.den) détruire (r.num) Fin, Oublier r Conception Orientée Objet, 32

  33. Classe Héritage Polymorphisme concepts méthodologie patron Le développement de la structure mémoire (champs) et des fonctions doit se faire conjointement et hors de toute référence aux spécificités d’un programme utilisateur. réutilisabilitésémantique du type définie intrinsèquement qualitéoutils adaptés et donc efficaces efficacité « humaine » : création de l’outil et utilisation(s) dissociées phases de développement disjointes plus simples « focalisation intellectuelle » facilitée Conception Orientée Objet, 33

  34. Classe Héritage Polymorphisme concepts méthodologie patron Patrons de classes Il arrive que l’on ait à développer une famille de classes qui correspondent à un même concept appliqué à des types T d’objet différents. Exemples : pointeurs T est le type de l’objet « pointé » listes, tables T est le type des éléments gérés On aimerait alors ne réaliser qu’une analyse/conception pour le concept commun à toute la famille. Conception Orientée Objet, 34

  35. Classe Héritage Polymorphisme concepts méthodologie patron La solution consiste à concevoir un patron ou « moule »de classes, paramètré par le type T. On parle alors de « généricité ». On obtient alors automatiquement les classes utilisables en « instanciant » le patron avec les types désirés. Exemples : patron instances, classes obtenues Adr de T Adr de N, Adr de R, Adr de CHC, … Liste de T Liste de N, Liste de R, Liste de CHC, … Définitions algorithmiques paramètriques / T Définitions algorithmiques automatiques (T => N,R,…) Conception Orientée Objet, 35

  36. Classe Héritage Polymorphisme concepts méthodologie patron Cf. cours Structures de Données Le développement d’un patron est similaire à celui d’une classe « normale ». différences : nom du type développé <patron> de <T> T est inconnu (peu de propriétés assurées pour T) mention de la généricité et du rôle de T dans la FDF mention des propriétés imposées à T dans la FDF Conception Orientée Objet, 36

  37. Classe Héritage Polymorphisme concepts méthodologie patron Nom : Adr de T Dépend de : T, type de l ’objet pointé Rôle : Pointeur de T, objet mémorisant l ’adresse d ’un objet de type T, on dit aussi « pointant sur » un objet de type T. Interface utilisateur Variables globales / Champs statiques : Adr de T Nulleadresse illicite (0) Fonctions et opérateurs : construire (ex Adr de T, cons Adr de T) constructeur par copie détruire (ex Adr de T) destructeur op = (ex Adr de T, cons Adr de T) ex Adr de T réaffecteur construire (ex Adr de T) constructeur par défaut adresse illicite (0) Adresse (t ex T) nouv Adr de T pointage de t,adresse de t Contenu (a nouv Adr de T) ex T objet “ pointé ” par a, objet de type T à l‘adresse a Propriétés : Aucune propriété particulière imposée au type T Conception Orientée Objet, 37

  38. Chapitre II Héritage « Héritage ? » Spécificités de Conception Héritages complexes Conception Orientée Objet, 38

  39. Classe Héritage Polymorphisme « Héritage ? » Spécificités de conception Héritages complexes Définitions si une classe Y hérite d’une classe X alors « tout y de type Y est une sorte de X ». Ainsi y de type Y est alors « poly-typé » car il est à la fois un Y et un X y est nativement utilisable en tant que X toute fonctionnalité de X est disponible pour y Conception Orientée Objet, 39

  40. Nom : Y Dépend de : Hérite de : X Classe Héritage Polymorphisme « Héritage ? » Spécificités de conception Héritages complexes Syntaxes provisoires Document de conception Fiche de description fonctionnelle Classe Y hérite de X [ amie de … ] Fin de Classe X Graphe d’héritage Y Conception Orientée Objet, 40

  41. a Classe Héritage Polymorphisme « Héritage ? » Spécificités de conception Héritages complexes Aspects pratiques X Classe X public N a f(x nouv X) Fin de Classe Classe Y hérite de X public N b g(y nouv Y) Fin de Classe Classe Z public X x N b g(y nouv Y) Fin de Classe Y hérite de X contient un X non nommé (y.X possible) a b x Z contient un X x a b Conception Orientée Objet, 41

  42. a Classe Héritage Polymorphisme « Héritage ? » Spécificités de conception Héritages complexes x Programme toto Début Allouer X x Y y Z z … x.a … y.a … z.x.a f(x) … f(y) … f(z.x) x.b … y.b … z.b g(x) … g(y) … g(z) … Fin, … y a Les champs de X sont des champs de Y Les fonctions de paramètres X sont lançables sur des Y b x z a b x n’est qu’un X z n’est pas un X lourdeur d’accés Conception Orientée Objet, 42

  43. X1 N a1 f1(nouv X1) X2 N a2 f2(nouv X2) Xn N an fn(nouv Xn) X1 x1 N a1 f1(nouv X1) Xn . . . . . . N an fn(nouv Xn) X2 x2 N a2 f2(nouv X2) Classe Héritage Polymorphisme « Héritage ? » Spécificités de conception Héritages complexes Facilité d’accès aux champs et méthodes des classes de base . . . Xn xn xn.a1 f1(xn) xn. … .x2.x1.a1 f1(xn. … .x2.x1) Conception Orientée Objet, 43

  44. Classe Héritage Polymorphisme « Héritage ? » Spécificités de conception Héritages complexes Développement incrémental Second niveau de réutilisation de X : La conception de Y ne consiste qu’au développement des particularités de Y par rapport à X Gain de temps analyse/conception/codage/test Compatibilité des diverses versions de X Conception Orientée Objet, 44

  45. Classe Héritage Polymorphisme « Héritage ? » Spécificités de conception Héritages complexes Factorisation conceptuelle Pour développer un lot de classes ayant une partie conceptuelle commune il est bon de développer ce tronc commun comme une classe servant de base d ’héritage aux classes désirées Gain de temps analyse/conception/codage/test uniques pour le tronc commun Possibilité de fonctions d’utilisation développées pour la classe de base Conception Orientée Objet, 45

  46. ?? Toujours ?? ?? Classe Héritage Polymorphisme « Héritage ? » Spécificités de conception Héritages complexes encapsulation méthodes héritées construction / destruction Héritage & Encapsulation Encapsulation dans X Y hérite de X accès à champs/méthodes poly-typage par de X Y/X méthodes de Y et amies autres fonctions Encapsulation de X dans Y: Encapsulation de l’héritage Conception Orientée Objet, 46

  47. Classe Héritage Polymorphisme « Héritage ? » Spécificités de conception Héritages complexes encapsulation méthodes héritées construction / destruction Héritage public Syntaxe enrichie Héritage mentionné dans la FDF La partie X est en accès public dans Y. Classe Y hérite de X public [ amie de … ] Fin de Classe Héritage privé Héritage non mentionné dans FDF La partie X est en accès privé dans Y. Classe Y hérite de X privé [ amie de … ] Fin de Classe Conception Orientée Objet, 47

  48. Classe Héritage Polymorphisme « Héritage ? » Spécificités de conception Héritages complexes encapsulation construction / destruction encapsulation méthodes héritées construction / destruction Accès à la classe de base Accès à X dans Y Y hérite de X public / privé Champs & méthodes de X public privé Poly-typage Y/X Méthodes de Y et amies Oui / Oui Non / Non Oui / Oui Autres fonctions Oui / Non Non / Non Oui / Non Conception Orientée Objet, 48

  49. Classe Héritage Polymorphisme « Héritage ? » Spécificités de conception Héritages complexes encapsulation méthodes héritées construction / destruction Retour sur méthodes héritées Y hérite de X Toute méthode de X est « héritée par Y » (est une méthode de Y) sauf : constructeurs / destructeur / réaffecteur Les méthodes privées de X sont inaccessibles même aux méthodes de Y. En héritage privé, les méthodes de X même public sont inaccessibles aux fonctions extérieures à Y. Conception Orientée Objet, 49

  50. Classe Héritage Polymorphisme « Héritage ? » Spécificités de conception Héritages complexes encapsulation méthodes héritées construction / destruction Constructeurs Y hérite de X Tout constructeur de Y doit construire la partie X par appel d’une méthode construire appropriée. On ne reconstruit pas la partie X champs à champs mais globalement ! Conception Orientée Objet, 50

More Related