Approche Objet - IGMigm.univ-mlv.fr/~dr/COURS/GL2004/ApprocheObjet2004.pdf1 Approche Objet Dominique...

34
1 Approche Objet Approche Objet Dominique Revuz Dominique Revuz [email protected] [email protected] Génie Logiciel

Transcript of Approche Objet - IGMigm.univ-mlv.fr/~dr/COURS/GL2004/ApprocheObjet2004.pdf1 Approche Objet Dominique...

  • 1

    Approche ObjetApproche Objet

    Dominique RevuzDominique [email protected]@univ-mlv.fr

    Génie Logiciel

  • 2

    Pourquoi les ObjetsPourquoi les Objets

    • Plus proches des UtilisateursPlus proches des Utilisateurs• Plus proches de la réalitéPlus proches de la réalité• Plus intuitifsPlus intuitifs• Aide à l'Aide à l'encapsulationencapsulation• Aide pour la modularité / décompositionAide pour la modularité / décomposition• Une approche YoYo du développementUne approche YoYo du développement

  • 3

    Le paradigme objetLe paradigme objet

    Le monde réel est composé d'entités autonomes Le monde réel est composé d'entités autonomes qui sont en relation et coopèrentqui sont en relation et coopèrent

  • 4

    NaturelNaturel

    • Pas de fossé sémantiquePas de fossé sémantique• Localisation du sens et du comportementLocalisation du sens et du comportement

    Pierre Poste7550

    Postede Léa

    Affecté à appelle

  • 5

    ObjetObjet

    Objet n.m.Objet n.m. I. (Concret) Chose solide ayant unité et I. (Concret) Chose solide ayant unité et indépendance et répondant à une certaine destination.indépendance et répondant à une certaine destination. II. (Abstrait) Tout ce qui se présente à l'esprit, qui est II. (Abstrait) Tout ce qui se présente à l'esprit, qui est occasion ou matière pour l'activité de l'esprit.occasion ou matière pour l'activité de l'esprit.

    Robert Méthodique Robert Méthodique

  • 6

    ObjetObjet

    Concept, abstraction ou choseConcept, abstraction ou chose

    – ResponsabilitéResponsabilité– Comportement Comportement – ÉtatÉtat

  • 7

    ClasseClasse

    • Une abstraction qui permet de modéliser Une abstraction qui permet de modéliser et/ou décrire un ensemble d'objets d'une et/ou décrire un ensemble d'objets d'une façon générale.façon générale.

    • La classe décrit et/ou explicite La classe décrit et/ou explicite – L'espace de variation de l'étatL'espace de variation de l'état– le comportement des instancesle comportement des instances– le rôle des instancesle rôle des instances

    Poste

  • 8

    InstancesInstances

    • Les instances d'Les instances d'une classe sont les objets une classe sont les objets qui vérifient les contraintes définies par la qui vérifient les contraintes définies par la classe.classe.

    • On décrit parfois la classe comme une On décrit parfois la classe comme une usine qui fabrique des instances.usine qui fabrique des instances.

    • Les instances sont différentes (État) mais Les instances sont différentes (État) mais ont toutes le même comportement.ont toutes le même comportement.

    lea : Poste

    Poste de léaNum 3667autorisation

  • 9

    État (Attributs)État (Attributs)

    • Caractéristiques instantanées d'un Objet = Caractéristiques instantanées d'un Objet = ensemble des valeurs des attributs.ensemble des valeurs des attributs.

    • Toutes les instances ont les mêmes Toutes les instances ont les mêmes attributs avec des valeurs variables, attributs avec des valeurs variables, uniques pour chaque instance.uniques pour chaque instance.

    PosteNuméroAutorisation

  • 10

    Interface: Interface: Opérations&MessagesOpérations&Messages

    • Service offert par les Instances d Service offert par les Instances d une une classeclasse

    • L'L'interface se définit en fonction de la interface se définit en fonction de la responsabilité de la classe.responsabilité de la classe.

    • C'C'est la classe qui définit l'est la classe qui définit l'interface des interface des instances.instances.

    • Le concept de message s'applique dans les Le concept de message s'applique dans les cas asynchrones cas asynchrones

    Poste

    Appel()Sonnerie()

  • 11

    EncapsulationEncapsulation

    • Cacher le fonctionnement interne d'Cacher le fonctionnement interne d'un un objet ou d'un module objet ou d'un module

    • Les changements internes du module n'ont Les changements internes du module n'ont pas d'pas d'influence sur le code extérieur à influence sur le code extérieur à l'objet.l'objet.

    • On cherche à obtenir des interfaces au On cherche à obtenir des interfaces au sens de la chimie.sens de la chimie.

  • 12

    InterfaceInterface• Quand deux matériaux ont une interface, Quand deux matériaux ont une interface,

    cela veut dire qu'cela veut dire qu'il n'y pas d'échange de il n'y pas d'échange de matière entre les deux.matière entre les deux.

    • Exemple: l'huile et l'eauExemple: l'huile et l'eau• Contre exemple: l'Contre exemple: l'or et l'argent or et l'argent

  • 13

    Interface Interface (2)(2)

    • On cherche à écrire des modules qui ont On cherche à écrire des modules qui ont des interfaces (au sens chimique). des interfaces (au sens chimique).

    • On veut que ni les corrections, ni les bugs On veut que ni les corrections, ni les bugs ne se propagent d'un module à l'autre.ne se propagent d'un module à l'autre.

    • En particulier les changements En particulier les changements d'implémentation d'un module ne doivent d'implémentation d'un module ne doivent pas avoir d'incidence sur les modules pas avoir d'incidence sur les modules clients.clients.

  • 14

    ModuleModule

    • Un module est une unité de codeUn module est une unité de code• De toute taille : classe, fichier, paquetageDe toute taille : classe, fichier, paquetage• On parle de module quand l'On parle de module quand l'unité de code unité de code

    a une forte cohésion.a une forte cohésion.• Ex: string, stdio, vector Ex: string, stdio, vector

  • 15

    Module ouvertModule ouvert

    • Un module dans lequel il est encore Un module dans lequel il est encore possible de réaliser des modifications.possible de réaliser des modifications.

    • Ajout d'Ajout d'attributs, changement du code, attributs, changement du code, ajout d'une classe publique, etc.ajout d'une classe publique, etc.

    • C'est ce que demande le concepteur du C'est ce que demande le concepteur du module qui veut pouvoir : le corriger, module qui veut pouvoir : le corriger, l'l'étendre, l'étendre, l'adapter.adapter.

  • 16

    Module FerméModule Fermé

    • Un module utilisable par d'autresUn module utilisable par d'autres..• Compilable, validé, testéCompilable, validé, testé• La valeur d'un module est plus grande si il La valeur d'un module est plus grande si il

    est ferméest fermé– avancementavancement– debuggingdebugging– réutilisation.réutilisation.

  • 17

    Un rêve Ouvert Un rêve Ouvert ETET Fermé Fermé

    • A la fois sécurisés et extensibles.A la fois sécurisés et extensibles.• Deux approches pour les modules O&F Deux approches pour les modules O&F • InterfaceInterface

    – On ferme l'interface, pas l'implémentation On ferme l'interface, pas l'implémentation

    • HéritageHéritage– On crée un nouveau module qui ne fait On crée un nouveau module qui ne fait

    qu'étendre le module précédent, sans le qu'étendre le module précédent, sans le changer. (les LOO offrent une syntaxe)changer. (les LOO offrent une syntaxe)

  • 18

    Module clientModule client

    • Quand deux modules interagissent celui qui Quand deux modules interagissent celui qui utilise l'utilise l'autre est appelé module client.autre est appelé module client.

    • Ex: Voiture/ConducteurEx: Voiture/Conducteur• Le conducteur utilise l'interface de la voiture Le conducteur utilise l'interface de la voiture

    mais pas l'inverse.mais pas l'inverse.• Ex: Administration/AdministréEx: Administration/Administré• les deux modules font des demandes les deux modules font des demandes

    croisées. Les deux modules sont clients l'un croisées. Les deux modules sont clients l'un de l'autre.de l'autre.

  • 19

    Interface et Module O&FInterface et Module O&F

    • L'L'interface est la partie publique d'interface est la partie publique d'un un module. module.

    • Ce doit être la partie stable d'un module. Ce doit être la partie stable d'un module.

    • Quand un module utilise l'interface d'un Quand un module utilise l'interface d'un autre module on dit qu'il est un module autre module on dit qu'il est un module client.client.

  • 20

    • Si l'interface change les modules clients Si l'interface change les modules clients doivent changer.doivent changer.

    • Il faut concentrer une bonne partie du Il faut concentrer une bonne partie du travail de conception d'un logiciel sur la travail de conception d'un logiciel sur la définition de l'définition de l'interface des différents interface des différents modules.modules.

    • Ex: Interface des Entrées/Sorties sous Ex: Interface des Entrées/Sorties sous UNIX, en C , en C++, en Java.UNIX, en C , en C++, en Java.

  • 21

    ImplémentationImplémentation

    • Un module est composé d'une interface et Un module est composé d'une interface et d'une implémentation.d'une implémentation.

    • L'implémentation d'un module est le code L'implémentation d'un module est le code qui réalise les fonctionnalités du module.qui réalise les fonctionnalités du module.

    • En termes du C on a le « .h » et le « .c »En termes du C on a le « .h » et le « .c »• En C++ et Java l En C++ et Java l interface est l interface est l ensemble ensemble

    des signatures de Méthodes. des signatures de Méthodes. L L implémentation est le code de celle-ci.implémentation est le code de celle-ci.

  • 22

    Trois Éléments I/A/CTrois Éléments I/A/C

  • 23

    PolymorphismePolymorphisme

    • Généralisation d'une interface.Généralisation d'une interface.• On veut non seulement que le module On veut non seulement que le module

    client ne connaisse pas l'client ne connaisse pas l'implémentation implémentation d'un module, mais qu'il ne connaisse pas d'un module, mais qu'il ne connaisse pas non plus le type réel du module qu'il non plus le type réel du module qu'il utilise.utilise.

  • 24

    Polymorphisme (2)Polymorphisme (2)

    • Le polymorphisme est un mécanisme Le polymorphisme est un mécanisme syntaxique qui permet à un module client syntaxique qui permet à un module client d'utiliser une interface générique, sans d'utiliser une interface générique, sans connaître le module qui répondra connaître le module qui répondra effectivement à ces requêtes (messages, effectivement à ces requêtes (messages, appels de méthodes). appels de méthodes).

  • 25

    Polymorphisme (3)Polymorphisme (3)

    • Sous unix le système offre un service Sous unix le système offre un service polymorphe d'accès aux périphériques polymorphe d'accès aux périphériques d'd'entrée/sortie.entrée/sortie.

    • Il est en effet possible d'écrire un programme Il est en effet possible d'écrire un programme réalisant des E/S sans connaître le type de réalisant des E/S sans connaître le type de périphérique que l'on va utiliser effectivement périphérique que l'on va utiliser effectivement (écran, disque, imprimante, tube, socket, (écran, disque, imprimante, tube, socket, mémoire, clavier, etc.) .mémoire, clavier, etc.) .

  • 26

    InterfaceInterface

    Choisir une bonne interface est essentielChoisir une bonne interface est essentiel• Éviter les Risques d'ouverture Éviter les Risques d'ouverture • compréhensibilitécompréhensibilité• réutilisabilitéréutilisabilité• Continuité Continuité (s f(s)< εε) )

  • 27

    Construction des ModulesConstruction des Modules

    • Unités linguistiquesUnités linguistiques• peu d'interfacespeu d'interfaces• petites interfacespetites interfaces• interfaces explicitesinterfaces explicites• encapsulationencapsulation

  • 28

    Unités linguistiquesUnités linguistiques

    • Les modules doivent correspondre à des Les modules doivent correspondre à des unités syntaxiques du langage.unités syntaxiques du langage.

    • ClasseClasse• Paquetage Paquetage • LibrairieLibrairie

  • 29

    Peu d'interfacePeu d'interface

    • IL faut réduire le nombre d'interfaces IL faut réduire le nombre d'interfaces qu'qu'utilise un module.utilise un module.

    • Un module doit être le client d'un Un module doit être le client d'un minimum de module.minimum de module.

    • + de fournisseurs = + de chances d'avoir + de fournisseurs = + de chances d'avoir à changerà changer

    • + de fournisseurs = + grande complexité+ de fournisseurs = + grande complexité

  • 30

    Petites InterfacePetites Interface

    • Les interfaces pléthoriques vont à Les interfaces pléthoriques vont à l'encontre de la compréhensibilité du l'encontre de la compréhensibilité du modulemodule

    • Une interface importante n'aide pas à la Une interface importante n'aide pas à la réutilisabilité du module.réutilisabilité du module.

    • De plus, si l'interface est grande le module De plus, si l'interface est grande le module doit être complexedoit être complexe

  • 31

    Interfaces explicitesInterfaces explicites

    • Les modules doivent avoir une interface Les modules doivent avoir une interface explicite où rien n'est caché.explicite où rien n'est caché.

    • La documentation du module doit pouvoir La documentation du module doit pouvoir se limiter à l'interface !se limiter à l'interface !

  • 32

    EncapsulationEncapsulation

    • Concept clef:Concept clef:– Libérer le fournisseurLibérer le fournisseur

    – Protéger le clientProtéger le client

    – Simplifier l'intégrationSimplifier l'intégration

    – Contrôler la déverminationContrôler la dévermination

  • 33

    StyleStyle

    • Suite dans les Styles de ProgrammationSuite dans les Styles de Programmation

  • 34

    Rappelles PID sont toujours positifs.