Vous êtes sur la page 1sur 29

la

CONCEPTION ORIENTEE OBJETS pour C++

1.1 07/96

SOMMAIRE

1. INTRODUCTION............................................................................................................................ 1

2. PROBLEME DU LOGICIEL......................................................................................................... 2

3. LES FACTEURS DE QUALITE.................................................................................................... 3

4. PRINCIPES DE LA CONCEPTION ORIENTEE OBJETS ....................................................... 4 4.1 STRUCTURE D'UN PROGRAMME OBJET ..................................................................................4 4.1.1 LES CLASSES D'OBJETS......................................................................................................4 4.1.2 L'OBJET.............................................................................................................................5 4.1.3 LES MESSAGES..................................................................................................................5 4.2 STRUCTURE D'UN OBJET.........................................................................................................5 4.2.1 LES ATTRIBUTS.................................................................................................................6 4.2.2 LES MTHODES.................................................................................................................6 4.3 CONCEPTION...........................................................................................................................6 4.3.1 IDENTIFIER LES OBJETS......................................................................................................6 4.3.2 IDENTIFIER LES CLASSES ET LES LIENS ENTRE CLASSES......................................................7 4.3.3 IDENTIFIER LES MESSAGES.................................................................................................7 4.3.3.1 Identifier les messages reus...........................................................................................7 4.3.3.2 Identifier les messages mis............................................................................................7 4.3.4 ETABLIR LA VISIBILIT.......................................................................................................7 4.3.5 ETABLIR LES INTERFACES..................................................................................................7 4.3.6 RALISER LES OBJETS........................................................................................................7 4.4 LIAISON ENTRE LA SPCIFICATION ET LA CONCEPTION........................................................7 4.4.1 SPCIFICATION TEXTUELLE................................................................................................8 4.4.2 SPCIFICATION SADT.......................................................................................................8 4.4.3 SPCIFICATION SART........................................................................................................8 4.4.4 SPCIFICATION PAR MODLE ENTIT/ASSOCIATION.............................................................8 4.4.5 SPCIFICATION ORIENTE OBJETS......................................................................................8 5. LES LANGAGES ORIENTES OBJET ......................................................................................... 9 5.1 L'RE PR-OBJET...................................................................................................................9 5.2 SIMULA L'ANCTRE..............................................................................................................9 5.3 SMALLTALK LA RFRENCE..............................................................................................9 5.4 EIFFEL UN AUTRE LANGAGE OBJET...................................................................................11 5.5 LES LANGAGES DRIVS DE LISP........................................................................................11 5.6 LES LANGAGES DRIVS DE C ET PASCAL........................................................................11

Conception oriente objets


6. METHODES ET OUTILS............................................................................................................ 14 6.1 LA CONCEPTION INCREMENTALE..............................................................................14 6.2 LA MTHODE OOSD............................................................................................................14 6.3 LES METHODES OOA/OOD SHLAER & MELLOR......................................................16 6.4 LA METHODE OMT..........................................................................................................16 6.4.1 LE MODELE OBJETS...................................................................................................17 6.4.2 MODELE DYNAMIQUE...............................................................................................18 6.4.3 LE MODLE FONCTIONNEL...............................................................................................18 6.4.4 EXEMPLE DE GNRATION DE CODE................................................................................19 6.5 LA METHODE CLASSE RELATION...............................................................................20 6.6 LA METHODE BOOCH.....................................................................................................20 6.6.1 DIAGRAMMES DE CLASSE.................................................................................................20 6.6.2 SPECIFICATION...........................................................................................................21 6.6.3 DIAGRAMMES DE TRANSITION D'ETATS...............................................................21 6.6.4 DIAGRAMMES D'OBJETS...........................................................................................22 6.6.5 DIAGRAMME D'INTERACTIONS...............................................................................22 6.6.6 DIAGRAMMES DE MODULE......................................................................................22 6.6.7 DIAGRAMMES DE SOUS-SYSTEME..........................................................................22 6.6.8 DIAGRAMMES DE PROCESSUS.................................................................................22 7. COMPARATIF ET CONCLUSION............................................................................................ 23

8. ANNEXES....................................................................................................................................... 25 8.1 BIBLIOGRAPHIE.....................................................................................................................25

.Fin Table M.

Conception oriente objets C++

1.

INTRODUCTION

L' objet est le matre mot actuel. L' architecture structure vient peine de rallier les derniers irrductibles que dj un autre concept trange vient lui contester sa suprmatie. Mais ces deux mthodes sont-elles rellement en opposition ? Les objets reprsentent-ils une mode ou offrent-ils de rels avantages ? Sont-ils applicable au domaine temps rel ? Pour rpondre ces questions, nous adopterons la dmarche suivante: Analyse du problme actuel. Dfinition des critres recherchs. Prsentation de la dmarche propose par cette mthode. Comparaison entre les mthodes et satisfaction aux critres dfinis.

