Chapitre - 1 - POO Avancée

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 87

Université Hassan 1er

Faculté des Sciences et Techniques


-Settat-

Filière : Master en Réseaux et Systèmes Informatiques


Module : Programmation orientée objet avancée

Chapitre 1 : Concepts de la programmation orientée


objet

Prof. Said El Kafhali

Département Mathématiques & Informatique


Faculté des Sciences et Techniques, Settat
Université Hassan 1er

Année Universitaire : 2024/2025


Année Universitaire : 2024/2025
Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation 1
orientée
/ 87 objet
Plan

1 Introduction
2 Diagramme de classes
Présentation de diagramme de classes
Héritage
Classes abstraites et interfaces
Classe paramétrée
Paquetage ou package
3 Diagramme des objets
Présentation de diagramme d’objets
Transition entre diagrammes de classes et d’objets
Les objets composites
4 Exercices corrigés
5 Références
Année Universitaire : 2024/2025
Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation 2
orientée
/ 87 objet
Introduction

Qu’est ce que la Programmation Orientée Objet ?

La programmation objet consiste à définir des objets logiciels et à les


faire interagir entre eux.
Fonder l’architecture du système sur des entités regroupant fonctions
et données.
Le système est vue comme une collection d’objets en interaction.
L’approche objet tire sa force de sa capacité
à regrouper ce qui a été séparé,
à construire le complexe à partir de l’élémentaire, et surtout
à intégrer statiquement et dynamiquement les constituants d’un
système.

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation 3
orientée
/ 87 objet
Introduction

Qu’est ce qu’un objet ?

Un objet est une abstraction du monde réel caractérisé par le


rassemblement, au sein d’une même unité d’exécution, d’un ensemble
de propriétés (données) et d’opérations (actions capable d’effectuer).
La notion de propriété est matérialisée par un attribut.
La notion d’opération est matérialisée par une méthode.
Objet = données + traitements
Un objet posséde une identité (valeur unique et invariante qui
caractérise l’objet) qui permet de distinguer un objet d’un autre objet
( on parle de son nom, son adresse mémoire).
Un objet est caractérisé par son comportement qui est défini à travers
les méthodes applicables à cet objet et qui caractérisent sa façon
d’agir et de réagir dans son environnement.
Un objet est caractérisé par son état qui constitue l’ensemble des
valeurs des attributs de cet objet.
Année Universitaire : 2024/2025
Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation 4
orientée
/ 87 objet
Introduction

Exemples d’objets

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation 5
orientée
/ 87 objet
Introduction

Qu’est ce qu’une classe ?

Un objet est fabriquée (créé) à partir d’un modèle appelé classe (on
parle d’instanciation).
On définit l’objet comme l’instance d’une classe.
Une classe est un ensemble d’objets qui ont en commun les mêmes
méthodes et les mêmes types d’attributs.
Une classe définit un type qui peut être vue comme une fabrique
d’objets et qui comporte la déclaration des attributs et la déclaration
et la définition des méthodes.
Classe = attributs + méthodes + instanciations

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation 6
orientée
/ 87 objet
Introduction

Caractérisation simple d’une personne (classe)


Une personne est caractérisée par ses attributs :
son prénom,
son nom de famille,
son sexe,
sa date de naissance,
son lieu de naissance,
sa profession, etc...
Une personne peut exécuter les méthodes suivantes :
se réveiller,
marcher,
courir,
sauter,
s’asseoir,
manger,
lire,
écrire,
parler, ...
Année Universitaire : 2024/2025
Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation 7
orientée
/ 87 objet
Introduction

Instances de classe

Chaque instance possède un exemplaire propre de chaque attribut


défini par la classe.
Un objet possède sa propre existence et un état (c.-à-d. les valeurs de
ses attributs) qui lui est propre (indépendant des autres objets).
Le code des méthodes est commun à toutes les instances (il n’existe
qu’une seule fois en mémoire).

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation 8
orientée
/ 87 objet
Introduction

Instances de type Personne

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation 9
orientée
/ 87 objet
Introduction

Schéma simplifiée d’instances de Personne

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation10
orientée
/ 87 objet
Introduction

Instances de type Sphère

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation11
orientée
/ 87 objet
Introduction

Comment interagir avec un objet ?

Les objets interagissent entre eux en s’échangeant des messages.


