II.3. Diagrammes de classes



Documents pareils
Diagramme de classes

OCL - Object Constraint Language

UML (Diagramme de classes) Unified Modeling Language

UML. Diagrammes de classes (suite) Delphine Longuet.

3. UML - Unified Modeling Language Diagrammes statiques

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Université de Bangui. Modélisons en UML

UML (Paquetage) Unified Modeling Language

UML et les Bases de Données

Cours STIM P8 TD 1 Génie Logiciel

IFT2255 : Génie logiciel

Ingénierie des Modèles. Méta-modélisation

GOL502 Industries de services

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Les diagrammes de modélisation

Modèle Entité/Association

Sommaire. G. Pujolle, F. Ravat, C. Soulé-Dupuy, G. Zurfluh

Traduction des Langages : Le Compilateur Micro Java

Développement d un interpréteur OCL pour une machine virtuelle UML.

Chapitre VI- La validation de la composition.

Programmer en JAVA. par Tama

Génie Logiciel avec Ada. 4 février 2013

C est quoi le SWAT? Les équipes décrites par James Martin s appellent SWAT : Skilled With Advanced Tools.

Modélisation UML. Christine Solnon INSA de Lyon - 3IF 1/140.

Table des matières Sources

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Modélisation des données

Object Constraint Language (OCL)

Cycle de vie du logiciel. Unified Modeling Language UML. UML: définition. Développement Logiciel. Salima Hassas. Unified Modeling Language

Patrons de Conception (Design Patterns)

Chapitre I : le langage UML et le processus unifié

Description de la formation

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Information utiles. webpage : Google+ : digiusto/

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

Sommaire. Conduite de projet Méthode d analyse et de conception. Processus unifié. Objectifs d un processus de développement

Formation : Modélisation avec UML 2.0 et Mise en pratique

Modélisation Conceptuelle. Partie 2: Le modèle Entité-Association

as Architecture des Systèmes d Information

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Architecture d'entreprise : Guide Pratique de l'architecture Logique

Objets et Programmation. origine des langages orientés-objet

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Héritage presque multiple en Java (1/2)

Master MIDO 2ème année. Spécification et Conception en UML Maude Manouvrier

