UML. Diagrammes de classes (suite) Delphine Longuet. delphine.longuet@lri.fr



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

UML (Diagramme de classes) Unified Modeling Language

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

OCL - Object Constraint Language

Diagramme de classes

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

TD/TP PAC - Programmation n 3

Object Constraint Language (OCL)

GOL502 Industries de services

UML et les Bases de Données

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

Chapitre VI- La validation de la composition.

3. UML - Unified Modeling Language Diagrammes statiques

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

Traduction des Langages : Le Compilateur Micro Java

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

Cours de Génie Logiciel

TD/TP PAC - Programmation n 3

TP1 : Initiation à Java et Eclipse

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

Programmation Orientée Objet

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

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

Initiation à JAVA et à la programmation objet.

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

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

Bases de données. Chapitre 1. Introduction

Information utiles. webpage : Google+ : digiusto/

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

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

Ingénérie logicielle dirigée par les modèles

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

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

Application web de gestion de comptes en banques

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

Table des matières Sources

Object Constraint Language (OCL) Une introduction

Programmer en JAVA. par Tama

INITIATION AU LANGAGE JAVA

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

Université de Bangui. Modélisons en UML

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

Classes et Objets en Ocaml.

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

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

Génie Logiciel Orienté Objet UML

Premiers Pas en Programmation Objet : les Classes et les Objets

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

Cours 1: Java et les objets

Division Moyennes et Grande Entreprises Les éditions de Sage trésorerie. Sommaire

Systèmes d information et bases de données (niveau 1)

Pascal Brunot Hadrien Cambazard UML FOR BUSINESS INTELLIGENCE PROJECT

Modèle Entité/Association

Modèle conceptuel : diagramme entité-association

IFT2255 : Génie logiciel

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

2 e édition JAVA 5 et 6. Jérôme Bougeault. TSoft et Groupe Eyrolles, 2003, 2008, ISBN :

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

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Diplôme Européen de III ème cycle en Systèmes d'information!"" #!$%& ' (

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

Programmation en Java IUT GEII (MC-II1) 1

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

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

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

Découverte du logiciel ordinateur TI-n spire / TI-n spire CAS

Diagramme de déploiement

La C.A.O (Conception Assistée par Ordinateur). Le logiciel de C.A.O.

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

Modélisation avec UML

Initiation à la programmation orientée-objet avec le langage Java

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

Support de cours et TD Programmation Orientée Objet

UML : DIAGRAMME D ETATS

Auto-évaluation Programmation en Java

Patrons de Conception (Design Patterns)

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)

2 Grad Info Soir Langage C++ Juin Projet BANQUE

AVIS DE CHANGE N 5 DU MINISTRE DU PLAN ET DES FINANCES RELATIF AUX COMPTES DE NON-RESIDENTS. ( Publié au J.O.R.T. du 5 octobre 1982 )

UML Diagramme de communication (communication diagram) Emmanuel Pichon 2013

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

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

Recherche dans un tableau

Chap. 3: Le modèle de données entité-association (E.A.)

BASES DE DONNEES ORIENTEES OBJETS BDA10.1

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

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

Programmation Objet - Cours II

1 radian. De même, la longueur d un arc de cercle de rayon R et dont l angle au centre a pour mesure α radians est α R. R AB =R.

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Reporting Services - Administration

Les diagrammes de modélisation

COMPTES ETRANGERS EN DINARS ET COMPTES ETRANGERS EN DEVISES CONVERTIBLES. sont subordonnés à l'autorisation de la Banque Centrale de Tunisie (1).

«Cimetières de France en ligne»

Langage Java. Classe de première SI

Programmation Orientée Objet en C#

C f tracée ci- contre est la représentation graphique d une

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

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées

Transcription:

Polytech Paris-Sud Formation initiale 3 e année Spécialité Informatique Année 2014-2015 UML Diagrammes de classes (suite) Delphine Longuet delphine.longuet@lri.fr

Opérations Opérations Service qui peut être demandé à tout objet de la classe Comportement commun à tous les objets de la classe Client Compte pré naissance : Date ouvrircompte(init : float) devenirproprio(c : Compte) propriétaire 1..2 possède comptes 1..* numéro : int devise : Devise solde : float déposer(montant : float) retirer(montant : float) solde() : float D. Longuet - UML 2

Effets possibles d'une opération Opérations Renvoyer le résultat d'un calcul MonLivretA : Compte numéro = 123456 devise = EUR solde = 3509,43 déposer(montant : float) retirer(montant : float) solde() : float solde() 3509,43 D. Longuet - UML 3

Effets possibles d'une opération Opérations Renvoyer le résultat d'un calcul Modifier l'état du système - modification de la valeur des attributs MonLivretA : Compte numéro = 123456 devise = EUR solde = 3509,43 déposer(montant : float) retirer(montant : float) solde() : float déposer(150,0) MonLivretA : Compte numéro = 123456 devise = EUR solde = 3659,43 déposer(montant : float) retirer(montant : float) solde() : float D. Longuet - UML 4

