<!-- Slide number: 1 -->
Axe statique : Diagramme de classes
2ème année Ingénieurs en Informatique
ENIT

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


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)


<!-- 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

Publicité

<!-- 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}]

<!-- 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

<!-- Slide number: 12 -->
Association (Multiplicité)
Cas possibles

<!-- 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 »

<!-- Slide number: 14 -->
Association (Multiplicité, Navigabilité)
Exemple : Une personne peut conduire plusieurs voitures. Une voiture peut être conduite par plusieurs personnes.

<!-- 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



<!-- 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

<!-- 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

<!-- 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

<!-- 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


<!-- 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


<!-- 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

<!-- 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.

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)

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



<!-- Slide number: 29 -->
Association (Généralisation et spécialisation)

Exemple : Une personne peut être un homme ou une femme
Exemple : Un article peut être entre autres, un livre ou un disque


Publicité

<!-- Slide number: 30 -->
Association (Généralisation et spécialisation)

<!-- 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 »

<!-- 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

<!-- 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)


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


« use »
« use »
<!-- Slide number: 36 -->
Classe interface

<!-- 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