UML et Processus Unifié
+ Les méthodes objet et la genèse d’UML : Les premières méthodes d’analyse (années 70) : Décomposition (fonctionnelle et hiérarchique) d’un système. : L’approche systémique (années 80) : Modélisation des données + modélisation des traitements (Merise, Axial). : L’émergence des méthodes objet (1990-1995) : Prise de conscience de l’importance d’une méthode spécifiquement objet : Encapsulation des données (la structure) et des traitements (le comportement) : Plus de 50 méthodes objet sont apparues durant cette période (Booch, Classe-Relation, Fusion, HOOD, OMT, OOA, OOD, OOM, OOSE...) : Confusion autour l’analyse et la conception : L’expérience a permis de faire le tri parmi les méthodes existantes avec la constatation que les différences entre les méthodes s’amenuisent
L’unification des méthodes
| | | | | Autres Methodes | Partenaires Rational | 1991 ! Booch’91 ! OMT-1 Rumbaugh’91 | | 1992 | | ! OOSE (Jacobson) | | | 1993 ! Booch’93 ! OMT-2 | | 1994 !2 Méthode Unifiée 0.8 | | | Rumbaugh et Booch décident d ’unifier leurs travaux au sein d’une méthode unique | Octobre 1995 !4 UML 0.9 | | | Jacobson les rejoint ! 3 UML 0.9
| 17 Janvier 1997 !5 UML 1.0 | Version 1.0 soumise à standardisation | !5 UML 1.3 | Version 1.0 soumise à standardisation
= l’OMG : Object Management Group : Objectif de l ’OMG « maximiser la portabilité et l ’interopérabilité des logiciels par la définition de standards industriels pour le développement d ’applications commerciales orientées objets » : le plus grand consortium d ’industriels au monde (plus de 570 membres (1995))
= Objectifs d’UML : Proposer un langage visuel de modélisation : Utilisable par toutes les méthodes : Adapté à toutes les phases du développement : Compatible avec toutes les techniques de réalisation : Proposer des mécanismes d’extension et de spécialisation pour pouvoir étendre les concepts de base : Être indépendant des langages particuliers de programmation : Proposer une base formelle pour comprendre le langage de modélisation : Encourager l’application des outils OO
UML
= Principales influences
! Booch | catégories et sous-systèmes
! Embley | classes singletons et objets composites
! Fusion | description des opérations, numérotation des messages
! Gamma | frameworks, patterns et notes
! Harel | automates (statecharts)
! Jacobson | cas d’utilisation (use cases)
! Meyer | pré et post conditions
! Odell | classification dynamique, éclairage sur les événements
! OMT | associations
! Shlaer-Mellor | cycle de vie des objets
! Wirfs-Brock | responsabilités (CRC)
+ L’approche orientée-objet
Principes
= Pourquoi l’approche objet ?
But :
: modélisation des propriétés statiques et dynamiques de
l’environnement dans lequel sont définis les besoins
(domaine du problème),
: formalisation de la perception du monde et des phénomènes
qui s ’y déroulent,
: mise en correspondance de l’espace du problème et de
l’espace de la solution en offrant des notations et des
principes pour toutes les étapes ( le domaine du sujet,
l’analyse, la conception, l’implémentation et les tests)
Avantages :
capacité à
: réduire l’écart sémantique entre la réalité et les modèles
: capacité à regrouper ce qui a été séparé
: à construire le complexe à partir de l’élémentaire
: apporter des modifications locales aux modèles.
Les concepts
Les principes de base de l’approche orientée-objet
: les Objets
: Les Classes d’objets
: L’encapsulation
: L’héritage
: Le polymorphisme
L’objet
La définition d’un objet dépend la phase du cycle de vie pour
laquelle il est destiné
! Définition Générale | ce sur quoi porte notre connaissance
! Pour l’analyse du domaine | c’est une entité pertinente du domaine technique
! Dans un langage de programmation OO | c’est une structure de données et un ensemble de fonctions associées à
cette structure de données ! D’après [Coad &Yourdon, 1991] | "C’est l’abstraction de quelque chose du domaine du problème qui reflète les capacités d’un système à mémoriser des informations ou à interagir avec le domaine" ! D’après [Jacobson, 1992] | "Une entité capable de mémoriser un état (information) et qui offre des
opérations (comportement) pour à la fois explorer et modifier cet état" !2 Ce qu’il faut retenir | Unité formée de l’union d’un état interne (des attributs) et d’un comportement (des opérations) qui a une origine
dans le monde réel et a sa propre identité.
#_Exemples:_# : Objets matériels (table, chaise, crayon, avion) : Objets immatériels, concepts (compte en banque, équation, match de boxe) : Objets virtuels (groupe de travail, division)
= Abstraction L’objet est l’abstraction, faite par l’analyste, du phénomène réel observé. Cette abstraction est ensuite modélisée
en utilisant les concepts appropriés. Deux personnes différentes peuvent avoir deux perception différentes et donc deux modèles différents du même
phénomène réel.
= Identité L’identité caractérise l’existence propre de l’objet : : Immuable : Permanente permet de distinguer tout objet de façon non ambiguë indépendamment de son état : Concept différent de l’égalité dans les approches orientée-objet contrairement aux BD relationnelles : Deux objets peuvent être égaux (attributs et associations) et correspondre à deux objets différents ayant chacun
son identité.
= Les attributs et l’état Les attributs représentent les caractéristiques d’un objet Un attribut est constitué du couple (nom, valeur) #_Exemple:_# une voiture est caractérisée par Couleur Masse Puissance fiscale Quantité de carburant Pouvant avoir les valeurs respectives : Bleu 979 kg 12 CV 30 litres
: Les valeurs prises par les attributs les associations déterminent l’état d’un objet à un instant donné. : L’état peut être une simple valeur comme il peut représenter un autre objet. Par exemple l’état "indisponible" d’un distributeur de billets signifier que l’objet réserve qui est un objet
différent est "vide"
= Comportement : Regroupe toutes les compétences d’un objet, l ’ensemble des opérations applicables à cet objet : Décrit les actions et les réactions de l’objet. : Concept d’opérations (méthodes) : Une opération est déclenchée suite à une stimulation externe : messageenvoyé par un autre objet. Exemple d’objet Attributs Nom:Dupont Grade:senior Age:45 Opérations Preter_livre Modifer_salaire Modifier_grade associations Supérieur Emploi_du_temps
= Liens entre les objets Les associations représentent les liens d’un objets vers les autres objets. Les association peuvent être des agrégations ou des références. Elles peuvent aussi être : ! Statiques | liens durables entre objets ! Dynamiques | liens établis par les opérations (liées au comportement) Lorsque des liens s’établissent entre objets au travers d’échange de messages, un objet peut être : : acteur objet à l’origine d’une interaction. objet actif : ils possèdent un fil d’exécution. : serveur n’est jamais à l’origine d’une interaction. passif : est destinataire des messages. : agent acteurs et serveur à la fois. est à la base du mécanisme de délégation.
= l’encapsulation * "L’encapsulation est le processus qui consiste à compartimenter des éléments d’une abstraction pour constituer sa
structure et son comportement" (Booch 1995) L’abstraction se focalise sur les caractéristiques observalbles et le comportement de l’objet, L’encapsulation se focalise sur la représentation de ces caractéristiques L’encapsulation nécessite la délimitation explicite des abstractions.
Encapsulation (occultation des détails de la réalisation) : : masquer la structure sous-jacente et l ’implémentation des opérations ! les plus gros bénéfices obtenus par une approche orientée objets proviennent du respect du principe
d’encapsulation
Les classes
= La démarche d’abstraction
: Regroupent les objets qui se ressemblent (abstraction)
: Identification des caractéristiques (structure et comportement) communes à un ensemble d’éléments.
: Description condensée de ces caractéristiques.
Moyen de transport
= Description : Spécification décrit le domaine de définition et les propriétés des instances de cette classe (notion de type dans les langages de
programmation classiques). : Réalisation décrit comment la spécification est réalisée et qui contient le corps des opérations et les données nécessaires à
leur fonctionnement.
= Les objets, instances de classes : Chaque objet est une instance d’une classe. : La classe définit les comportements et les structures possibles de ses instances qui sont les objets. : Différentes instances (objets) peuvent avoir leurs opérations invoquées à différents moments et de différentes
manières comme ils peuvent être dans différents états. : Le mécanisme d’instanciation permet de générer des objets (instance) d’une classe.
Les relations entre les classes
= L’association
: Connexion sémantique bidirectionnelle entre classes
: Abstraction des liens qui existent entre les objets instances des classes associées (en général, un objet ne peut
pas agir seul, il a besoin de l ’aide d ’autres objets). : Dés lors qu’un objet a un lien vers un autre objet, il peut lui envoyer un message pour déclencher une de ses
opérations
= L’agrégation : Connexion bidirectionnelle dissymétrique Un train est composé de wagons, un wagon contient des sièges... Une voiture possède quatre roues, un châssis, un moteur : Les relations exprimées ici sont des relations de composition (ou d’agrégation)
Les hiérarchies de classes
= L’héritage
Dans une démarche d ’analyse ou de conception orientées objets, la spécialisation et la généralisation conduisent à
définir des relations de sous-typage et à mettre en évidence l’héritage "Si une classe B hérite d’une classe A, alors aussi bien les opérations que la structure de A deviennent ceux de la
classe B" [Jacobson 1992]
Généralisation et spécialisation
La généralisation signifie toujours : est un ou est une sorte de.
Elle permet la création de l’ancêtre
Exemple :
= Propriétés ! La généralisation est une relation non réflexive ! La généralisation est une relation non symétrique. ! La généralisation est une relation transitive
Des ensembles aux classes
Les objets instances d’une classe partagent des caractéristiques générales, exprimées sous forme d’attribut,
d’opération et de contrainte. C’est la propriété caractéristique de l’ensemble des instances. La propriété caractéristique de X est notée P(X). L’ensemble X peut être divisé en sous-ensembles. La généralisation des classes correspond à la relation d’inclusion des ensembles. Les objets instances d’une classe donnée sont décrits par la propriété caractéristique de leur classe, mais
également par les propriétés caractéristiques de toutes les classes parents de leur classe. La généralisation - sous sa forme multiple - existe également entre arbres de classes disjoints. Elle permet à une classe d’hériter de deux classes ou plus.
= Notion de classe abstraite (! !) Tous les objets instances d’une classe abstraite donnée appartiennent à l’une de ses sous-classes. Une classe abstraite ne donne pas directement des objets. Spécification plus abstraite pour des objets instances de ses sous-classes.
Le polymorphisme
Le terme polymorphisme décrit un élément qui peut prendre plusieurs formes. En Informatique, cela décrit un nom
d’objet qui peut désigner des instances de classes différentes issues d’une même arborescence.
= principe général Les interactions entre objets sont écrites selon les termes des spécifications définies dans leurs super-classes. Dans ce cas, on parle de polymorphisme d’opération : déclencher des opérations différentes en réponse à un même
message. Une sous-classe peut modifier localement le comportement d’une opération héritée d’une super-classe. : Mécanisme de découplage qui agit dans le temps. : N’influence pas l’analyse, mais dépend de l’analyse.
= Application !3 forme | ^ | ^ | ^ ! Carré ! Cercle ! Triangle | : | : | : forme ! Dessiner () dessiner un triangle ! Dessiner () dessiner un cercle ! Dessiner () dessiner un carré
# CollectionF[3] = Carré( "un carré"), Cercle( "un cercle"), Triangle( "un triangle") ;
for (int i = 0 ; i < 3 ; i++) CollectionF[i].Dessiner() ; #
= Influence du typage Le polymorphisme existe dans des environnements typés et non-typés. Seuls les environnements typés garantissent une exécution sans surprise des programmes. Ne pas confondre le polymorphisme avec la surcharge des opérations. Profil de paramètres différent pour des
opérations de mêmes noms. Rien à voir avec la liaison dynamique : résolue statiquement par les compilateurs.
Conclusion
! objet | entité qui combine les caractéristiques essentielles abstraites à partie du domaine du système.
! classe | expression de caractéristiques communes aux objets
! encapsulation | combinaison des attributs et des opérations dans un même objet.
! héritage | relation entre sous classes et super classes décrivant des degrés de ressemblances
! polymorphisme | facilité permettant l’invocation d’opérations en ignorant la classe destinataire du message.
L’application de ces concepts permet : : La modélisation de la structure : La modélisation du comportement
Article
| Mise à jour : | 12 mai 2005 |
| Visites : | 9998 |
| Auteur : | E. Angenault |
| Site : | Angenault.net |
Liens commerciaux
Accès rapide
Unified Modeling Language
