Commit 9f417dcbef59f1ffbba965c3225a460b78dbcb2f

Authored by mandjemb
1 parent 4fce272e

Update rapport

Showing 1 changed file with 126 additions and 81 deletions   Show diff stats
@@ -31,7 +31,7 @@ affichage de plusieurs types de case : @@ -31,7 +31,7 @@ affichage de plusieurs types de case :
31 class Application { 31 class Application {
32 32
33 public static void main(String[] args) { 33 public static void main(String[] args) {
34 - Grille g = new Grille(); 34 + Grid g = new Grid();
35 35
36 g.createCase("b",1); //Ajout case vide 36 g.createCase("b",1); //Ajout case vide
37 g.createCase("a",1,100.0); //Ajout case avec valeur 37 g.createCase("a",1,100.0); //Ajout case avec valeur
@@ -45,19 +45,19 @@ class Application { @@ -45,19 +45,19 @@ class Application {
45 45
46 g.createCase("a",4,new Somme(plageCase1)); //Ajout case avec fonctions 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 List<Case> plageCase2 = new ArrayList<Case>(); // Crée une liste de case 50 List<Case> plageCase2 = new ArrayList<Case>(); // Crée une liste de case
51 plageCase1.add(g.getCase("a",4)); 51 plageCase1.add(g.getCase("a",4));
52 plageCase1.add(g.getCase("a",2)); 52 plageCase1.add(g.getCase("a",2));
53 plageCase1.add(g.getCase("a",3)); 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,13 +90,15 @@ nous allons également une `ArrayList` de `Case`.
90 90
91 #### 1. Methode getValeur 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 ```java 95 ```java
94 96
95 class Grid { 97 class Grid {
96 - Map<String, Case> cases = new HashMap<>(); 98 + Map<String, Cell> cells = new HashMap<>();
97 99
98 double getValue(String column, int line){ 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,10 +118,13 @@ class Cell {
116 118
117 #### 2. Methode getFormuleAsString (acceder au contenu) 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 ```java 124 ```java
120 125
121 class Grid { 126 class Grid {
122 - Map<String, Case> cases = new HashMap<>(); 127 + Map<String, Cell> cells = new HashMap<>();
123 128
124 String getFormuleAsString(String column, int line) { 129 String getFormuleAsString(String column, int line) {
125 return this.getCell(column, line).toString(); 130 return this.getCell(column, line).toString();
@@ -140,15 +145,24 @@ class Cell { @@ -140,15 +145,24 @@ class Cell {
140 return toString(); 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 Cell leftCell; 154 Cell leftCell;
147 Cell rightCell; 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,16 +170,17 @@ class Addition {
156 170
157 #### 3. Methode getDevelopedFormula 171 #### 3. Methode getDevelopedFormula
158 172
  173 +Cette méthode renvoie la formule dévéloppée d'une case.
159 ```java 174 ```java
160 class Grid{ 175 class Grid{
161 - Map<String, Case> cases = new HashMap<>(); 176 + Map<String, Cell> cells = new HashMap<>();
162 177
163 String getDevelopedFormula(String column, int line) { 178 String getDevelopedFormula(String column, int line) {
164 return this.getCell(column,line).getFormuleDeveloppe(); 179 return this.getCell(column,line).getFormuleDeveloppe();
165 } 180 }
166 } 181 }
167 182
168 -class Case{ 183 +class Cell{
169 String column; 184 String column;
170 int line; 185 int line;
171 double value; 186 double value;
@@ -174,13 +189,16 @@ class Case{ @@ -174,13 +189,16 @@ class Case{
174 189
175 String getDevelopedFormula() { 190 String getDevelopedFormula() {
176 if (formula != null) 191 if (formula != null)
177 - return formula.getFormuleDeveoppe(); 192 + return formula.getDevelopedFormula();
178 else 193 else
179 return toString(); 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 class Average { 202 class Average {
185 List<Cell> listCases = new ArrayList<Cell>(); 203 List<Cell> listCases = new ArrayList<Cell>();
186 204
@@ -194,15 +212,24 @@ class Average { @@ -194,15 +212,24 @@ class Average {
194 212
195 #### 4. Methode eval() 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 - Dans Addition : 226 - Dans Addition :
198 227
199 ```java 228 ```java
200 class Addition { 229 class Addition {
201 - Case gauche;  
202 - Case droite;  
203 230
204 double eval() { 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,11 +239,10 @@ class Addition {
212 239
213 ```java 240 ```java
214 class Multiplication { 241 class Multiplication {
215 - Cell gauche;  
216 - Cell droite; 242 +
217 243
218 double eval() { 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,12 +251,10 @@ class Multiplication {
225 - Dans Soustraction : 251 - Dans Soustraction :
226 252
227 ```java 253 ```java
228 -class Soustraction {  
229 - Cell gauche;  
230 - Cell droite; 254 +class Substraction {
231 255
232 double eval() { 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,32 +264,38 @@ class Soustraction {
240 264
241 ```java 265 ```java
242 class Division { 266 class Division {
243 - Cell gauche;  
244 - Cell droite; 267 +
245 268
246 double eval() { 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 else 272 else
250 lève une exception 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 - Dans Moyenne : 287 - Dans Moyenne :
257 288
258 ```java 289 ```java
259 class Average { 290 class Average {
260 - List<Cell> listCases = new ArrayList<Cell>();  
261 291
262 double eval() { 292 double eval() {
263 double val=0; 293 double val=0;
264 294
265 if (listCases.size() != 0) 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 else 299 else
270 lève une exception 300 lève une exception
271 } 301 }
@@ -276,13 +306,12 @@ class Average { @@ -276,13 +306,12 @@ class Average {
276 306
277 ```java 307 ```java
278 class Sum { 308 class Sum {
279 - List<Cell> listCases = new ArrayList<Cell>();  
280 309
281 double eval() { 310 double eval() {
282 double val=0; 311 double val=0;
283 if (listCases.size() != 0) 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 return val; 315 return val;
287 else 316 else
288 lève une exception 317 lève une exception
@@ -291,77 +320,86 @@ class Sum { @@ -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 ```java 327 ```java
297 class Grid { 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 class Cell { 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 ```java 356 ```java
325 class Grid { 357 class Grid {
326 Map<String, Cell> cases = new HashMap<>(); 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 String code = colonne + ligne; 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 class Cell { 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 formule = formula; 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 else 384 else
353 lève une exception 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 Si la case gauche ne contient pas de formule et la case de droite contient une 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 Si la case gauche contient une formule et la case de droite n'en contient pas 404 Si la case gauche contient une formule et la case de droite n'en contient pas
367 rechercher si la case est dans la formule de la case de gauche 405 rechercher si la case est dans la formule de la case de gauche
@@ -374,11 +412,15 @@ class OperationBinaire { @@ -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 List<Cell> listCells; 421 List<Cell> listCells;
380 422
381 - boolean creerCycle(Case case) { 423 + boolean creerCycle(Cell cell) {
382 424
383 Si la case n'est pas dans listCells 425 Si la case n'est pas dans listCells
384 Pour toute les cases dans listCells qui contiennent des formules, regarder si la case est dans la formule 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,12 +460,15 @@ Le schéma ci-dessus nous montre que, l&#39;implémentation est composé de 5 packag
418 460
419 ### MODES D'UTILISATION 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 find src -not \( -path src/kernel/test -prune \) -name \*.java |xargs -i javac -d bin {} -cp src/ 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 java bin/app/Main 473 java bin/app/Main
429 474