0% ont trouvé ce document utile (0 vote)
4 vues70 pages

Modélisation UML en Programmation Objet

Le document présente un cours sur la modélisation orientée objet avec UML, incluant une introduction à UML, ses diagrammes, et des exercices pratiques. UML est décrit comme un langage de modélisation universel, avec des diagrammes tels que les cas d'utilisation, les classes et les composants. Le cours aborde également des concepts fondamentaux de la programmation orientée objet en C++.

Transféré par

tebiejoel1
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
4 vues70 pages

Modélisation UML en Programmation Objet

Le document présente un cours sur la modélisation orientée objet avec UML, incluant une introduction à UML, ses diagrammes, et des exercices pratiques. UML est décrit comme un langage de modélisation universel, avec des diagrammes tels que les cas d'utilisation, les classes et les composants. Le cours aborde également des concepts fondamentaux de la programmation orientée objet en C++.

Transféré par

tebiejoel1
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Modélisation orientée objets avec UML

Guillaume Laurent
ENSMM

2007

G. Laurent (ENSMM) UML 2007 1 / 70


Plan du cours

1 Introduction

2 Vue fonctionnelle

3 Vue statique

4 Vue dynamique

5 Démarche de modélisation

6 Programmation Orientée Objet en C++

7 Bibliographie

G. Laurent (ENSMM) UML 2007 2 / 70


Introduction

Genèse de UML (Unified Modeling Langage)

Jusqu’au milieu des années


1990, de nombreux modèles
objets sont proposés :
Booch’91 de Grady
Booch
Object Modeling
Technique (OMT) de
James Rumbaugh en
1991 puis 1994
Object-Oriented
Software Engineering
(OOSE) de Ivar
Jacobson en 1992 Source P.A. Muller

Unification des méthodes par Rumbaugh, Jacobson et Booch et naissance


d’UML 1.0 en 1997
UML 2.0 en septembre 2004

G. Laurent (ENSMM) UML 2007 3 / 70


Introduction

Qu’est-ce que UML

UML est un langage universel de modélisation objets


UML est une notation, un outil de communication visuelle (diagrammes)
UML est une norme maintenue par l’organisation à but non lucratif OMG
(Object Management Group) et disponible gratuitement sur [Link]

UML n’est pas un processus de développement


UML n’est pas un langage de programmation

G. Laurent (ENSMM) UML 2007 4 / 70


Introduction

Les diagrammes UML

Diagrammes de cas d’utilisation : décrivent les services rendus par le système


du point de vue de l’utilisateur
Diagrammes de classes : décrivent les classes d’une application et leurs
relations statiques
Diagrammes d’objets : montrent l’état d’une application à un instant donné
Diagrammes de composants : sont une vue modulaire de l’application en
regroupant les classes qui collaborent
Diagrammes de déploiement : modélisent l’aspect matériel de l’application
Diagrammes de collaboration : sont une représentation spatiale des
interactions entre objets
Diagrammes de séquence : sont une représentation temporelle des
interactions entre objets
Diagrammes d’états-transitions : représentent le comportement d’un objet
sous la forme d’un automate à états
Diagrammes d’activités : représentent le comportement d’une opération

G. Laurent (ENSMM) UML 2007 5 / 70


Introduction

Interventions des diagrammes sur les axes de modélisation

G. Laurent (ENSMM) UML 2007 6 / 70


Vue fonctionnelle Diagrammes de cas d’utilisation

2.1 Diagrammes de cas d’utilisation

2 Vue fonctionnelle
Diagrammes de cas d’utilisation

G. Laurent (ENSMM) UML 2007 7 / 70


Vue fonctionnelle Diagrammes de cas d’utilisation

Diagrammes de cas d’utilisation

Identifier les acteurs


Un acteur représente un rôle joué par une entité extérieure au système
(humain ou autre système) et qui interagit directement avec le système étudié
Un utilisateur peut être représenté par plusieurs acteurs
Plusieurs utilisateurs peuvent être représentés par le même acteur

Identifier les cas d’utilisation


Un cas d’utilisation représente un service complet attendu du système
Un cas d’utilisation a un début et une fin clairement identifiés
Un cas d’utilisation est décrit par une forme verbale

G. Laurent (ENSMM) UML 2007 8 / 70


