Académique Documents
Professionnel Documents
Culture Documents
UFR SAT/UGB
Plan 2
Plan 4
Libres
ArgoUML (http ://argouml.tigris.org/)
Papyrus (http ://www.papyrusuml.org)
StarUML (http ://staruml.sourceforge.net)
BOUML (http ://bouml.free.fr/)
...
Commerciaux
Rational Rose
Borland Together Enterprise Architect PowerDesigner
...
et aussi les plugins des outils de développement (en particulier
Eclipse)
Liste plus complète :
http ://en.wikipedia.org/wiki/List_of_Unified_Modeling_Language_tools
Pourquoi et comment modéliser en orienté objet 25
UML
Modélisation
présentation stockage
Java Les objets Java
Distribution
CORBA
Avant les objets...la programmation procédurale 27
Z Programme = suite d’instructions exécutées par une machine.
Z Son exécution = ces instructions agissent sur des données.
DONNÉES
Fonction 1
Fonction 2
Fonction 3
Fonction opérant
Sur les données
Messages
DONNÉES
Fonction opérant
Sur les données
Objet
Un objet est une entité hermétique qui contient à la fois des
données et des traitements (les données sont appelées attributs et
les traitements, opérations ou méthodes).
Un object a une identité. Sa durée de vie est limitée. Il joue un ou
plusieurs rôles dans le système.
Principes
Modularité La logique interne de l’objet est décorrélée de son
utilisation.
Encapsulation La seule façon d’influer sur l’état d’un objet est
de lui envoyer des messages.
Abstraction Les objets sont généralement classifiés suivant une
relation de généralisation.
L’état 35
Z Tout objet possède une identité(OID) qui lui est propre et qui
le caractérise
OID ("Object identifier") est l’identifiant (interne) unique de
l’objet
Au niveau programme, l’OID est le plus souvent un pointeur
(au besoin persistant)
Z Identité attribuée implicitement à la création de l’objet
Z L’identité permet de distinguer tout objet de façon non
ambiguë, indépendamment de l’état
Z 2 objets différents peuvent avoir le même état
Z L’identité d’un objet est immuable tout au long de sa vie
Z Attention : identité̸= nom de la variable qui référénce l’objet
Communication entre objets 38
Etudiant
Nom
Datenaissance
Diplôme
ChangerNom
VerifierDateNaiss
changerDiplome
Les instances 40
Instances
Les objets appartenant à celle-ci sont les instances de cette classe.
ChangerNom ChangerNom
VerifierDateNaiss VerifierDateNaiss
changerDiplome changerDiplome
Message
Un message équivaut à un appel d’une méthode.
Message simple
message dont on ne spécifie aucune caractéristique d’envoi ou
de réception particulière
Z Exemple : Publicité (papier, radio, télé, Internet, ...)
Message asynchrone
Message qui n’interrompt pas l’exécution de l’expéditeur.
Le message envoyé peut être pris en compte par le récepteur à
tout moment ou jamais traite
Z Exemple : Courrier (poste, répondeur, messagerie, ...)
Les messages 43
Message synchrone
Message qui bloque l’expéditeur jusqu’à prise en compte du
message par le destinataire
Le flot de contrôle passe de l’émetteur au récepteur
L’émetteur devient passif et le récepteur actif la prise en
compte du message
Z Conversation (orale, téléphone, chat, ...)
Message dérobant
Message qui n’interrompt pas l’exécution de l’expéditeur
Il ne déclenche une opération chez le récepteur que s’il s’est
préalablement mis en attente de ce message
Z Avertissement (alerte, autorisation, ...)
L’Encapsulation 44
Encapsulation
L’encapsulation est le fait qu’un objet renferme ses propres
attributs et ses méthodes.
Nom : Sidi
Datenaissance: 12/06/90
Diplôme : licence info
ChangerNom
VerifierDateNaiss
changerDiplome
Encapsulation et modularité
Z La modularité est souvent laissée à la charge du développeur.
Z Dans l’approche Objet : celle-ci est prise en compte par
l’encapsulation.
Z L’unité de modularité est la classe.
Z Les classes peuvent être regroupées en packages ou en sous
systèmes (granularité supérieure).
L’Encapsulation 46
Z Consiste à masquer les détails d’implémentation d’un objet, en
définissant une interface
Z L’interface est la vue externe d’un objet, elle définit les services
accessibles (offerts) aux utilisateurs de l’objet
Z On peut modifier l’implémentation des attributs d’un objet
sans modifier son interface
Z L’encapsulation garantit l’intégrité des données, car elle
permet d’interdire l’accès direct aux attributs des objets
abstraction
L’abstraction est la caractérisation d’un objet par une partie
publique, une partie privée et une partie implémentation.
Z L’accès public :
Tout ce qui est accessible par les autres objets. Les méthodes
publiques représentent l’interface de l’objet.
Les données publiques n’imposent aucun contrôle ni sur leur
structure ni sur la nature des valeurs qu’elles peuvent recevoir.
Z L’accès privé :
Les données privées ne sont modifiables qu’à travers les
méthodes publiques qui peuvent les contrôler ainsi.
Z La partie implémentation :
Elle est définie par un ensemble de méthodes accessibles que
par les autres méthodes de la même classe.
L’abstraction 49
Données
On dit que les données ont un accès privé, i.e, seuls les
traitements de cet objet peuvent, modifier ces données
Les données peuvent être aussi publiques mais cela n’a aucun
intérêt.
Traitement
Les traitements ont un accès privé ou public.
Si les traitements sont publics, ceux-ci appartiennent à l’objet
et peuvent être appelés et modifier les données.
Si les traitements sont privés, alors seuls des traitements
publics appartenant à l’objet pourront déclencher l’exécution
des traitements privés
Les traitements privés sont appelés méthodes d’implémentation
L’abstraction 50
Exemple :
Nom='Aly' ChangerNom('Aly')
Nom='Aly'
Nom='ALY'
Diplome
Diplome
NomEnMajuscule
ChangerNom(UnNom) ChangerNom(UnNom)
Les attributs et les méthodes sont publics. Les attributs sont privés. Les attributs
Les attributs peuvent être modifi és directement ne peuvent être modifi és que par la
sans passer par les méthodes. méthode publique (ici «ChangerNom»)
qui fait appel à une méthode
d’implémentation (ici «NomEnMajuscule»)
L’abstraction 51
Exemple :
La donnée diplome n’est modifiable que par la méthode
changerDiplome.
Ce concept d’abstraction engendre deux catégories d’acteurs :
Z les concepteurs des classes
ils peuvent modifier la structure interne des méthodes des
classes.
Z les utilisateurs des objets
ils 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) .
L’Héritage 52
Etudiant EtudiantSalarié
Nom
Nom Datenaissance
Datenaissance Diplôme
Diplôme LieuExercice
ChangerNom ChangerNom
VerifierDateNaiss VerifierDateNaiss
changerDiplome ChangerDiplome
ChangerLieuExercice
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.
Les classes abstraites 54
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.
Jeune
adresse
telephone
sexe
redigerCV
AfficherCV
Etudiant EtudiantSalarié
Nom
Nom
Datenaissance
Diplôme Datenaissance
Diplôme
VerifierNom LieuExercice
VerifierDateNaiss VerifierNom
changerDiplome VerifierDateNaiss
ChangerDiplome
ChangerLieuExercice
Le polymorphisme
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.
Vehicule
+seDeplacer()
SeDéplacer( "sur des rails" ) SeDéplacer( "sur la route" ) SeDéplacer( "sur l'eau" )
Le polymorphisme 57
Intérêt du polymorphisme
Le polymorphisme permet de donner le même nom à des
traitements différents
Ou encore, permet le choix dynamique d’un traitement en
fonction de l’objet auquel il est appliqué
en effet le choix de la méthode polymorphe à exécuter est
déterminé à l’exécution du programme.
C’est pour cela qu’on dit qu’elle est dynamique, par opposé à
statique qui est déterminé lors de la compilation
Le polymorphisme augmente la généricité du code.
Covariance 58
covariance
La covariance est la propriété d’une hiérarchie de classes d’avoir des
parties isomorphes
Exemple
Les animaux peuvent être classés par rapport au critère de station
Animal
Bipède Quadrupède
Covariance
Covariance 59
Covariance
La covariance est la propriété d’une hiérarchie de classes d’avoir des
parties isomorphes
Exemple
Les animaux peuvent être classés par rapport à leur type de
nourriture
Animal
Herbivore Carnivore
Covariance
Covariance 60
Aucune des solutions précédentes n’est satisfaisante car la
covariance introduit de spoint de maintenance multiple dans le
modèle
solution⇒ généralisation multiple
Exemple Animal
n
io
n
nourriture
tio
at
st
ec
ot
pr
Bipède Quadrupède Herbivore Carnivore A plûmes A poils A écailles
Lion
Délégation 61
Délégation
La délégation permet de contourner le problème de la covariance en
romptant toutefois le mécanisme d’héritage entre classe et
sous-classes
Exemple
Animal
discriminant
Station Nourriture
Constructeur
méthode qui permet de construire et d’initialiser un objet
(instanciation d’un objet)
Destructeur
méthode qui permet de détruire un objet instancié
Accesseur
méthode qui permet de récupérer la valeur d’un attribut d’un objet
(get... et is...)
Quelques méthodes "classiques" 63
Modificateur
méthode qui permet de modifier la valeur d’un attribut d’un objet
(set...)
Observateur
méthode qui permet de retrouver des informations sur l’histoire
(l’état) d’un objet
Itérateur
méthode qui permet d’appliquer à chaque partie d’un objet (par
exemple dans le cas d’un objet de type collection)une action
déterminée
Surcharge de méthode 64
Surcharge de méthode
Mécanisme permettant de déclarer plusieurs constructeurs ou
plusieurs fois une même méthode (même nom) dans une classe, à
condition que tous aient une signature différente (valeur de retour
et/ou paramètres différents)
Inconvénients de l’approche objet 65
Solutions
Langage pour exprimer les concepts objet pour
représenter des concepts abstraits
limiter les ambiguïtés (parler un langage commun).
faciliter l’analyse (simplifier la comparaison et l’évaluation de
solutions).
Il faut également une démarche d’analyse et de conception objet,
pour :
ne pas effectuer une analyse fonctionnelle et se contenter
d’une implémentation objet, mais penser objet dès le départ.
définir les vues qui permettent de couvrir tous les aspects d’un
système, avec des concepts objets.
Rappel Cycle de vie 67
Expression
Expression des
des besoins
besoins S ’accorder sur ce qui doit être fait dans le système
Analyse
Analyse Comprendre les besoins et les décrire dans le système
Conception
Conception S ’accorder sur la manière dont le système doit être construit
Implémentation
Implémentation Codage du résultat de la conception
Test
Test Le système est-il conforme au cahier des charges ?
Code exécutable
Validation Maintenance et
Evolution
Spécifications fonctionnelles
Etude détaillée complètes futur S.I. (vue utilisateur)
Réalisation logicielle
Maintenance
Rappel Cycle de vie : modèle en cascade 78
Spécification Validation
fonctionnelles fonctionnelle
Conception Test du
Du système système
Implémentation
Rappel Cycle de vie : modèle en V 81
Autre représentation de cycle en V
Validation des
Etude préalable
besoins
Réalisation logicielle
Inconvénient
Comme pour le modèle linéaire, l’inconvénient est que la validation
et les tests interviennent tardivement.
Rappel Cycle de vie : modèle en spiral 83
Analyse
Spécifications
Conception
Tests
Evaluation Evaluation 2
Prototype 1 Prototype 2
Spécifications Spécifications 2
Rappel Cycle de vie : modèle en spiral 84
Tests de
vérification Expression des
besoins
Spécifications
Implémentation
fonctionnelles
Conception
Analyse
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élioreée jusqu’à
optimisation rendant ainsi le système progressivement robuste.
Comment modéliser avec UML ? 89
Un cycle incrémental :
UML est un langage qui permet de représenter des
modèles,mais il ne définit pas le processus d’élaboration des
modèles
Pour modéliser une application informatique, les auteurs
d’UML préconisent d’utiliser une démarche
itérative et incrémentale
guidée par les besoins des utilisateurs du système
centrée sur l’architecture logicielle
A chaque itération de la phase d’analyse,conception et de test,
on affine, veille à la prise en compte on vérifie les besoins des
utilisateurs,
Limites 90
Plan 91
Modèle d’UML 92
Diagramme Diagramme
De structure comportemental
Diagramme Diagramme de
De séquence communication
Diagramme Diagramme
Vue d'ensemble De timing
Des interactions
Les Diagrammes d’UML 96
Diagrammes d’activité
représentent le comportement d’une opération, d’un cas
d’utilisation ou un processus métier.
Diagrammes de classes
représentent la structure statique en terme de classes et de
relations.
Les Diagrammes d’UML 97
Diagrammes de collaboration
Représentation spatiale des objets, des liens et des interactions.
diagrammes de composants
représentent les composants physiques d’une application.
diagrammes de déploiement
représentent le déploiement des composants sur les dispositifs
matériels
Les Diagrammes d’UML 98
Diagrammes d’états-transition
représentent le comportement d’un classificateur ou d’une
opération en terme d’états.
Comment évoluent les états des objets ?
diagrammes d’objets
représentent les objets et leurs relations et correspondent à des
diagrammes de collaboration simplifiés, sans représentation des
envois de messages.
diagrammes de séquence
représentation temporelle des objets et de leurs interactions.
Comment interagissent les objets du système ?
Les Diagrammes d’UML & Phase de conception 99
Analyse
Diagramme de classes : structure des données
Diagramme d’objets : illustration
Diagramme collaboratif : représentation des interactions entre
objets
Diagramme d’états : représentation du comportement des
objets d’une classe en terme d’états et de transitions d’états
Diagramme d’activités : structure d’une opération en actions
Les Diagrammes d’UML & Phase de conception 101
Conception
Diagramme de séquence : représentation des temporelles entre
objets dans la réalisation d’une opeération
Diagramme de déploiement : description du déploiement des
composants sur les dispositifs matériels
Diagramme de composants : architecture des composants
physiques d’une application
Les Diagrammes d’UML & Phase de conception 102
Les trois composantes d’une modélisation 103
Modèle Fonctionnel
Aspect statique :
diagramme de classes et d'objets
Modèle temporel
1 Fonctionnel
Cahier des charges : diag. cas d’utilisation → scénarios écrits
Scénarios formels : diag. seq / comm → objets/classes
2 Statique
classes : diag. classes
3 Dynamique
dynamique chaque objet : diag. états/transitions dynamique
globale : diag. activités
Une démarche centrée sur l’architecture 105
5 façons de voir un système informatique : vue « 4+1 »de
Kruchten CONCEPTUEL PHYSIQUE
Vue
Vue logique
logique Vue
Vue
statique
statique Implémentation
Implémentation
Structuration
Structuration Composants
Composants
Diagramme
Diagramme Diagramme
Diagramme
des
des objets
objets logiciels
logiciels
classes,
classes, objets,
objets, composants
composants
collaborations,
collaborations,
séquences
séquences
Vue
Vue externe
externe
Fonctions
Fonctions du
du cas
cas
système
système d'utilisation
d'utilisation
Vue
Vue logique
logique Vue
Vue
dynamique
dynamique Déploiement
Déploiement
Dynamique
Dynamique Architecture
Architecture
Diagrammes
Diagrammes Diagramme
Diagramme
des
des objets
objets physique
physique
états
états déploiement
déploiement
activités,
activités,
Vue logique
Aspects statiques = structure du problème et de la solution
→ Diagrammes de classes et d’objets
Aspects dynamiques = comportement des éléments de la
structure
→ Diagrammes de séquence, de communications et de
machine à états
Une démarche d’application de UML 107