Université Claude Bernard Lyon MASTER 2 S2IFA, 204 205 ISFA UML et Tests TD2. 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. Figure 3 Associations d aggrégation et de composition Aggrégation : association asymétrique sans dépendance entre les deux parties Composition : association asymétrique avec dépendance de B vers A (de création et dans l appartenance) Figure 4 Associations ternaire, n-aires Les associations n-aires sont comme étendent à n parties les membres de l association. 2
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 5 Relation entre diagramme de classe et diagramme objet Les objets : avec leur nom, leur type et préciser certaines valeurs des attributs 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
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. les classes d objets peuvent avoir plusieurs attributs ; 9. une personne souhaiterait visiter plusieurs pays, et selon un ordre de préférence ; 0. une personne a travaillé dans différentes entreprises, à des périodes données et avec un certain salaire. 3.3 Instanciations minimales Question 3. 2. 3. 4. ci-dessus et composé d au moins 3 objets. 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 2 ClasseC 6. 4
ci-dessus et composé d au moins objet 3.4 Système de gestion de compte (Partie II) Dans notre banque (cf. TD précédent), 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 4 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. 3.5 Modélisation de compteur 4 Modélisation d un compteur Simuler à l aide d une programmation orientée objet une montre à affichage digital (heures, minutes et secondes). NB : On utilisera la fonction (attendre s) pour simuler l écoulement d une seconde. (source : https://en.wikipedia.org/wiki/file:digital_clock_changing_numbers.jpg ) Donner le diagramme de classes associé, et proposer une implémenta- Question tion. Question 2 Modifier le diagramme de classes afin que le modèle soit le plus générique possible (applicable à un très grand nombre de situations). Modifier les implémentations en conséquence. Question 3 Définir la classe montre en utilisant les classes précédentes. Donner le diagramme d objet correspondant à l instanciation d une montre. Question 4 On souhaite pouvoir comparer l heure indiquée par une instance de montre avec : une autre montre, un horaire pré-défini. On veillera à ce que le modèle proposé repecte au maximum le paradigme-objet. 5
4. Un modèle complexe Question 5 Modélisez sous forme de classe les nombres complexes. On souhaitera bénéficier des fonctionnalités suivantes : Accéder aux partie réelles (R(a)) et imaginaires (I(a)) Additionner deux nombres complexes (a + b) Multiplier deux nombres complexes (a b) Calculer la norme au carré d un nombre complexe ( a 2 ) Calculer l opposé d un nombre complexe ( a) Calculer l inverse d un nombre complexe (a ) Dessinez la classe et écrivez en pseudo code les algorithmes des méthodes. On souhaite à présent pouvoir gérer des expressions mathématiques parenthésées pour le calcul des nombres complexes comme par exemple : ((a) ((b) + ( c))) () ( (a) + ( (b) + (c)) )) (2) Question 6 Proposer un modèle capable de réaliser le calcul de ces expressions (à nouveau on ne considérera que les opérations d addition, multiplication, opposé et inverse). Indiquez le pseudo-code des méthodes principales ainsi que les diagrammes objets correspondants aux deux exemples citer L astuce consiste à modéliser les expressions mathématiques comme des objets capable d organiser les calculs. On pourra s aider de la notation polonaise préfixée qui suggère de représenter d abord le symbole du calcul, puis les opérandes. Par exemple, les expressions ci-dessus peuvent ainsi s écrire : (a, +(b, (c))) (3) + ( a, (+(b, c)) ) (4) Question 7 Connaissez-vous le design pattern sous-jacent?. Les parenthèses et les virgules ne sont pas nécessaires dans l absolu. 6