La réponse à la réception d’un message par un objet est appelée une
méthode.
Une méthode est donc la mise en oeuvre du message : elle décrit la
réponse qui doit être donnée au message.
Le code des méthodes contient généralement :
Des accès en lecture/écriture aux attributs d’un objet.
Des appels (on parle d’invocation) aux méthodes d’un objet.
Un Programme Orienté Objet (POO) est vu comme un ensemble
d’objets interagissant entre eux en s’échangeant des messages.

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation12
orientée
/ 87 objet
Introduction

L’analyse orienté objet

L’analyse orienté objet s’appuie sur les principes suivants :


Abstraction : décrire formellement les données et les traitements en
ignorants les détails.
Encapsulation : masquer les données et les traitements en définissant
une interface.
Héritage : reprendre intégralement tout ce qui a déjà été fait et de
pouvoir l’enrichir : spécialisation.
Polymorphisme : le terme polymorphisme issu du grec signifie la faculté
de prendre plusieurs formes.
Messages : le seul moyen de communication entre les objets et l’envoi
de messages.

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation13
orientée
/ 87 objet
Diagramme de classes Présentation de diagramme de classes

Plan

1 Introduction
2 Diagramme de classes
Présentation de diagramme de classes
Héritage
Classes abstraites et interfaces
Classe paramétrée
Paquetage ou package
3 Diagramme des objets
Présentation de diagramme d’objets
Transition entre diagrammes de classes et d’objets
Les objets composites
4 Exercices corrigés
5 Références
Année Universitaire : 2024/2025
Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation14
orientée
/ 87 objet
Diagramme de classes Présentation de diagramme de classes

Objectifs de diagramme de classes

Le diagramme de classes est considéré comme le plus important de la


modélisation orientée objet, il est le seul obligatoire lors d’une telle
modélisation.
Il permet de fournir une représentation abstraite des objets du système
qui vont interagir ensemble pour réaliser les cas d’utilisation.
Le diagramme de classes est la représentation de la structure statique
des classes du modèle et de leurs relations.
Les principaux éléments de cette vue statique sont les classes et leurs
relations : association, généralisation et plusieurs types de
dépendances, telles que la réalisation et l’utilisation.

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation15
orientée
/ 87 objet
Diagramme de classes Présentation de diagramme de classes

Représentation graphique des classes avec UML


Une classe est représentée par un rectangle divisé en trois
compartiments.
Le premier indique le nom de la classe, le deuxième ses attributs et le
troisième ses méthodes (opérations).

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation16
orientée
/ 87 objet
Diagramme de classes Présentation de diagramme de classes

Associations entre classes

Une association désigne le cas où une instance d’une classe utilise un


objet d’une autre classe en tant qu’attribut objet.
Une association a pour objectif de définir les propriétés d’un ensemble
de liens que l’on pourra établir entre les objets.

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation17
orientée
/ 87 objet
Diagramme de classes Présentation de diagramme de classes

Multiplicité des associations

Chaque extrémité d’une association peut porter une indication de


multiplicité qui montre combien d’objets (d’instances) de la classe
considérée (classe B) peuvent être liés à un seul objet (une seule
instance) de l’autre classe (classe A).

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation18
orientée
/ 87 objet
Diagramme de classes Présentation de diagramme de classes

Représentation des associations


Une association est explicitée par des attributs en phase finale de
conception.
Selon la cardinalité (multiplicité) du rôle, on peut utiliser :
Un objet simple (0..1 ; 1..1);
Un tableau d’objets (0..5 ; 3..10, etc) ;
Une collection d’objets (0..*, 1..*, n..*) ;

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation19
orientée
/ 87 objet
Diagramme de classes Présentation de diagramme de classes

Navigabilité des associations


Orientation d’une association : définit l’accessibilité des objets.
Souvent laissée implicite jusqu’à la phase finale de conception, voire
l’implémentation.

Exemple
On peut accéder à ses voitures à partir d’une personne ; pas à ses
propriétaires à partir d’une voiture.

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation20
orientée
/ 87 objet
Diagramme de classes Présentation de diagramme de classes

Association bidirectionnelle

Certaines associations doivent être navigables dans les deux sens.

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation21
orientée
/ 87 objet
Diagramme de classes Présentation de diagramme de classes

Association réflexive
Une classe peut être associée à elle-même.
Une classe peut contenir une référence à des objets de même classe.

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation22
orientée
/ 87 objet
Diagramme de classes Présentation de diagramme de classes

Association multiple

Les classes ont plusieurs relations distinctes entre elles ; auquel cas, on
prend alors soin de préciser le nom de chaque association et pour
chacune d’entre elles le rôle de chaque classe, afin de distinguer
l’utilité des différentes relations.

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation23
orientée
/ 87 objet
Diagramme de classes Présentation de diagramme de classes