Effets possibles d'une opération Opérations Renvoyer le résultat d'un calcul Modifier l'état du système - modification de la valeur des attributs - ajout/suppressions de liens entre objets MarieDupont : Personne CompteJoint : Compte MarieDupont : Personne CompteJoint : Compte JeanDupont : Personne nom = "Dupont" devenirproprio(comptejoint) JeanDupont : Personne nom = "Dupont" prénom = "Jean" prénom = "Jean" naissance = 20/08/1990 naissance = 20/08/1990 ouvrircompte(init : float) ouvrircompte(init : float) devenirproprio(c : Compte) devenirproprio(c : Compte) D. Longuet - UML 5

Effets possibles d'une opération Opérations Renvoyer le résultat d'un calcul Modifier l'état du système - modification de la valeur des attributs - ajout/suppressions de liens entre objets - création/destruction d'objets AnneBérou : Personne nom = "Bérou" prénom = "Anne" naissance = 14/12/1965 ouvrircompte(init : float) devenirproprio(c : Compte) ouvrircompte(1000,0) AnneBérou : Personne nom = "Bérou" prénom = "Anne" naissance = 14/12/1965 ouvrircompte(init : float) devenirproprio(c : Compte) LivretA : Compte numéro = 123456 devise = EUR solde = 1000,0 déposer(montant : float) retirer(montant : float) solde() : float D. Longuet - UML 6

Héritage d'opération Opération commune aux sous-classes : Définition dans la super-classe déposer(montant : float) {solde := solde+montant} Compte numéro : int devise : Devise solde : float déposer(montant : float) retirer(montant : float) solde() : float opération commune à tous les comptes CompteCourant découvertautorisé : float fraisdécouvert : float CompteÉpargne plafond : float taux : float calculerintérêts() : float D. Longuet - UML 8

Redéfinition d'opération Opération commune aux sous-classes : Définition dans la super-classe Possibilité de redéfinition locale de l'opération dans une sous-classe pour prendre en compte un cas particulier déposer(montant : float) {solde := solde+montant} Compte numéro : int devise : Devise solde : float déposer(montant : float) retirer(montant : float) solde() : float opération commune à tous les comptes déposer(montant : float) {if(solde+montant <= plafond) then solde := solde+montant} CompteCourant découvertautorisé : float fraisdécouvert : float redéfinition CompteÉpargne plafond : float taux : float calculerintérêts() : float déposer(montant : float) D. Longuet - UML 9

Classe abstraite Classe sans instance car certaines opérations non définies Opération non définie en italique Nom de la classe en italique (ou stéréotype «abstract») Exemple : On ne peut pas calculer la surface d'une forme sans savoir de quelle forme il s'agit opération non définie (abstraite) Forme surface() : float D. Longuet - UML 10

Polymorphisme Contexte : Définition d'une opération abstraite dans les classes héritant d'une classe abstraite Opération polymorphe : Opération définie dans différentes sous-classes mais opération spécifique à la sous-classe Forme surface = longueur*largeur surface() : float surface = pi*rayon*rayon Rectangle longueur : float largeur : float opération polymorphe Cercle rayon : float surface() : float surface() : float D. Longuet - UML 11

Interface Liste d'opérations constituant un contrat à respecter par les classes réalisant l'interface Pas une classe, ne peut pas servir à créer des objets Toutes les opérations sont abstraites Point abscisse : float ordonnée : float égal(object o) : boolean supérieur(object o) : boolean classes réalisant l'interface «interface» Comparable Date égal(object o) : boolean jour : int supérieur(object o) : boolean mois : int année : int égal(object o) : boolean supérieur(object o) : boolean diff(date d) : int String content : string égal(object o) : boolean supérieur(object o) : boolean print() D. Longuet - UML 12

Attributs et opérations de classes Notations avancées Attribut de classe : valeur commune à toutes les instances Opération de classe : opération sur la classe elle-même (création de nouvelles instances par exemple) Soulignés dans la classe Article - référence : int - prixht : float - nbinstances : int + calculerprixttc(taxe : float) : float + créer() + compterinstances() : int D. Longuet - UML 14

Notations avancées Visibilité + : public, accessible à toutes les classes # : protégé, accessible uniquement aux sous-classes - : privé, inaccessible à tout objet hors de la classe Pas de visibilité par défaut Vecteur - début : Point - /fin : Point - longueur : float - angle : float # ajouter(v : Vecteur) : Vecteur + déplace(p : Point) D. Longuet - UML 15

Attribut dérivé Peut être calculé à tout moment à partir d'autres informations du système Notation : /attribut Peut nécessiter des informations de plusieurs classes Vecteur attribut dérivé - début : Point - /fin : Point - longueur : float - angle : float # ajouter(v : Vecteur) : Vecteur + déplace(p : Point) fin = (longueur*cos(angle), longueur*sin(angle)) D. Longuet - UML 16