Conception oriente objets C++

2. Les problmes existent depuis longtemps :

PROBLEME DU LOGICIEL

Inadquation : Le logiciel ne rpond pas aux besoins, soit parce que ceux-ci sont mal dfinis, soit parce que la ralisation n'est pas conforme. Manque de Fiabilit : Le logiciel tombe souvent en panne.

Ce qui amplifie encore les faiblesses dans le domaine de : La modifiabilit, et l'extensibilit : Une petite correction ou extension entrane une importante modification. La maintenance. Tout ceci avec une exploitation souvent incomplte des ressources de dveloppement, et donc un manque de matrise des cots et des dlais. Ajoutons que le faible coefficient de rutilisation, la difficult des portages, (multiplicit des langages) rendent cet investissement peu rcuprable. Mais avec l'inversion de l'importance relative des cots de dveloppement matriel/logiciel dans un systme, le problme est devenu conomique et les efforts se sont multiplis : Formalisation des procdures de dfinition (adquation). Formalisation des procdures de dveloppement (matrise des cots, des dlais, gestion des ressources) Dfinition pour les besoins de la dfense amricaine d'un langage unique ADA (rutilisabilit). Mthodes de conception rduisant les dfauts cits. Dfinition d'extension de langages classiques.

Conception oriente objets C++

3. Dfinition des facteurs recherchs:

LES FACTEURS DE QUALITE

MODIFIABILITE : Facilit avec laquelle le systme peut tre adapt lors de modifications des spcifications. EXTENSIBILITE : Facilit avec laquelle le logiciel peut tre adapt lors d'une extension des spcifications. MAINTENABILITE : Facilit avec laquelle on dtecte, localise et corrige les anomalies du logiciel. FIABILITE : Aptitude d'un logiciel accomplir sans dfaillance chaque fonction spcifie, dans des conditions d'utilisations donnes pendant un temps dtermin. ROBUSTESSE : Aptitude d'un logiciel matriser les conditions anormales de fonctionnement, limiter les dfauts la partie concerne sans perturber les autres fonctions REUTILISABILITE : Aptitude du logiciel tre rutilis, en tout ou en partie, dans d'autres applications. TESTABILITE : Facilite avec laquelle le logiciel peut tre test. Dfinition des proprits pouvant favoriser ces facteurs : FAIBLE COUPLAGE : Nombre faible d'interconnexions entre les modules. FORTE COHESION : Nombre important d'interconnexions entre les lments d'un module. BONNE DECOMPOSABILITE : Facilit dcomposer les lments complexes en composants pour diviser le travail. BONNE COMPOSABILITE : Facilit de combinaison des modules se combiner diffremment dans la cration d'autres systmes. BONNE COMPREHENSIBILITE : Comprhension des modules indpendamment de leur environnement CONTINUITE MODULAIRE : Un petit changement des spcifications n'entrane qu'un petit changement de l'architecture du logiciel. PROTECTION MODULAIRE : L'effet d'une erreur (exception) est limit au module ou elle est souleve.

Conception oriente objets C++

4.

PRINCIPES DE LA CONCEPTION ORIENTEE OBJETS

L' effort de formalisation des phases du cycle de dveloppement conduit les concepteurs de mthodes proposer des modles de reprsentation. Ces modles combinent trois axes principaux d'analyse : l'axe fonctionnel, l'axe dynamique et l'axe des donnes auquel il faut ajouter l'axe architecture physique en phase de conception. Le modle structur privilgie l'axe fonctionnel tandis que le modle objet unifie les axes fonctionnels et donnes. Ces modles sont applicables avec quelques adaptations aux phases de spcification ou conception. En effet la spcification vise la description non ambigu de ce que fait un systme (le quoi), tandis que la conception vise la description de la ralisation du systme (le comment), mais toutes deux peuvent utiliser le modle objet pour cette description. Le concept objet que nous allons prsenter est dont galement utilis en spcification oriente objets, mais avec une dmarche bien sr diffrente.

4.1

STRUCTURE D'UN PROGRAMME OBJET

Un programme objet est constitu d' objets qui interagissent entre eux, par l'change de messages.
o b je t c ra n g r a p h iq u e

M essage A f f ic h e

M essage A ffic h e

o b je t fe n tre g r a p h iq u e M essage A f f ic h e

o b je t fe n tre a lp h a n u m r iq u e