Vue fonctionnelle Diagrammes de cas d’utilisation

Diagrammes de cas d’utilisation

Exemple des cas d’utilisation d’un distributeur de boissons

G. Laurent (ENSMM) UML 2007 9 / 70


Vue fonctionnelle Diagrammes de cas d’utilisation

Diagrammes de cas d’utilisation

Relation d’utilisation (include)

Relation d’extension (extend)

G. Laurent (ENSMM) UML 2007 10 / 70


Vue fonctionnelle Diagrammes de cas d’utilisation

Diagrammes de cas d’utilisation

Relation de spécialisation

G. Laurent (ENSMM) UML 2007 11 / 70


Vue fonctionnelle Diagrammes de cas d’utilisation

Exercices

Ex.1 Modéliser les cas d’utilisation d’un logiciel de jeu d’échecs

Ex.2 Modéliser les cas d’utilisation d’une caisse enregistreuse (extrait de UML par
la pratique, Pascal Roques, Eyrolles)
Le déroulement normal d’utilisation de la caisse est le suivant :
Un client arrive à la caisse avec des articles à payer
Le caissier enregistre le numéro d’identification de chaque article, ainsi que la
quantité si elle est supérieure à un
La caisse affiche le prix de chaque article et son libellé
Lorsque tous les achats sont enregistrés, le caissier signale la fin de la vente
La caisse affiche le total des achats
Le client choisit son mode de paiement : liquide (le caissier encaisse l’argent
reçu, la caisse indique la monnaie à rendre au client), chèque , carte de crédit
(la caisse transmet une demande d’autorisation à un centre d’autorisation)
La caisse enregistre la vente et imprime un ticket.
Le caissier donne le ticket de caisse au client.
Lorsque un paiement est terminé, la caisse transmet les informations sur le
nombre d’articles vendus au système de gestion de stocks.
Tous les matins, le responsable du magasin initialise la caisse pour la journée.

G. Laurent (ENSMM) UML 2007 12 / 70


Vue statique Diagrammes d’objets

3.1 Diagrammes d’objets

3 Vue statique
Diagrammes d’objets
Diagrammes de classes
Diagrammes de composants
Diagrammes de déploiement

G. Laurent (ENSMM) UML 2007 13 / 70


Vue statique Diagrammes d’objets

Concept d’objet

Un objet est une entité atomique définie par l’union de :


Etat : attributs (données membres, champs)
Comportement : façon dont un objet évolue, décrit sous formes d’opérations
(méthodes, fonctions membres)
Identité : propriété qui permet de distinguer tout objet des autres (référence en
java, adresse en C++)
Un objet peut représenter une entité physique (par ex. une voiture), virtuelle
(par ex. un compte en banque) ou conceptuelle (par ex. un complexe)
Un compte
banquaire
Une voiture 01/04/04 Guillaume
1+5i
985kgs 157€
Un objet 1
rouge
5 :individu
80cv

G. Laurent (ENSMM) UML 2007 14 / 70


Vue statique Diagrammes de classes

3.2 Diagrammes de classes

3 Vue statique
Diagrammes d’objets
Diagrammes de classes
Diagrammes de composants
Diagrammes de déploiement

G. Laurent (ENSMM) UML 2007 15 / 70


Vue statique Diagrammes de classes

Concept de classe

Notion de catégorie ou de type d’objets


Factorise les caractéristiques communes à une catégorie d’objets
Un objet est une instance d’une classe

G. Laurent (ENSMM) UML 2007 16 / 70


Vue statique Diagrammes de classes

Encapsulation et visibilité des attributs et des opérations


Intérêt de l’encapsulation
Permet de cacher les détails d’implantation des attributs d’un objet
Empêche un client de modifier directement l’état d’un objet (i.e. ses
attributs), obligation d’utiliser les opérations
3 niveaux
Public : attributs accessibles et modifiables par n’importe quelle autre classe,
opérations utilisables par n’importe quelle autre classe,
Privé : attributs inaccessibles pour toute autre classe, opérations inutilisables
pour toute autre classe,
Protégé : attributs accessibles et modifiables uniquement par les classes
dérivées, opérations utilisables uniquement par les classes dérivées.

G. Laurent (ENSMM) UML 2007 17 / 70


Vue statique Diagrammes de classes

