Commit 72a4b8219b1413daccbc7897cee2b092c5bb1f4e
1 parent
48bf0ff8
merge
Showing
2 changed files
with
57 additions
and
32 deletions
Show diff stats
rapport.md
1 | ---- | ||
2 | -title: "rapport_analyse_andjembe_taniel" | ||
3 | -author: "ANDJEMBE_TANIEL" | ||
4 | -date: "5 juin 2019" | ||
5 | -output: html_document | ||
6 | ---- | ||
7 | -> # ** RAPPORT ANALYSE ET CONCEPTION ** | 1 | +# RAPPORT ANALYSE ET CONCEPTION |
8 | 2 | ||
9 | > ANDJEMBE Maksoudath, TANIEL Rémi | 3 | > ANDJEMBE Maksoudath, TANIEL Rémi |
10 | 4 | ||
11 | -# SCHEMA UML | 5 | +Le but du projet est de réaliser un tableur "basique" mais facilement |
6 | +extensible, l'application sera divisée en 2 parties : | ||
7 | +* le noyau | ||
8 | +* la partie graphique | ||
12 | 9 | ||
10 | +Le noyau s'occupera de toutes les opérations de notre grille, les cases | ||
11 | +ne pourront contenir que des réels ou des formules(opération binaire ou | ||
12 | +des fonctions acceptant des plages de cases) | ||
13 | ![UML](uml.png) | 13 | ![UML](uml.png) |
14 | 14 | ||
15 | -# PSEUDO-JAVA CREATION GRILLE,CASES | 15 | +### SCHEMA UML |
16 | 16 | ||
17 | -Pour créer une grille avec des cases on fera : | 17 | +Voici le schéma UML de notre application, les classes et méthodes |
18 | +abstraites sont en italique : | ||
18 | 19 | ||
19 | -```java | 20 | +### PSEUDO-JAVA CREATION GRILLE,CASES |
21 | + | ||
22 | +Voici un exemple de création d'une grille et de l'ajout / modification / | ||
23 | +affichage de plusieurs types de case : | ||
20 | 24 | ||
25 | +```java | ||
21 | Grille g= new Grille(); | 26 | Grille g= new Grille(); |
22 | 27 | ||
23 | g.addCase("b",1); //Ajout case vide | 28 | g.addCase("b",1); //Ajout case vide |
24 | - | ||
25 | g.addCase("a",1,100.0); //Ajout case avec valeur | 29 | g.addCase("a",1,100.0); //Ajout case avec valeur |
26 | g.addCase("a",2,50.0); //Ajout case avec valeur | 30 | g.addCase("a",2,50.0); //Ajout case avec valeur |
27 | g.addCase("a",3,new Addition(g.get("a2"),g.get("a1"))); //Ajout case avec operation binaire | 31 | g.addCase("a",3,new Addition(g.get("a2"),g.get("a1"))); //Ajout case avec operation binaire |
28 | 32 | ||
29 | -ArrayList<Case> plageCase1 = new ArrayList<Case>(); // Crée une liste de case | 33 | +List<Case> plageCase1 = new ArrayList<Case>(); // Crée une liste de case |
30 | plageCase1.add(g.get("a1")); | 34 | plageCase1.add(g.get("a1")); |
31 | plageCase1.add(g.get("a2")); | 35 | plageCase1.add(g.get("a2")); |
32 | plageCase1.add(g.get("a3")); | 36 | plageCase1.add(g.get("a3")); |
@@ -35,7 +39,7 @@ g.addCase("a",4,new Somme(plageCase1)); //Ajout case avec fonctions | @@ -35,7 +39,7 @@ g.addCase("a",4,new Somme(plageCase1)); //Ajout case avec fonctions | ||
35 | 39 | ||
36 | g.setValeur("b",1,100); //Met la valeur de b1 à 100 | 40 | g.setValeur("b",1,100); //Met la valeur de b1 à 100 |
37 | 41 | ||
38 | -ArrayList<Case> plageCase2 = new ArrayList<Case>(); // Crée une liste de case | 42 | +List<Case> plageCase2 = new ArrayList<Case>(); // Crée une liste de case |
39 | plageCase1.add(g.get("a4")); | 43 | plageCase1.add(g.get("a4")); |
40 | plageCase1.add(g.get("a2")); | 44 | plageCase1.add(g.get("a2")); |
41 | plageCase1.add(g.get("a3")); | 45 | plageCase1.add(g.get("a3")); |
@@ -49,26 +53,47 @@ g.getFormuleDeveloppe("b",2) //Affichera MOYENNE(Somme(a1,a2,a3),a2,(a1+a2)) | @@ -49,26 +53,47 @@ g.getFormuleDeveloppe("b",2) //Affichera MOYENNE(Somme(a1,a2,a3),a2,(a1+a2)) | ||
49 | 53 | ||
50 | ``` | 54 | ``` |
51 | 55 | ||
56 | +### CHOIX STRUCTURE DE DONNÉES | ||
52 | 57 | ||
53 | - | ||
54 | -# CHOIX STRUCTURE DE DONNÉES | ||
55 | - | ||
56 | -Une collection peut etre: | ||
57 | - * des tableaux, | ||
58 | - * des listes, | ||
59 | - * des maps | ||
60 | - * ou des Sets. | 58 | +Nous devons choisir une structure de donnée pour stocker les cases dans |
59 | +notre grille, nous savons déjà que nous allons utiliser ne collection | ||
60 | +pour les stocker,voici celles que nous connaissons: | ||
61 | +* des tableaux | ||
62 | +* des listes | ||
63 | +* des maps | ||
64 | +* des sets | ||
61 | 65 | ||
62 | -D'après le schéma UML ci-dessus: | ||
63 | - | ||
64 | -* Une grille peut contenir plusieurs cases,nous avons effectuer le choix des Maps car, pour rechercher une case et, effectuer des opérations dessus ce sera plus facile (son nom c'est-à-dire concaténation du nom de ligne et colonne sera la clé de notre map). | ||
65 | - | ||
66 | -* Une case peut etre utilisée dans plusieurs cases, on ne sait pas le nombre d'autres cases où il sera utilisé, il n'y a pas necessité d'avoir un indice, on le stockera dans une liste. | ||
67 | - | ||
68 | -* Une fonction est utilisé à partir de plusieurs cases aussi, en utilisant la meme raison ci-dessus, on stockera dans une liste de cases. | ||
69 | - | ||
70 | - | ||
71 | -# METHODES ESSENTIELLES EN PSEUDO-JAVA | 66 | +D'après le schéma UML ci-dessus, nous allons donc utiliser une `HashMap` |
67 | +pour stocker les cases de notre grille : | ||
68 | +* Pour rechercher une case et, effectuer des opérations dessus ce sera | ||
69 | +plus facile, la clé de la Map sera une chaine de caractère (String) qui | ||
70 | +représente la coordonnée de cette case (c'est-à-dire la concaténation | ||
71 | +du nom de ligne et de l'indice de la colonne, exemple "A1", "B9", etc...) | ||
72 | + | ||
73 | +Une case peut etre utilisée dans plusieurs autres cases, on ne sait | ||
74 | +pas le nombre d'autres cases où elle sera utilisée, on stockera donc | ||
75 | +cette donée dans une `ArrayList` de `Case`. | ||
76 | + | ||
77 | +Certaines fonctions (`Moyenne`, `Somme`) utilise également une plage de case, pour stocker ces cases, | ||
78 | +nous allons également une `ArrayList` de `Case`. | ||
79 | + | ||
80 | +### METHODES ESSENTIELLES EN PSEUDO-JAVA | ||
81 | + | ||
82 | +### LISTE DE TESTS | ||
83 | + | ||
84 | +Afin de s'assurer de la maintenabilité de notre code et de la qualité de | ||
85 | +celui-ci, nous allons réaliser plusieurs tests sur les différentes méthodes | ||
86 | +que nous allons programmé dans notre application, voici quelques | ||
87 | +exemples : | ||
88 | +* Création d'une case avec une valeur fixe | ||
89 | +* Création d'une case avec une formule d' `Opération binaire` et une | ||
90 | +fonction comme `Moyenne` | ||
91 | +* Modification d'une case avec une valeur sans qu'elle soit utilisée dans | ||
92 | +une autre case | ||
93 | +* Modification d'une case avec une valeur utilisée dans une autre case | ||
94 | +* Vérification qu'une erreur se lève lors de la création des 2 types | ||
95 | +de cycles (direct et indirect) | ||
96 | +* Renvoie de la formule dévéloppée d'une case avec une formule assez compliqué | ||
72 | 97 | ||
73 | 98 | ||
74 | #### 1. Methode getValeur | 99 | #### 1. Methode getValeur |
uml.png