M essage T ra c e

f o n c t io n s m a th m a tiq u e s

M e s s a g e T ra c e M e s s a g e L im it e s

o b je t c la v ie r / o p r a te u r

4.1.1

Les classes d'objets

Les classes dfinissent un type d'objet. L'utilisateur a la connaissance du nom de l'objet et des messages qu'il peut lui envoyer.

Conception oriente objets C++ 4.1.2 L'objet

Chaque objet est obtenu par instanciation de la classe, tout comme on dclare une variable d'un certain type, et il est accessible par son nom. Mais un objet est autonome, il gre sa structure interne de donnes dont l'utilisateur n'a pas connaissance, et le traitement des messages qu'il reoit. 4.1.3 Les messages

Les objets communiquent entre eux par des messages. Un objet envoyant un message indique l'objet destinataire, le slecteur (nom du message) et les arguments du message. 4.2 STRUCTURE D'UN OBJET

Un objet est dfini extrieurement (interface) par son nom et sa classe et les messages qu'il peut recevoir (la classe peut contenir un seul objet)

A t t r ib u t 1

A t t r ib u t 2

A t t r ib u t 3

A t t r ib u t M

CORPS
M E T H O D E 1 M E T H O D E 2 M E T H O D E 3 M E T H O D E X

IN T E R F A C E
SELE CTEU R 1 SELEC TEU R 1 SELE CTEU R 1

M ES SAG E S

Conception oriente objets C++

A tt r ib u t 1

A t t r ib u t 2

A t t r ib u t 3

A t t r ib u t M

CORPS
M E T H O D E 1 M E T H O D E 2 M E T H O D E 3 M E T H O D E X

IN T E R F A C E
SELE CTEU R 1 SELEC TEU R 1 SELE CTEU R 1

M ES SAG E S

La structure interne de l'objet non visible de l'extrieur comprend : 4.2.1 Les attributs

Les attributs sont des donnes permettant de modliser un objet. Par exemple, la couleur et la cylindre pour une voiture. 4.2.2 Les mthodes

Les mthodes sont les sous-programmes qui vont traiter les messages. Il peut y avoir plusieurs mthodes par message, chacune traitant une configuration particulire d'arguments. 4.3 CONCEPTION

La dmarche de conception comprend cinq tapes : 4.3.1 Identifier les objets

Il faut identifier les objets et leurs attributs. Pour cela choisir les objets du monde rel travers l'analyse des spcifications. Il ne s'agit pas de raliser un modle exhaustif de la ralit mais d'en faire une abstraction pour le domaine d'utilisation souhait. Par exemple, les attributs position du volant et vitesse engage d'une voiture sont de bons attributs pour un systme de conduite, et kilomtrage et niveau d'huile pour un systme d'entretien. On dfinira les valeurs associes des attributs. (Ex: tat marche/arrt).

Conception oriente objets C++

Les objets peuvent ensuite tre groups en classes d'objets. On peut aussi regrouper les affinits pour donner naissance des objets plus gnraux. (Ex la classe des polygones pour la classe des rectangles) 4.3.2 Identifier les classes et les liens entre classes

Les communauts entre objets peuvent permette d'identifer les classes. Les communauts entre classes peuvent permettre d'identifier des classes partages dont elles hriteraient des proprits. 4.3.3 Identifier les messages

Cette phase consiste tablir deux listes construites plus ou moins en parallle. 4.3.3.1 Identifier les messages reus

Ce sont les oprations sur les objets qui seront raliss lors de l'implmentation. On considre trois types de messages : Les constructeurs : l'appel d'un constructeur peut modifier l'tat de l'objet. Les slecteurs : ils permettent d'obtenir des informations sur l'tat de l'objet mais ne modifient pas son tat. Les itrateurs : permettent de visiter l'ensemble des objets d'une classe, par exemple pour imprimer tous les objets d'un arbre, ou pour effectuer une recherche. 4.3.3.2 Identifier les messages mis

Ce sont les oprations utilises sur les autres objets. Cette liste sert surtout complter la premire et donne une premire ide des liens entre objets. 4.3.4 Etablir la visibilit

Il faut tablir les relations de visibilit entre les objets. Un objet qui envoie des messages un autre objet a vue sur lui. 4.3.5 Etablir les interfaces

Il faut ici dfinir les diffrentes combinaisons possibles d'arguments pour chaque message trait par un objet. Chaque combinaison correspondra la dfinition de l'interface de la mthode traitant ce type d'appel. 4.3.6 Raliser les objets

Cette phase correspond la ralisation de chaque objet (conception dtaille + codage) 4.4 LIAISON ENTRE LA SPCIFICATION ET LA CONCEPTION