Attributs de classe et classes génériques

Attributs (ou opérations) communs à l’ensemble des instances d’une classe


(attributs static en C++)

Classes génériques avec type paramétrable (classes template en C++)

G. Laurent (ENSMM) UML 2007 18 / 70


Vue statique Diagrammes de classes

Associations de classes

Reflet d’une relation bidirectionnelle entre deux classes (ou plus)


Pour pouvoir envoyer des messages (i.e. utiliser les opérations), la classe
cliente doit être associée avec la classe serveur

Possibilité de décrire les rôles

G. Laurent (ENSMM) UML 2007 19 / 70


Vue statique Diagrammes de classes

Associations de classes

Multiplicité des associations

G. Laurent (ENSMM) UML 2007 20 / 70


Vue statique Diagrammes de classes

Classes d’association
Une association peut être représentée par une classe (pour être enrichie par
exemple)

Les associations n-aires peuvent souvent être réduites

G. Laurent (ENSMM) UML 2007 21 / 70


Vue statique Diagrammes de classes

Agrégations de classes
L’agrégation est une association non symétrique :
Relation de dominance et de subordination
Une classe fait partie d’une autre classe
Une action sur une classe implique une action sur une autre classe
Une classe peut appartenir à plusieurs agrégats

G. Laurent (ENSMM) UML 2007 22 / 70


Vue statique Diagrammes de classes

Compositions de classes

La composition est une agrégation forte


Relation d’appartenance stricte équivalente à l’attribution
Une classe ne peut pas appartenir à plusieurs compositions
Une classe composée ne peut exister sans son propriétaire

G. Laurent (ENSMM) UML 2007 23 / 70


Vue statique Diagrammes de classes

Navigation

Par défaut, les associations sont navigables dans les deux directions
Une association peut ne nécessiter qu’un seul sens de navigation :

B ne  voit  pas A
B ne peut envoyer de message à A

G. Laurent (ENSMM) UML 2007 24 / 70


Vue statique Diagrammes de classes

Généralisation/spécialisation

Spécialisation de la classe existante par ajout d’attributs et/ou


ajout/redéfinition de méthodes
Héritage, dérivation par extension
Relation  EST UN 

G. Laurent (ENSMM) UML 2007 25 / 70


Vue statique Diagrammes de classes

Polymorphisme
Permet d’utiliser un nom unique pour désigner des instances de classes
différentes issues d’une même arborescence
Chaque objet désigné par ce nom réagit de manière propre à la réception d’un
même message

G. Laurent (ENSMM) UML 2007 26 / 70


Vue statique Diagrammes de classes

Notion de paquetages (package)

Regrouper les classes (ou autres diagrammes) liées entre elles


Faire apparaı̂tre (et minimiser !) les dépendances entre paquetages

G. Laurent (ENSMM) UML 2007 27 / 70


Vue statique Diagrammes de classes

Exercice
Ex.1 Soit le dessin géométrique ci-dessous :
Modéliser cette situation par un diagramme d’objets
Modéliser un dessin géométrique par un diagramme de classes

G. Laurent (ENSMM) UML 2007 28 / 70


Vue statique Diagrammes de classes

Exercice

Ex.2 Modéliser les phrases suivantes par un diagramme de classes


Un répertoire contient des fichiers
Une pièce a des murs
Une transaction bancaire est un achat ou une vente
Une enveloppe a une adresse et un timbre
Les lapins, les hirondelles, les lions, les requins, les autruches, les vautours,
les truites, les pingouins sont des animaux qui se déplacent de manières
différentes.
Des poupées russes (gigognes)
Un pays possède plusieurs villes et une seule capitale

G. Laurent (ENSMM) UML 2007 29 / 70


Vue statique Diagrammes de classes

Exercice
Ex.3 Modéliser la structure statique d’un logiciel de jeu d’échecs en se focalisant
successivement sur :
L’échiquier et les pièces
Les joueurs et leurs pièces
Une partie

(extrait de UML par la pratique, Pascal Roques, Eyrolles)

G. Laurent (ENSMM) UML 2007 30 / 70


Vue statique Diagrammes de composants

3.3 Diagrammes de composants

3 Vue statique
Diagrammes d’objets
Diagrammes de classes
Diagrammes de composants
Diagrammes de déploiement

