Modélisation – Partie II Stéphanie CHOLLET Diagramme de classes et d’objets Dia

Modélisation – Partie II Stéphanie CHOLLET Diagramme de classes et d’objets Diagrammes de classes et d’objets – 1/4 Diagramme de classes : Description du cas général au niveau modèle Permet de représenter les aspects statiques et structurels du système Diagramme d’objets : Description des exemples au niveau instance Permet de représenter une image d’un système à un instant donné Etudiant Modèle : prénom Pierre Paul Instances : e1:Etudiant prénom=« Pierre » e2:Etudiant prénom=« Paul » stephanie.chollet@grenoble-inp.fr 3 Diagrammes de classes et d’objets – 2/4 Diagramme de classes : Utilisé pour la conception Utilisé pour la rétro-ingénierie Utilisé pour structurer le développement Diagramme d’objets : Utilisé pour vérifier un diagramme de classes Code Diagramme de classes Conception Rétro-ingénierie Diagramme de classes Diagramme(s) d’objets conforme stephanie.chollet@grenoble-inp.fr 4 Diagrammes de classes et d’objets – 3/4 Diagramme de classes Diagramme d’objets stephanie.chollet@grenoble-inp.fr 5 Diagrammes de classes et d’objets – 3/4 Eléments d’un diagramme de classes : Des classes Des associations Un diagramme de classes peut être : Surchargé de contraintes OCL (Object Constraint Language) Un diagramme de classes peut doit être vérifié avec au moins un diagramme d’objets Eléments d’un diagramme d’objets : Des objets Des liens stephanie.chollet@grenoble-inp.fr 6 Diagramme de classes Les classes Une classe Une classe décrit un ensemble d’objets qui partagent une structure et une sémantique communes Convention : Le nom de la classe commence par une lettre majuscule et doit être au singulier Le nom des attributs et des opérations doivent commencer par une minuscule Opérations : nom(Param.): typeRetour Nom de la classe Attributs : nom: type Contraintes stephanie.chollet@grenoble-inp.fr 8 Sémantique d’une classe Le concept de Compte est pertinent Le numéro d’un compte est un Integer Le solde d’un compte est un Float Le découvert max d’un compte est un Float Pour un compte donné, il est possible de : Consulter le solde, créditer une somme, débiter une somme Un compte doit toujours avoir un solde supérieur au découvert max stephanie.chollet@grenoble-inp.fr 9 Des notations possibles stephanie.chollet@grenoble-inp.fr 10 Concepts avancés pour les classes S’adapter : Au niveau d’abstraction (Conception vs. Implantation) Au domaine d’application Aux outils utilisés Aux savants et ignorants Ingénierie vs. rétro-ingénierie A utiliser à bon escient ! Lorsque nécessaire et uniquement lorsque nécessaire ! stephanie.chollet@grenoble-inp.fr 11 Concepts avancés pour les attributs et les opérations Concepts avancés : Visibilités, portée et dérivation Propriétés : Attributs : {frozen}, {addonly}, {ordered}, {nonunique} Opérations : {abstract}, {isQuery}, {concurrency = valeur}, {isLeaf}, {isRoot} Enumérations et types de données Déclarations des attributs : [visibilité][/]nom[:type][card ordre][= valeurInitiale][{props}] Déclaration des opérations : [visibilité][/] nom [(params)][:type][{props}] Params := [in|out|inout] nom [:type][=defaut][{props}] stephanie.chollet@grenoble-inp.fr 12 Visibilité UML Caractère Rôle Mot-clé Description + Accès public public Accessible par toutes les classes # Accès protégé protected Accessible uniquement par la classe et ses classes filles ~ Accès package package Accessible uniquement par les classes du même package - Accès privé private Accessible uniquement depuis la classe elle-même Les visibilités UML ne se correspondent pas exactement aux visibilités de Java mais correspondent à celles de C++ ! stephanie.chollet@grenoble-inp.fr 13 Exemples de déclarations d’attributs age + age /age - solde : Integer = 0 # age : Integer[0..1] # numsecu : Integer{frozen} #motsClés : String[*]{addOnly} nbPersonne: Integer Adapter le niveau de détail au niveau d’abstraction static final Conséquences d’implantation Java : Non modifiable Seul l’ajout est possible Attribut dérivé {age = dateCourante – dateNaissance } stephanie.chollet@grenoble-inp.fr 14 Exemples de déclarations d’opérations /getAge() + getAge() : Integer - updateAge(in date : Date) : Boolean # getName() : String[0..1] + getAge() : Integer {isQuery} #getAge(): Integer #getAge(): Integer {abstract} + addProject() : {concurrency = sequential} + addProject() : {concurrency = concurrent} main(in args : String[*]{ordered}) Adapter le niveau de détail au niveau d’abstraction Méthode abstraite Conséquences d’implantation Java : stephanie.chollet@grenoble-inp.fr 15 Exemples d’énumérations et de types de données Utilisables comme type d’attributs Valeurs (par identité) Exemple d’utilisation : <<enumeration>> Jour Lundi Mardi Mercredi Jeudi Vendredi Samedi Dimanche <<enumeration>> Fonction Secretaire President Tresorier VicePresident Membre <<datatype>> Date compare() jour() mois() annee() <<datatype>> Point x : Integer y : Integer Association1901 nom : String joursDeReunion : Jour[*] dateDeCreation : Date stephanie.chollet@grenoble-inp.fr 16 Les classes abstraites et les interfaces Classes abstraites : Interfaces : Animal - cri + manger() <<interface>> ADesPattes + marcher() + courir() stephanie.chollet@grenoble-inp.fr 17 Diagramme de classes Les associations Une association Une association décrit un groupe de liens qui partagent une structure et une sémantique communes Une association relie deux ou plus classes Une association a un nom et/ou des rôles Une association a des cardinalités à chaque extrémité Nom de l’association Rôles Cardinalités stephanie.chollet@grenoble-inp.fr 19 Une association particulière Association réflexive : Classe nomAssociation cardA cardB stephanie.chollet@grenoble-inp.fr 20 Les cardinalités Les cardinalités d’une association : Précise combien d’objets peuvent être liés à un autre objet Sont définies avec une cardinalité minimale et une cardinalité maximale au format Cmin..Cmax « Un client a 0 ou plusieurs comptes. » « Un compte a toujours un et un seul titulaire. » stephanie.chollet@grenoble-inp.fr 21 Concepts avancés pour les associations S’adapter : Au niveau d’abstraction (Conception vs. Implantation) Au domaine d’application Aux outils utilisés Aux savants et ignorants Ingénierie vs. rétro-ingénierie A utiliser à bon escient ! Lorsque nécessaire et uniquement lorsque nécessaire ! stephanie.chollet@grenoble-inp.fr 22 Concepts avancés pour les associations Classe associative Généralisation Composition et agrégation Navigation : associations unidirectionnelle et bidirectionnelle Contraintes : {frozen}, {addonly}, {ordered}, {nonunique} Association qualifiée (Depuis UML 2.0 en 2005) stephanie.chollet@grenoble-inp.fr 23 Classe associative – 1/2 Objectif : Associer des attributs et/ou des opérations à une association Le nom de la classe correspond au nom de l’association Personne Société * 0..2 Emploi salaire augmenter() employés sociétés Le salaire est une information correspondant : • Ni à une personne • Ni à une société Mais à un emploi (un couple personne- société) stephanie.chollet@grenoble-inp.fr 24 Classe associative – 2/2 Transformation d’une classe associative A B carda cardb C rolea(s) roleb(s) A B carda cardb C rolea roleb 1 1 Il ne peut y avoir qu’un objet C entre un objet A et un objet B donné stephanie.chollet@grenoble-inp.fr 25 Généralisation/Spécialisation – 1/2 Une classe peut être la généralisation d’une ou plusieurs classes, ces classes sont alors des spécialisations « Super classe » Cas général « Sous-classe » Cas spécifique stephanie.chollet@grenoble-inp.fr 26 Généralisation/Spécialisation – 2/2 Les sous-classes héritent des propriétés des super classes (attributs, méthodes, associations et contraintes) Compte solde crediter() debiter () CompteEpargne tauxInteret ajouterInterets() Banque * 1 {inv: solde > -500} {inv: tauxInteret < 100} CompteEpargne solde tauxInteret crediter() debiter() ajouterInterets() {inv: solde > -500} et {inv: tauxInteret < 100} Banque * 1 stephanie.chollet@grenoble-inp.fr 27 Composition – 1/2 Objectif : Représenter un couplage fort entre le composé (ensemble) et les composants (éléments) Lie les cycles de vie du composé avec les composants Illustration et exemple : Composé Composant 1 0..* Composé Composant Voiture Roue 1 4 stephanie.chollet@grenoble-inp.fr 28 Composition – 2/2 Contraintes liées à la composition : Un objet composant ne peut être que dans un seul objet composé Un objet composant n’existe pas sans son objet composé, sa création se fait via son composé Si un objet composé est détruit, ses composants aussi Document Chapitre Figure 0..* 1..* Problème 1..* Voiture Roue 1 4 Roue créée dans la classe Voiture A la destruction de la voiture, les roues sont détruites stephanie.chollet@grenoble-inp.fr 29 Navigation – 1/2 Association bidirectionnelle Association unidirectionnelle A utiliser pour les spécifications et l’implémentation stephanie.chollet@grenoble-inp.fr 30 Navigation – 2/2 public class A { private B rb; public void addB(B b) { setRb(b); } } public class B { } public class A { private B rb; public void addB(B b) { if(getRb() != null) { getRb().setRa(null); } if(b.getRa() != null) { b.getRa().setRb(null); } setRb(b); getRb().setRa(this); } } public class B { private A ra; public void addA(A a) { if (getRa() != null) { getRa().setRb(null); } if (a.getRb() != null) { a.getRb().setRa(null); } setRa(a); getRa().setRb(this); } } stephanie.chollet@grenoble-inp.fr 31 Contraintes sur les associations {ordered} : les éléments de la collection sont ordonnés {nonUnique} : répétitions possibles {frozen} : fixé lors de la création de l’objet, ne peut pas changer {addOnly} : impossible de supprimer un élément RelevéDeCompte LigneOpération * {ordered, addOnly} Influence les structures de données de l’implantation stephanie.chollet@grenoble-inp.fr 32 Synthèse sur les associations ClasseA 0..* {frozen} ClasseB AssociationX attributZ roleA roleB < associationX Cardinalités Navigation Classe associative Nom d’association Contrainte Composition Nom de rôle Sens de lecture stephanie.chollet@grenoble-inp.fr 33 Diagramme d’objets Des objets et des liens Les objets Les objets peuvent être ajoutés ou détruits pendant l’exécution La valeur des attributs peut changer Représentations graphiques : nomDeLObjet nomDeLObjet:Classe :Classe stephanie.chollet@grenoble-inp.fr 35 Exemples d’objets Diagramme de classes Diagramme d’objets compteMarie:Compte numeroCompte = 1111 solde = 1524,13 decouvertMax = 1000,00 comptePaul:Compte numeroCompte = 2222 solde = 70,45 decouvertMax = 100,00 :Compte numeroCompte = 3333 solde = 223,38 decouvertMax = 100,00 :Compte comptePierre:Compte stephanie.chollet@grenoble-inp.fr 36 Les liens Représentent les instances des associations entre les classes des objets considérés Diagramme de classes Diagramme d’objets marie:Client pierre:Client paul:Client c1:Compte c2:Compte c3:Compte aPourCompte > aPourCompte > aPourCompte> titulaire titulaire titulaire comptes comptes comptes stephanie.chollet@grenoble-inp.fr 37 Contrainte sur les liens – 1/2 Au maximum un lien d’un type donné uploads/Ingenierie_Lourd/ cm4-modelisation-2.pdf

  • 22
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager