LE CAS « ZOO GAME » (suite) - e

Transcription

LE CAS « ZOO GAME » (suite) - e
DU FC IUT Vélizy
JAVA BD
LE CAS « ZOO GAME » (suite)
Université Versailles - Saint Quentin
module M1
SUJET
Vous faites votre stage dans la société de services du numérique Open&Free Software. Vous êtes
intégré à l'équipe qui a en charge le projet « ZOO GAME ». Projet qui répond à l'appel d'offre d'une
société cliente connue pour ses jeux sur internet. Il s'agit d'un jeu développé en JAVA et qui sera
disponible via le WEB pour les enfants.
L'analyse du domaine a fait remonté les informations précisées dans le sujet précédent (« cas ZOO
GAME »). Votre chef de projet vous demande d'aller plus loin dans l'étude de la conception orientée
objet.
Il vous précise que le calcul du coût de l'hébergement de chaque pensionnaire dépend de plusieurs
paramètres : le poids de l'animal, son type de nourriture, la nature des soins réguliers qui lui sont
prodigués ainsi que les visites vétérinaires.
Le jeu doit permettre aux animaux d'indiquer à leur zoo le coût de leur hébergement par la méthode
coutHebergement(). Cette méthode retourne une valeur de type double.
Le zoo doit ainsi pouvoir calculer le montant total de ses charges par sa méthode :
public double charges()
C'est le nouveau cas d'utilisation du jeu « connaître le montant des charges d'hébergement d'un
zoo » qui permet au joueur de connaître les charges d'hébergement d'un zoo.
Pour pouvoir effectuer le calcul, chaque animal doit consulter un objet fournisseur de paramètres
qui a pour classe FournisseurDeParametres implémentée sous la forme d'un singleton fournie en
annexe. La méthode qui retourne les paramètres possède la signature suivante :
public double[ ] getParametres(String typeAnimal)
Voir les annexes pour plus de détails.
TRAVAIL
1. Modifier le diagramme de classe UML du modèle métier du jeu afin de prendre en compte
la classe singleton FournisseurDeParametres (stéréotype <<singleton>>).
2. Créer le diagramme UML de cas d'utilisation « connaître le montant des charges
d'hébergement d'un zoo ».
3. Donner la définition de la notion de classe Singleton (wikipedia).
4. Comment appelle-t-on ce type de solution en conception et programmation orientée objet ?
1/3
JJLC
FC Vélizy
5. D'où vient cette solution, qui en est à l'origine ?
6. Pourquoi le constructeur de la classe FournisseurDeParametres est privé ?
7. Que fait la méthode getInstance() ?
8. Combien y a t-il d'objets de type FournisseurDeParametres au maximum dans la JVM ?
9. Compléter l'implémentation JAVA du modèle métier.
10. Concevoir le diagramme UML de séquence du cas d'utilisation.
11. Tester le comportement charges() de la classe Zoo qui cumule le coût d'hébergement de
tous les pensionnaires et retourne le résultat obtenu.
ANNEXES
Un objet créé de cette façon :
Pensionnaire p1 = new Lion(''léo'') ;
retourne ''Lion'' sur l'invocation :
p1.getClass().getSimpleName() ;
La méthode coutHebergement() retourne le résultat du calcul suivant :
paramètre entretien + (poids de l'animal * paramètre nourriture) + paramètre soins +
paramètre vétérinaire
La méthode public double[ ] getParametres(String typeAnimal) possède l'algorithme suivant :
1. définition d'un tableau de double de dimension 4.
2. Alternative testant le type du pensionnaire (pour le moment Lion ou Girafe).
3. Si le pensionnaire est un lion :
1. la valeur à stocker dans le premier élément du tableau est 12 (entretien).
2. la valeur à stocker dans le second élément du tableau est 0.5 (nourriture).
3. la valeur à stocker dans le troisième élément du tableau est 24 (soins).
4. la valeur à stocker dans le quatrième élément du tableau est 56 (vétérinaire).
4. Si le pensionnaire est une girafe :
2/3
JJLC
FC Vélizy
1.
2.
3.
4.
la valeur à stocker dans le premier élément du tableau est 20 (entretien).
la valeur à stocker dans le second élément du tableau est 0.25 (nourriture).
la valeur à stocker dans le troisième élément du tableau est 14 (soins).
la valeur à stocker dans le quatrième élément du tableau est 33 (vétérinaire).
5. Retourner le tableau
Création d'un tableau en JAVA : double tableau[] = new double[4] ;
Classe singleton FournisseurDeParametres :
public class FournisseurDeParametres {
private static FournisseurDeParametres instance = null ;
private FournisseurDeParametres() {
super() ;
}
public static FournisseurDeParametres() getInstance() {
if(instance == null)
instance = new FournisseurDeParametres() ;
return instance ;
}
public double[ ] getParametres(String typeAnimal) {
// méthode à implémenter en tenant compte de l'algorithme précisé ci-dessus
}
}
Utilisation de la classe singleton FournisseurDeParamatres par un animal :
FournisseurDeParametres.getInstance().getParametres(this.getClass().getSimpleName()) ;
Une relation ponctuelle non permanente est appelée relation de dépendance en UML et se modélise
de la façon suivante :
Classe B
Classe A
3/3
JJLC
FC Vélizy

Documents pareils