G. Laurent (ENSMM) UML 2007 31 / 70


Vue statique Diagrammes de composants

Diagrammes de composants

Permet de décrire
l’architecture
statique d’une
application en
terme de modules
(fichiers sources,
fichiers compilés,
etc.)
Les dépendances
entre modules
permettent
d’identifier les
contraintes de
compilation et de
mettre en évidence
la réutilisation des
composants
G. Laurent (ENSMM) UML 2007 32 / 70
Vue statique Diagrammes de déploiement

3.4 Diagrammes de déploiement

3 Vue statique
Diagrammes d’objets
Diagrammes de classes
Diagrammes de composants
Diagrammes de déploiement

G. Laurent (ENSMM) UML 2007 33 / 70


Vue statique Diagrammes de déploiement

Diagrammes de déploiement

Montre la disposition physique des différentes ressources matérielles (noeuds),


leurs interconnexions et la répartition des programmes sur ces matériels
Un système est généralement décrit par un petit nombre de diagrammes de
déploiement (généralement un seul suffit)

G. Laurent (ENSMM) UML 2007 34 / 70


Vue dynamique Diagrammes de collaboration

4.1 Diagrammes de collaboration

4 Vue dynamique
Diagrammes de collaboration
Diagrammes de séquence
Diagrammes d’états-transitions
Diagrammes d’activités

G. Laurent (ENSMM) UML 2007 35 / 70


Vue dynamique Diagrammes de collaboration

Concept de message

Message : quand un objet (le client) demande à un autre objet (le serveur)
d’effectuer une de ses opérations, on parle de message
Créditer
ENSMM :compte
banquaire
Demander le nombre
d'heures effectuées

Consulter
:vacataire

créer

:Cours

Doc

G. Laurent (ENSMM) UML 2007 36 / 70


Vue dynamique Diagrammes de collaboration

Diagrammes de collaboration

Représentent les interactions (échanges de messages) entre objets selon un


point de vue spatial
Extension des diagrammes d’objets par l’ajout de la représentation des
messages échangés
Vues généralement partielles et focalisées sur une collaboration de quelques
objets
Les messages sont numérotés pour indiquer l’ordre des envois

1 : Demander de
donner un cours 2 : Créditer
:vacataire :école :compte
d'ingénieur banquaire

G. Laurent (ENSMM) UML 2007 37 / 70


Vue dynamique Diagrammes de collaboration

Diagrammes de collaboration

Itérations
1 : Translater *[i:=1..n] 2 : Translater
:dessin :polygone :point

Messages conditionnels
[X>3] : Message
A B

Résultats et paramètres (ou arguments)


1 : val := Message 2 : Afficher(val)
A B B

G. Laurent (ENSMM) UML 2007 38 / 70


Vue dynamique Diagrammes de collaboration

Diagrammes de collaboration

Exécutions parallèles et synchronisation

A.1 : M1 A.2 : M2
X Y Z

A.2 , B.3 / C.1 : M7


A B

B.2 : M4 B.1 : M3
U V W

B.4 : M6 B.3 : M5

G. Laurent (ENSMM) UML 2007 39 / 70


Vue dynamique Diagrammes de collaboration

Diagrammes de collaboration

Deux objets peuvent échanger un message ssi les classes de ces objets sont en
relation (association, agrégation ou composition)
M1

A B :A :B

Le sens des messages entre deux objets est bidirectionnel ssi aucun sens de
navigation n’est précisé
M1

A B :A :B

M2

Le sens des messages entre deux objets est unidirectionnel ssi un sens de
navigation est précisé
M1
:A :B

A B
M2

:A :B

G. Laurent (ENSMM) UML 2007 40 / 70


Vue dynamique Diagrammes de collaboration

Exercice

Ex.1 Décrire à l’aide d’un diagramme de collaboration l’enchaı̂nement nominal de


distribution d’une boisson pour un distributeur de boissons dont la structure
est définie par le diagramme de classes ci-dessous

G. Laurent (ENSMM) UML 2007 41 / 70


Vue dynamique Diagrammes de séquence

4.2 Diagrammes de séquence

4 Vue dynamique
Diagrammes de collaboration
Diagrammes de séquence
Diagrammes d’états-transitions
Diagrammes d’activités