En fonction du type de spcification, il existe quelques rgles de bon sens facilitant l'application de la dmarche.

Conception oriente objets C++

4.4.1

Spcification textuelle

Il faut d'abord lire la spcification en tablissant des listes. Les noms correspondent gnralement des objets, les verbes des messages, les adjectifs des attributs ou des valeurs d'attribut. Eliminer ensuite les synonymes, les objets en dehors du systme concevoir. Une fois ce premier niveau de formalisation, le reste de la dmarche est identique. 4.4.2 Spcification SADT

Les flots de donnes d'entre ou de sortie sont souvent des objets, les donnes de contrle galement l'exception des dclencheurs. Les mcanismes ne sont gnralement pas de bons objets. Les boites des datagrammes correspondent trs souvent des objets. Les botes des actigrammes constituent les messages. 4.4.3 Spcification SART

Les flots de donnes et les rservoirs d'information sont souvent des objets ou des attributs d'objet. Les processus fonctionnels (bulles) et les flots de contrle des messages. La CSPEC dcrit le fonctionnement dynamique d'un objet en fonction des messages. 4.4.4 Spcification par modle entit/association

Ce modle de spcification est orient donnes, Les entits correspondent donc des objets, et les attributs des entits aux attributs des objets. Les associations correspondent en majorit des messages si elles peuvent tre intgres aux entits, parfois des objets si elles reclent des informations non reliables aux objets. 4.4.5 Spcification oriente objets

Certaines mthodes de spcification oriente objet commencent merger. L'outil de spcification SA/RT TEAMWORK propose de raliser avec les mmes outils une spcification oriente objets, mais il est encore trop tt pour en valuer l'impact.

Conception oriente objets C++

5.

LES LANGAGES ORIENTES OBJET


PASC AL

O BJECT PASCAL SM ALLTALK L IS P

E IF F E L

S IM U L A

O B J E C T IV E C

C ++

LO O P TUR BO PASC AL C

AD A

5.1

L'RE PR-OBJET

Certains travaux pralables comportaient des lments repris dans la conception oriente objet : Modularit (D.L.PARNAS 1972) Type abstrait de donnes (B.LISKOV/J.GUTTAG 1975) Modle ENTITE/ASSOCIATION (CHEN) Mais les concepts sont ns en mme temps que les langages les supportant. 5.2 SIMULA L'ANCTRE

Le langage SIMULA (DAHL & NYGAARD 1966) est un langage classique driv de l'ALGOL 60, qui intgre les notions de classe, d'hritage qui seront repris par ses successeurs. Langage avant tout cr pour des simulations, il intgre galement des notions temps rels qui ont peut-tre inspir ADA. 5.3 SMALLTALK LA RFRENCE

SMALLTALK 80 reste le plus complet des langages objet. C'est la fois, un concept, une conception, un langage, un systme d'exploitation, un intgrateur graphique dvelopp par un groupe de recherche XEROX.

Conception oriente objets C++

10

L'environnement est multifentr et multitches. L'utilisateur peut ouvrir des fentres de travail (browser), pour excuter ses applications. Il dispose de l'ensemble du source des objets du systme et des applications, et d'outils pour les diter et les dbugguer. On peut considrer SMALLTALK comme une base de donnes d'objets. Considrons les principaux concepts du langage :
O B JE T 1 O B JE T 2

M O D U L A R I T E , M A S Q U A G E , E N C A P S U L A T IO N

Modularit : Aucun composant ne dpend des dtails internes d'un autre composant. Masquage des informations et encapsulation : La structure interne des objets est cache, et manipule seulement par les mthodes internes.
O BJE T PER E O B JE T M ER E

O B JE T F IL S

H E R IT A G E M U L T IP L E

Hritage : Une classe d'objets spcifiques peut hriter des proprits d'objets plus gnraux. Ainsi si un message n'est pas trait localement, la mthode de la classe parent est utilise. Banalisation des objets : Les classes sont elle-mmes des objets appartenant la mta-classe.

P O L Y M O R P H IS M E

Polymorphisme

Conception oriente objets C++

11

E N T IE R S

REELS

C O M PLEXES

TR I

S E L E C T IO N D Y N A M IQ U E

