Vous êtes sur la page 1sur 64

Modélisation UML et POO

Présentation des concepts objets

Étude du langage UML

Notation

Principaux diagrammes

Exercices

MSIAG 2007-2008 UML & POO – Section 2 1


Les concepts du modèle objet

Exécutif Déclaratif Principes objets

Objet Classe Encapsulation

Lien Association Héritage

Message Méthode Polymorphisme

Abstraction

MSIAG 2007-2008 UML & POO – Section 2 2


La notion d’objet

Exécutif Déclaratif Principes objets

Objet Classe Encapsulation

Lien Association Héritage

Message Méthode Polymorphisme

Abstraction

MSIAG 2007-2008 UML & POO – Section 2 3


Objet / instance

Définition
Un objet est un élément du domaine étudié possédant des
frontières bien définies

Le terme « instance » est un synonyme d’objet

Un objet est caractérisé par


Un état représenté, à un instant donné, par des attributs
valorisés et des liens vers d’autres objets

Un comportement représenté par des méthodes (opérations)

Une identité qui le distingue et qui est indépendante de son état

MSIAG 2007-2008 UML & POO – Section 2 4


Objet : exemple et formalisme UML

L’objet « ma voiture »

Etat :
Numéro = 74b 56 211

Couleur= blanche

Marque = renault

Comportement :
Rouler
Notation d’un
Transporter objet en UML
Etc …

MSIAG 2007-2008 UML & POO – Section 2 5


Objet : remarques complémentaires

On aurait pu choisir d’autres


caractéristiques (puissance fiscale,
consommation, …) mais modéliser
c’est sélectionner les caractéristiques
importantes et omettre les autres.

Un objet = premier niveau d’abstraction car on passe du


monde réel à un premier niveau de modélisation
Diagramme d’objet : diagramme statique montrant
différents objets et leur liens.

MSIAG 2007-2008 UML & POO – Section 2 6


UML : le diagramme d’objet

Diagramme statique montrant différents objets et leur liens

liens

MSIAG 2007-2008 UML & POO – Section 2 7


La notion de classe

Exécutif Déclaratif Principes objets

Objet Classe Encapsulation

Lien Association Héritage

Message Méthode Polymorphisme

Abstraction

MSIAG 2007-2008 UML & POO – Section 2 8


Classe : définition

Définition
Une classe est l’abstraction d’un ensemble d’objets ayant des
états et des comportements similaires
Une classe est un type et permet de créer des objets
(« moule » à objet)
Un classe est caractérisée par
Des attributs simples (type de base)
Des associations (attributs référençant d’autres classes)
Des opérations (comportement)
Une classe = un deuxième niveau d’abstraction
monde réel  objets (niveau 1)  classes (niveau 2)

MSIAG 2007-2008 UML & POO – Section 2 9


Classe : exemple

attributs

associations

opérations
MSIAG 2007-2008 UML & POO – Section 2 10
Exercice 1 : objet ou classe ?

Indiquer parmi cette liste qui est un objet et qui est une classe

Une chaise

Joel Costigliola

Le tableau

Dieu

Une voiture

Un professeur

La F1 de Schumacher

MSIAG 2007-2008 UML & POO – Section 2 11


Notion de visibilité

Définition
La visibilité d’un attribut ou d’une opération permet de
déterminer qui pourra y accéder.
Notion fondamentale pour le concept objet d’encapsulation

3 types de visibilité
« + » ou public : tout le monde peut y accéder
« # » ou protected : seules la classe possédant l’élément et les
classes filles peuvent y accéder (voir notion d’héritage)
« - » ou private : seule la classe possédant l’élément peut y
accéder

MSIAG 2007-2008 UML & POO – Section 2 12


Classe et instanciation d’objets

L’instanciation est la relation qui lie une classe à un objet

Une instanciation = création d’objet

Un objet est l’instance d’une seule et une seule classe

La classe sert de « moule » à objet

MSIAG 2007-2008 UML & POO – Section 2 13


Identifier les classes d’un problème

Raisonnement en 2 étapes

1 - Identifier les objets et noter leur ressemblances

2 - Établir une définition à laquelle chaque objet répond

La définition ne doit pas être ambiguë

