Diagramme de classes

ENIT
1/38
100%

<!-- Slide number: 1 -->

Axe statique : Diagramme de classes

2ème année Ingénieurs en Informatique

ENIT

![C:\Users\faycal\Desktop\logoEnit.gif](Picture2.jpg)

Nejib Ben Hadj-Alouane

<!-- Slide number: 2 -->

Introduction (Diagramme de classes)

Diagramme de cas d’utilisation pour la représentation du système du point de vue des acteurs,… flux d’évènements…

Diagramme de classes pour la représentation de la structure interne

Description purement statique du système

Pivot essentiel de la modélisation avec UML

Représentation statique du système à développer

<!-- Slide number: 3 -->

Introduction (Diagramme de classes)

Centre de la modélisation UML

Clé de la génération automatique du code

Classe = données et ensemble de traitements

Fondement du diagramme de classes:

Objet

Classe comprenant les attributs et les opérations

Association entre classes

<!-- Slide number: 4 -->

Objet

Concept,… abstraction ou chose qui a un sens dans le contexte du système à modéliser.

Identité, et distingué des autres sans considérer a priori ses valeurs et ses propriétés.

Diagramme d’objets, utilisé en analyse pour la vérification de l’adéquation d’un diagramme de classes à différents cas possibles

![](Picture2.jpg)

![](Picture3.jpg)

e.g.

<!-- Slide number: 5 -->

Classe (1/4)

Abstraction (structurelle et comportementale) d’un groupe d’objets ayant:

Mêmes propriétés (attributs)

Même comportements (opérations)

Sémantique commune (domaine de définition ou type)

Description indépendante de la solution technique – Logique!

Un objet = instance d’une classe.

Une classe = abstraction d’un ensemble d’objets.

<!-- Slide number: 6 -->

Classe (2/4)

![](Picture1.jpg)

![](Picture2.jpg)

<!-- Slide number: 7 -->

Classe (3/4)

Attribut

Propriété élémentaire d’une classe

Caractérisé par une visibilité, nom_attribut : type [= valeur_initiale {propriétés}]

Possibilité de valeurs multiples, indiquée après le nom de l’attribut (multiplicité) visib att min, max : type

attribut calculé à partir d’autres attributs décrit : /nom

![](Picture2.jpg)

Publicité

![](Picture3.jpg)

<!-- Slide number: 8 -->

Classe (4/4)

Opération

Fonction applicable aux objets d’une classe

Description du comportement d’un objet (service de classe)

Méthode = implémentation d’une opération

Visibilité Nom_operation (paramètres) [:[type résultat] {propriétés}]

![](Picture2.jpg)

<!-- Slide number: 9 -->

Lien et Association

Lien

Connexion physique ou conceptuelle entre instances de classes (objets)

Instance d’une association

Association

Relation structurelle

Groupe de liens ayant une même structure et une même sémantique

Relation sémantique et durable entre deux classes

Identifiée par un nom

<!-- Slide number: 10 -->

Lien et Association (exemple)

Une personne possède une voiture

Recommandation

Utiliser un verbe à l’actif ou au passif selon le sens de lecture de l’association

Nom de l’association en italique, au milieu de la ligne

Possède

Personne

Voiture

<!-- Slide number: 11 -->

Association (Multiplicité)

Définition du nombre minimum et maximum des objets d’une classe pouvant être liés à un objet de l’autre classe

Traduction d’une règle de gestion

![](Picture2.jpg)

<!-- Slide number: 12 -->

Association (Multiplicité)

Cas possibles

![](Picture2.jpg)

<!-- Slide number: 13 -->

Association (Navigabilité)

Sens de lecture de l’association

Représentation de la nature de l’association : unidirectionnelle ou bidirectionnelle

Matérialisée par une ou deux extrémités fléchées

Non navigabilité représentée par un « X »

![](Picture2.jpg)

<!-- Slide number: 14 -->

Association (Multiplicité, Navigabilité)

Exemple : Une personne peut conduire plusieurs voitures. Une voiture peut être conduite par plusieurs personnes.

![](Picture3.jpg)

<!-- Slide number: 15 -->

Association (Contrainte)

Règle de gestion attachée à un élément du modèle

Publicité

Définition de la sémantique d’une association

Exprimée en langage naturel ou formel (e.g. OCL)

Ordre de tri

Non ordonnés (valeur par défaut)

