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
Documents similaires
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/1rJxiZ6xrCoqs6d4QGt3QEgFjlJz1qSVTM9daSmxtI2mZW6fdnwp9XPUrYGgVmbuP7UwIuQ8vYQ36ZNpsAp68XlQ.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/l8L9Q4vScdKEirQXzLdRWEBukymdz9ocVZoBU0Tip0SqiPn4sDhX2rHyBDuW2hFVHEKTxOr7tU24FybIc7ehlAkh.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/Avc1IfejleGu5OBIgelOAygcHvL05tFY1nDFPveOYwJk9zg3hJhFqIsdvPvfiAyRgmT1lEqlu6fX0h86yYgz2eV2.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/EHHJ79bKLIgworGZi5wJc7dTrqK8xa3ZNab6mKlQ8igqWI5PH0E5O26H4NyCU2QN8cpc0Uu4xmHu01ATD458C0vt.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/vlLpsjInylYw3vwHUsxzCy8KNMVPVhfRIK9wD3RuYClQWRsEvPZW27cj2S43EBX5b6cLQnVN8RBUtq4oWVu4tsdR.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/FYsj7C0xzaIzdLSR0audyCKsn4F2y2CR75BoJ0MDYkaTbyYvs9ImN5Eefg1a0CiYlPDg0t5trXj0QRsbY7Y0ZtqN.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/5CpGgDcmvW0VekJIFPzibPhg0HxlHpL0dXcWPYr6e63ju0JThfw56cTgAbr39T5DbbRygMPva1KmuwpoP2vBBWtw.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/mE1ctGD6negEKswrOLIc9jMYlCViUmkcYdh7IdHUmUrrxaFSUYo6Wd2SkBnJkUEjZ9RpKz01u4jpfjRfPTdaPMlD.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/kjB85YuHxB5Uyuz1hFWcsfbKPHC1AmZHD5UKHUa8ADMry6kblH99jmWsGl1MdSgjYJaBGZEkhIW9OcgJBKMvX7xg.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/QuYf2pok0sJkthc3VJw7Pz5X6J3peyDjC3lXywRQzkPKTihBjRb41Cn06lJyBQGAxCaijdma9ru04Y7ZACu23oqw.png)
-
22
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Dec 10, 2021
- Catégorie Heavy Engineering/...
- Langue French
- Taille du fichier 0.8947MB