Donner un nom de classe clair et auto explicatif (sûrement

l’exercice le plus difficile !)

Définir la responsabilité de la classe (se traduit généralement

par des opérations)

MSIAG 2007-2008 UML & POO – Section 2 14


Exercice : identifier les classes

Dans la liste suivante, regrouper les objets en classe


Une 205 rouge
Le TGV Paris-Lyon
Un airbus A320 particulier
Le Ferry Calais Douvre de 17h15
La moto de Valentino Rossi
Le delta plane de Paco Rabanne
Le premier RER A vers Noisy-Champs
Le voilier de Marc Pajot

MSIAG 2007-2008 UML & POO – Section 2 15


Opération / méthode

Exécutif Déclaratif Principes objets

Objet Classe Encapsulation

Lien Association Héritage

Message Méthode Polymorphisme

Abstraction

MSIAG 2007-2008 UML & POO – Section 2 16


Opération / méthode : définition

Définition

Une opération est un service que l’on peut demander à un


objet d’une classe.

Elles déterminent le comportement des instances de la classe

Une méthode est l’implémentation d’une opération : une


opération en UML = une méthode en Java

Formalisme

Visibilité nom (paramètre1, paramètre2, …) : type

Exemple : + crediter (somme : Float) : boolean

MSIAG 2007-2008 UML & POO – Section 2 17


La notion de message

Exécutif Déclaratif Principes objets

Objet Classe Encapsulation

Lien Association Héritage

Message Méthode Polymorphisme

Abstraction

MSIAG 2007-2008 UML & POO – Section 2 18


Message : définition

Définition

Les objets communiquent par messages

Un message = demande d’exécution d’une opération pour


l’objet qui le reçoit = appel de méthode sur un objet

Message synchrone : l’appelant attend la fin de l’exécution de


l’opération

Message asynchrone : l’appelant n’attend pas la fin de


l’exécution de l’opération et poursuit son traitement

On utilise généralement que des messages synchrones

MSIAG 2007-2008 UML & POO – Section 2 19


La notion d’association

Exécutif Déclaratif Principes objets

Objet Classe Encapsulation

Lien Association Héritage

Message Méthode Polymorphisme

Abstraction

MSIAG 2007-2008 UML & POO – Section 2 20


Association : définition

Définition

Une association exprime une connexion sémantique entre


classes

Une association entre classes est une abstraction des liens


entre objets de ces classes

Le nom d’une association doit refléter sa signification

Différence attribut - association

Un attribut est de type simple (int, string, boolean, …)

Une association est de type complexe (une autre classe)

MSIAG 2007-2008 UML & POO – Section 2 21


Association : formalisme UML

nom de l’association sens de navigation

attribut Cardinalité (multiplicité)


rien =1
rôle * =0àn
1..* =1àn
0..1 = optionnel
n..m =nàm
MSIAG 2007-2008 UML & POO – Section 2 22
Association : multiplicités

La multiplicité porte une information très importante !

MSIAG 2007-2008 UML & POO – Section 2 23


Définitions : Agrégation & composition

Agrégation
Association particulière spécifiant une relation
composite (agrégat) – composant

Signifie : A « est composé de » B

Composition (Agrégation forte)


Forme d’agrégation avec des contraintes fortes

Les composants sont détruits avec le composite

La multiplicité coté composite ne peut être > 1

Les composants ne sont pas partageables

MSIAG 2007-2008 UML & POO – Section 2 24


Agrégation et composition : exemple

MSIAG 2007-2008 UML & POO – Section 2 25


Classes d’association

Définition

Une classe d’association est une classe liée à une association

Elle est nécessaire quand l’association possède des attributs

ou des opérations

Il n’existe qu’une seule instance de classe d’association pour

chaque objet concerné par l’association

Notion similaire aux tables d’association dans un modèle de

base de données relationnelle

MSIAG 2007-2008 UML & POO – Section 2 26


Classes d’association : exemple

Pour une instance d’Employé et une instance de Domaine


donnée il n’y a qu’une et une seule instance de Compétence
Un employé peut connaître plusieurs domaines, il a donc
autant de compétences que de domaines connus (par lui)

MSIAG 2007-2008 UML & POO – Section 2 27


Exercice 3 : classes et associations

Énoncé