Attributs d’association
Un attribut d’association est un attribut qui caractérise l’association et
pas seulement une de ses classes extrémités.
Dans le cas d’une multiplicité 1, il est possible mais non souhaitable
d’attacher l’attribut d’association à la classe (salaire sur Personne si
elle ne peut travailler que dans une seule entreprise).

Exemple
Le salaire sur Personne si elle ne peut travailler que dans une seule
entreprise.

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation24
orientée
/ 87 objet
Diagramme de classes Présentation de diagramme de classes

Classe d’association : association porteuse d’informations

Une classe-association possède les propriétés des associations et des


classes : elle se connecte à deux ou plusieurs classes et possède
également des attributs et des opérations.
Une classe-association est caractérisée par un trait discontinu entre la
classe et l’association qu’elle représente.
Cette relation est parfois difficile à « voir » lors de la conception. Elle
apparaît par exemple lorsque des données sont propres à une
association entre objets, non à l’un des objets associés.
Elle n’est pas nécessaire lorsqu’une des cardinalités au moins est égale
à 1.
Classe d’association= Elément ayant à la fois les propriétés d’une
classe et d’une association.

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation25
orientée
/ 87 objet
Diagramme de classes Présentation de diagramme de classes

Classe d’association : exemple 1

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation26
orientée
/ 87 objet
Diagramme de classes Présentation de diagramme de classes

Classe d’association : exemple 2

Une commande est constituée d’une série d’articles, un article peut


apparaître dans différentes commandes :

Chaque article peut être commandé en quantité arbitraire :

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation27
orientée
/ 87 objet
Diagramme de classes Présentation de diagramme de classes

Classe d’association : implémentation


La classe association contient deux attributs pointant vers les objets
qui constituent l’association.

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation28
orientée
/ 87 objet
Diagramme de classes Présentation de diagramme de classes

Association n-aire
Association n-aire= une association parmi 3 classes ou plus. Chaque
instance de l’association est un n-tuple de valeurs des classes
respectives.

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation29
orientée
/ 87 objet
Diagramme de classes Présentation de diagramme de classes

Agrégation

L’agrégation est une association qui exprime un couplage fort entre


un objet composite et un objet composant. C’est une relation de
subordination de type « ensemble / élément ».
Un composant peut apparaître dans plusieurs composites.
La création du composite n’entraine pas la création du ou des
composants.
La destruction du composite n’entraine pas forcément la destruction
du ou des composants.
Graphiquement, on ajoute un losange vide (♢) du côté du composite
(de l’agrégat).

Remmarque
L’agrégation signifie qu’un objet en contient d’autres.

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation30
orientée
/ 87 objet
Diagramme de classes Présentation de diagramme de classes

Agrégation : exemples

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation31
orientée
/ 87 objet
Diagramme de classes Présentation de diagramme de classes

Composition

La composition, également appelée agrégation composite, décrit une


contenance structurelle entre instances. Le composite contient ses
composants.
La création de l’objet composite implique la création des composants
(par le composite).
Ainsi, la destruction de l’objet composite implique la destruction de
ses composants.
Un composant appartient toujours à une instance de l’élément
composite.
Graphiquement, on ajoute un losange plein (♦) du côté de l’agrégat.

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation32
orientée
/ 87 objet
Diagramme de classes Présentation de diagramme de classes

Composition : exemples

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation33
orientée
/ 87 objet
Diagramme de classes Présentation de diagramme de classes

Agrégation et composition : Quelle est la différence?

Composition
La composition peut être vue comme une relation “fait partie de” (“part
of”), c’est à dire que si un objet B fait partie d’un objet A alors B ne peut
pas exister sans A. Ainsi si A disparaît alors B également.

Agrégation
L’agrégation quant à elle est vue comme une relation de type “a un” (“as
a”), c’est à dire que si un objet A a un objet B alors B peut vivre sans A.

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation34
orientée
/ 87 objet
Diagramme de classes Présentation de diagramme de classes

Différence entre agrégation et composition: exemple


La classe Employe possède deux attributs : Salaire et ProjetCourant.
L’instance de Salaire fait partie de l’instance d’employé, si on supprime
l’employé alors son salaire aussi est supprimé, c’est une relation de
composition.
En revanche l’employé a un projet courant. Si l’utilisateur part de
l’entreprise le projet perdurera, c’est une relation d’agrégation.

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation35
orientée
/ 87 objet
Diagramme de classes Présentation de diagramme de classes

