Exercice UML corrigé cache d’opérations, tutoriel & guide de travaux pratiques en pdf.
Cet exercice aborde la modélisation d’un mécanisme de cache, permettant de limiter le coût des calculs répétés. Cette stratégie est très utile pour les calculs coûteux en temps, mais consomme en contrepartie plus de mémoire.
Cet exercice propose de modéliser un mécanisme de cache. Une classe Map représente une table associative. Elle contient conceptuellement des couples <clé,valeur>. La recherche de la valeur associée à une clé donnée (opération get) est très rapide (complexité théorique- ment constante, quel que soit le nombre de couples dans la table). Une seule valeur peut être associée à chaque clé distincte : si une valeur est déjà associée à la clé, l’opération put d’ajout à la table écrase l’ancienne valeur. Les tables de hash ou les arbres de recherche sont des implémentations fréquemment rencontrées de tables associatives.
Vous allez réaliser une classe abstraite Cache qui offre à ses classes dérivées une fonctionnalité de cache. Elle est munie, pour cela, d’une instance de la classe Map, qui sert à stocker les résultats déjà calculés par cette instance de fonction.
Les classes dérivées de Cache réalisent un calcul coûteux en temps. De telles classes, qui servent à réaliser un calcul, sont parfois appelées « foncteurs ». Elles doivent implémenter l’opération de visibilité protégée doComputation (coûteuse). Elles offrent publiquement l’opération compute aux utilisateurs de la fonction.
1. Décrivez à l’aide d’un diagramme d’activités le comportement de l’opération compute.
2. Prévoyez que l’argument passé à compute n’est pas du bon sous-type de Object pour la fonction concrète. Si c’est le cas, l’opération doComputation risque de lever une exception de typage quand elle essaie d’interpréter l’objet passé en argument (ClassCastException par exemple en Java standard). Pour offrir une gestion propre, si une erreur de ce type se produit, vous voulez que compute lève une exception (non standard) de type TypeException. Enrichissez le diagramme précédent pour représenter ce mécanisme.
La correction exercice UML (voir page 2 en bas)