diff --git a/rapport.md b/rapport.md index d2c41fd..cc789d1 100644 --- a/rapport.md +++ b/rapport.md @@ -1,32 +1,36 @@ ---- -title: "rapport_analyse_andjembe_taniel" -author: "ANDJEMBE_TANIEL" -date: "5 juin 2019" -output: html_document ---- -> # ** RAPPORT ANALYSE ET CONCEPTION ** +# RAPPORT ANALYSE ET CONCEPTION > ANDJEMBE Maksoudath, TANIEL Rémi -# SCHEMA UML +Le but du projet est de réaliser un tableur "basique" mais facilement +extensible, l'application sera divisée en 2 parties : +* le noyau +* la partie graphique +Le noyau s'occupera de toutes les opérations de notre grille, les cases +ne pourront contenir que des réels ou des formules(opération binaire ou +des fonctions acceptant des plages de cases) ![UML](uml.png) -# PSEUDO-JAVA CREATION GRILLE,CASES +### SCHEMA UML -Pour créer une grille avec des cases on fera : +Voici le schéma UML de notre application, les classes et méthodes +abstraites sont en italique : -```java +### PSEUDO-JAVA CREATION GRILLE,CASES + +Voici un exemple de création d'une grille et de l'ajout / modification / +affichage de plusieurs types de case : +```java Grille g= new Grille(); g.addCase("b",1); //Ajout case vide - g.addCase("a",1,100.0); //Ajout case avec valeur g.addCase("a",2,50.0); //Ajout case avec valeur g.addCase("a",3,new Addition(g.get("a2"),g.get("a1"))); //Ajout case avec operation binaire -ArrayList plageCase1 = new ArrayList(); // Crée une liste de case +List plageCase1 = new ArrayList(); // Crée une liste de case plageCase1.add(g.get("a1")); plageCase1.add(g.get("a2")); plageCase1.add(g.get("a3")); @@ -35,7 +39,7 @@ g.addCase("a",4,new Somme(plageCase1)); //Ajout case avec fonctions g.setValeur("b",1,100); //Met la valeur de b1 à 100 -ArrayList plageCase2 = new ArrayList(); // Crée une liste de case +List plageCase2 = new ArrayList(); // Crée une liste de case plageCase1.add(g.get("a4")); plageCase1.add(g.get("a2")); plageCase1.add(g.get("a3")); @@ -49,26 +53,47 @@ g.getFormuleDeveloppe("b",2) //Affichera MOYENNE(Somme(a1,a2,a3),a2,(a1+a2)) ``` +### CHOIX STRUCTURE DE DONNÉES - -# CHOIX STRUCTURE DE DONNÉES - -Une collection peut etre: - * des tableaux, - * des listes, - * des maps - * ou des Sets. +Nous devons choisir une structure de donnée pour stocker les cases dans +notre grille, nous savons déjà que nous allons utiliser ne collection +pour les stocker,voici celles que nous connaissons: +* des tableaux +* des listes +* des maps +* des sets -D'après le schéma UML ci-dessus: - -* 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). - -* 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. - -* Une fonction est utilisé à partir de plusieurs cases aussi, en utilisant la meme raison ci-dessus, on stockera dans une liste de cases. - - -# METHODES ESSENTIELLES EN PSEUDO-JAVA +D'après le schéma UML ci-dessus, nous allons donc utiliser une `HashMap` +pour stocker les cases de notre grille : +* Pour rechercher une case et, effectuer des opérations dessus ce sera +plus facile, la clé de la Map sera une chaine de caractère (String) qui +représente la coordonnée de cette case (c'est-à-dire la concaténation +du nom de ligne et de l'indice de la colonne, exemple "A1", "B9", etc...) + +Une case peut etre utilisée dans plusieurs autres cases, on ne sait +pas le nombre d'autres cases où elle sera utilisée, on stockera donc +cette donée dans une `ArrayList` de `Case`. + +Certaines fonctions (`Moyenne`, `Somme`) utilise également une plage de case, pour stocker ces cases, +nous allons également une `ArrayList` de `Case`. + +### METHODES ESSENTIELLES EN PSEUDO-JAVA + +### LISTE DE TESTS + +Afin de s'assurer de la maintenabilité de notre code et de la qualité de +celui-ci, nous allons réaliser plusieurs tests sur les différentes méthodes +que nous allons programmé dans notre application, voici quelques +exemples : +* Création d'une case avec une valeur fixe +* Création d'une case avec une formule d' `Opération binaire` et une +fonction comme `Moyenne` +* Modification d'une case avec une valeur sans qu'elle soit utilisée dans +une autre case +* Modification d'une case avec une valeur utilisée dans une autre case +* Vérification qu'une erreur se lève lors de la création des 2 types +de cycles (direct et indirect) +* Renvoie de la formule dévéloppée d'une case avec une formule assez compliqué #### 1. Methode getValeur diff --git a/uml.png b/uml.png index 60d7ed7..c3a1c7f 100644 Binary files a/uml.png and b/uml.png differ -- libgit2 0.21.2