Slection dynamique des mthodes : Ceci permet de dcrire des objets de haut niveau, tableaux, listes, indpendamment du type d'objet lmentaire. Cette souplesse se paye au prix d'une relative inefficacit et d'un faible niveau de protection. L'utilisation d'algorithmes plus performants, et une compilation pralable pour optimiser les relations statiques, permettent des performances comparables celles obtenues par les compilateurs. Le concept d'hritage enrichit la phase d'identification des objets d'une autre proccupation : celle d'tablir des filiations entre les classes d'objets, d'identifier des objets parents. Ainsi aucun traitement ne doit tre dupliqu en SMALLTALK. Si deux objets ncessitent un traitement similaire, ils partagent donc un concept qui doit donner naissance une classe dont tous deux pourront en hriter les proprits. Ceci permet d'obtenir des taux de rutilisation et donc de compression assez spectaculaires (dix quinze en nombre de lignes par rapport aux langages classiques) 5.4 EIFFEL UN AUTRE LANGAGE OBJET

EIFFEL, d'une syntaxe plus familire que celle de SMALLTALK comporte des notions de mcanismes de dfense optionnels. Pour des raisons de portabilit, le compilateur gnre un source C, mais n'est en aucun cas influenc par ce langage, c'est pourquoi il est class dans les langages originaux. 5.5 LES LANGAGES DRIVS DE LISP

LISP tant trs utilis dans le domaine de l'intelligence artificielle, plusieurs langages sont ns en intgrant les notions d'objets en extension du langage LISP. C'est le cas des langages LOOP, FLAVORS (MIT), CEYX (INRIA). 5.6 LES LANGAGES DRIVS DE C ET PASCAL

Certains ont tent d'utiliser les langages classiques comme PASCAL, C (K.Dutta). J'ai moimme essay de crer quelques objets en PASCAL. C'est tout fait possible avec un peu de discipline, mais l'criture n'est pas trs naturelle.

Conception oriente objets C++

12

Par contre des extensions des langages C ou PASCAL ont permis d'allier la puissance du concept objet avec l'efficacit des compilateurs, c'est le cas d'OBJECT PASCAL (PASCAL), DE TURBO-PASCAL, OBJECTIVE C (C), C++ (C). OBJECTIVE C s'appuie sur SMALLTALK pour les dclarations de classe, tandis que la syntaxe de C++ drive compltement de celle du C. OBJECTIVE C a t retenu par la machine mythique NEXT. C++ a t retenu comme successeur de C pour crire les prochaines versions d'UNIX. Ces langages sont en majorit moins puissants que SMALLTALK, mais on peut encore les considrer comme des langages objets. Ils sont souvent implants sous forme d'un prprocesseur qui gnre un source compilable par le langage d'origine. Le choix de la grosse majorit des fabricants s'est port sur C++, candidat la normalisation ANSI. La dernire version (2.1) est plus puissante que SMALLTALK et la prochaine devrait combler certaines de ses lacunes par rapport ADA (gnricit et exceptions). Ses avantages sont : Une compatibilit quasi-totale avec le C ANSI, Tous les mcanismes objets : dfinition de classe, hritage multiple, surcharge, redfinition des oprateurs... L'interoperabilit avec le C, Son faible prix. C++ existe sur SUN, sur PC (Zortek/BORLAND/MICROSOFT-C++), en chane croise (prprocesseur MICROTEC), etc Il connat surtout un gros succs pour la programmation des interfaces graphiques XWINDOW, MOTIF, OPENLOOK, et prsent WINDOWS sur PC.

Conception oriente objets C++

13

O b je c t

E rro r o b je c t

h r it a g e p u b lic h r it a g e p r iv S o r t a b le s o r t a b le Base D a te ld a t e

c la s s e m o d u le S tr in g s trn g Base T im e lt im e T im e

S ta c k s ta c k

C o n t a in e r

C o n t a in e r Ite r a to r C o n ta in C o lle c t io n c o lle c t

A s s o c ia t io n assoc

Q ueue queue

D eque deque

D a te

A b s tra c t A rra y Ite ra to r A rra y a b s ta rry A rra y a rra y S o rte d A rra y s o rta rry

H a s h T a b le H a s h T a b le Ite r a to r h a s h tb l Bag bag Set set

L is t lis t

L is t Ite r a to r

D o u b le L is t

D o u b le L is t Ite r a to r d b lis t

D o u b le L is t E le m e n t d is t e le m D ic t io n a r y d ic t

L is t E le m e n t ls t e le m

re s s o u rc e

c ls t y p e s

c ls d e f

Turbo-PASCAL comporte des qualits objets presque aussi bonnes, son seul dfaut tant une dfinition propritaire BORLAND du langage et donc une portabilit nulle. Gnricit : Elle permet d'crire des mta classes permettant d'obtenir des services sans pour autant adhrer aux principes qu'exige l'hritage. Ainsi il est possible d'crire une classe de tri qui peut travailler sur des classes drivs de l'objet de base. La gnricit permet d'crire la mme classe sans exiger qu'elle drive d'une classe de base. Surcharge : Ceci permet de dclarer par le mme nom deux fonctions dont la nature des arguments diffre, pour dclarer plusieurs mthodes traitant le mme type de message avec des arguments diffrents.