G. Laurent (ENSMM) UML 2007 42 / 70


Vue dynamique Diagrammes de séquence

Diagrammes de séquence

Représentent les interactions (échanges de messages) entre objets selon un


point de vue temporel
Le contexte des objets n’est pas représenté

Un autre
Un objet Un objet
objet

Message synchrone
Créer Un autre
objet
Message asynchrone

Message
réflexif Détruire

G. Laurent (ENSMM) UML 2007 43 / 70


Vue dynamique Diagrammes de séquence

Diagrammes de séquence

Activation

Un autre
Un objet Un objet
objet

Message

(retour implicite) Sous-processus

Message
Appel
récursif
Retour explicite

G. Laurent (ENSMM) UML 2007 44 / 70


Vue dynamique Diagrammes de séquence

Diagrammes de séquence

Structures de contrôles

A B C A B C

Si [X] Message [X] message

Sinon Message [non X] message

FinSi

Tantque [X] Message *[X] message

FinTantque

G. Laurent (ENSMM) UML 2007 45 / 70


Vue dynamique Diagrammes de séquence

Exercices

Ex.1 Réaliser le diagramme de séquence correspondant au diagramme de


collaboration du distributeur de boissons (cf. T41)
Ex.2 Réaliser le diagramme de séquence système du cas d’utilisation  traiter le
passage en caisse  de l’exercice sur la caisse enregistreuse (cf. T12)

G. Laurent (ENSMM) UML 2007 46 / 70


Vue dynamique Diagrammes d’états-transitions

4.3 Diagrammes d’états-transitions

4 Vue dynamique
Diagrammes de collaboration
Diagrammes de séquence
Diagrammes d’états-transitions
Diagrammes d’activités

G. Laurent (ENSMM) UML 2007 47 / 70


Vue dynamique Diagrammes d’états-transitions

Diagrammes d’états-transitions

Permettent de modéliser des automates d’états déterministes


Représentent le comportement interne d’un objet (évolution de son état), en
réponse aux interactions avec d’autres objets
Représentation des états :

G. Laurent (ENSMM) UML 2007 48 / 70


Vue dynamique Diagrammes d’états-transitions

Diagrammes d’états-transitions

Transitions et événements

Gardes (événements conditionnels)

G. Laurent (ENSMM) UML 2007 49 / 70


Vue dynamique Diagrammes d’états-transitions

Diagrammes d’états-transitions

Généralisation d’états
Super-états décomposés en plusieurs états disjoints (décomposition disjonctive)
Même démarche que la spécialisation/généralisation des classes, les sous-états
héritent des caractéristiques de leur super-état

G. Laurent (ENSMM) UML 2007 50 / 70


Vue dynamique Diagrammes d’états-transitions

Diagrammes d’états-transitions

Généralisation d’états
Facilite la représentation et permet d’occulter les détails

G. Laurent (ENSMM) UML 2007 51 / 70


Vue dynamique Diagrammes d’états-transitions

Diagrammes d’états-transitions

Agrégation d’états
Composition d’un état à partir de plusieurs autres états indépendants
(composition conjonctive)
Permet de décrire des automates parallèles

G. Laurent (ENSMM) UML 2007 52 / 70


Vue dynamique Diagrammes d’états-transitions

Diagrammes d’états-transitions

Historique
Mécanisme pour mémoriser le dernier sous-état visité
H* indique une mémorisation pour tous les états imbriqués

Déclenchement d’un événement au bout d’un certain temps passé dans un


état (transition temporisée)

G. Laurent (ENSMM) UML 2007 53 / 70


Vue dynamique Diagrammes d’états-transitions

Diagrammes d’états-transitions

Déclenchements d’opérations

Déclenchements d’événements relatifs à un autre objet

G. Laurent (ENSMM) UML 2007 54 / 70


Vue dynamique Diagrammes d’états-transitions

Exercices

Ex.1 Modéliser le fonctionnement d’un distributeur de boissons à l’aide d’un


diagramme d’états-transitions

Ex.2 Modéliser le fonctionnement d’un téléphone public à pièces à l’aide d’un