Ordonnés (tri sur une valeur interne)

Propriétés de mise à jour de liens

{interdit} : interdit l’ajout, la suppression ou la mise à jour des liens

{ajout seul} : n’autorise que l’ajout de liens

<!-- Slide number: 16 -->

Association (Contrainte)

Sur une association

Contraintes d’inclusion

Contraintes d’exclusion

![](Picture2.jpg)

![](Picture3.jpg)

![](Picture4.jpg)

<!-- Slide number: 17 -->

Association n-aire/Classe-association

Classe-association

Classe particulière

Encapsulation des informations (attributs, opérations) des associations dans une classe-association

Relation n-aire

Représentée par un losange

Généralement porteuse de données

<!-- Slide number: 18 -->

Association n-aire/Classe-association

Exemple : Pour une commande et un produit donné, on peut trouver une date pour laquelle le produit n’a pas été commandé, le produit peut également avoir été commandé pour plusieurs dates

![](Picture2.jpg)

<!-- Slide number: 19 -->

Association (Agrégation et composition)

Pas besoins de les nommer (i.e. contient ou être composé de)

Agrégation

Association permettant de représenter un lien de type « ensemble » comprenant des « éléments »

Relation de contenance

Si un thème disparait, les livres continuent à avoir une existence propre

![](Picture2.jpg)

<!-- Slide number: 20 -->

Association (Agrégation et composition)

Composition

Relation d’agrégation particulière ayant une contrainte de durée de vie entre la classe «composant» et la ou les classes «composé»

Destruction du « composant » destruction des « composés »

Si un livre est détruit, ses chapitres le sont aussi

![](Picture2.jpg)

<!-- Slide number: 21 -->

Association (Association qualifiée)

Définition de la sémantique de l’association

But :

Transformation d’une association indéterminée ou infinie en une multiplicité finie

Limitation de l’impact de l’association sur les classes associées

Qualification des liens entre les instances de manière restrictive

Seules concernées par l’association, les instances possédant l’attribut indiqué dans la qualification

Publicité

<!-- Slide number: 22 -->

Association (Association qualifiée)

Transformation d’une association indéterminée ou infinie en une multiplicité finie

Exemple : Chaque vol est identifié d’une façon unique par un numéro propre à chaque compagnie

![](Picture2.jpg)

![](Picture3.jpg)

<!-- Slide number: 23 -->

Association (Association qualifiée)

Limitation de l’impact de l’association sur les classes associées

Exemple : L’association entre le client et la banque se limite à la possession de plusieurs comptes, les autres activités de la banque ne concernent pas le client. Pour préciser cette association on ajoute une classe qualifiante « compte » à la classe banque

![](Picture2.jpg)

![](Picture3.jpg)

<!-- Slide number: 24 -->

Association (Dépendance)

Représentation de l’existence d’un lien sémantique

Une classe B est en dépendance de la classe A si des éléments de la classe A sont nécessaires pour construire la classe B

![](Picture2.jpg)

<!-- Slide number: 25 -->

Association (Généralisation et spécialisation)

Relation entre une classe (plus générale) et plusieurs autres classes (plus spécialisée)

But :

Partage d’un sous-ensemble commun d’attributs et/ou d’opérations

Définition de nouvelles fonctionnalités ou propriétés

<!-- Slide number: 26 -->

Association (Généralisation et spécialisation)

Un article est défini par un titre et un prix. Un article peut être un livre ou un disque. Un livre a un ISBN et une langue et un disque a une durée de vie.

![](Picture2.jpg)

Super-classe

Spécialisation

Généralisation

Sous-classe

<!-- Slide number: 27 -->

Association (Généralisation et spécialisation)

4 contraintes sur la relation généralisation / spécialisation

« Complete » ou « incomplete »

« Disjoint » ou « overlapping »

<!-- Slide number: 28 -->

Association (Généralisation et spécialisation)

![](Picture2.jpg)

Exemple : Un article est soit un livre soit un disque mais jamais les deux

Exemple : Un billet peut être à la fois un billet simple et un billet TGV

![](Picture3.jpg)

![](Picture2.jpg)

![](Picture4.jpg)

<!-- Slide number: 29 -->

Association (Généralisation et spécialisation)

![](Picture2.jpg)

Exemple : Une personne peut être un homme ou une femme

Exemple : Un article peut être entre autres, un livre ou un disque