Conception oriente objets C++

14

6.
AD A

METHODES ET OUTILS

SM ALLTALK

C ++

SD BO O CH BUH R it r a t i v e

HO O D

M AC H2

O O SD

M AC H

6.1

LA CONCEPTION INCREMENTALE

Les premiers langages vritablement orients objets utilisaient une dmarche incrmentale de dveloppement, sans vritable phase de conception pralable. Le systme d'exploitation de smalltalk permet d'accder la base d'objets, de modifier ou d'ajouter une classe. Gnralement une nouvelle application ne ncessite que quelques objets supplmentaires. Ce processus s'appelle la conception incrmentale. Il n'y a pas vraiment d'outil de conception mme si le systme est souvent enrichi par des vues graphiques permettant de comprendre les relations inter-objets, et de naviguer parmi eux. 6.2 LA MTHODE OOSD

L'engouement actuel pour des langages rellement objets mais pour des applications industrielles a provoqu la sortie des premiers outils de conception rellement objet. L'outil de gnie logiciel Stp propose un outil supportant OOSD, mthode drive de Structured Design dont elle applique le formalisme dans un contexte objet.

Conception oriente objets C++

15

P a ra m tre o f1 d e c o n t r le e n s o r t ie

e 1 P a r a m tr e E x c e p t io n a1 a2 e1 Nom E x c e p t io n

P a r a m tr e F o rm e l o v1 e n s o r t ie

iv 1 a3 a4

P a r a m tre F o rm e l e n e n tr e P a ra m tr e F o rm e l G n r iq u e

C la s s e A c t iv a t io n A s y n c h ro n e op3 O ut In op4 M o n it o r

C la s s e G e n e r iq u e G a rd e

Appel op1 O ut In op2 G e n e r ic M o n it o r

op5 O ut 1 In 2 Squence op6 G e n e r ic M o n it o r

p a r a m e tr e g e n e r iq u e a c tu e l gp=>val

nom c la s s e

C la s s q1=>c1

M o d u le v is ib ilit a1 a2 C la s s e

h r it a g e c la s s e g n r iq u e c la s s e d riv e

M o d u le i n c lu s i o n l e x ic a l M o d u le donne

M o d u le appel it r a tif M o d u le L ib r a ir ie

M o d u le appel c o n d it io n n e l M o d u le

Elle comporte tous les mcanismes objets : classe hritage multiple, et ADA : gnricit, temps rel ADA, exceptions, lien dynamique. L'outil est configurable afin de pouvoir masquer les concepts qui ne sont pas supports par le langage. (ex gnricit en C++, hritage en ADA) On distingue deux types de schmas :

Conception oriente objets C++

16

les schmas de dfinition, dans lesquels toutes les oprations disponibles sur l'objet sont visualises avec sa structure internes et les ressources externes utilises, Les schmas d'utilisation dans lesquels on voit l'ensemble des objets d'un niveau de l'application, et seulement les oprations rellement utilises. Ceci permet de distinguer la vue "application", assimilable notre phase de conception prliminaire, de la vue "structure interne de l'objet" assimilable notre conception dtaille. 6.3 LES METHODES OOA/OOD SHLAER & MELLOR

La mthode OOA comporte 3 modles principaux : Modle d'information : attribut des classe et liens entre classes Modle dynamique : automate par objet Modle fonctionnel : proche de SA plus d'autres : Modle de dcomposition en domaines (sous-systmes ?) Modle de communication entre objets Modle d'accs entre classes (dpendances ?) et un langage PDL pour dcrire les actions. La mthode OOD comporte en outre : Le diagramme de classe : vue externe d'une classe Le diagramme d'architecture de classe : diagramme SD des fonctions de la classe Le diagramme de dpendance : diagramme de visibilit entre classes Le diagramme d'hritage : diagramme hierarchique Les outils disponibles sur ces mthodes sont les suivants : GraphTalk OOA/OOD disponible sur P.C. et station. SES Ojectbench avec une fonction de simulation du modle. TEAMWORK OOA 6.4 LA METHODE OMT

La mthode Object Modeling Technique du Dr Rumbaugh (General Electric) est inspire de OOA mais l'applique galement en conception et prvoit 3 modles principaux : Un modle objet traduisant les liens physiques entre classes avec des symboles d'association hrits des relations de CHEN d'aggrgation (composition physique ?) d'hritage Un modle dynamique avec des automates et des sous automates Un modle fonctionnel trs semblable SA. et deux autres surtout utiliss en spcification : Diagrammes d'instance. Liens entre objet et non entre classes. Scnarios traces d'vnements entre objets La mthode prvoit des indications de gnration de code et de vrification entre modles.