Une compagnie aérienne propose des vols à des passagers.

Un vol est une succession de tronçons de vol.

Un tronçon de vol à un aéroport de départ et d’arrivée.

Un commandant de bord, un copilote et un avion sont


affectés à chaque tronçon.

Chaque passager a un dossier par vol effectué.

➨ Trouvez les classes et les associations de ce problème

MSIAG 2007-2008 UML & POO – Section 2 28


Élément de classe

Définition

Une opération, un attribut ou une association commun à tous les objets


d’une même classe et non pas différent pour chaque objet.

Sorte de variable globale à une classe

Accessible à partir de la classe et pas seulement d’un objet

Exemple

Attribut nbInstance stockant le nombre d’objets créés de la classe A

nbInstance aura la même valeur pour tous les instances de A

Accès direct depuis la classe : A.nbInstance (syntaxe Java)

MSIAG 2007-2008 UML & POO – Section 2 29


Concept objet : l’héritage

Exécutif Déclaratif Principes objets

Objet Classe Encapsulation

Lien Association Héritage

Message Méthode Polymorphisme

Abstraction

MSIAG 2007-2008 UML & POO – Section 2 30


Héritage

Définition

L’héritage est une relation entre classes dont l’une (la classe
fille ou sous classe) partage la structure et le comportement
de l’autre (la classe mère ou super classe)

Signification : la classe fille « est une sorte de » classe Mère

Héritage simple : héritage d’une seule classe

Héritage multiple : héritage direct de plusieurs classes

Une classe fille voit les éléments protected (protégés) de la


classe mère mais pas les éléments privés

MSIAG 2007-2008 UML & POO – Section 2 31


Généralisation et spécialisation

L’héritage offre deux points de vues :


Généralisation
Consiste à factoriser les propriétés communes d’un
ensemble de classe dans une classe plus générale et
hériter de celle ci

Spécialisation
Consiste à ajouter une nouvelle classe qui hérite d’une
classe existante
La sous classe peut spécialiser un comportement défini
dans la super classe (mais ce n’est pas obligatoire)

MSIAG 2007-2008 UML & POO – Section 2 32


Héritage : formalisme UML

Spécialisation Généralisation

MSIAG 2007-2008 UML & POO – Section 2 33


Héritage : sémantique

Comment identifier que A hérite de B ?


Il faut pouvoir dire : « A est une sorte de B »

Attention dire : « A est un B » ne suffit pas !

Le principe de substitution doit être respecté

La relation d’héritage dépend du contexte du problème

Principe de substitution
Une instance d’une sous classe doit pouvoir être utilisée là
où l’on requiert une instance de la super classe

Principe de « qui peut le plus peut le moins »

MSIAG 2007-2008 UML & POO – Section 2 34


Héritage : attention !

Spécialisation Généralisation

Le principe de substitution n’est pas respecté pour la


Bicyclette pour qui demarrerMoteur() n’a pas de sens !

MSIAG 2007-2008 UML & POO – Section 2 35


Classe abstraite

Définition
Classe dont les instances sont obligatoirement des instances
d’une de ses sous classes
On ne peut pas instancier une classe abstraite !
Une classe abstraite peut implémenter ou non des opérations
Les classes filles doivent obligatoirement implémenter les
opérations abstraites de la classe abstraite
Une classe abstraite peut avoir des attributs
3ème niveau d’abstraction :
monde réel  objet  classe  classe abstraite

MSIAG 2007-2008 UML & POO – Section 2 36


Classe abstraite : exemple

Classe abstraite Forme avec l’opération getSurface() qui n’est


pas implémentée
Les classes Carré et Triangle héritant de Forme, devront
implémenter getSurface()

MSIAG 2007-2008 UML & POO – Section 2 37


Interface

Définition

« Classe » ne spécifiant que des opérations sans jamais en


donner l’implémentation

Représente un « contrat de service » que doivent


implémenter les sous classes

On dit qu’une Classe implémente une interface

Une interface ne peut pas avoir des attributs

Exemple en Java : interface Comparable

Opération à implémenter « compareTo(…) »

MSIAG 2007-2008 UML & POO – Section 2 38


Interface : exemple et formalisme

Flèche signifiant
« implémente »

