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