Association dérivée Redondance d'une association : Association n'apportant pas d'information supplémentaire, se demander si nécessaire Banque 1..* banques 1 banque 1..* comptes Compte numéro : int devise : Devise solde : float 1..* comptes 1 propriétaire Client naissance : Date 1..* clients ClientsBanque D. Longuet - UML 17

Association dérivée Redondance d'une association : Association n'apportant pas d'information supplémentaire, se demander si nécessaire Si nécessaire, la faire apparaître comme association dérivée Association dérivée : Peut être calculée à tout moment à partir d'autres informations du système Notation : /association Banque 1..* banques 1 banque 1..* comptes Compte numéro : int devise : Devise solde : float 1..* comptes 1 propriétaire Client naissance : Date 1..* clients association dérivée /ClientsBanque D. Longuet - UML 18

Limites du diagramme de classes Diagramme de classes représente la structure du système en termes d'objets et de relations entre ces objets Ne permet pas de représenter : Valeurs autorisées des attributs Conditions sur les associations Relations entre les attributs ou entre les associations Expression des contraintes liées au diagramme : Notes dans le diagramme Texte accompagnant le diagramme OCL : langage de contraintes formel associé à UML D. Longuet - UML 19

Propriétés : Contraintes, invariants Portant sur les éléments du modèle Doivent être vérifiées à tout instant En général, restriction sur les diagrammes d'objets possibles à partir du diagramme de classes Héritage des contraintes de la super-classe vers les sous-classes Contraintes présentes dans le diagramme : Type des attributs Multiplicités des associations D. Longuet - UML 20

Contraintes sur les attributs {age = diff(naissance,today)} {naissance today} sous forme de note Personne naissance : Date /age : int {age 0} dans le diagramme Contraintes sur la classe Personne : L'âge est toujours positif L'âge est calculé comme la différence de la date de naissance et la date d'aujourd'hui La date de naissance est inférieure ou égale à la date d'aujourd'hui dans un document annexe D. Longuet - UML 21

Contraintes associées à la multiplicité Compte numero : int * 1..* Personne devise : Devise solde : float pre naissance : Date Par défaut : ensemble non ordonné 2 parents Personne enfants pre *{ordered} naissance : Date ensemble ordonné Commande numero : int total : float date : Date * 1..* {nonunique} Pizza id : int prix : float multi-ensemble (chaque élément peut apparaître plusieurs fois) PolygoneRempli multi-ensemble 1 ordonné 1..*{sequence} Point abscisse : float ordonnée : float D. Longuet - UML 22

Contraintes sur les associations Salle capacité : int 1 1..* Place numéro : int contrainte sur une association nombre de places associées à une salle = capacité P1:Place Olympia:Salle nom = Olympia capacité = 2000 numéro = 1 P2:Place numéro = 2 P3:Place numéro = 3 D. Longuet - UML 23

Contraintes sur les associations subordonné 1..* Personne pré naissance : Date 0..1 chef 1..* 0..1 Entreprise employés employeur {pour toute Personne p, contrainte portant sur p.employeur = p.chef.employeur} plusieurs associations PierreDupont : Personne nom = "Dupont" prénom = "Pierre" naissance = 12/04/1988 employeur IBM:Entreprise nom = "IBM" chef AnneBérou : Personne nom = "Bérou" prénom = "Anne" employeur Microsoft:Entreprise nom = "Microsoft" naissance = 14/12/1965 D. Longuet - UML 24

Contraintes, invariants {age = diff(naissance,today)} Personne naissance : Date /age : int {age 0} 1 * ExpériencesPro entreprise : string entrée : Date sortie : Date {ordered} * 1 {subset} appartient administre D. Longuet - UML 25 * * Groupe thème : string création : Date L'âge est toujours positif L'âge est calculé comme la différence entre la date de naissance et la date d'aujourd'hui L'administrateur d'un groupe en est membre On a accès aux expériences professionnelles dans l'ordre de la date d'entrée

Contraintes en OCL Banque 1 banque 1..* banques 1..* clients Client naissance : Date 1 propriétaire comptes 1..* 1..* comptes Compte numéro : int devise : Devise solde : float dest 1 0..* 1 0..* orig Virement montant : float date : Date Tout propriétaire d un compte est client de la banque hébergeant ce compte. context c : Compte inv : c.banque.clients -> include(c.propriétaire) Tout client d une banque y possède au moins un compte. context b : Banque inv : b.clients -> forall(cl cl.comptes -> select(c c.banque = b) -> size() >= 1) Les virements ne sont autorisés qu'entre des comptes partageant la même devise. context v : Virement inv : v.orig.devise = v.dest.devise D. Longuet - UML 26