diagramme d’états-transitions
Le prix minimal d’une communication est de 0,2 euros
Après l’introduction de la monnaie, l’utilisateur a 2 minutes pour composer
son numéro
La ligne peut être libre ou occupée
Le correspondant peut raccrocher le premier
Le téléphone consomme de l’argent dès que l’appelé décroche et à chaque
unité de temps
On peut ajouter des pièces à tout moment
Lorsque l’on raccroche, le solde de monnaie est rendu
(extrait de UML par la pratique, Pascal Roques, Eyrolles)

G. Laurent (ENSMM) UML 2007 55 / 70


Vue dynamique Diagrammes d’activités

4.4 Diagrammes d’activités

4 Vue dynamique
Diagrammes de collaboration
Diagrammes de séquence
Diagrammes d’états-transitions
Diagrammes d’activités

G. Laurent (ENSMM) UML 2007 56 / 70


Vue dynamique Diagrammes d’activités

Diagrammes d’activités

Représentent le comportement interne d’une opération

G. Laurent (ENSMM) UML 2007 57 / 70


Vue dynamique Diagrammes d’activités

Exercice

Ex.1 Modéliser le comportement de l’opération  PréparerBoisson()  de l’objet


 Préparateur  d’un distributeur de boissons

G. Laurent (ENSMM) UML 2007 58 / 70


Démarche de modélisation

Capture des besoins – Cahier des charges


Diagrammes de cas d’utilisation
Utilisation de fiches textuelles (non UML)
Identification (titre du cas, acteurs concernés, responsable, date, etc.)
Préconditions
Enchaı̂nements nominaux
Enchaı̂nements alternatifs
Enchaı̂nements d’exceptions
Postconditions
Utilisation de diagrammes de séquence système (diagrammes de séquence
simplifiés)

Un Un
Un client distributeur Un client distributeur

Choix boisson Choix boisson

Montant Tant que Montant


Montant positif
Liquide
Liquide
Monnaie
Fin Tant que

Boisson Monnaie

Boisson

G. Laurent (ENSMM) UML 2007 59 / 70


Démarche de modélisation

Démarche de modélisation objet

Ordonner les cas d’utilisation


Identifier les classes principales à partir des spécifications
Élaborer des diagrammes de classes
Faire fonctionner les diagrammes de classes sur des diagrammes de
séquence et de collaboration
Itérer et enrichir ! !

G. Laurent (ENSMM) UML 2007 60 / 70


Démarche de modélisation

Synthèse de la démarche

System

Cas d’utilisation Diagrammes de


séquence système

an Object an Object an Object an Object


Actor

message name message name

Besoins message name

message name

utilisateurs message name

message name

Modèle Diagrammes de Diagrammes


du domaine classes participantes d’interaction

LOGO
Home Archives My Account Store About us Objet2
- titre : String
- sousTitre [0..1] : String package [Link];
- isbn : String

Article Title What's New + getDetails() : String import [Link];


