250 lines
6.4 KiB
HTML
250 lines
6.4 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|
<html>
|
|
<head>
|
|
|
|
<meta http-equiv="Content-Language" content="fr">
|
|
|
|
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
|
|
<title>ROBOT-2</title>
|
|
|
|
|
|
</head>
|
|
|
|
|
|
<body>
|
|
|
|
<span style="font-family: Arial;">
|
|
<h1>La guerre des robots<br>
|
|
|
|
</h1>
|
|
|
|
<h2>Solution : </h2>
|
|
|
|
<h3>Diagramme de classes d'analyse</h3>
|
|
|
|
<p><img style="border: 0px solid ;" alt="DCA Robot" src="RoboA.jpg"></p>
|
|
|
|
Quelques remarques :
|
|
<br>
|
|
|
|
<ul>
|
|
|
|
<li>On pourrait
|
|
regrouper en une
|
|
seule classe Equipe et Base puisqu'elles sont en relation 1--1 ; les
|
|
concepts étant différents, j'ai toutefois choisi
|
|
de les
|
|
séparer, cela permettrait une réutilisation plus
|
|
rapide
|
|
si on décidait qu'une équipe peut avoir plusieurs
|
|
bases</li>
|
|
|
|
<li><font face="Arial">La couleur est maintenant
|
|
un attribut de
|
|
l'équipe (cf énoncé)<br>
|
|
|
|
</font></li>
|
|
|
|
<li><font face="Arial">get_distancePerception est
|
|
abstraite dans
|
|
Robot et redéfinie dans les sous-classes car la distance de
|
|
perception n'est connue que ds ces sous-classes ; au contraire,
|
|
"percevoir" est concrète dans Robot car on peut y produire
|
|
tout
|
|
l'algorithme en faisant appel à getDistancePerception, elle
|
|
retourne un Vector d'Objets des objets perçus (Obstacles,
|
|
robots, bases)</font></li>
|
|
|
|
<li><font face="Arial">getCouleur est
|
|
concrète dans
|
|
"Robot" puisque son algorithme ne dépend pas des
|
|
sous-classes,
|
|
il ne dépend que de l'équipe ( =
|
|
getEquipe().getCouleur() ) ; en revanche, elle est abstraite
|
|
dans
|
|
Objet à cause de Obstacle<br>
|
|
|
|
</font></li>
|
|
|
|
<li><font face="Arial">Comme d'habitude, les
|
|
attributs communs
|
|
à toutes les instances d'une classe sont
|
|
préfixés c_ et static
|
|
(souligné) </font></li>
|
|
|
|
<li><font face="Arial">La classe Simulation est un
|
|
singleton car elle
|
|
n'a qu'une instance (le jeu en cours) et toutes ses
|
|
opérations
|
|
sont collectives<br>
|
|
|
|
</font></li>
|
|
|
|
<li><font face="Arial">recevoirTir est une
|
|
opération abstraite
|
|
de Objet qui est redéfinie dans tous les types d'objets
|
|
susceptibles de recevoir des tirs de foreuses ; son algorithme devra
|
|
détailler ce qui se passe alors (p.ex.
|
|
décrémenter
|
|
la solidité d'une valeur proportionnelle à la
|
|
puissance
|
|
du tir, mais on pourrait aussi complexifier le jeu en tirant
|
|
aléatoirement une avarie comme par ex. diminuer la distance
|
|
de
|
|
perception ou la charge max ). RQ : L'énoncé ne
|
|
dit rien
|
|
du tir sur une base : on pourrait la redéfinir en une
|
|
opération vide.</font></li>
|
|
|
|
<li><font face="Arial">"ajouter un nouveau robot"
|
|
donne naissance
|
|
à 2 méthodes différentes selon qu'il
|
|
s'agit d'une
|
|
foreuse ou d'un porteur (les paramètres sont
|
|
différents
|
|
aussi)</font></li>
|
|
|
|
</ul>
|
|
|
|
<h3>Conception :</h3>
|
|
|
|
<ul>
|
|
|
|
<li>Faites le diagramme de conception, ajoutez une classe "IHM"
|
|
qui
|
|
servira d'interface entre l'utilisateur et le système</li>
|
|
|
|
</ul>
|
|
|
|
<p><font face="Arial">
|
|
Quelques remarques : </font></p>
|
|
|
|
<ul>
|
|
|
|
<li><font face="Arial">Rappel : Dans un DCC les
|
|
relations sans
|
|
flèches sont des relations bi-orientées</font></li>
|
|
|
|
<li><font face="Arial">Alors qu'un diagramme
|
|
d'analyse
|
|
présente peu de variations possibles, il y a
|
|
souvent, au contraire, de nombreux choix de conception
|
|
possibles
|
|
avec des avantages et des inconvénients : Ici par exemple,
|
|
on
|
|
pourrait choisir de mettre un gestionnaire d'instances sur chaque type
|
|
d'objet : obstacle, équipe, chaque équipe
|
|
gérant
|
|
les instances de ses robots, ("Base" étant liée
|
|
à
|
|
"Équipe" en 1..1 elle n'a pas absolument besoin d'une
|
|
gestion
|
|
propre), ceci conduit à orienter les relations des
|
|
gestionnaires
|
|
vers leurs objets.</font></li>
|
|
|
|
</ul>
|
|
|
|
<p><img src="roboC_autre.jpg" border="0" height="437" width="915"></p>
|
|
|
|
<ul>
|
|
|
|
<li><font face="Arial">Je n'ai pas retenu cette
|
|
solution, j'ai choisi
|
|
de faire de "Simulation" un super-gestionnaire d'instances de tous les
|
|
objets car c'est lui de toutes façons qui devra "donner vie"
|
|
à chaque objet en fonction de son type et qui devra
|
|
décider du type d'objet qui se trouve en (x,y) lors de la
|
|
perception par exemple (d'où le "getType" abstrait de
|
|
"Objet") <br>
|
|
|
|
</font></li>
|
|
|
|
<li><font face="Arial">Les relations sont
|
|
orientées dans le
|
|
sens strictement nécessaire pour une bonne
|
|
réutilisation
|
|
p.ex : orienter de Base vers Equipe et non l'inverse permet
|
|
d'évoluer facilement vers une solution "plusieurs bases par
|
|
équipe"<br>
|
|
|
|
</font></li>
|
|
|
|
</ul>
|
|
|
|
<p><img src="RoboC.jpg" border="0" height="735" width="915"></p>
|
|
|
|
|
|
<ul>
|
|
|
|
<li>Faites un diagramme de séquences (cf chapitre 4)
|
|
pour
|
|
chacune des requêtes suivantes :
|
|
<ul>
|
|
|
|
<li>Recharger d'une quantité e les batteries du
|
|
robot
|
|
N°7 de l'équipe "rouge" </li>
|
|
|
|
</ul>
|
|
|
|
<p>NB : Les 3 paramètres de la requête
|
|
sont :
|
|
numéro et couleur du robot considéré
|
|
et
|
|
énergie à recharger mais sur le diagramme de
|
|
séquence, tous les paramètres apparaissent
|
|
toujours comme
|
|
"x" </p>
|
|
|
|
<p><img src="DSeq1.jpg" border="0" height="714" width="749"></p>
|
|
|
|
<p> </p>
|
|
|
|
<ul>
|
|
|
|
<li>Quel est le type (foreuse ou porteur),
|
|
l'équipe et le
|
|
niveau d'énergie du robot situé en x,y ? (on
|
|
supposera
|
|
qu'il n'y en a qu'un)</li>
|
|
|
|
</ul>
|
|
|
|
<p><img src="DSeq2.jpg" border="0" height="794" width="707"></p>
|
|
|
|
<p> </p>
|
|
|
|
<ul>
|
|
|
|
<li>Ajouter un nouveau robot à la
|
|
simulation (avec
|
|
ses paramètres de construction), on supposera qu'il s'agit
|
|
d'un
|
|
porteur</li>
|
|
|
|
</ul>
|
|
|
|
<p><img src="DSeq3.jpg" border="0" height="674" width="1082"></p>
|
|
|
|
</li>
|
|
|
|
<li>Afficher l'équipe gagnante : son nom, sa
|
|
couleur, sa
|
|
quantité de minerai et le nombre de foreuses qui y sont
|
|
rattachées</li>
|
|
|
|
</ul>
|
|
|
|
<p><img src="DSeq4.jpg" border="0" height="794" width="790"></p>
|
|
|
|
<p> </p>
|
|
|
|
<p> </p>
|
|
|
|
<p> </p>
|
|
|
|
</span>
|
|
</body>
|
|
</html>
|