Sciences-U Lyon
Diagrammes UML
- Les Diagrammes UML
- Niveaux de modèles
- Eléments communs aux diagrammes
- Diagrammes de cas d'utilisation
- Diagrammes de Classes
- Diagrammes d'Objets
- Diagrammes de Séquence
? Les Niveaux de modèles
- Les Diagrammes UML
- Niveaux de modèles
- Eléments communs aux diagrammes
- Diagrammes de cas d'utilisation
- Diagrammes de Classes
- Diagrammes d'Objets
- Diagrammes de Séquence
- Eléments communs aux diagrammes
- Note
- Dépendance
- Modification dans la cible implique modification dans la source
- Eléments communs aux diagrammes
- Héritage ? Packages
- Eléments communs aux diagrammes
- Stéreéotypes
- Classe prédéfine
- <>
- Les Diagrammes UML
- Niveaux de modèles
- Elements communs aux diagrammes
- Diagrammes de cas d'utilisation
- Diagrammes de Classes
- Diagrammes d'Objets
- Diagrammes de Séquence
- Les Diagrammes de cas d'utilisation
- Objectif : détermination des besoins
- Fonctionnalités du système
- Acteurs
- Cas d'utilisation
- Relations entre les 2
- association
- Système
- Les Diagrammes de cas d'utilisation
- Formalisation du cahier des charges
- Evolutions du système
- Centrés sur l'utilisateur
- Expression simple
- Permet le dialogue entre le client et le développeur
- Point de départ du développement
? Les Diagrammes de cas d'utilisation
- Les acteurs
- 1 acteur = plusieurs personnages
- Ex : acheteurs
- 1 personnage = plusieurs acteurs
- Ex : boulanger, vendeur
- Toute personne qui interagit avec le système
- Les acteurs
- Acteurs principaux
- Ex : client, dans le cas d'un distributeur de billets
- Acteurs secondaires
- Maintenance, tâches administratives
- Matériel externe
- Indispensable au domaine. Ex : imprimante pour le reçu
- Autres systèmes
- Ex : système bancaire
- Les cas d'utilisation
- Stéréotype
- <>
- Nom
- Eleve
- Propriété
- Cours = “Genie Logiciel”
?
?
- Les cas d'utilisation
- Représentent
- Les tâches de l'acteur
- Informations créées ou utilisées par l'acteur
- Changements externes nécessaires au système
- Doivent être simples
- Possibilité de les fractionner
- A partir de scénarii
- Les cas d'utilisation
- Analyse
- Pas conception ? 'Build the right system'
- Pas 'Build the system right'
- Passage à une vue Objet indispensable
- Pour la réalisation du système
- Les Diagrammes UML
- Niveaux de modèles
- Eléments communs aux diagrammes
- Diagrammes de cas d'utilisation
- Diagrammes de Classes
- Diagrammes d'Objets
- Diagrammes de Séquence
- UML : Diagrammes de Classes
- Présentation
- Classes
- Associations
- Autres types de classes
- Exemples
- Présentation
- Structure statique des systèmes ? Contient
- Classes
- Relations entre ces classes
- Interfaces
- Packages
- Présentation
- Classe
- Instanciée par des objets
- Unique dans un package
- Syntaxe : 'nomPackage :: nomClasse'
- Stéréotype, propriétés
- Associations
- Instanciées par des liens
- Présentation
- Interface
- 'Vue totale ou partielle sur un ensemble de services'
- Descripteur des opérations
- Sans code
- Pas d'attribut
- Pas d'association
- Présentation
- Package
- UML : Diagrammes de Classes
- Présentation ?Classes
- Associations
- Autres types de classes
- Exemples
- UML : Diagrammes de Classes : Classes
- Attributs et Opérations?Classes paramètrables
- Stéréotypes
- Mots Clés
- Classes : Attributs et Opérations
- Les compartiments
- Nom de la classe
- Attributs
- Opérations
- Classes : Attributs et Opérations
- Attributs
- Ce qu'est la classe
- Nom : type = valeur initiale
- Test : boolean = false ? Peut être constant
- 'const'
- Représentation par la composition
- Voir Associations
- Représentation implicite
- Classes : Attributs et Opérations
- Attributs
- Attributs dérivés
- '/surface'
- Classes : Attributs et Opérations
- Opérations
- Ce que fait la classe
- Nom (nom de paramètre : type de paramètre) : type de Retour
- multiplier(a : int, b : int) : int
- Propriétés
- Direction des arguments des opérations
- Types d'opération
- Classes : Attributs et Opérations
- Opérations
- Propriétés
- Directions d'un argument d'une opération
- In – argument en entrée, non modifié par l'opération
- Out – argument en sortie, récupération d'information
- Inout – argument passé à l'opération et modifiable
- Classes : Attributs et Opérations
- Opérations
- Propriétés
- Des Opérations
- {request} – pas de modification de l'état de l'instance appelée
- {abstract} – opération non implémentée
- {final} – opération qui ne peut pas être redéfinie dans une sousclasse
- {isRoot} – racine, opération définie pour la première fois dans la hiérarchie des classes
- Classes : Attributs et Opérations
- Visibilité
- Pour attributs et opérations ? + public
- Accessible par tous les objets (dans et hors de la classe)
- # protected
- Accessible seulement par la classe et les sous-classes ? - private
- Accessible seulement par les objets de la classe
- Classes : Attributs et Opérations
- Compartiments supplémentaires
- En plus du Nom de Classe, Attributs, Opérations
- Responsabilité de la classe ? Evènements générés
- Représenté aussi par une relation de dépendance stéréotypée <>
- Exceptions acceptées
- UML : Diagrammes de Classes : Classes
- Attributs et Opérations?Classes paramètrables
- Stéréotypes
- Mots Clés
- Classes : Classes paramètrables
- = classes templates
- Patron de classe : attributs, valeurs par défaut, opérations
- Langages Eiffel, C++
- Utilisé en conception détaillée
- UML : Diagrammes de Classes : Classes
- Attributs et Opérations?Classes paramètrables
- Stéréotypes
- Mots Clés
- Classes : Stéréotypes (1)
- Définition
- Extension du langage UML ? Précision sur le type
- De Classe
- D'Association
'Création d'un nouvel élément de modélisation par extension de la sémantique d'un élément du méta-modèle'
- Classes : Stéréotypes (2) ? Différents stéréotypes
- <>
- Dans un langage de programmatin donné ? <<énumération>>
- Domaine de valeur d'un type ? <<méta-classe>>
- Classe d'une classe ? <>
- Représente un type
- Ses instances sont des sous-types de ce type
- Classes : Stéréotypes (3) ? Différents stéréotypes
- <>
- Flux de contrôle lourd
- <>
- Flux de contrôle léger
- <>
- Domaine d'objets
- Opération sur ce domaine ? <>
- Regroupement d'opérations (Ex : Math)
- Pas instanciables
- UML : Diagrammes de Classes : Classes
- Attributs et Opérations?Classes paramètrables
- Stéréotypes
- Mots Clés
- Classes : Mots clés (1) ? Différents des stéréotypes
- Propre à un métamodèle donné
- Pas partie intégrante des spécifications UML
- Classes : Mots clés (2)
- Exemples fréquents
- <>
- Ensemble de rôles joués par un acteur dans le système ? <>
- Descripteurs des opérations, sans code ? <>, <>
- Communication entre les classes
- Hors appel de méthode
- UML : Diagrammes de Classes
- Présentation
- Classes
- Associations
- Autres types de classes
- Exemples
- Associations
- Relation structurelle entre deux classes d'objets ? Durée de vie non négligeable
- Par rapport aux objets qui instancient les classes concernées
- Relie deux classificateurs
- Classes, interfaces
- Parfois plus : association représentée par une classe
- Associations
- Représentation
- Signification
- On accède à la classe 1 depuis la classe 2
- On accède à la classe 2 depuis la classe 1
- Associations
- Nommage
- Souvent forme verbale
- Active : travaille pour (Personnesociete)
- Passive : est employé par (Personnesociete) ? Lecture
- Sens précisé par < ou >
- De gauche à droite par défaut
- Associations
- Rôles
- Extrémité d'une association
- Indication des rôles relatifs des deux classes reliées par association
- Pseudo-attribut de la classe source
- Ex : Employeur est un pseudo attribut de la classe Personne ? Indication de visibilité
- Public par défaut
- Privé (-) ou protégé (#)
- Associations ? Associations multiples
- Concepts distncts dans la classe source
- Ici : dans Avion, attributs Pilote et Passagers
- Pas les mêmes personnes
- Sinon, erreur
- Associations
- Associations multiples
Public class Avion{ Personne pilote; Personne passager1; Personne passager2; Personne getPilote(){ return pilote; } List getPassagers(){ return (passager1, passager2) } } |
- Associations
- Types
- Généralisation
- Agrégation
- Composition
- Associations
- Généralisation
- Une classe générique (super classe)
- Une classe spécialisée (classe fille)
- Associations ? Généralisation
- Exemple
public class SuperClasse{
}
public class Classe extends SupperClasse{
}
- Associations ? Généralisation
- Classes abstraites
- Associations
- Agrégation
- Les Elements existent indépendamment de l'ensemble
- Associations
- Agrégation
- Modélisation d'une contrainte d'intégrité
- Propagation de valeur d'une classe vers une autre
- Propagation d'action d'une classe vers une autre ? Exemple
- personne propriétaire d'un immeuble
- Proprétaire multiple: co-propriétaires
? Associations
public class Immeuble {
/**
* @poseidon-type Personne
*/ public .Collection Proprietaire = new .TreeSet();
}
public class Personne {
/**
* @poseidon-type Immeuble
*/
public .Collection immeuble = new .TreeSet();
}
- Associations
- Composition
- Les élements sont spécifiques à l'ensemble : ne peuvent pas être partagés (ex : roue de vélo)
- L'ensemble n'existe que par la présence des éléments
- Et disparait avec le dernier élément
- Associations
- Composition
- Cas particulier d'agrégation
- Couplage plus fort
- Durée de vie identique pour le composant et le composite
- Associations
- Composition
public class Velo {
/**
* @poseidon-type Roue
*/ public .Collection roue = new .TreeSet();
}
public class Roue {
/**
*
*/ public Vélo vélo;
}
- Associations ? Classe d'association
- L'association peut être manipulée
- Associations
- Arité
- Associations binaires - classiques ? Associations n-aires
- Parfois représentées par un losange
- Associations
- Multiplicité
- Contraintes liées au domaine d'application
- Valable pendant toute la vie de l'objet
- Pas d'influence sur l'ordre de création des objets (associations simples)
- Associations
- Multiplicité
- possibilités
1Un seul
0..1 Zéro ou un
N N (entier naturel)
M..N De M à N (entiers naturels)
* De zéro à plusieurs 0..* De zéro à plusieurs
1..* D'un à plusieurs
- Associations
- Contraintes : exemples
- Peuvent être également exprimer par le langage OCL
- Object Contraint Language
- Associations
- Navigabilité
- Possibilité d'accès d'une classe à l'autre
- Association orientée
- Compte est un attribut de Personne
- Associations ? Navigabilité
- Association bidirectionnelle
- Une modification dans une classe est répercutée dans la classe associée
- Associations ? Dépendances
- 'Associations légères'
- Liaison - <> - Permission - <> |
- Utilisation - <> - <> - <> |
- Abstraction - <<crée>> - <<dérive>> - <> |
- <<réalise>>
- <>
- UML : Diagrammes de Classes
- Présentation ? Classes
- Associations
- Autres types de classes
- Exemples
- Autres Classes ? Classes actives
- Réification de flots de contrôle ? = classe stéréotypée
- <> ou
- <>
- Émission et réception de signaux, d'évènements
- UML : Diagrammes de Classes
- Présentation ? Classes
- Associations
- Autres types de classes
- Exemples
- Exemples
- Interfaces
- Les Diagrammes UML
- Niveaux de modèles
- Eléments communs aux diagrammes
- Diagrammes de cas d'utilisation
- Diagrammes de Classes
- Diagrammes d'Objets
- Diagrammes de séquence
- UML : Diagrammes d'Objet
- = Diagrammes d'instances
- Objets et liens
- Structure statique
- Permet d'identifier les objets présents
- Avant de réaliser le diagramme de classe
Nom de l'objet:Classe[Etat]
- UML : Diagrammes d'Objet
- Exemple
- Les Diagrammes UML
- Niveaux de modèles
- Eléments communs aux diagrammes
- Diagrammes de cas d'utilisation
- Diagrammes de Classes
- Diagrammes d'Objets
- Diagrammes de Séquence
- Les Diagrammes de séquence
- Interactions entre objets
- Voir diagrammes de collaboration
- Représentation des interactions dans le temps ? Scénarii complexes
- Avec un nombre limité d'objets
- Les Diagrammes de séquence
- Instances
- Objet ? Ligne de vie
- Message
- Activation de l'instance émitrice
- Message
- Activation de l'instance receptrice
- Réponse
- Activation de l'instance émitrice
- Les Diagrammes de séquence
- Message de Creation
- Message de Termination
- Les Diagrammes de séquence
- Catégories de messages
- Synchrone
- Asynchrone
- Les Diagrammes de séquence
- Appel de procédure
- Plusieurs représentations
- Les Diagrammes de séquence
- Catégories d'envoi de message
- Appel d'un objet à lui-même
- Flot de contrôle à plat ? Appel de procédure
- = flot de contrôle emboité
- Retour d'appel de procédure
- Les Diagrammes de séquence
- Catégories d'envoi de message
- Appel d'un objet à lui-même
- Les Diagrammes de séquence
- Catégories d'envoi de message
- Flot de contrôle à plat
- Les Diagrammes de séquence
- Catégories d'envoi de message
- Appel de procédure
- = flot de contrôle emboité
- Les Diagrammes de séquence
- Catégories d'envoi de message
- Retour d'appel de procédure
- Fin d'activation d'objet
- != fin de vie d'objet
- Bilan
- Analyse : diagrammes de cas d'usage
- Conception : diagramme de classes
- Implémentation : classes et séquences