Université Claude Bernard Lyon MASTER IR, 204 205 ISFA UML TD. Point de vue statique André FABBRI Diagramme de classe Conformément au modèle objet, le diagramme de classe représente les types des objets manipulés (appelés classes) ainsi que les relations qu ils entretiennent.. Classes Figure Description d une classe Une classe est découpée en trois zones : le Nom de la classe, les attributs et les méthodes. Chaque ligne parmi les attributs et les méthodes est composée de trois élements, comme suit : Visibilité Nom : Type La visibilité : publique (+ = tous), privée(- = self) ou protégée (# = filles) Le nom : de l attributs ou de la méthode Le type : de la variable attribut ou de la valeur retrounée par la méthode Enfin les méthodes peuvent être appelées avec des paramètres. Dans ce cas, on indique entre parenthèses la liste des paramètres en précisant le nom du paramètre et son type..2 Les relations Les deux principales relations entre les classes sont les associations (est composée de) ou d héritage (est un type de).
Figure 2 Relation d héritage et d association Héritage : la classe fille possède tous les attributs et méthodes de la classe mère Association : la classe A est en fait un attribut de la classe B et vice versa. Les associations sont un peu plus précises que les relations d héritages. Dans chaque association, on distingue 4 éléments : La cardinalité : indique le nombre d objets d une classe possédée par l autre (Les rôles) : indique le nom pris par les objets d un type dans la classe associée (Le sens) : par défaut une association se parcours dans les deux sens (A B). La flèche permet de préciser le sens souhaité. {Contrainte : permet de préciser encore des associations. Ex : {Ordered,{XOR... Par exemple ici : Chaque objet de type A possède de 0 à une infinité d objets de type B et chaque objet de type B appartient à 3 objet de type A Il existe d autres associations plus complexes avec des contraintes supplémentaires : aggrégation, composition (nous ne les présenterons dans le cadre de cette initiation). 2 Diagramme d objets Les diagrammes d objets représentent une instanciation possible du modèle objet présenté dans le diagramme de classe. Dans un diagramme d objets on représente des objets et des liens. Figure 3 Relation entre diagramme de classe et diagramme objet Les objets : avec leur nom, leur type et préciser certaines valeurs des attributs 2
Les liens : correspondent aux associations entre les objets Remarques : Les relations d héritage n ont pas leur place dans un diagramme d objet car est définissent un type. Par ailleurs, les liens indiqués doivent coïncider avec les cardinalités mentionnées dans le diagramme de classe. 3 Exercices 3. Attention à l héritage Question Comment rendre plus modulaire les classes de ce diagramme en utilisant des relations d héritage. 3.2 Types d associations à utiliser Question 2 Quels types d association y a t il entre les classes des expressions suivantes? Donner les diagrammes de classes associés.. une pièce est composée de plusieurs murs ; 2. un pays a une capitale ; 3. un pays a plusieurs villes et une seule capitale ; 4. une transaction boursière est un achat ou une vente ; 5. les fichiers contiennent des lignes ; 6. un polygone est composé d un nombre ordonné de points ; 7. modems et claviers sont des périphériques d entrées / sorties ; 8. une personne souhaiterait visiter plusieurs pays, et selon un ordre de préférence ; 3.3 Instanciations minimales Question 3 Dessiner les diagrammmes d objet conformément aux digrammes de classe donné et aux contraintes imposées.. ci-dessus et composé d au moins 3 objets. 3
2. 3. 4. ci-dessus et composé d au moins 3 objets..3 ci-dessus et composé d au moins 2 objets de la..3 ci-dessus et composé d au moins 2 objets de la Asso 0.. 5. 2 Asso2 ci-dessus et composé d au moins objet 6. 2 ClasseC ci-dessus et composé d au moins objet 3.4 Du java à l UML Question 4 Réalisez le diagramme de classe correspondant au code suivant (solution du TP2) et le diagramme d objet correspondant à la méthode main de la classe Principale. public class Etudiant { private String nom; private String prenom; private int numero; static int compte=0; Etudiant(String a, String b) { this.nom=a; this.prenom=b; compte++; this.numero=compte; 4
Etudiant (Etudiant Et){ this.nom=et.nom; this.prenom=et.prenom; this.numero=et.numero; public String getnom(){ return this.nom; public String getprenom(){ return this.prenom; public boolean compare(etudiant Etu){ return (this.numero==(etu.numero)); public void affiche(){ System.out.println("Il s appelle "+this.prenom+" "+ this.nom+" et son numéro d étudiant est "+this.numero); public class Binome { Etudiant e; Etudiant f; static int cpt=0; Binome(Etudiant a, Etudiant b){ this.e=a; this.f=b; cpt++; public void affiche_binome(){ System.out.println("Le binome est composé de : "); this.e.affiche(); this.f.affiche(); public class Principale { public static void main(string[] args) { Etudiant E = new Etudiant("Pierre","Paul"); Etudiant E = new Etudiant("Pierre","Paul"); Etudiant E2 = new Etudiant(E); System.out.println(Etudiant.compte); System.out.println(E.compare(E2)); E.affiche(); E2.affiche(); Binome B = new Binome(E,E2); B.affiche_binome(); B.affiche_binome(); 5
3.5 Un modèle du vivant Un professeurs de mathématiques vous demande d implémenter un modèle Proie/Prédateur (inspiré de celui de Lotka-Volterra) en vue de réaliser de jolies simulations. Voici la description du modèle en question : Soit un environnement discret composé d un ensemble de cases (qui correspondent à des pâturages) et d animaux (qui correspondent aux proies et aux prédateurs). Chaque case est adjacente à exactement 4 cases et peut accueillir au maximum un seul animal (proie ou prédateur), par ailleurs chaque case possède une quantité d herbe que les proies pourront consommer. La quantité d herbe augmentera au cours du temps suivant une probabilité. Les proies comme les prédateurs possèdent une durée de vie limité dans le temps. Chaque fois que possible, ils chercheront à se nourrir : les proies se nourrissent de l herbe présente sur leur case (s il en reste) et les prédateurs se nourrissent d une proie située sur une case avoisinante. Suite à un repas, chaque animal a une probabilité de créer un animal identique sur une case qui lui est adjacente. Question 5 Donner la représentation statique (diagramme de classe) du modèle présenté : quelles informations doit-on stocker pour pouvoir réaliser le modèle ci-dessus? et comment les organiser? Question 6 Donner le diagramme objet correspondant à ce modèle pour un environnement de 4 cases avec proie et un prédateur sur 2 cases non-adjacentes. 6
3.6 Figure géométriques (Partie I) Un dessin regroupe un ensemble de figures géométriques régulières (carré, triangle équilatéral et cercle) dessinée sur une feuille millimétrée. Dans l exemple ci-dessous, nous avons dessinées plusieurs formes régulières sur 2 feuilles distinctes. Chaque figure géométrique a un nom (qui peut être vide) et pourra être remplie ou non. Par ailleurs on souhaite conserver pour chaque figure géométrique le minimum d information nécessaire pour les tracer sans ambiguïtée dans le repère fourni par le feuille. Question 7 Dessiner le diagramme de classe de ce problème ainsi que le diagramme objet associé à l exemple ci-dessus. Vous exposerez sommairement comment vous pouvez dessiner chacune des figures de la feuilles à partir des informations que vous aurez stockés (on supposera dans un premier temps que les figures géométriques seront placées de manières à ce quelles ne se chevauchent pas). On considère à présent que certaines figures (le carré et le triangle) peuvent contenir tout autre type de figure comme dans l exemple ci-dessous. Ainsi, un carré peut contenir un cercle et/ou un triangle et/ou un carré. Par contre, un cercle ne peut pas contenir d autres figures. Question 8 Modifier le diagramme de classe en conséquence et proposer un nouveau diagramme objet pour l exemple ci-dessus. 7
3.7 Comptes bancaires On suppose que dans une banque, il existe trois type de compte de client : un compte ordinaire (CO) sur lesquelles toutes les opérations sont autorisées un compte rémunéré non bloqué (CRNB) qui en plus des opérations ci-dessus, permet la rémunération du compte avec un taux de rémunération fixe de 2%. un compte rémunéré bloqué (CRB) qui est un compte rémunéré comme ci-dessus avec un taux de 5% et sur lequel le retrait n est pas possible (et donc pas de virement aussi à partir de ce type de compte). Les comptes sont associés à un client titulaire et sont identifiés par un numéro de compte. Question 9 Donnés le diagramme de classe détaillé des CO, CRB et CRNB ainsi que les classes permettant de réaliser les fonctionnalités détaillées dans le diagramme de cas d utilisation sur ces comptes. 8