Conception. Génie Logiciel. Renaud Marlet. LaBRI / INRIA (d'après A.-M. Hugues) màj 17/04/2007

Conception des bases de données : Modèle Entité-Association

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Diagrammes de Package, de déploiement et de composants UML

Modélisation avec UML

Méthodes d évolution de modèle produit dans les systèmes du type PLM

Modélisation de bases de données : Le modèle relationnel

Cours de Génie Logiciel

Débuter avec EXPRESS. Alain Plantec. 1 Schema 2

MODELISATION UN ATELIER DE MODELISATION «RATIONAL ROSE»

Programmation en Java IUT GEII (MC-II1) 1

Généralités sur le Langage Java et éléments syntaxiques.

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

TP1 : Initiation à Java et Eclipse

Cours 1: Java et les objets

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Algorithmique et programmation : les bases (VBA) Corrigé

Rappel sur les bases de données

Générer du code à partir d une description de haut niveau

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

Bases de données. Chapitre 1. Introduction

II. Modèle conceptuel le modèle entité-association

Meta Object Facility. Plan

Génie Logiciel Orienté Objet UML

Ingénierie Dirigée par les Modèles. Editeurs de modèles. (Eclipse Modeling Tools) Jean-Philippe Babau

Langage Java. Classe de première SI

Comparaison de trois techniques de modélisation de processus: ADONIS, OSSAD et UML

Analyse,, Conception des Systèmes Informatiques

Object Constraint Language (OCL) Une introduction

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Classeur de suivi de l auditeur. Architecture et Ingénierie des Systèmes et des Logiciels

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

Projet Active Object

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

Présentation générale de la méthode orientée objet : O.M.T. (Rumbaugh & al.)

Cours Composant 2. Qualité logicielle et spécications algébriques

INITIATION AU LANGAGE JAVA

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Java Licence Professionnelle CISII,

Design patterns. Design patterns - définition. Design patterns - avantages

Une introduction à Java

Utilisation d objets : String et ArrayList

Démarches d urbanisation : réorganiser le Système d Information en structurant ses fonctions dans des blocs fonctionnels communicants.

Les structures de données. Rajae El Ouazzani

Application web de gestion de comptes en banques

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Création d objet imbriqué sous PowerShell.

Premiers Pas en Programmation Objet : les Classes et les Objets

Plan Pédagogique du cours

Cahier Technique. «Développer une application intranet pour la gestion des stages des étudiants» Antonin AILLET. Remi DEVES

Transcription:

II.3. s de classes

II.3. s de classes 1. Introduction

Introduction Les diagrammes d'uml de structure comportemental de classes de package d objets d activités de cas d utilisation de composant de déploiement de structure composite d interactions de transition d état de séquence de communication vue d ensemble des interactions de timing 3

Introduction Les diagrammes d'uml de structure comportemental de classes de package d objets d activités de cas d utilisation de composant de déploiement de structure composite d interactions de transition d état de séquence de communication vue d ensemble des interactions de timing 4

central du modèle Montre les classes et leurs relations statiques Le plus riche en notations Les erreurs dans ce diagramme ont souvent un impact sur les autres diagrammes 5

II.3. s de classes 2. Concepts fondamentaux

Concepts fondamentaux Classe Nom Attributs Opérations Commande datederéception estprépayée lignes prix expédier() fermer() 7

Concepts fondamentaux Commentaire Commentaire Commande datederéception estprépayée lignes prix -- Commentaire commentaire expédier() fermer() 8

Concepts fondamentaux Attributs Visibilité nom:type multiplicité=valdefaut {contrainte} Visibilité : + public, - privé, # protégé Nom : eq. nom d un champ Type : eq. type d un champ Multiplicité : indique la nature du champ ([0..1] pointeur, [1] valeur, [x..*] conteneur) valdefaut : valeur par défaut Contrainte : information supplémentaire sur l attribut Exemple : -insee:string[1]="" {readonly} 9

Concepts fondamentaux Multiplicité Équivalent aux cardinalités Attention au sens de lecture! 0..x : optionnel 1 : unique et obligatoire x..* : multiple A..B : borné 10

Concepts de base Opérations Visibilité nom(liste param):type_retour{propriété} Liste param : chaque paramètre peut être détaillé comme un attribut On ne modélise que les opérations qui correspondent à des responsabilités particulières de la classe (pas d accesseurs, etc.) Exemple : +fact(n:int):int {récursive} 11

Concepts de base Représentation détaillée (conception) Commande -datederéception[0..1] : Date #estprépayée[1] : Boolean = false -lignes[1..*] : LigneCommande -prix[1] +expédier() : Boolean +fermer() 12

Concepts de base Associations unidirectionnelles Permet de représenter les attributs dont le type est une classe du problème Supporte les mêmes informations qu un attribut (cardinalités, visibilité, contraintes, etc.) rôle Commande -datederéception[0..1] : Date #estprépayée[1] : Boolean = false -prix[1] +expédier() : Boolean +fermer() -lignes 1..* LigneCommande -quantité : Integer -prixunitaire : Double +calculertotal() : Double 13

Concepts de base Associations bidirectionnelles Lien structurel fort Nécessite la synchronisation des deux classes Personne -nom : String -propriétaire 1 -voitures * Voiture -modèle : String Ou bien Personne -nom : String -propriétaire 1 -voitures * Voiture -modèle : String 14

Concepts de base Associations bidirectionnelles Possibilité de ne nommer que l association Utilisation d un verbe accompagné d un sens de lecture Personne -nom : String possède4 1 * Voiture -modèle : String 15

Concepts de base Composition forte : composition Exprime «une partie de» Une classe composant peut faire l objet de plusieurs compositions Un objet de la classe composant ne peut appartenir qu à un seul objet d un composé Cycles interdits! Durées de vie identiques (destructions synchronisées) La «navigabilité» peut être bidirectionnelle ou non Polygone -sommets 1 Point 3..* -centre Cercle 16

Concepts de base Composition faible : agrégation Sémantique identique à la composition Le partage des objets composants est autorisé Durées de vie différentes Entreprise 1 -salariés * Personne * -adhérents * Association 17

Concepts de base Composition vs. agrégation : exemples Cheval? Foie 18

Concepts de base Composition vs. agrégation : exemples Cheval 1 1 Foie 19

Concepts de base Composition vs. agrégation : exemples Voiture??? Moteur Roues Carrosserie 20

Concepts de base Composition vs. agrégation : exemples 1 Voiture 1 1 1 4 Moteur Roues Carrosserie 1 21

Concepts de base Composition vs. agrégation : exemples Cheval? Selle??? Sangle Tapis Etrier 22

Concepts de base Composition vs. agrégation : exemples Cheval * appartient 1 Selle appartient * * appartient * appartient 1 1 2 Sangle Tapis Etrier 23

Concepts de base Agrégation Identification d une composition (ou agrégation) Assemblage-parties Collection-membres Contenant-contenu Modéliser autant que possible les compositions/agrégations Augmente la lisibilité du modèle Simplifie l implémentation 24

Concepts de base Généralisation = héritage Forme Polygone Cercle 25

Concepts de base Attention à ne pas confondre héritage et instanciation Voiture -modèle -cylindrée -couleur Ferrari NON! 26

Concepts de base Exercice distributeur de boisson Servir boisson Consommateur 1. Recenser les classes 2. Identifier les relations 3. Créer un diagramme de classes simplifié 4. Créer un diagramme de classes détaillé 27

II.3. s de classes 2. Concepts avancés

Concepts avancés Attributs et opérations statiques Correspondent aux membres static en C++ ou Java Indiqué par un souligné Réservation -identifiant : Integer -date : Date -compteur : Integer +getprochainidentifiant() : Integer 29

Concepts avancés Classes utilitaires Structuration des variables (et constantes) globales Représentées par des classes stéréotypées Les données membres sont statiques «utility» VariablesGlobales -var1 -var2 30

Concepts avancés Opérations et classes abstraites Notés en italique Les classes abstraites ont les mêmes relations que les autres classes Liste bool arrivé = begin(); int t = 0; while (next()) t++; return t; +begin() : Boolean +next() : Boolean +getvalue() : Object +isempty() : Boolean +size() : Integer +get(in i : Integer) : Object 31

Concepts avancés Concrétisation = héritage Liste +begin() : Boolean +next() : Boolean +getvalue() : Object +isempty() : Boolean +size() : Integer +get(in i : Integer) : Object Element -valeur : Object -suivant : Element 1 -eltdébut ListeChainee +begin() : Boolean +next() : Boolean +getvalue() : Object +isempty() : Boolean 32

Concepts avancés Interfaces «Sorte» de classe définie exclusivement par des fonctions abstraites Sert à l implémentation d autres classes et non à leur structure Deux notations : «interface» Conteneur +get(in i : Integer) : Object +size() : Integer Conteneur 33

Concepts avancés Interfaces Une interface ne peut avoir d association Elle peut avoir: 1 - Des implémentations «interface» Conteneur +get(in i : Integer) : Object +size() : Integer Liste +begin() : Boolean +next() : Boolean +getvalue() : Object +isempty() : Boolean +size() : Integer +get(in i : Integer) : Object Liste Conteneur +begin() : Boolean +next() : Boolean +getvalue() : Object +isempty() : Boolean +size() : Integer +get(in i : Integer) : Object 34

Concepts avancés 2 Des dépendances Commande -lignes[*] «interface» Conteneur +get(in i : Integer) : Object +size() : Integer Commande -lignes[*] Conteneur Commande -lignes[*] Conteneur Liste Liste Liste +begin() : Boolean +next() : Boolean +getvalue() : Object +isempty() : Boolean +size() : Integer +get(in i : Integer) : Object +begin() : Boolean +next() : Boolean +getvalue() : Object +isempty() : Boolean +size() : Integer +get(in i : Integer) : Object +begin() : Boolean +next() : Boolean +getvalue() : Object +isempty() : Boolean +size() : Integer +get(in i : Integer) : Object 35

Concepts avancés Association qualifiée Assimilable à une table associative Le qualificateur (ex: produit) permet d identifier 0 ou une ligne de la commande Pour manipuler (ajouter, consulter, etc.) une ligne d une commande, il faut obligatoirement un produit Commande -datederéception[0..1] : Date #estprépayée[1] : Boolean = false -prix[1] +expédier() : Boolean +fermer() produit -lignes 0..1 LigneCommande -quantité : Integer -prixunitaire : Double +calculertotal() : Double 36

Concepts avancés Classes-associations Permet d ajouter des attributs, des opérations, etc. sur des liens Personne -numen -nom -adresse * * Emploi -numéro -composante -quotité Emploi occupé -date_début -date_fin 37

Concepts avancés Implémentation équivalente à : Personne -numen -nom -adresse 1 * Emploi occupé -date_début -date_fin * 1 Emploi -numéro -composante -quotité 38

Concepts avancés Association n-aire Créneau -date -heure -durée Salle Filière Enseignant 39

Concepts avancés Contraintes Information supplémentaire sur un élément Placée entre accolade Peut être un texte en langage naturel Ou bien OCL (Object Constraint Language) 1 - Repose sur la logique propositionnelle 2 - Évite les ambiguïtés du langage naturel 3 - Il existe des outils pour OCL 4 - Permet de décrire les pré et post-conditions, ainsi que les invariants sur un élément du modèle (attribut, rôle, opération, etc.) 40

Concepts avancés Exemples : soit le diagramme de classes 1 -directeur Hôtel -adresse : String -leschambres * Chambre -étage : Integer -numéro : Integer -nblits : Integer -lachambre 1 * -lesclients Personne -nom : String -prénom : String -age : Integer -lesrésidents * 41

Concepts avancés On peut exprimer les contraintes : // Jamais de treizième étage context Chambre inv: self.étage <> 13 // Pas plus de résidents que de lits sauf s il y a un enfant de moins de 4 ans context Chambre inv: lesrésidents->size <= nblits or (lesrésidents>size = nblits + 1 and lesrésidents->exists(p : Personne p.âge < 4)) 42

Concepts avancés Contraintes entre associations -affectation -lesenseignants 1 Enseigne4 * Université {ou} Personne étudie4 1 * -lesetudiants 43

Concepts avancés Contraintes de l héritage {incomplete} : les classes dérivées ne couvrent pas toute la classe de base {complete} : les classes dérivées couvrent toutes les possibilités de la classe de base {disjoint} : les classes dérivées sont disjointes donc pas d héritage multiple {overlapping} : l héritage multiple est possible 44

Concepts avancés Exemples Equidé Cheval Cheval {incomplete} {overlapping } Ane Mâle {complete} {disjoint} Femelle 45

Concepts avancés Dépendances Relation sémantique mais non structurelle La modification de la cible peut avoir des répercussions sur la source À éviter en analyse car faible intérêt sémantique Source Cible 46

Concepts avancés Plusieurs stéréotypes : «call» : la source appelle une opération de la cible «create» : la source crée une instance de la cible «permit» : le source est amie de la cible «use» : la source a besoin de la cible pour être implémentée 47

Concepts avancés Classe paramétrable Le type d un champ est un paramètre de la classe Doit être liée (bind) avec une classe qui instancie le paramètre ListePersonne -élément : Personne «bind»(personne) T Liste -élément : T 48

Concepts avancés Attributs dérivés Attribut dont la valeur est calculée à partir d autres attributs Souvent associé à une contrainte qui donne la règle de calcul Produit -prixht -TVA -/prixttc {prixttc = prixht*tva} 49

Concepts avancés Quelques anomalies Classes sans relations Classes sans attribut Classes sans opérations Relation 1-1 Pas forcément à supprimer, mais toujours se poser la question 50

Concepts avancés La pratique Ne pas utiliser systématiquement toutes les notations 1 - En phase d analyse : concepts fondamentaux 2 - En phase de conception/implémentation : concepts avancés Bien utiliser UML ne veut pas dire bien modéliser! 1 - La théorie ne remplace pas l expérience 2 - Les design pattern peuvent améliorer le modèle de conception 51

Concepts avancés Exemple : 1 Un contrat d édition est un accord entre un auteur (éventuellement collectif) et un éditeur. 2 Les conditions générales d un contrat sont stipulées dans un contrat type. 3 Les clauses particulières sont ajoutées au contrat. 4 Le contrat ne concerne qu un ouvrage, qui ne peut être édité chez un autre éditeur. 52

Concepts avancés Auteur Editeur 0..* 0..* {disjoint, complete} * * 3 /édite AuteurIndividuel 2..* regroupe 0..* AuteurCollectif ContratEdition porte sur 4 Ouvrage {ordered } * 1 3 est régit par ContratType 1 53

II.4. s d'objets

Introduction Les diagrammes d'uml de structure comportemental de classes de package d objets d activités de cas d utilisation de composant de déploiement de structure composite d interactions de transition d état de séquence de communication vue d ensemble des interactions de timing 55

s d'objets Caractéristiques Montre les objets et leurs relations L état des objets est indiqué Utile lorsque les structures de classe sont complexes 56

s d'objets Exemple Grace : Personne -enfants 0..* nom = Kelly prénom = Grace mère conjoint 1 -père Personne -nom -prénom -conjoint 0..* -mère 1 Steph : Personne nom = de Monaco prénom = Stéphanie Albert : Personne nom = de Monaco prénom = Albert père Régnier : Personne nom = de Monaco prénom = régnier conjoint 57

II.5. s de paquets

Introduction Les diagrammes d'uml de structure comportemental de classes de package d objets d activités de cas d utilisation de composant de déploiement de structure composite d interactions de transition d état de séquence de communication vue d ensemble des interactions de timing 59

s de paquets Caractéristiques Paquet = regroupement d éléments 1 Paquet de classes, de cas d utilisation, de paquets, etc. 2 Parfois appelé paquetage, ou package 3 Renforce la modularité et la cohérence du modèle global 4 Un élément ne peut appartenir qu à un seul paquet Gestion des clients 60

s de paquets Dépendances entre les paquets Gestion des comptes Gestion des clients 1 Un paquet A dépend d un paquet B si au moins un élément de A dépend d un élément de B 2 La modification du paquet utilisé peut entraîner la modification du paquet utilisateur mises à jour synchronisées 61

s de paquets Intérêts: 1 Conserver une vue synthétique Plus d une douzaine d éléments dans un diagramme décomposition en paquets = découpage ascendant 2 Organiser l analyse d un problème Montrer les parties (paquets) cohérentes Chaque partie est ensuite raffinée = découpage descendant 62

s de paquets Remarques Isoler des parties réutilisables Contribue à la vue architecturale Les paquets représentent les couches logicielles Ont parfois une traduction directe dans les LOO (package en JAVA, espace de noms en C++, etc.) 63

s de paquets Remarques Décomposer n est pas simple 1 Conserver la logique métier 2 Les structures d un modèle guident la décomposition. Par exemple: Un arbre d héritage Une arborescence de composition de classes 64

s de paquets Remarques Éviter les dépendances circulaires couplage fort entre les paquets Gestion des comptes Gestion des clients Gestion des produits 65