Agrégation : Implémentation

1 public final class Voiture {


2 private List<Pneu> pneus = new ArrayList<Pneu>();
3}

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation36
orientée
/ 87 objet
Diagramme de classes Présentation de diagramme de classes

Composition : Implémentation

Composition
1 public final class Voiture {
2 private final Chassis chassis;
3 private Voiture() { chassis = new Chassis(); }
4 ... }
5 public final class Chassis { }

Composition comme une classe interne


1 public final class Voiture {
2 private final Chassis chassis;
3 private Voiture() { chassis = new Chassis(); }
4 class Chassis { } ... }
Année Universitaire : 2024/2025
Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation37
orientée
/ 87 objet
Diagramme de classes Héritage

Plan

1 Introduction
2 Diagramme de classes
Présentation de diagramme de classes
Héritage
Classes abstraites et interfaces
Classe paramétrée
Paquetage ou package
3 Diagramme des objets
Présentation de diagramme d’objets
Transition entre diagrammes de classes et d’objets
Les objets composites
4 Exercices corrigés
5 Références
Année Universitaire : 2024/2025
Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation38
orientée
/ 87 objet
Diagramme de classes Héritage

Relation d’héritage

L’héritage est une relation de spécialisation/généralisation.


La généralisation dans un ensemble de classes désigne la mise en
commun d’attributs et de méthodes au sein d’une classe mère;
chaque classe possède les attributs et méthodes de sa classe mère
auxquels viennent s’ajouter les membres propres à la classe.
Inversement, la spécialisation désigne la propagation des attributs et
des méthodes d’une classe dans une classe fille, laquelle peut intégrer
des membres supplémentaires.
La classe dérivée possède toutes les propriétés de ses classes mères
(attributs et méthodes).
Toutefois, la classe dérivée n’a pas accès aux propriétés privées de la
classe mère.

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation39
orientée
/ 87 objet
Diagramme de classes Héritage

Relation d’héritage : exemple 1


Par héritage d’Article, un livre a d’office un prix, une désignation et
une opération acheter(), sans qu’il soit nécessaire de le préciser.

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation40
orientée
/ 87 objet
Diagramme de classes Héritage

L‘héritage : exemple 2

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation41
orientée
/ 87 objet
Diagramme de classes Héritage

Terminologie de l’héritage

Une classe dérivée peut redéfinir (même signature) une ou plusieurs


méthodes de la classe mère.
Sauf indications contraires, un objet utilise les opérations les plus
spécialisées dans la hiérarchie des classes.
La surcharge d’opérations (même nom, mais signatures des opérations
différentes) est possible dans toutes les classes.
Toutes les associations de la classe mère s’appliquent, par ,défaut, aux
classes dérivées.
Principe de substitution : une instance d’une classe peut être
utilisée partout où une instance de sa classe parent est attendue.
Par exemple, toute opération acceptant un objet d’une classe Animal
doit accepter tout objet de la classe Chat (l’inverse n’est pas toujours
vrai).

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation42
orientée
/ 87 objet
Diagramme de classes Héritage

Héritage multiple : exemple 1


Il y a héritage multiple si une classe peut hériter de plusieurs autres
classes.
La classe dérivée hérite alors des attributs et méthodes de toutes ses
super-classes.
C++ un des langages objet permettant son implantation effective.
Java ne le permet pas.

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation43
orientée
/ 87 objet
Diagramme de classes Héritage

Héritage multiple : exemple 2

Une classe étudiant-salarié qui hérite à la fois de la classe étudiant et


de la classe employé.

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation44
orientée
/ 87 objet
Diagramme de classes Héritage

Polymorphisme résultat de l’héritage


Le polymorphisme est la capacité pour une entité de prendre plusieurs
forme. Polymorphisme = un même nom, plusieurs implémentations.
Crée des situations où le type (exact) de l’objet que l’on manipule
n’est pas forcément connu au moment de la compilation, mais
seulement à l’exécution.

Exemple

Les noms des méthodes surface() et perimetre() sont similaires dans la


classe Rectangle et Disque, mais surface d’un disque != surface d’un
rectangle.
Année Universitaire : 2024/2025
Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation45
orientée
/ 87 objet
Diagramme de classes Héritage

Exemple de diagramme de classes

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation46
orientée
/ 87 objet
Diagramme de classes Classes abstraites et interfaces

Plan

