Cours approche objet UML étape par étape
…
U.M.L.
Notion de classe et d’instance
L’approche objet
Notion d’objet
Un objet est défini à la fois par des informations : données ou attributs ou variables d’instances ; et des comportements : traitements ou méthodes ou opérations.
Exemple :
nom
capital UV
diplôme
VérifierNom
MajUV
ChangerDiplôme
OBJET Etudiant
Lorsque des objets ont les mêmes attributs et comportements : ils sont regroupés dans une famille appelée :Classe.
Les objets appartenant à celle-ci sont les instances de cette classe.
L’instanciation est la création d’un objet d’une classe.
Nom : Dupont Nom : Durant
Capital UV : capital1 Capital UV : capital2
Diplôme : maîtise de
Sciences Eco.
Diplôme : licence de
Socio.
VérifierNom VérifierNom
MajUV MajUV
ChangerDiplôme ChangerDiplôme
Deux instances d’une même classe peuvent avoir des attributs avec des valeurs différentes et mais partagent les mêmes méthodes.
Les messages
La manipulation des objets passe par des envois de messages. Lorsqu’un objet reçoit un message :
Ø Soit le message correspond à un traitement défini dans la classe de l’objet auquel cas la méthode correspondante est exécutée. L’objet répond ainsi au message.
Ø Soit le message ne correspond pas, l’objet refuse le message et signale une erreur. Un message équivaut à un appel d’une méthode.
Un objet gère lui même son comportement.
Ce qui lui permet soit de traiter des messages en exécutant les méthodes correspondantes soit de rejeter des messages en signalant des erreurs. Un objet est parfaitement identifié. Comme s’il possédait un attribut (inaccessible directement) qui identifie la classe à laquelle il appartient.
L ’Encapsulation
L’encapsulation est le fait qu’un objet renferme ses propres attributs et ses méthodes. Une classe encapsule les propriétés (attributs et méthodes) des objets qu‘elle regroupe. La modularité est souvent laissée à la charge du développeur. Dans l’approche Objet : celle-ci est prise en compte par l’encapsulation. L’unité de modularité est la classe. Les classes peuvent être regroupées en packages ou en sous systèmes (granularité supérieure).
L ’abstraction
L’abstraction est la caractérisation d’un objet par une partie publique, une partie privée et une partie implémentation.
L ’abstraction
Exemple : La donnée Capital UV n’est modifiable que par la méthode MajUV.
Ce concept d’abstraction engendre deux catégories d’acteurs :
üles concepteurs des classes
üles utilisateurs des objets
Ces derniers peuvent utiliser les méthodes d’une classe indépendamment de leurs structures internes. Ils n’utilisent que les signatures des méthodes (interface de l’objet) . Ce qui permet aux concepteurs des classes d’objets de modifier la structure interne des méthodes des classes.
L ’Héritage
la classe Etudiant : la classe Etudiant-Elu :
nom nom
capital UV capital UV
diplôme diplôme
Mandat
Syndicat
VérifierNom VérifierNom
MajUV MajUV
ChangerDiplôme ChangerDiplôme
DémissionnerMandat
ChangerSyndicat
ûL’objet Etudiant-Elu a les propriétés (attributs et méthodes) de l’objet Etudiant mais en plus possède d’autres propriétés.
ûLa classe Etudiant-Elu est une spécialisation de la classe Etudiant. C’est une sous classe de la classe Etudiant.
ûLes objets de la sous classe Etudiant-Elu héritent des attributs et des méthodes de la classe Etudiant. La sous classe Etudiant-Elu pourra, si cela est nécessaire pour ses besoins, redéfinir une méthode héritée.
s Chaque sous classe peut avoir une ou plusieurs sous classes formant ainsi une hiérarchie d’objet. On parle de classe ancêtre (ou mère) et de classes descendant (ou fille).
s L’héritage est un mécanisme qui permet d’assurer une grande variabilité dans la réutilisation des objets. Il existe deux techniques liées à l’héritage : les classes abstraites et l’héritage multiple.
Les classes abstraites
C’est un type de classe ayant des propriétés qui ne permettent pas de préciser des instances. Ces classes mettent en commun un certain nombre de propriétés à des objets.
Exemple :
La Classe JeuneAdulte a des propriétés communes aux
classes Etudiant et Etudiant-Elu. Mais on ne peut
l’instancier.
Soit la classe JeuneAdulte
Graduation
Adresse
téléphone
Service Militaire
RédigerCV
AfficherCV
Et :
La classe Etudiant : La classe Etudiant-Elu:
nom nom
capital UV capital UV
diplôme diplôme
Mandat
Syndicat
VérifierNom VérifierNom
MajUV MajUV
ChangerDiplôme ChangerDiplôme
DémissionnerMandat
ChangerSyndicat
La Classe JeuneAdulte a des propriétés communes aux classes Etudiant et Etudiant-Elu. Mais on ne peut l’instancier.
L ’Héritage multiple
L’héritage multiple permet à une classe d’avoir plusieurs classes antécédents et d’hériter ainsi de tous les attributs et méthodes de ces ancêtres.
Exemple
Classe C1 :
At1
At2
Mét1
Mét2
Classe C2 : Classe C3 :
At1 ; At21 At1 ; At31
At2 ; At22 At2 ; At32
At23 At33
Mét1 ; Mét21 Mét1 ; Mét31
Mét2 ; Mét22 Mét2 ; Mét32
Mét33
Soit la classe C50 :
At1 ; At2 ;
At21 ;At22
At23 ; At31 ;
At32, At33;At51
Mét1 ; Mét21
Mét2 ; Mét22
Mét31; Mét32 .
Mét33
Mét51
La classe C50 hérite des classes C1, C2 et C3.
Problème :
–La classe C50 héritera-t-elle 2 fois des attributs At1 et At2 ?
– Si la méthode Mét2 a été modifiée dans C2 et C3 alors laquelle des deux héritera la classe C50 ?
Le polymorphisme
C’est un mécanisme qui permet à une sous classe de redéfinir une méthode dont elle a hérité tout en gardant la même signature de la méthode héritée. Ainsi on peut avoir une méthode avec la même tête (même signature) et des corps différents (codes différents) : polymorphisme. Un même message peut ainsi déclencher des traitements différents selon l’objet auquel il fait appel. Un message polymorphe poserait un problème à la compilation statique car on ne saurait identifier précisément la méthode qu’il vise. On ne pourra le savoir qu’au moment de l’exécution du programme. C’est la compilation dynamique qui permettra de résoudre ce problème.
Démarche méthodologique de construction d’une application les différentes étapes :
méthode : guide de description d’une forme de modèle à une autre.
formalisme : langage de représentation graphique.
Expression des besoins
Spécification
Analyse
Conception
Implémentation
Tests de vérification
Validation
Maintenance et évolution
Les différentes étapes (1)
Expression des besoins :
...
Spécification :
Ce que le système doit être et comment il peut être utilisé.
Analyse :
L’objectif est de déterminer les éléments intervenant dans le système à construire, ainsi que leur structure
et leurs relations .
Elle doit décrire chaque objet selon 3 axes :
Axe fonctionnel : savoir-faire de l’objet.
Axe statique : structure de l’objet.
Axe dynamique : cycle de vie de l’objet au cours de l’application (Etats et messages de l’objet).
Ces descriptions ne tiennent pas compte de contraintes techniques (informatique).
Les différentes étapes (2)
La conception :
Elle consiste à apporter des solutions techniques aux descriptions définies lors de l’analyse : architecture technique ; performances et optimisation ; stratégie de programmation.
On y définit les structures et les algorithmes.
Cette phase sera validée lors des tests.
L’implémentation :
C’est la réalisation de la programmation.
ü Les tests de vérification : Ils permettent de réaliser des contrôles pour la qualité technique du système. Il s’agit de relever les éventuels défauts de conception et de programmation (revue de code, tests des composants,...). Il faut instaurer ces tests tout au long du cycle de développement et non à la fin pour éviter des reprises conséquentes du travail (programmes de tests robustes ; Logiciels de tests).
ü Validation :
Ø Le développement d’une application doit être lié à un contrat ayant une forme de cahier de charges, où doivent se trouver tous les besoins de l’utilisateur. Ce cahier de charge doit être rédigé avec la collaboration de l’utilisateur et peut être par ailleurs complété par la suite.
Ø Tout au long des ces étapes, il doit y avoir des validations en collaboration également avec l’utilisateur.
Ø Une autre validation doit aussi être envisagée lors de l’achèvement du travail de développement, une fois que la qualité technique du système est démontrée. Elle permettra de garantir la logique et la complétude du système.
ü Maintenance et évolution
Deux sortes de maintenances sont à considérer :
! Une maintenance corrective, qui consiste à traiter les “buggs ”.
! Une maintenance évolutive, qui permet au système d’intégrer de nouveaux besoins ou des changements technologiques.
Les différents cycles de vie
Il existe 2 cycles de vie utilisées dans les approches traditionnelles : le modèle linéaire et le modèle en “ V ”.
Le modèle linéaire
Expression des besoins
Spécification Analyse Conception
Implémentation
Tests de vérification
Validation
Maintenance et évolution
Le principe de cette démarche est que chaque phase est traitée complètement avant que la suivante ne soit entamée. Ce qui renvoie les tests de vérification et la validation en fin du processus de développement. S’il y a des erreurs, les retours seront compliqués et coûteraient chers.
Le modèle en “ V ”
…
Le modèle en “V” permet une organisation modulaire.
Le processus s’accomplit en deux phases :
Une phase descendante : de spécifications et de conception.
Une phase ascendante : de tests et de validation.
Comme pour le modèle linéaire, l’inconvénient est que la validation et les tests interviennent tardivement.
Le cycle de vie Objet
Dans un projet Objet, le cycle de vie répond à 3 caractéristiques essentielles :
vLa traçabilité entre les étapes
vUn cycle itératif vUn cycle incrémental
F La traçabilité entre les étapes :
…
Le cycle de vie Objet
F Un cycle incrémental :
@ Lors du développement, une maquette doit être réalisée pour valider l’ergonomie de l’application et l’enchaînement des écrans.
@ Plusieurs versions peuvent être développées. Lors de chacune d’elle, chaque fonctionnalité est améliorée jusqu’à optimisation rendant ainsi le système progressivement robuste.
Les USE CASES
Idée :
Les use cases(cas d’utilisation) sont un concept de la méthode OOSE de Ivar Jacobson.
Ils permettent d’effectuer une délimitation du système et de décrire son comportement.
Ils constituent une représentation orientée “ fonctionnalités ” du système.
Dans la modélisation par les use cases :
2 concepts fondamentaux interviennent :
Les acteurs : utilisateurs du système.
Les uses cases : utilisation du système
Les acteurs
Ceux sont les utilisateurs du système
Ils ont une bonne connaissance des fonctionnalités du système. Ils constituent les éléments extérieurs du système.
Ils peuvent être :
»soit des humains ;
»soit des logiciels ;
»soit des automates.
On distingue :
Les uses cases
Ceux sont les utilisations du système
Il s’agit de déterminer les éléments constitutifs d’un point de vue fonctionnel.
On pourra trouver des use cases pour décrire :
Représentation des acteurs dans un modèle Use Cases :
…
Description d’un Use Case
Il existe plusieurs façons de décrire un use case.
Description textuelle (informelle) :
Exemple :
Use case : “ Retrait en espèce ” :
Le guichetier saisit le n° de compte du client.
L’application valide le compte auprès du système central.
L’application demande le type d’opération au guichetier.
Le guichetier sélectionne un retrait d’espèces de 200F.
Le système “ guichetier ” interroge le système central pour s’assurer que le compte est suffisamment approvisionné.
Le système central effectue le débit du compte.
Le système notifie au guichetier qu’il peut délivrer le montant demandé.
…
Relation « extends »
La relation “extends”
Un ou plusieurs use cases peuvent hériter des caractéristiques d’un autre use case.
Les Uses Cases fils ont les mêmes liens avec les acteurs et les autres use cases que le use case dont ils héritent. Ceux sont de cas particuliers du Uses Case père.
Relation « uses »
La relation “uses”
Soit l’use case “Saisie n° compte”
Le guichetier saisit le code de la banque du compte.
Il saisit le numéro du compte.
Il saisit la clé du compte.
Le système calcule la clé du compte et vérifie qu’elle est bonne.
Le système interroge le compte sur le système central.
Le système affiche le compte ainsi que son détenteur.
…
Lorsque une ou plusieurs tâches sont utilisées régulièrement, on peut les factoriser dans un même use case et faire de telle sorte que d’autres use cases l’utilisent en le pointant par une flèche. Cet use case est en fait une sous partie de chaque use case qui l’utilise. Ce qui permet de décomposer un use case complexe en plusieurs uses cases.
Le Modèle Objet
DÉMARCHE D'APPLICATION D'UML
Nous proposons de suivre une démarche structurée en sept étapes
Étape 1 : élaboration d'un diagramme de contexte du système à étudier: comme nous l'avons déjà dit dans la présentation d'OMT, il est important de démarrer une analyse par le positionnement le plus précis possible du champ du système à étudier. No recommandons donc d'élaborer un diagramme de contexte du système à étudier.
Étape 2 : identification et représentation des cas d'utilisation : les fonctions du système sont identifiées en recherchant les cas d'utilisation du système qui seront mis en oeuvre par les différents acteurs. Le diagramme des cas d'utilisation est élaboré.
Étape 3 : description et représentation des scénarios chaque cas d'utilisation se traduit par un certain nombre de scénarios. Chaque scénario fait l'objet d'une description te ruelle. Chaque scénario est ensuite décrit sous forme graphique à l'aide du diagramme de séquence et/ou diagramme de collaboration.
Étape 4 : identification des objets et classes : une première identification des objets classes est fournie par la synthèse des diagrammes de séquence et/ou de collaboration Ainsi une liste de tous les objets et toutes les classes manipulés peut être dressée.
Étape 5 : élaboration du diagramme de classe : à partir des classes identifiées, une première version du modèle objet est élaborée. Les classes du modèle objet corresponde soit à des préoccupations métier soit à des nécessités techniques.
Étape 6 : élaboration du diagramme état-transition: pour chaque classe importante c'est à dire présentant un intérêt pour le système à modéliser, un diagramme étattransition est élaboré
Étape 7 : consolidation et vérification des modèles : le concepteur doit ensuite ité les étapes 3, 4, 5 et 6 jusqu'au moment où il considérera qu'il atteint le niveau de dé suffisant pour la description du système.
Le Modèle Objet
Cela consiste à définir les objets qui vont modéliser les besoins qui ont été exprimé en termes de fonctionnalités.
Le passage de cet aspect fonctionnel à un aspect objet n’est certes pas évident.
La description des objets est structurelle.
Par ailleurs, on déterminera les liens entre les différents objets.
Les Objets et leurs liens représentent ainsi le modèle statique
Les objets déterminés serviront lors des phases analyse, conception et plus tard à l’implémentation.
Les différents concepts
Concept de classe et d’objet
Les objets du modèle statique sont une représentation (modélisation) des objets (monde réel), qui seront en général ceux qu’on retrouve lors de l’implémentation sous la même forme ou sous une forme différente. Ils sont munis de données encapsulées dans les objets, représentant leurs attributs et leurs opérations (méthodes).
…
Exemple de classes
Chaque objet d’une classe a une identité propre et n’a donc pas besoin d’un identificateur, sauf si celui-ci est un identificateur métier préexistant comme un n° INSEE.
Les différents concepts
Association et Classe d’associations
Entre les 2 classes Lecteur et Ouvrage , il existe un lien qui représente un emprunt d’ouvrage par un lecteur. Il est matérialisé par un lien entre les 2 classes et il peut être caractérisé par :
Un nom
Deux noms de rôle facultatifs
Un sens de lecture
Deux cardinalités.
Une cardinalité peut être représentée par un nombre, une “*” par l’infini ou un intervalle.
Une association peut nécessiter des données et aussi des opérations : il est alors tout indiqué de lui construire une classe.
Classe d’association
On peut choisir parfois entre rajouter une donnée dans une classe ou créer une classe propre. D’autre part, il est possible de mettre la donnée dans une structure classique mais ceci peut s’avérer lourd à gérer et ne peut d’autre part assurer la persistance de la donnée.
Diagramme des Classes
Le modèle objet sera représenté par un diagramme de classes où chacune sera décrite avec ses attributs et ses méthodes :
Nom de la classe
attribut : type = valeur initiale
opération(liste d’arguments) : résultat renvoyé
Diagramme d’une classe
…
Classes abstraites
Il existe des classes qu’on ne peut instancier, car elle sont trop générales. Elle servent à mettre en commun des caractéristiques communes à certaines classes, c’est le cas de la classe Support : C’est une classe abstraite. Celle-ci doit toujours être suivie de classes dérivées. Dans l’exemple précédent les classes dérivées sont Livre, CDAudio et CassetteVidéo. Elle permettent de représenter des concepts importants dans une application.
Héritage simple ou multiple (1)
L’héritage peut être simple (c.a.d. une classe qui hérite n’a qu’une seule classe mère) ou multiple (c.a.d. la classe a plusieurs classes mères).
Ce dernier permet une structuration multiple du diagramme des classes, cependant il induit tout de même une certaine complexité.
Tous les langages de programmation ne gèrent pas l’héritage multiple.
On peut contourner l’héritage multiple dès la phase d’analyse.
…
Agrégation
Lorsqu’une association entre deux instances d’une classe a en plus une particularité dont le sens est du style : “une instance est composée d’une ou plusieurs autres instances ”, on peut alors qualifier cette association d’agrégation. On peut dire également qu’une agrégation est une association de type “ Composé–Composant ”. Où, l’instance composé est l’agrégat et les composants sont les instances agrégées.
Une agrégation peut être perçue comme une association. Cependant une association ne peut être une agrégation.
Si une association a les caractéristiques suivantes, elle peut alors être représentée par une agrégation :