Conception oriente objets C++

17

Les outils disponibles sont les suivants : OMTool et OMT Select : outils souples sur P.C. GraphTalk OMT : outil disponible sur station et P.C. OMT/STP : outil sur station LOV/OMT : outil franais sur station OMT PARADIGME : outil sur P.C. et station achet par CADRE (TEAMWORK)

6.4.1

LE MODELE OBJETS

NOM_CLASSE attribut 1 attribut 2 attribut N mthode 1 mthode 2 mthode N Une classe est dfinie par son nom, des attributs et des mthodes.

Conception oriente objets C++

18

Le diagramme objet des liens entre classes peut tre prcd en analyse par un diagramme d'instances, montrant les liens entre objets (avant identification des classes) Des liens d'association similaires aux relations de CHEN peuvent relier les classes : Relation 1:1 Relation 1ou 0 : 1 Relation N:1 Lorsqu'une classe est compose d'autres classes, il y a aggrgation. On y trouve galement des liens d'hritage spcifiques de l'orientation objet 6.4.2 MODELE DYNAMIQUE

Le modle dynamique est un automate de type Harel. Un tat peut comporter un sousautomate. Le comportement de l'application peut tre pr-modlis en analyse par Des scnarios de succession d'vnement entre objets (event trace) event-flow : diagramme avec tous les vnements entre objets (instance) class event-flow : diagramme avec tous les vnements entre classes d'objets. 6.4.3 Le modle fonctionnel

Le modle fonctionnel est hrit de SA (bulles, flots, rservoirs)

Conception oriente objets C++

19

6.4.4

Exemple de gnration de code

La gnration de code ne semble porter que sur le modle objet. Sous l'outil OMTool, le schma prsent donne lieu la gnration de code : // DECLARATIONS FOR OMT MODULE atm #ifndef _atm_H #define _atm_H 1 class Transaction { protected: void* date_time; Entry_Station* ptrEntry_Station; Set<Update*> ptrUpdate; }; class Update { protected: void* amount; void* kind; Transaction* ptrTransaction; Account* ptrAccount; };

Conception oriente objets C++ class Consortium // SYNOPSIS // An organization of banks that commissions and operates // the ATM network. The network only handles transactions // for banks in the consortium. { protected: Dict<void*,Bank*> ptrBank; Dict<void*,ATM*> ptrATM; }; Cette gnration ncessitera l'entre sous l'outil des informations non graphiques : Types Argument des fonctions Certains qualifieurs (drivation publique ou prive...)

20

La gnration de code est paramtre par les noms des rubriques des informations non graphique, ex : $type $role Les associations et aggrgats sont grs par dfaut par des pointeurs. Les relations "plusieurs" sont gres par dfaut par des classes gnriques Set,List,Dict. 6.5 LA METHODE CLASSE RELATION

La mthode classe relation est une mthode franaise inspire d'OMT et de OOA/SHLAER & MELLOR. Elle n'est actuellement supporte que par un seul outil OBJECTEERING de SOFTEAM. Par rapport OMT, l'outil contraint la mthode. Elle comporte galement une gnration de code sur une partie des automates. 6.6 LA METHODE BOOCH

Pre fondateur des mthodes oriente objets qui ont suivies la gnse du langage ADA, Booch, participant l'outil ROSE de la socit RATIONNAL supportant sa mthode, s'est r-orient prsent vers le C++. Sa mthode prtend traiter les deux langages mais tous les exemples de ses livres didactiques sont prsent en C++. 6.6.1 Diagrammes de classe Ce type de diagramme donne la vue logique du systme.

Conception oriente objets C++


paramtre rel Classe Attribut Mthode() hritage paramtre formel Classe paramtre association Classe Attribut Mthode()

21

Clef {contrainte } relation utilise 1 1 N

Classe Attribut Mthode()

relation a .. 1

Classe pre Attribut Mthode() A Abstraite F Friend Statique S Classe Attribut Mthode()

Accs protg Accs priv Accs de mise en oeuvre

Classe imbrique

V Virtuel N

Catgorie de classes Classe 1 Classe 2 Classe incluse par valeur

Classe incluse par rfrence

Note

6.6.2

SPECIFICATION

Une spcification est la fiche textuelle dcrivant les entit classes, catgories, attributs,... 6.6.3 DIAGRAMMES DE TRANSITION D'ETATS

