Commit 9f417dcbef59f1ffbba965c3225a460b78dbcb2f

Authored by mandjemb
1 parent 4fce272e

Update rapport

Showing 1 changed file with 126 additions and 81 deletions   Show diff stats
rapport_finale.md
... ... @@ -31,7 +31,7 @@ affichage de plusieurs types de case :
31 31 class Application {
32 32  
33 33 public static void main(String[] args) {
34   - Grille g = new Grille();
  34 + Grid g = new Grid();
35 35  
36 36 g.createCase("b",1); //Ajout case vide
37 37 g.createCase("a",1,100.0); //Ajout case avec valeur
... ... @@ -45,19 +45,19 @@ class Application {
45 45  
46 46 g.createCase("a",4,new Somme(plageCase1)); //Ajout case avec fonctions
47 47  
48   - g.setValeur("b",1,100); //Met la valeur de b1 à 100
  48 + g.setValue("b",1,100); //Met la valeur de b1 à 100
49 49  
50 50 List<Case> plageCase2 = new ArrayList<Case>(); // Crée une liste de case
51 51 plageCase1.add(g.getCase("a",4));
52 52 plageCase1.add(g.getCase("a",2));
53 53 plageCase1.add(g.getCase("a",3));
54 54  
55   - g.setFormule("b",2,new Moyenne(plageCase2)); //Met la formule dans b2
  55 + g.setFormula("b",2,new Moyenne(plageCase2)); //Met la formule dans b2
56 56  
57   - g.getValeur("a",1); //Affichera 100.0
58   - g.getValeur("a",4); //Affichera (100+50+150)=100
59   - g.getFormuleAsString("b",2); //Affichera MOYENNE(a4,a2,a3)
60   - g.getFormuleDeveloppe("b",2);
  57 + g.getValue("a",1); //Affichera 100.0
  58 + g.getValue("a",4); //Affichera (100+50+150)=100
  59 + g.getFormulaAsString("b",2); //Affichera MOYENNE(a4,a2,a3)
  60 + g.getDevelopedFormula("b",2);
61 61 }
62 62 }
63 63 ```
... ... @@ -90,13 +90,15 @@ nous allons également une `ArrayList` de `Case`.
90 90  
91 91 #### 1. Methode getValeur
92 92  
  93 +Cette méthode retourne la valeur d'une case se trouvant dans une grille grâce aux coordonnées de la case.
  94 +Elle utilise la méthode getCell qui permet d'accet à une case qui existe et dans le contraire lève une exeption.
93 95 ```java
94 96  
95 97 class Grid {
96   - Map<String, Case> cases = new HashMap<>();
  98 + Map<String, Cell> cells = new HashMap<>();
97 99  
98 100 double getValue(String column, int line){
99   - return cases.getCell(column, line).getValue();
  101 + return this.getCell(column, line).getValue();
100 102 }
101 103 }
102 104  
... ... @@ -116,10 +118,13 @@ class Cell {
116 118  
117 119 #### 2. Methode getFormuleAsString (acceder au contenu)
118 120  
  121 +Cette méthode permet de retourner le contenu d'une case. Si elle contient une formule, on retourne la formule simple et dans le cas contraire son nom
  122 +pou dire qu'elle ne contient pas de formule mais une valeur.
  123 +
119 124 ```java
120 125  
121 126 class Grid {
122   - Map<String, Case> cases = new HashMap<>();
  127 + Map<String, Cell> cells = new HashMap<>();
123 128  
124 129 String getFormuleAsString(String column, int line) {
125 130 return this.getCell(column, line).toString();
... ... @@ -140,15 +145,24 @@ class Cell {
140 145 return toString();
141 146 }
142 147 }
  148 +```
  149 +**Exemple pour Addition** (Opération Binaire)
143 150  
144   -// Exemple pour Addition
145   -class Addition {
  151 +La classe BinaryOperation implémente la methode toString() en, récuperant l'opérateur qui est définit dans la méthode getOperator() de chaque classe qui hérite d'elle.
  152 +```java
  153 +class BinaryOperation {
146 154 Cell leftCell;
147 155 Cell rightCell;
148 156  
149   - String toString() {
150   - return leftCell.toString() + "+" + rightCell.toString();
151   - }
  157 + public String toString() {
  158 + return "(" + this.leftCell.getId() + this.getOperator() + this.rightCell.getId() + ")";
  159 + }
  160 +}
  161 +class Addition {
  162 +
  163 + public String getOperator() {
  164 + return "+";
  165 + }
152 166 }
153 167  
154 168 ```
... ... @@ -156,16 +170,17 @@ class Addition {
156 170  
157 171 #### 3. Methode getDevelopedFormula
158 172  
  173 +Cette méthode renvoie la formule dévéloppée d'une case.
159 174 ```java
160 175 class Grid{
161   - Map<String, Case> cases = new HashMap<>();
  176 + Map<String, Cell> cells = new HashMap<>();
162 177  
163 178 String getDevelopedFormula(String column, int line) {
164 179 return this.getCell(column,line).getFormuleDeveloppe();
165 180 }
166 181 }
167 182  
168   -class Case{
  183 +class Cell{
169 184 String column;
170 185 int line;
171 186 double value;
... ... @@ -174,13 +189,16 @@ class Case{
174 189  
175 190 String getDevelopedFormula() {
176 191 if (formula != null)
177   - return formula.getFormuleDeveoppe();
  192 + return formula.getDevelopedFormula();
178 193 else
179 194 return toString();
180 195 }
181 196 }
  197 +```
  198 +
  199 +**Exemple de la méthode getDevelopedFormula() pour la class Average** (moyenne)
182 200  
183   -Average
  201 +```java
184 202 class Average {
185 203 List<Cell> listCases = new ArrayList<Cell>();
186 204  
... ... @@ -194,15 +212,24 @@ class Average {
194 212  
195 213 #### 4. Methode eval()
196 214  
  215 +Cette méthode permet de retourner le résultat d'un calacul avec des opérations binaires ou des fonctions.
  216 +
  217 +##### Opération binaires
  218 +
  219 +class BinaryOperation {
  220 + Cell leftCell;
  221 + Cell rightCell;
  222 +
  223 +}
  224 +Les classes Addition,Multiplication,Substraction et Division héritent de la classe BinaryOpération et utilisent donc ses attributs leftCell et rightCell.
  225 +
197 226 - Dans Addition :
198 227  
199 228 ```java
200 229 class Addition {
201   - Case gauche;
202   - Case droite;
203 230  
204 231 double eval() {
205   - return gauche.getValeur() + droite.getValeur();
  232 + return leftCell.getValue() + rightCell.getValue();
206 233 }
207 234 }
208 235  
... ... @@ -212,11 +239,10 @@ class Addition {
212 239  
213 240 ```java
214 241 class Multiplication {
215   - Cell gauche;
216   - Cell droite;
  242 +
217 243  
218 244 double eval() {
219   - return gauche.getValeur() * droite.getValeur();
  245 + return leftCell.getValue() * rightCell.getValue();
220 246 }
221 247 }
222 248 ```
... ... @@ -225,12 +251,10 @@ class Multiplication {
225 251 - Dans Soustraction :
226 252  
227 253 ```java
228   -class Soustraction {
229   - Cell gauche;
230   - Cell droite;
  254 +class Substraction {
231 255  
232 256 double eval() {
233   - return gauche.getValeur() - droite.getValeur();
  257 + return leftCell.getValue() - rightCell.getValue();
234 258 }
235 259 }
236 260  
... ... @@ -240,32 +264,38 @@ class Soustraction {
240 264  
241 265 ```java
242 266 class Division {
243   - Cell gauche;
244   - Cell droite;
  267 +
245 268  
246 269 double eval() {
247   - if (droite.getValeur() != 0)
248   - return gauche.getValeur() / droite.getValeur();
  270 + if (droite.getValue() != 0)
  271 + return gauche.getValue() / droite.getValue();
249 272 else
250 273 lève une exception
251 274 }
252 275 }
253 276  
254 277 ```
  278 +##### Fonctions
  279 +
  280 +class Function {
  281 + List<Cell> listCells;
  282 +
  283 +}
  284 +Les classes Average et Sum héritent de la classe BinaryOpération et utilisent donc son attribut listCells.
  285 +
255 286  
256 287 - Dans Moyenne :
257 288  
258 289 ```java
259 290 class Average {
260   - List<Cell> listCases = new ArrayList<Cell>();
261 291  
262 292 double eval() {
263 293 double val=0;
264 294  
265 295 if (listCases.size() != 0)
266   - for(int i=0; i<listCases.size(); i++)
267   - val += listCases.get(i).getValeur();
268   - return val / listCases.size();
  296 + for(int i=0; i<listCells.size(); i++)
  297 + val += listCells.get(i).getValue();
  298 + return val / listCells.size();
269 299 else
270 300 lève une exception
271 301 }
... ... @@ -276,13 +306,12 @@ class Average {
276 306  
277 307 ```java
278 308 class Sum {
279   - List<Cell> listCases = new ArrayList<Cell>();
280 309  
281 310 double eval() {
282 311 double val=0;
283 312 if (listCases.size() != 0)
284   - for(int i=0; i<listCases.size(); i++)
285   - val += listCases.get(i).getValeur();
  313 + for(int i=0; i<listCells.size(); i++)
  314 + val += listCells.get(i).getValue();
286 315 return val;
287 316 else
288 317 lève une exception
... ... @@ -291,77 +320,86 @@ class Sum {
291 320  
292 321 ```
293 322  
294   -#### 5. Methode setValeur
  323 +#### 5. Methode setValue
  324 +
  325 +Lorsque l'on modifie une valeur d'une case, on met à jour la valeur des cases qui utilisent la case.
295 326  
296 327 ```java
297 328 class Grid {
298   - Map<String, Case> cases = new HashMap<>();
  329 + Map<String, Cell> cells = new HashMap<>();
299 330  
300   - void setValeur(String colonne, int ligne, double value) {
301   - String code = colonne + ligne;
302   - return cases.get(code).setValeur(value);
303   - }
  331 + void setValue(String column, int line, double value) {
  332 + this.getCell(column, line).setValue(value);
  333 + }
304 334 }
305 335  
306 336 class Cell {
307   - String colonne;
308   - int ligne;
309   - double valeur;
310   - Formule formule;
311   - List<Cell> utiliseDans = new ArrayList<Cell>();
  337 + String column;
  338 + int line;
  339 + double value;
  340 + Formula formula;
  341 + List<Cell> usedIn = new ArrayList<Cell>();
312 342  
313   - void setValeur(double value) {
314   - valeur = value;
315   - for(int i=0; i<utiliseDans.size(); i++)
316   - utiliseDans.get(i).updateValeur();
  343 + void setValue(double valeur) {
  344 + value = valeur;
  345 + for(int i=0; i<usedIn.size(); i++)
  346 + usedIn.get(i).updateValue();
317 347 }
318 348 }
319 349  
320 350 ```
321 351  
322   -#### 5. Methode setFormule
323 352  
  353 +#### 5. Methode setFormula
  354 +
  355 +Cette méthode assigne une formule à une case en étant sûre qu'un cycle n'est pas créée.
324 356 ```java
325 357 class Grid {
326 358 Map<String, Cell> cases = new HashMap<>();
327 359  
328   - void setFormule(String colonne, int ligne, Formule formule) {
  360 + void setFormula(String column, int line, Formula formula) {
329 361 String code = colonne + ligne;
330   - return cases.get(code).setFormule(formula);
  362 + this.getCell(column, line).setFormula(formula);
331 363 }
332 364 }
333 365  
334 366  
335 367 class Cell {
336   - String colonne;
337   - int ligne;
338   - double valeur;
339   - Formule formule;
340   - List<Cell> utiliseDans = new ArrayList<Cell>();
  368 + String column;
  369 + int line;
  370 + double value;
  371 + Formula formula;
  372 + List<Cell> usedIn = new ArrayList<Cell>();
341 373  
342   - void updateValeur() {
343   - valeur = formule.eval();
  374 + void updateValue() {
  375 + valeur = formula.eval();
344 376 }
345 377  
346   - void setFormule(Formule formula) {
347   - if (!formula.creerCycle(this))
  378 + void setFormula(Formula formula) {
  379 + if (!formula.createCycle(this))
348 380 formule = formula;
349   - updateValeur();
350   - for(int i=0; i<utiliseDans.size(); i++)
351   - utiliseDans.get(i).updateValeur();
  381 + updateValue();
  382 + for(int i=0; i<usedIn.size(); i++)
  383 + usedIn.get(i).updateValue();
352 384 else
353 385 lève une exception
354 386 }
355 387 }
  388 +```
  389 +#### 5. Methode createCycle
  390 +
  391 +Cette méthode vérifie si on créée un cycle direct ou indirece.La façon de la définir est differente si on a une opération binaire ou une focntion.
  392 +
  393 +##### Opération binaire
356 394  
357   -BinaryOperation
358   -class OperationBinaire {
359   - Cell gauche;
360   - Cell droite;
  395 +```java
  396 +class BinaryOperation {
  397 + Cell leftCell;
  398 + Cell rightCell;
361 399  
362   - boolean creerCycle(Case case) {
  400 + boolean createCycle(Cell cell) {
363 401 Si la case gauche ne contient pas de formule et la case de droite contient une
364   - rechercher si la case est dans la formule de la case de droite
  402 + rechercher si la case est dans la formule de la case de droite
365 403  
366 404 Si la case gauche contient une formule et la case de droite n'en contient pas
367 405 rechercher si la case est dans la formule de la case de gauche
... ... @@ -374,11 +412,15 @@ class OperationBinaire {
374 412 }
375 413 }
376 414  
377   -Function
378   -class Fonction {
  415 +```
  416 +
  417 +##### Fonction
  418 +
  419 +```java
  420 +class Function {
379 421 List<Cell> listCells;
380 422  
381   - boolean creerCycle(Case case) {
  423 + boolean creerCycle(Cell cell) {
382 424  
383 425 Si la case n'est pas dans listCells
384 426 Pour toute les cases dans listCells qui contiennent des formules, regarder si la case est dans la formule
... ... @@ -418,12 +460,15 @@ Le schéma ci-dessus nous montre que, l&#39;implémentation est composé de 5 packag
418 460  
419 461 ### MODES D'UTILISATION
420 462  
  463 +Concernant les commandes de compilation et d'exécution, sous des logiciels comme Eclipse ou IntelliJ par exemple, juste un clique bouton suffit.
  464 +
  465 +Par contre, dans le cas contraire, il faut se placer dans à la raicne du repertoire contenant les fichiers et lancer les commandes suivantes :
421 466  
422   -** Commande de compilation**:
  467 +**Commande de compilation**:
423 468  
424 469 find src -not \( -path src/kernel/test -prune \) -name \*.java |xargs -i javac -d bin {} -cp src/
425 470  
426   -** Commande d'exécution**:
  471 +**Commande d'exécution**:
427 472  
428 473 java bin/app/Main
429 474  
... ...