![](Picture3.jpg)

![](Picture5.jpg)

Publicité

![](Picture6.jpg)

<!-- Slide number: 30 -->

Association (Généralisation et spécialisation)

![](Picture2.jpg)

<!-- Slide number: 31 -->

Association (Héritage multiple)

héritage une même classe spécialisée de plusieurs super-classes distinctes

Exemple : Une instance de « moniteur » hérite à la fois des éléments (attributs et opérations) de l’instance « Etudiant » et de l’instance « Enseignant »

![](Picture2.jpg)

<!-- Slide number: 32 -->

Classe abstraite

Pas d’instance directe mais les classes descendantes ont des instances

Présence d’au moins une méthode abstraite avec sa seul signature mais pas de code

Représentée par le stéréotype « abstract », ou graphiquement par la mise en italique du nom de la classe

E.g. Super-classe = classe abstraite

![](Picture2.jpg)

<!-- Slide number: 33 -->

Classe interface

Description de la vue externe d’une classe

Classe totalement abstraite réalisée par une autre classe

Identifiée par un nom

Comportant la liste des opérations accessibles par les autres classes

Représentée par le stéréotype « interface »

Implémentation réalisée par une ou plusieurs classes concrètes

Relation entre ces classes = relation de réalisation

<!-- Slide number: 34 -->

Classe interface (Représentation)

![](Picture2.jpg)

![](Picture3.jpg)

ou

<!-- Slide number: 35 -->

Classe interface (Utilisation)

Possibilité de dépendance entre une classe interface et une classe concrète par l’utilisation de la classe interface au sein de la classe concrète

![](Picture2.jpg)

![](Picture3.jpg)

« use »

« use »

<!-- Slide number: 36 -->

Classe interface

![](Picture3.jpg)

<!-- Slide number: 37 -->

Règles de bonne pratique

Donner un nom significatif au diagramme pour indiquer son objectif

Ne représenter que les éléments essentiels à la compréhension du système

Choisir le bon niveau d’abstraction (ni un diagramme trop détaillé ni un diagramme minimaliste)

<!-- Slide number: 38 -->

A force de forger….

38

Diagramme de classes

ENIT · UML, Programming, Computer Science · notes

Voir tous les documents en génie logiciel

<!-- Slide number: 1 -->

Axe statique : Diagramme de classes

2ème année Ingénieurs en Informatique

ENIT

![C:\Users\faycal\Desktop\logoEnit.gif](Picture2.jpg)

Nejib Ben Hadj-Alouane

<!-- Slide number: 2 -->

Introduction (Diagramme de classes)

Diagramme de cas d’utilisation pour la représentation du système du point de vue des acteurs,… flux d’évènements…

Diagramme de classes pour la représentation de la structure interne

Description purement statique du système

Pivot essentiel de la modélisation avec UML

Représentation statique du système à développer

<!-- Slide number: 3 -->

Introduction (Diagramme de classes)

Centre de la modélisation UML

Clé de la génération automatique du code

Classe = données et ensemble de traitements

Fondement du diagramme de classes:

Objet

Classe comprenant les attributs et les opérations

Association entre classes

<!-- Slide number: 4 -->

Objet

Concept,… abstraction ou chose qui a un sens dans le contexte du système à modéliser.

Identité, et distingué des autres sans considérer a priori ses valeurs et ses propriétés.

Diagramme d’objets, utilisé en analyse pour la vérification de l’adéquation d’un diagramme de classes à différents cas possibles

![](Picture2.jpg)

![](Picture3.jpg)

e.g.

<!-- Slide number: 5 -->

Classe (1/4)

Abstraction (structurelle et comportementale) d’un groupe d’objets ayant:

Mêmes propriétés (attributs)

Même comportements (opérations)

Sémantique commune (domaine de définition ou type)

Description indépendante de la solution technique – Logique!

Un objet = instance d’une classe.

Une classe = abstraction d’un ensemble d’objets.

<!-- Slide number: 6 -->

Classe (2/4)

![](Picture1.jpg)

![](Picture2.jpg)

<!-- Slide number: 7 -->

Classe (3/4)

Attribut

Propriété élémentaire d’une classe

Caractérisé par une visibilité, nom_attribut : type [= valeur_initiale {propriétés}]

Possibilité de valeurs multiples, indiquée après le nom de l’attribut (multiplicité) visib att min, max : type