1 Introduction
2 Diagramme de classes
Présentation de diagramme de classes
Héritage
Classes abstraites et interfaces
Classe paramétrée
Paquetage ou package
3 Diagramme des objets
Présentation de diagramme d’objets
Transition entre diagrammes de classes et d’objets
Les objets composites
4 Exercices corrigés
5 Références
Année Universitaire : 2024/2025
Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation47
orientée
/ 87 objet
Diagramme de classes Classes abstraites et interfaces

Classes abstraites
Une méthode est dite abstraite lorsqu’on connaît son entête mais pas
la manière dont elle peut être réalisée.
Il appartient aux classes dérivées de définir les méthodes abstraites.
Une classe est dite abstraite lorsqu’elle définit au moins une méthode
abstraite ou lorsqu’une classe parent contient une méthode abstraite
non encore réalisée.
Une classe abstraite est représentée comme une classe avec un nom en
italique ou avec le mot clé {abstract}.

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation48
orientée
/ 87 objet
Diagramme de classes Classes abstraites et interfaces

Classes abstraites : exemple


Un Média peut être transporté, dupliqué, affiché. Le transport et la
duplication sont indépendants du type de Média (copie de fichiers).
Par contre, tout Média peut être affiché et ce n’est pas la même chose
pour Livre, Vidéo, Graphique ou Texte.
Un Média ne peut pas définir comment il s’affiche tant qu’il ne sait
pas ce qu’il est. Il n’existe pas d’instance de la classe Média. Un
Média n’existe qu’en tant que Livre, Texte, Graphique ou Vidéo.

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation49
orientée
/ 87 objet
Diagramme de classes Classes abstraites et interfaces

Interface

Une interface n’est pas une classe, c’est une liste d’opérations.
Une interface, comme une classe abstraite, ne peut pas servir à créer
un objet.
Le rôle d’une interface est de regrouper un ensemble d’opérations
assurant un service cohérent offert par un classeur et une classe en
particulier.
Une interface est définie comme une classe, avec les mêmes
compartiments. On ajoute le stéréotype interface avant le nom de
l’interface.
On utilise une relation de type réalisation entre une interface et une
classe qui l’implémente.
Les classes implémentant une interface doivent implémenter toutes les
opérations décrites dans l’interface.
Année Universitaire : 2024/2025
Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation50
orientée
/ 87 objet
Diagramme de classes Classes abstraites et interfaces

Exemple d’interface

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation51
orientée
/ 87 objet
Diagramme de classes Classes abstraites et interfaces

Implémentation-héritage

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation52
orientée
/ 87 objet
Diagramme de classes Classe paramétrée

Plan

1 Introduction
2 Diagramme de classes
Présentation de diagramme de classes
Héritage
Classes abstraites et interfaces
Classe paramétrée
Paquetage ou package
3 Diagramme des objets
Présentation de diagramme d’objets
Transition entre diagrammes de classes et d’objets
Les objets composites
4 Exercices corrigés
5 Références
Année Universitaire : 2024/2025
Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation53
orientée
/ 87 objet
Diagramme de classes Classe paramétrée

Classe paramétrée/générique *
Classe paramétrée/générique = paramétrée par des types.
Attributs génériques = typés avec le type en paramètre.
Opérations génériques = arguments et / ou type de retour génériques.

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation54
orientée
/ 87 objet
Diagramme de classes Classe paramétrée

Définition d’une classe paramétrée


Pour définir une classe générique et paramétrable en fonction de
valeurs et/ou de types :
Définition d’une classe paramétrée par des éléments spécifiés dans un
rectangle en pointillés ;
Utilisation d’une dépendance stéréotypée « bind » pour définir des
classes en fonction de la classe paramétrée.

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation55
orientée
/ 87 objet
Diagramme de classes Classe paramétrée

Classe paramétrée : exemple

Ce type de classe apparaît rarement au début de la modélisation.

A noter que les classes paramétrables peuvent être remplacées, de


façon moins élégante, par des généralisations.

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation56
orientée
/ 87 objet
Diagramme de classes Paquetage ou package

Plan

1 Introduction
2 Diagramme de classes
Présentation de diagramme de classes
Héritage
Classes abstraites et interfaces
Classe paramétrée
Paquetage ou package
3 Diagramme des objets
Présentation de diagramme d’objets
Transition entre diagrammes de classes et d’objets
Les objets composites
4 Exercices corrigés
5 Références
Année Universitaire : 2024/2025
Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation57
orientée
/ 87 objet
Diagramme de classes Paquetage ou package