MSIAG 2007-2008 UML & POO – Section 2 39


Exercice : relations

Classez les relations suivantes en association simple, agrégation,

composition ou héritage

Un pays a une capitale

Une transaction boursière est un achat ou une vente

Les fichiers contiennent des enregistrements

Un polygone est composé d’un ensemble de points ordonnés

Un étudiant utilise un langage de programmation dans un projet

Les modems et les claviers sont des périphériques d’entrées sorties

Des classes peuvent avoir plusieurs attributs

MSIAG 2007-2008 UML & POO – Section 2 40


Concept objet : l’encapsulation

Exécutif Déclaratif Principes objets

Objet Classe Encapsulation

Lien Association Héritage

Message Méthode Polymorphisme

Abstraction

MSIAG 2007-2008 UML & POO – Section 2 41


Encapsulation

Définition

L’encapsulation consiste à masquer aux utilisateurs les états


et le fonctionnement interne d’un objet

Séparation interface / implémentation

Interface d’une classe : contrat de services rendus

Implémentation : description de comment il les réalise

L’encapsulation s’appuie sur la notion de visibilité

Un attribut privé n’est pas vu de l’extérieur de la classe

Une méthode publique fait partie de l’interface de la classe

MSIAG 2007-2008 UML & POO – Section 2 42


Encapsulation : intérêts

Ne montrer que l’essentiel : l’interface


On cache ainsi les détails d’implémentation

Faciliter les évolution de services


Si on garde la même définition de service, on peut
changer son implémentation sans impacter les
utilisateurs du service

Sécurité et intégrité des données


En offrant des méthodes de modifications/récupération
des données on contrôle les manipulations effectuées.

MSIAG 2007-2008 UML & POO – Section 2 43


Encapsulation : en pratique

Comment appliquer l’encapsulation ?

Les attributs doivent être privés

Les opérations définissant l’interface d’une classe


doivent être publique (services offerts)

Des opérations peuvent aussi être privées si elles


ne participent qu’au fonctionnement interne de la
classe

MSIAG 2007-2008 UML & POO – Section 2 44


Encapsulation : exemple

On ajoute à la classe Voiture le niveau d’huile


Les services existants de Voiture n’ont pas changé de définition,
seulement d’implémentation (se déplacer impacte le niveau d’huile)
On a enrichi les services offert par la classe Voiture avec le service
de gestion de l’huile vidanger()

Évolution de la
classe voiture

MSIAG 2007-2008 UML & POO – Section 2 45


Concept objet : polymorphisme

Exécutif Déclaratif Principes objets

Objet Classe Encapsulation

Lien Association Héritage

Message Méthode Polymorphisme

Abstraction

MSIAG 2007-2008 UML & POO – Section 2 46


Polymorphisme

Définition
Capacité des objets d’une même hiérarchie de classe à
répondre différemment à la même demande (opération)
Les classes filles peuvent implémenter différemment les
opérations de la classe mère
Intérêt
Hériter d’une classe mais pouvoir redéfinir/spécialiser un
comportement
Pouvoir gérer des listes d’objets en sachant qu’ils répondront
au même message mais avec leur comportement spécifique

MSIAG 2007-2008 UML & POO – Section 2 47


Polymorphisme : exemple

MSIAG 2007-2008 UML & POO – Section 2 48


Exercice : diagramme d’objet

Faire un diagramme d’objet correspondant au diagramme de classe suivant

MSIAG 2007-2008 UML & POO – Section 2 49


Concept objet : l’abstraction

Exécutif Déclaratif Principes objets

Objet Classe Encapsulation

Lien Association Héritage

Message Méthode Polymorphisme

Abstraction

MSIAG 2007-2008 UML & POO – Section 2 50


Abstraction

Monde réel

Pas d’abstraction

Objet

Premier niveau d’abstraction

Classe

Deuxième niveau d’abstraction

Classe abstraite et Interface

Troisième niveau d’abstraction


MSIAG 2007-2008 UML & POO – Section 2 51
Abstraction : vers le niveau 1

Le monde réel Les objets

MSIAG 2007-2008 UML & POO – Section 2 52


Abstraction : du niveau 1 au niveau 2

Les objets Les classes

MSIAG 2007-2008 UML & POO – Section 2 53


