Commit 9f417dcbef59f1ffbba965c3225a460b78dbcb2f
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,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'implémentation est composé de 5 packag | @@ -418,12 +460,15 @@ Le schéma ci-dessus nous montre que, l'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 |