Package

Un paquetage permet de regrouper sous une même appellation un


ensemble d’éléments de modélisation UML tels que :
Des classes, des composants, des nœuds, des collaborations, des cas
d’utilisation, ...
Des diagrammes de classes, de collaboration, de séquence, de cas
d’utilisation, ...
D’autres paquetages
Les objectifs sont :
Organisation cohérente des classes et interfaces.
Facilite le développement de bibliothèques.
Protection supplémentaire avec le mode protégé

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation58
orientée
/ 87 objet
Diagramme de classes Paquetage ou package

Notation
Un paquetage est représenté par un dossier contenant un nom.
Le nom du paquetage peut être préfixé par le nom du paquetage qui le
contient.
Le contenu du paquetage peut être exposé.
Les éléments constituant le paquetage donne la visibilité (privée,
publique, protégée) qu’ils affichent vis-à-vis de l’extérieur.

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation59
orientée
/ 87 objet
Diagramme de classes Paquetage ou package

Utilisation des classes d’un package

Les classes (ou interfaces) d’un package peuvent être utilisées


(importées) individuellement ou de manière globale (le package entier)
par toute autre unité de compilation désirant les utiliser.
Seules les classes déclarées publiques (public) dans le package sont
accessibles.
En dehors du package, les noms des classes sont:
NomDuPackage.NomDeLaClasse.
En java, l’instruction import NomDuPackage permet d’utiliser
(importer) les classes sans les préfixer par leur nom de package.
Si pas d’importation (import), il faut indiquer le nom complet de la
classeNomDuPackage.NomDeLaClasse pour l’exploiter.

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation60
orientée
/ 87 objet
Diagramme de classes Paquetage ou package

Paquetage : exemple

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation61
orientée
/ 87 objet
Diagramme de classes Paquetage ou package

Dépendances entre paquetages

Il existe 4 types de dépendances entre paquetages :


Les dépendances amies : accès à tous les éléments d’un paquetage
quelque soit leur visibilité. Une dépendance amie est étiquetée par
«friend».
Les dépendances d’importation : importation d’éléments dans
l’espace de nommage en tenant compte des visibilités. Une dépendance
d’importation est étiquetée par «import».
Les dépendances d’accès : accès à des éléments en tenant compte de
leur visibilité. Une dépendance d’accès est étiquetée par «access».
Les dépendances de généralisation : généralisation/spécialisation de
paquetage. Une dépendance de généralisation utilise la flèche de
généralisation.

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation62
orientée
/ 87 objet
Diagramme de classes Paquetage ou package

Notation de dépendances entre paquetages

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation63
orientée
/ 87 objet
Diagramme de classes Paquetage ou package

Encapsulation

L’encapsulation est un principe de conception consistant à protéger le


cœur d’un système des accès intempestifs venant de l’extérieur.
En UML, utilisation de médicateurs d’accès sur les attributs ou les
classes :
Public ou + : propriété ou classe visible partout.
Protected ou # : propriété ou classe visible dans la classe et par tous
ses descendants.
Private ou - : propriété ou classe visible uniquement dans la classe.
Package, ou ~ : propriété ou classe visible uniquement dans le
paquetage.
Il n’y a pas de visibilité par défaut.

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation64
orientée
/ 87 objet
Diagramme de classes Paquetage ou package

Exemple d’encapsulation

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation65
orientée
/ 87 objet
Diagramme de classes Paquetage ou package

Paquetage (Recommandations)

Penser à utiliser les paquetages pour structurer votre projet.


Penser que le paquetage permet de hiérarchiser des diagrammes
(classes, cas d’utilisation, ...), mais aussi de regrouper un ensemble de
diagrammes entre-eux.
L’utilisation du paquetage est fondamentale pour la mise en place
d’une démarche système.

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation66
orientée
/ 87 objet
Diagramme des objets Présentation de diagramme d’objets

Plan

1 Introduction
2 Diagramme de classes
Présentation de diagramme de classes
Héritage
Classes abstraites et interfaces
Classe paramétrée
Paquetage ou package
3 Diagramme des objets
Présentation de diagramme d’objets
Transition entre diagrammes de classes et d’objets
Les objets composites
4 Exercices corrigés
5 Références
Année Universitaire : 2024/2025
Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation67
orientée
/ 87 objet
Diagramme des objets Présentation de diagramme d’objets

Objectifs de diagramme d’objets