Abstraction : du niveau 2 au niveau 3

Les classes concrètes Les classes abstraites

MSIAG 2007-2008 UML & POO – Section 2 54


UML : Les diagrammes

Un diagramme est une représentation graphique


d’une partie du système étudié

Un diagramme suit des règles précises (sans


ambiguïtés)

Un diagramme est un outil de communication


=> il doit être clair et lisible

MSIAG 2007-2008 UML & POO – Section 2 55


UML : Diagramme de classe

Définition
Décrit la vue statique d’un système en termes de classes
et de relations entres ces classes

Est une vue du modèle de classe défini par le concepteur

Contenu
Classes, associations, héritage, attributs opérations

Relation d’implémentation, notes du concepteur

Diagramme central des méthodes objets

MSIAG 2007-2008 UML & POO – Section 2 56


Diagramme de classe : conseils

Conseils
Avoir un objectif : que veut on expliquer grâce à ce
diagramme ?
Ne pas surcharger ses diagrammes de classes, en faire
plusieurs si nécessaires pour faciliter la compréhension
Un diagramme doit être commenté pour mettre en évidence
les éléments peu explicites
Ne pas chercher à exprimer la dynamique du système, il existe
d’autres diagrammes adaptés à cela
Préférer un commentaire à une notation UML avancée (ceux
qui vont vous lire ne sont pas toujours des experts UML !)

MSIAG 2007-2008 UML & POO – Section 2 57


Diagramme de classe : exemple

MSIAG 2007-2008 UML & POO – Section 2 58


Exercice : RH

Cahier des charges


Le SI est un système de gestion de ressources humaines pour une
société
Il existe plusieurs types d’employés : les salariés de la société et les
prestataires appartenant à une SSII.
Chaque employé doit être affectée à une tâche d’un projet et
participe obligatoirement à un projet.
Un projet est dirigé par un chef de projet.
Un employé possède un nom, il occupe un poste précis sur le projet
avec un téléphone et une spécialité

Travail demandé : Modéliser le domaine métier du système.

MSIAG 2007-2008 UML & POO – Section 2 59


UML : Diagramme de séquence

Définition
Décrit la vue dynamique d’un système en termes d’objets et
de messages
Montre comment les objets collaborent entre eux pour
réaliser une fonctionnalité
La collaboration entre objets se fait au travers de messages,
un message étant une demande d’exécution d’une opération
sur l’objet recevant le message
Montre l’enchaînement des messages en insistant sur la
chronologie

MSIAG 2007-2008 UML & POO – Section 2 60


UML : Diagramme de séquence

Contenu
Des objets (et non des classes !)
Les messages échangés entre objets (appels de méthodes)
Les lignes de vie des objets
Les activations de l’objet représentant quand il est en train
d’effectuer une opération
A quoi sert il ?
à trouver les opérations des classes permettant de réaliser
une fonctionnalité donnée
À décrire un scénario particulier (ex : un scénario d’erreur)

MSIAG 2007-2008 UML & POO – Section 2 61


Diagramme de séquence : conseils

Conseils

Avoir une dynamique à montrer

Éviter les diagrammes de séquence de plus d’une page


Objectifs lisibilité !

Faire plusieurs diagrammes si nécessaires


Le diagramme principal fait référence à des diagrammes annexes

Commenter les points compliqués ou peu clairs


Préférer un commentaire à une notation UML avancée (pensez
que ceux qui vont vous lire ne sont pas toujours des experts UML)

MSIAG 2007-2008 UML & POO – Section 2 62


Diagramme de séquences : exemple

MSIAG 2007-2008 UML & POO – Section 2 63


Exercice : DAB

DAB : distributeur automatique de billets


Un utilisateur s’identifie avec sa carte et son code secret
Le DAB contient un module d’authentification
Chaque opération bancaire doit être « journalisée/historisée »
Le DAB permet de réaliser les opération suivantes :
Retrait
Transfert d’un compte à un autre (du même client)
Historique de compte

Modéliser le système et réaliser :


Un diagramme de classe métier
Des diagrammes de séquence pour les trois opérations décrites

MSIAG 2007-2008 UML & POO – Section 2 64

Vous aimerez peut-être aussi