attribut calculé à partir d’autres attributs décrit : /nom

![](Picture2.jpg)

Publicité

![](Picture3.jpg)

<!-- Slide number: 8 -->

Classe (4/4)

Opération

Fonction applicable aux objets d’une classe

Description du comportement d’un objet (service de classe)

Méthode = implémentation d’une opération

Visibilité Nom_operation (paramètres) [:[type résultat] {propriétés}]

![](Picture2.jpg)

<!-- Slide number: 9 -->

Lien et Association

Lien

Connexion physique ou conceptuelle entre instances de classes (objets)

Instance d’une association

Association

Relation structurelle

Groupe de liens ayant une même structure et une même sémantique

Relation sémantique et durable entre deux classes

Identifiée par un nom

<!-- Slide number: 10 -->

Lien et Association (exemple)

Une personne possède une voiture

Recommandation

Utiliser un verbe à l’actif ou au passif selon le sens de lecture de l’association

Nom de l’association en italique, au milieu de la ligne

Possède

Personne

Voiture

<!-- Slide number: 11 -->

Association (Multiplicité)

Définition du nombre minimum et maximum des objets d’une classe pouvant être liés à un objet de l’autre classe

Traduction d’une règle de gestion

![](Picture2.jpg)

<!-- Slide number: 12 -->

Association (Multiplicité)

Cas possibles

![](Picture2.jpg)

<!-- Slide number: 13 -->

Association (Navigabilité)

Sens de lecture de l’association

Représentation de la nature de l’association : unidirectionnelle ou bidirectionnelle

Matérialisée par une ou deux extrémités fléchées

Non navigabilité représentée par un « X »

![](Picture2.jpg)

<!-- Slide number: 14 -->

Association (Multiplicité, Navigabilité)

Exemple : Une personne peut conduire plusieurs voitures. Une voiture peut être conduite par plusieurs personnes.

![](Picture3.jpg)

<!-- Slide number: 15 -->

Association (Contrainte)

Règle de gestion attachée à un élément du modèle

Publicité

Définition de la sémantique d’une association

Exprimée en langage naturel ou formel (e.g. OCL)

Ordre de tri

Non ordonnés (valeur par défaut)

Ordonnés (tri sur une valeur interne)

Propriétés de mise à jour de liens

{interdit} : interdit l’ajout, la suppression ou la mise à jour des liens

{ajout seul} : n’autorise que l’ajout de liens

<!-- Slide number: 16 -->

Association (Contrainte)

Sur une association

Contraintes d’inclusion

Contraintes d’exclusion

![](Picture2.jpg)

![](Picture3.jpg)

![](Picture4.jpg)

<!-- Slide number: 17 -->

Association n-aire/Classe-association

Classe-association

Classe particulière

Encapsulation des informations (attributs, opérations) des associations dans une classe-association

Relation n-aire

Représentée par un losange

Généralement porteuse de données

<!-- Slide number: 18 -->

Association n-aire/Classe-association

Exemple : Pour une commande et un produit donné, on peut trouver une date pour laquelle le produit n’a pas été commandé, le produit peut également avoir été commandé pour plusieurs dates

![](Picture2.jpg)

<!-- Slide number: 19 -->

Association (Agrégation et composition)

Pas besoins de les nommer (i.e. contient ou être composé de)

Agrégation

Association permettant de représenter un lien de type « ensemble » comprenant des « éléments »

Relation de contenance

Si un thème disparait, les livres continuent à avoir une existence propre

![](Picture2.jpg)

<!-- Slide number: 20 -->

Association (Agrégation et composition)

Composition

Relation d’agrégation particulière ayant une contrainte de durée de vie entre la classe «composant» et la ou les classes «composé»

Destruction du « composant » destruction des « composés »

Si un livre est détruit, ses chapitres le sont aussi

![](Picture2.jpg)

<!-- Slide number: 21 -->

Association (Association qualifiée)

Définition de la sémantique de l’association

But :

Transformation d’une association indéterminée ou infinie en une multiplicité finie

Limitation de l’impact de l’association sur les classes associées

Qualification des liens entre les instances de manière restrictive

Seules concernées par l’association, les instances possédant l’attribut indiqué dans la qualification

Publicité

<!-- Slide number: 22 -->

Association (Association qualifiée)

Transformation d’une association indéterminée ou infinie en une multiplicité finie