Un diagramme d’objets représente des objets (i.e. instances de


classes) et leurs liens (i.e. instances de relations) pour donner une vue
de l’état du système à un instant donné de l’exécution.
Peut être utilisé pour :
Illustrer le modèle de classes en montrant un exemple qui explique le
modèle;
Préciser certains aspects du système;
Exprimer une exception en modélisant des cas particuliers;
Etc.

Remarque
Le diagramme de classes modélise des règles et le diagramme d’objets
modélise des faits.

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation68
orientée
/ 87 objet
Diagramme des objets Présentation de diagramme d’objets

Définition d’un objet

Un objet est formé d’un état et d’un comportement.


Un état : l’ensemble des valeurs de ses caractéristiques à un instant
donné.
représenté par des attributs.
Un comportement : manière dont l’objet agit et réagit.
représenté par des méthodes.
Objet informatique : représentation des entités d’un monde réel ou
virtuel, dans le but de les piloter ou de les simuler.
objets matériels : porte, ascenseur, bouton, clavier, souris, avion, ...
différents objets, dans une entreprise : compte en banque, équation
mathématique, accueil, commercial, contrôleur qualité, facture,
commande, marché, ...
pour un logiciel de gestion de la clientèle : client, requête SQL, bouton,
fenêtre, ...

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation69
orientée
/ 87 objet
Diagramme des objets Présentation de diagramme d’objets

Représentation des objets


Instance et objet sont largement synonymes.
On représente une instance en soulignant son nom.
Chaque instance doit avoir un nom différent des autres instances dans
son contexte.
Les valeurs (a) ou l’état (f) d’un objet peuvent être spécifiées.
Les instances peuvent être anonymes (a,c,d), nommées (b,f),
orphelines (e), multiples (d) ou stéréotypées (g).

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation70
orientée
/ 87 objet
Diagramme des objets Présentation de diagramme d’objets

Lien entre objets

Les objets sont reliés par des instances d’associations : les liens.
Un lien représente une relation entre objets à un instant donné.
La multiplicité des extrémités des liens est toujours de 1.

Exemple

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation71
orientée
/ 87 objet
Diagramme des objets Transition entre diagrammes de classes et d’objets

Plan

1 Introduction
2 Diagramme de classes
Présentation de diagramme de classes
Héritage
Classes abstraites et interfaces
Classe paramétrée
Paquetage ou package
3 Diagramme des objets
Présentation de diagramme d’objets
Transition entre diagrammes de classes et d’objets
Les objets composites
4 Exercices corrigés
5 Références
Année Universitaire : 2024/2025
Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation72
orientée
/ 87 objet
Diagramme des objets Transition entre diagrammes de classes et d’objets

Transition diagramme de classes-diagramme d’objets

Chaque objet est instance d’une classe et la classe de l’objet ne change


pas durant la vie de l’objet.
Les classes abstraites ne peuvent pas être instanciées.
Les liens relient les objets et les relations relient les classes.
Chaque lien est instance d’une relation (association, agrégation,
composition).
Un lien entre deux objets implique une relation entre les classes (ou
superclasses) des 2 objets.
Un lien entre 2 objets indiquent qu’ils se connaissent et qu’ils peuvent
s’échanger des messages.
Les diagrammes d’objets qui contiennent des objets et des liens sont
instances des diagrammes de classes qui contiennent des classes et des
relations.
Année Universitaire : 2024/2025
Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation73
orientée
/ 87 objet
Diagramme des objets Transition entre diagrammes de classes et d’objets

Exemple de transition

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation74
orientée
/ 87 objet
Diagramme des objets Transition entre diagrammes de classes et d’objets

Relation de dépendance d’instanciation


La relation d’instanciation (stéréotypée) est une relation de
dépendance particulière qui lie l’objet à sa classe.
Elle relie, en particulier, les associations aux liens et les classes aux
objets.
Cette relation d’instanciation est représenté par une flèche en
pointillée qui part de l’objet vers la classe et qui peut être
accompagnée du stéréotype «instance of».

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation75
orientée
/ 87 objet
Diagramme des objets Transition entre diagrammes de classes et d’objets

Diagramme d’objets : exemple

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation76
orientée
/ 87 objet
Diagramme des objets Les objets composites

Plan

1 Introduction
2 Diagramme de classes
Présentation de diagramme de classes
Héritage
Classes abstraites et interfaces
Classe paramétrée
Paquetage ou package
3 Diagramme des objets
Présentation de diagramme d’objets
Transition entre diagrammes de classes et d’objets
Les objets composites
4 Exercices corrigés
5 Références
Année Universitaire : 2024/2025
Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation77
orientée
/ 87 objet
Diagramme des objets Les objets composites