L'automate utilis par booch est un automate de type harel avec : des conditions de transition des actions sur l'entre dans un tat des actions sur la sortie d'un tat des sous-automates dans les tats mais sans les tats concurents.

Conception oriente objets C++ 6.6.4 DIAGRAMMES D'OBJETS


Objet Attributs G P F L N:Message() P Objet Attributs

22

Visibilit globale Paramtre Objet fournisseur partiede l'objet client Objet fournisseur est local l'objet client

Les diagrammes objets sont utilises en analyse lorsque les classes ne sont pas encore identifies. Le symbolisme pour les objets est le mme que celui des classes. Un scnario peut y figurer en indiquant une suite de messages ordonns par le prfixe N. Il peut aussi comporter des rles, des cls et des contraintes. 6.6.5 DIAGRAMME D'INTERACTIONS

Semblables aux scnarios d'OMT, ils peuvent tre utiliss en spcification pour donner des scnarios de messages entre objets dans un diagramme type chronogramme. 6.6.6 DIAGRAMMES DE MODULE

On retrouve ici l'icnographie utilise par la premire version de la mthode BOOCH pour le langage ADA. Il s'agit du diagramme de visibilit, avec la distinction visibilit du corps ou de l'interface. 6.6.7 DIAGRAMMES DE SOUS-SYSTEME

Ces diagrammes donnant les relations entre agglomras de modules tait aussi voque lors de la premire version de la mthode de BOOCH pour ADA. 6.6.8 DIAGRAMMES DE PROCESSUS

Ce type de diagramme utilise des cubes, reprsentatifs des processeurs et priphriques. Chaque cube processeur donne la liste des processus attributs.

Conception oriente objets C++

23

7.

COMPARATIF et CONCLUSION

La comparaison entre la dcomposition fonctionnelle et la dcomposition en objet, montre que les objets sont plus facilement rutilisables que les fonctions.
C o n t r le de v it e s s e

a c q u rir l a v it e s s e d s ir e

a c q u r ir la v it e s s e c o u r a n te

a c q u r ir le s ig n a l d e f r e in a g e

C a lc u l e r la c o m m a n d e m o te u r

A p p liq u e r la c o m m a n d e m o te u r

H o r lo g e

R oue

P ilo t e

V it e s s e c o u r a n te

V it e s s e D s ir e F r e in P u is s a n c e

M o te u r A c c e le r a t e u r

Par dfinition les objets concentrant les dfinitions de donnes et toutes les fonctions ncessaires sur ces donnes, ils sont plus indpendants avec une forte cohsion interne et un faible couplage externe. Cette autonomie facilite galement la comprhensibilit et la composabilit. La dcomposabilit est galement assure puisque la dmarche est globalement descendante surtout pour les mthodes destines tre utilises avec ADA. Ils bnficient gnralement d'une bonne protection modulaire, celle-ci tant assure l'intrieur de l'objet, aucune pollution extrieure n'tant possible. Quelques essais ont permis de dgager certaines restrictions :

Conception oriente objets C++

24

La rutilisabilit fait apparatre plus de composants qu'une conception classique (certains objets locaux peuvent tre rendus publiques), compliquant les diagrammes, Les mcanismes d'hritage (C++) sont trs puissants mais il devient parfois difficile d'apprhender les "liens familiaux" et les proprits hrites. L'mergeance rcente de mthodes et d'outils supportant les concepts objets devrait faciliter l'usage de l'orient objets.

Conception oriente objets C++

25

8. 8.1 BIBLIOGRAPHIE

ANNEXES

Conception oriente objet : Cours IGL v01 Conception et programmation par objets par Bertrand Meyer Sminaire Janvier 89 Object oriented Software Construction par Bertrand Meyer ditions Prentice hall Ingnierie du logiciel avec ADA par Grady Booch Software component with ADA par Grady Booch Objet Oriented Computing IEEE (Tomes 1 et 2) The C++ programming language par Bjarne STROUSTRUP Concepts of Object Oriented Structured Design, A.L. WASSERMAN P A PIRCHER RJ MULLER Interactive Development Environments Inc The Object Oriented Structured Design Notation for Software Design Representation A.L. WASSERMAN P A PIRCHER RJ MULLER Object lifecycles Modeling the world in states, Sally Shlaer / Stephen J. Mellor, YOURDON PRESS COMPUTING SERIES Object-oriented modeling and design, James Rumbaugh, PRENTICE HALL INTERNATIONAL EDITIONS Ingnierie des objets - approche classe-relation application C++, P.Desfray, MASSON Analyse & conception orientes objets - Grady BOOCH, Addison Wesley

exemple COO