Exemple : Chaque vol est identifié d’une façon unique par un numéro propre à chaque compagnie

![](Picture2.jpg)

![](Picture3.jpg)

<!-- Slide number: 23 -->

Association (Association qualifiée)

Limitation de l’impact de l’association sur les classes associées

Exemple : L’association entre le client et la banque se limite à la possession de plusieurs comptes, les autres activités de la banque ne concernent pas le client. Pour préciser cette association on ajoute une classe qualifiante « compte » à la classe banque

![](Picture2.jpg)

![](Picture3.jpg)

<!-- Slide number: 24 -->

Association (Dépendance)

Représentation de l’existence d’un lien sémantique

Une classe B est en dépendance de la classe A si des éléments de la classe A sont nécessaires pour construire la classe B

![](Picture2.jpg)

<!-- Slide number: 25 -->

Association (Généralisation et spécialisation)

Relation entre une classe (plus générale) et plusieurs autres classes (plus spécialisée)

But :

Partage d’un sous-ensemble commun d’attributs et/ou d’opérations

Définition de nouvelles fonctionnalités ou propriétés

<!-- Slide number: 26 -->

Association (Généralisation et spécialisation)

Un article est défini par un titre et un prix. Un article peut être un livre ou un disque. Un livre a un ISBN et une langue et un disque a une durée de vie.

![](Picture2.jpg)

Super-classe

Spécialisation

Généralisation

Sous-classe

<!-- Slide number: 27 -->

Association (Généralisation et spécialisation)

4 contraintes sur la relation généralisation / spécialisation

« Complete » ou « incomplete »

« Disjoint » ou « overlapping »

<!-- Slide number: 28 -->

Association (Généralisation et spécialisation)

![](Picture2.jpg)

Exemple : Un article est soit un livre soit un disque mais jamais les deux

Exemple : Un billet peut être à la fois un billet simple et un billet TGV

![](Picture3.jpg)

![](Picture2.jpg)

![](Picture4.jpg)

<!-- Slide number: 29 -->

Association (Généralisation et spécialisation)

![](Picture2.jpg)

Exemple : Une personne peut être un homme ou une femme

Exemple : Un article peut être entre autres, un livre ou un disque

![](Picture3.jpg)

![](Picture5.jpg)

Publicité

![](Picture6.jpg)

<!-- Slide number: 30 -->

Association (Généralisation et spécialisation)

![](Picture2.jpg)

<!-- Slide number: 31 -->

Association (Héritage multiple)

héritage une même classe spécialisée de plusieurs super-classes distinctes

Exemple : Une instance de « moniteur » hérite à la fois des éléments (attributs et opérations) de l’instance « Etudiant » et de l’instance « Enseignant »

![](Picture2.jpg)

<!-- Slide number: 32 -->

Classe abstraite

Pas d’instance directe mais les classes descendantes ont des instances

Présence d’au moins une méthode abstraite avec sa seul signature mais pas de code

Représentée par le stéréotype « abstract », ou graphiquement par la mise en italique du nom de la classe

E.g. Super-classe = classe abstraite

![](Picture2.jpg)

<!-- Slide number: 33 -->

Classe interface

Description de la vue externe d’une classe

Classe totalement abstraite réalisée par une autre classe

Identifiée par un nom

Comportant la liste des opérations accessibles par les autres classes

Représentée par le stéréotype « interface »

Implémentation réalisée par une ou plusieurs classes concrètes

Relation entre ces classes = relation de réalisation

<!-- Slide number: 34 -->

Classe interface (Représentation)

![](Picture2.jpg)

![](Picture3.jpg)

ou

<!-- Slide number: 35 -->

Classe interface (Utilisation)

Possibilité de dépendance entre une classe interface et une classe concrète par l’utilisation de la classe interface au sein de la classe concrète

![](Picture2.jpg)

![](Picture3.jpg)

« use »

« use »

<!-- Slide number: 36 -->

Classe interface

![](Picture3.jpg)

<!-- Slide number: 37 -->

Règles de bonne pratique

Donner un nom significatif au diagramme pour indiquer son objectif

Ne représenter que les éléments essentiels à la compréhension du système

Choisir le bon niveau d’abstraction (ni un diagramme trop détaillé ni un diagramme minimaliste)

<!-- Slide number: 38 -->

A force de forger….

38