Les objets composites


Les objets composés de sous-objets peuvent être représentés au moyen
d’un objet composite, afin de réduire la complexité des diagrammes.
Les objets composites se présentent comme des objets classiques, si ce
n’est que les attributs sont remplacés par des objets:
Soit sous forme textuelle soulignée,
Soit sous forme graphique.
Le diagramme suivant reprend la forme graphique des objets
composites :

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation78
orientée
/ 87 objet
Diagramme des objets Les objets composites

Instances de classes composites

Les objets composites sont instances de classes composites,


c’est-à-dire de classes construites à partir d’autres classes par la plus
forte forme d’agrégation.

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation79
orientée
/ 87 objet
Diagramme des objets Les objets composites

Exemple

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation80
orientée
/ 87 objet
Exercices corrigés

Exercice 1

On veut manipuler dans un même programme des objets caractérisés par


leur couleur et leur position (respectivement de type Color et Position) et
que l’on pourra déplacer et afficher. Parmi ces objets, on trouve : des
photos, caractérisées par leur taille et que l’on pourra compresser des
figures géométriques, carrés et des hexagones et plus généralement des
polygones réguliers définis par le nombre et la longueur de leurs cotés et
des cercles définis par leur rayon dont on pourra calculer la surface. Notons
que le calcul de la surface d’une photo ou que la compression d’une figure
géométrique quelconque ne nous intéresse pas. On souhaite pouvoir ajouter
d’autres figures géométriques possédant les mêmes caractéristiques et qu’on
pourra afficher à l’écran, déplacer et dont on pourra aussi calculer surface.
Proposer le diagramme de classe qui vous paraît la plus adaptée.

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation81
orientée
/ 87 objet
Exercices corrigés

Corrigé

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation82
orientée
/ 87 objet
Exercices corrigés

Exercice 2

Un hôtel est composé d’au moins deux chambres. Chaque chambre dispose
d’une salle d’eau qui peut être une douche ou une salle de bain. L’hôtel
héberge des personnes. Il peut employer du personnel et est dirigé par un
des employés. L’hôtel a les caractéristiques suivantes : une adresse, le
nombre de pièces, la catégorie. Une chambre est caractérisée par le nombre
et le type de lits, le prix et le numéro. On peut calculer le chiffre d’affaires
et le prix de la chambre en fonction du nombre d’occupants. On gère aussi
la réservation des chambres. On peut connaître à tout moment la
disponibilité des chambres.
Proposer le diagramme de classe qui vous paraît la plus adaptée.

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation83
orientée
/ 87 objet
Exercices corrigés

Corrigé

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation84
orientée
/ 87 objet
Exercices corrigés

Exercice 3
Représenter le diagramme d’objets correspondant au diagramme de
classes suivant :
Le système gère un seul bâtiment contenant trois portes.
Le système peut être géré par une personne nommée Tolkien.
Deux utilisateurs peuvent accéder au bâtiment :
Gandalf a accès à la première (8h-18h) et seconde porte (12h-24h).
Bilbon a accès à la troisième porte toute la journée.

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation85
orientée
/ 87 objet
Exercices corrigés

Corrigé

Année Universitaire : 2024/2025


Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation86
orientée
/ 87 objet
Références

Références
1 Pascal Roques, UML 2 par la pratique: études de cas et exercices
corrigés, Groupe Eyrolles.
2 Pierre Gérard, Introduction à UML 2: Modélisation Orientée Objet de
Systèmes Logiciels, Cours DUT Informatique S2D, Université de Paris
13 IUT Villetaneuse.
3 G. BOOCH, J. RUMBAUGH et Y. JACOBSON, Le guide de
l’utilisateur UML , (Eyrolles, 2000).
4 P. A. MULLER et N. GAERTNER, Modélisation objet avec UML ,
(Eyrolles, 2000).
5 Pierre-Alain Muller and Nathalie Gaertner. Modélisation objet avec
UML. Eyrolles, 2è edition, 2003.
6 James Rumbaugh et al. Modélisation et conception orientée objet.
Masson, 1994.
7 OMG. UML Resource Page. http ://www.omg.org/uml/.
8 Martin Fowler. UML 2.0. CampusPress Référence, 2004.
Année Universitaire : 2024/2025
Prof. Said El Kafhali Chapitre 1 : Concepts de la programmation87
orientée
/ 87 objet

Vous aimerez peut-être aussi