Search: import [Link].*;public class Panier {
Go! Text, text, text, text, text, text, text, text, text, text, text, private double total;
text, text, text, text, text, text, text, text, text, text, text, text, text, text, private List lesLignesPanier = new ArrayList();
text, text, text, text, text, text, text, text, text, text, text, text, text, text, public Panier() {}
Button text, text, text, text, text, text, text, text, text, text, text, text, text, text, public double getTotal()
text, text, text, text, text, text, text, text, text more.... text, text, text,
Objet1 {
return total;
Button text, text, text, - titre : String
}
- sousTitre [0..1] : String
text, text, text,
Article Title text, text, text
- isbn : String
public void recalculer(List quantites)
Button Text, text, text, text, text, text, text, text, text, text, text, + getDetails() : String
Objet4 {
text, text, text, text, text, text, text, text, text, text, text, total = 0;
Button text, text, text, text, text, text, text, text, text, text, text, - titre : String Iterator lignesIt = [Link]();
- sousTitre [0..1] : String
text, text, text, text, text, text, text, text, text, text, text, Iterator quantiteIt = [Link]();
- isbn : String
text, text, text, text, text, text, text, text, text more.... Advertising while([Link]()){
Button + getDetails() : String LignePanier l = (LignePanier)[Link]();
Objet3 int qte = ((Integer) [Link]().intValue();
[Link](qte);
Article Title - titre : String total += [Link]();
Advertising - sousTitre [0..1] : String
Text, text, text, text, text, text, text, text, text, text, text, - isbn : String
}
text, text, text, text, text, text, text, text, text, text, text, }
+ getDetails() : String
text, text, text, text, text, text, text, text, text, text, text,
text, text, text, text, text, text, text, text, text, text, text,
text, text, text, text, text, text, text, text, text more....

Maquette Diagrammes Code


de classes
de conception

(source : Modéliser un site e-commerce, Pascal Roques, Eyrolles)

G. Laurent (ENSMM) UML 2007 61 / 70


Programmation Orientée Objet en C++

Spécification d’une classe (.h)

class Nom_de_classe
{
// Attributs
type attribut1;
type attribut2;
...

// Constructeur
Nom_de_classe(arg1,arg2,...);

// Destructeur
˜Nom_de_classe(void);

// Méthodes
type methode1(arg1,arg2,...);
type methode2(arg1,arg2,...);
void methode3(arg1,arg2,...);
...

};

G. Laurent (ENSMM) UML 2007 62 / 70


Programmation Orientée Objet en C++

Implantation d’une classe (.cpp)

Nom_de_classe::Nom_de_classe(arg1,arg2,...) {
...
}

Nom_de_classe::˜Nom_de_classe(void) {
...
}

type Nom_de_classe::methode1(arg1,arg2,...) {
...
return ...;
}

type Nom_de_classe::methode2(arg1,arg2,...) {
...
return ...;
}

void Nom_de_classe::methode3(arg1,arg2,...) {
...
}

G. Laurent (ENSMM) UML 2007 63 / 70


Programmation Orientée Objet en C++

Instanciation, envoie de messages et destruction


Instanciation
Nom_de_classe Objet1,Objet2;

Nom_de_classe Objet3(x,y,...);

Nom_de_classe *RefObjet4;

RefObjet4=new Nom_de_classe(x,y,...);

Envoie de messages
x=Objet1.Methode1(x,y,...);

RefObjet4->Methode3(x,y,...);

Destruction
// La destruction des objets 1, 2 et 3 est automatique
// en fin de bloc

delete RefObjet4;

G. Laurent (ENSMM) UML 2007 64 / 70


Programmation Orientée Objet en C++

Association 1/1

class A
{
...
B *Rb;
...
};

class B
{
...
A *Ra;
...
};

G. Laurent (ENSMM) UML 2007 65 / 70


Programmation Orientée Objet en C++

Association 1/1 unidirectionnelle

class A
{
...
B *Rb;
...
};

class B
{
...
};

G. Laurent (ENSMM) UML 2007 66 / 70


Programmation Orientée Objet en C++

Association 0..*/0..*

class A
{
...
set<B*> Rb;
...
};

class B
{
...
set<A*> Ra;
...
};

G. Laurent (ENSMM) UML 2007 67 / 70


Programmation Orientée Objet en C++

Composition 1/1

class A
{
...
B Rb;
...
};

class B
{
...
A *Ra;
...
};

G. Laurent (ENSMM) UML 2007 68 / 70


Programmation Orientée Objet en C++

Généralisation/spécialisation

class A class B : public A


{ {
// Attributs // La classe B hérite de tous les
type attribut1; // attributs et méthodes de la
type attribut2; // classe A

// Constructeur // Nouveaux attributs propres à B


A(...); type attribut3;
type attribut4;
// Méthodes
type methode1(...); // Constructeur (obligatoire)
type methode2(...); B(...)
};
// Méthodes de A redéfinies pour B
type methode2(...);

// Nouvelles méthodes propres à B


type methode3(...);
};

G. Laurent (ENSMM) UML 2007 69 / 70


Bibliographie

Bibliographie

Grady Booch, James Rumbaugh, and Ivar Jacobson.


The Unified Modeling Language User Guide.
Addison Wesley, 2005.
Object Management Group (OMG).
Unified Modeling Language (UML), version 2.0.
Pierre-Alain Muller and Nathalie Gaertner.
Modélisation Objet avec UML.
Eyrolles, 2000.
Pascal Roques.
UML en action.
Eyrolles, 2003.
Pascal Roques.
UML 2 par la pratique, études de cas et exercices corrigés.
Eyrolles, 2004.

G. Laurent (ENSMM) UML 2007 70 / 70

Vous aimerez peut-être aussi