Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > fr.comp.lang.java > #1834
| Newsgroups | fr.comp.lang.java |
|---|---|
| Subject | Re: Programme spreadsheet Java |
| From | henryd <nospam_henry.dossot@gmail.com.invalid> |
| References | <EOqdnayiFsoqvVr9nZ2dnUU798zNnZ2d@giganews.com> <sa9t46$lu8$1@dont-email.me> <D4adnZV0e8w8bVX9nZ2dnUU798zNnZ2d@giganews.com> <sab448$lu8$2@dont-email.me> |
| Organization | !No_Organization! |
| Message-ID | <ie2dnZe_q4AucVf9nZ2dnUU798zNnZ2d@giganews.com> (permalink) |
| Date | 2021-06-17 01:33 -0500 |
Le mardi 15 Juin 2021 à 22:55 par Yliur :
> Le Tue, 15 Jun 2021 13:25:37 -0500, henryd a écrit :
>
>> Pour répondre aux différents points dans ton message
>> précédent :
>>
>> - Pour le tableau gridArray en tant qu’attribut de Grid tu as raison
>> ça
>> m’a l’air beaucoup plus simple. J’étais partie sur
>> une classe Node afin
>> de pratiquer les classes mais bon pas forcément judicieux. Je vais
>> essayer de voir pour faire une modification.
>>
>>
> Tu peux tout Í fait garder cette classe, simplement il est plus
> pratique
> d'accéder aux cellules par leurs coordonnées que de suivre des
> liens
> entre elles. Au lieu d'une méthode traverse qui parcourt les cellules,
> tu
> aurais une méthode plus simple qui contiendrait
> return gridArray[i][j] ;
>
> Par contre tu pourrais peut-être fusionner Node et Value, pour
> simplifier. Ce sont bien deux concepts distincts, mais pour chaque
> cellule il y a une valeur et réciproquement, donc il est possible de les
> fusionner si c'est plus simple.
>
>
>> - Pour l’importation du fichier dans le tableur, j’ai parsé
>> le contenu
>> du fichier et importé les différentes valeurs dans un ArrayList
>> puis je
>> l’ai envoyé Í la méthode importFile afin de
>> les transférer dans l’objet
>> Node. Effectivement, comme tu l’as suggéré,
>> peut-être qu’on pourrait
>> juste enregistrer cet ArrayList comme attribut de la classe Grid et
>> aussi remplacer les valeurs de l’ArrayList par l’objet Valeur
>> ayant les
>> attributs : tag, dval, sval utiles par la suite ?
>>
>>
> Je pensais plutÍ´t Í mettre tout le code de lecture
> du fichier dans
> importFile et Í remplir directement gridArray avec des objets
> Node/
> Value : tu fais déjÍ les deux boucles sur les lignes et sur
> les éléments
> de la ligne quand tu lis le fichier, il te suffirait de remplir les cases
> au fur et Í mesure, au lieu de passer par des structures
> intermédiaires.
>
>
>> - Pour l’analyse syntaxique des formules dans les cellules, je pensais
>> faire une Regex Pattern.compile("\\+", Pattern.CASE_INSENSITIVE);
>> afin
>> de détecter les opérations Í faire dans les
>> cellules. Une fois
>> l’opération détectée, faire le calcul et stocker le
>> résultat dans
>> l’attribut dval de la classe Value. Est ce que ça te semble une
>> bonne
>> solution ?
>>
>>
> En relisant la consigne, je m'aperçois que les calculs en question ne
> consistent qu'en une seule opération, ça ne peut pas être
> complexe. Ça
> rend le projet plus abordable que ce que je pensais.
>
> Je ne sais pas très calé en expressions rationnelles. Si tu sais
> t'en
> servir, c'est bien. Sinon les opérations simples de manipulation des
> chaͮnes suffiront.
>
> Il te faut effectivement détecter l'opérateur (opérateur
> arithmétique ou
> fonction Somme/Moy), extraire les opérandes et réaliser
> l'opération
> correspondante.
>
>
>> - Concernant la modélisation des liens entre les cellules, pour
>> gérer
>> les dépendances, d’après ce qui était
>> conseillé dans le projet, il
>> faudrait créer en attribut de chaque cellule (ou de la classe Value),
>> une liste avec les coordonnées des cellules qui dépendent de C.
>> Pour
>> détecter un cycle, il faut vérifier, Í chaque fois
>> que l’utilisateur
>> rentre une valeur, s’il y une référence
>> déjÍ présente dans la liste des
>> cellules qui dépendent de C. Si c’est le cas, ne pas autoriser
>> Í la
>> renseigner. Idem, pour la mise Í jour automatique d’une
>> cellule. A
>> chaque fois qu’une cellule est modifier, il faut mettre Í
>> jour les
>> cellules qui sont renseignées dans la liste des cellules qui
>> dépendent
>> d’elle et ainsi de suite (la valeur du calcul est stockée dans
>> l’attribut dval de l’objet Value et la valeur texte (formule) dans
>> l’attribut sval ce qui permet de pouvoir recalculer la formule). Est ce
>> que cette algorithme te semble judicieux pour modéliser les liaisons
>> entre les cellules ?
>>
>>
> Vois-tu comment fonctionne la récursion ? Parce que le cycle peut
> impliquer un paquet de cellules, il faut remonter les cellules pour
> vérifier qu'il n'y a aucun cycle d'aucune longueur. Sais-tu comment
> faire
> ça ?
>
>
>> - Dans le point 5 du projet, il est demandé que le programme prenne en
>> charge les références de cellules relatives avec le signe $.
>> Pour
>> calculer, la position d'une cellule ayant une référence relative
>> $(1,2)
>> dans la cellule (2,3) par exemple est la position absolue : (1,1) (1
>> ligne plus haute et 2 colonnes vers la gauche), est bien cela ? Car je
>> n’arrive pas Í comprendre l’exemple qu’ils
>> donnent dans l’explication.
>>
>>
> C'est ce que je comprends. C'est bizarre de compter comme ça par contre,
> j'aurais plutÍ´t considéré les valeurs positives de
> décalage vers le bas
> et la droite.
>
>> Idem que dans l'affichage du contenu de la cellule
>> référencée de manière
>> absolue, il faut afficher sa valeur dans la cellule de destination pour
>> pouvoir faire le calcul, je ferai donc la même technique que celle
>> utilisée pour les références absolues c’est
>> Í dire avec le tableau des
>> références qui dépendent de la cellules
>>
>>
> Oui.
>
>
>> - Je t’invite Í me dire s’il y a d’autres
>> points importants que je
>> pourrais améliorer dans mon code ou qu'il pourrait être
>> intéressant
>> d'approfondir dans le projet :)
>>
>>
> Ça me paraÍ®t déjÍ beaucoup de travail...
> :)
>
> Il reste pas mal d'endroits o͹ tu ne laisses pas filer les
> exceptions,
> c'est dommage en cas de bug.
>
> Note que si tu laisses filer les exceptions le try/catch ou try-finally
> n'est pas nécessaire (sauf dans le cas o͹ tu utilises la
> try pour gérer
> automatiquement la fermeture de flux, comme InputStream).
Hello Yliur,
Merci beaucoup pour toutes tes explications très claires :)
- Concernant la mise en place d’une méthode return gridArray[i][j] au lieu de la
méthode traverse dans la classe Grid effectivement cela simplifierait. Est ce
qu’il faut aussi que je mette gridArray[i][j] en tant qu’attribut de la classe
Grid car je ne pense pas que ce soit le cas ? Pour la fusion de Node et Value,
je pourrais mettre les attributs de Value (dval, sval, tag) dans Node afin
d’utiliser uniquement Node. Effectivement pour l’import du fichier, je pourrais
remplir la liste gridArray avec les Node/ Value directement dans la fonction
loadFile lorsque je parcours la liste. Est ce que ces points te semblent
corrects ?
- J’ai implémenté le code avec les expressions rationnelles pour détecter les
références, opérandes et les opérations à faire dans une cellule et réaliser les
calculs. Je sais que ça ne doit pas être très optimisé ou lisible mais ça m’a
l’air de fonctionner. Peut être faire une boucle et une fonction pour éviter de
répéter à chaque fois Pattern, Matcher ?
- Pour réaliser le cycle grâce aux fonctions récursives : remonter les cellules
pour vérifier qu’il n’y a aucun cycle d’aucune longueur, je ne suis pas encore
très à l’aise avec les fonctions récursives, est ce que tu aurais une idée de
comment faire s’il te plait ?
f([c]) {
f([c])
}
- Pour les coordonnées relatives, je penses qu’il n’y aura pas beaucoup de
difficultés, une fois que la méthode gridArray[i][j] sera implémenté, il faudra
retrouver la position relative grâce à la position de cellule d’origine donc
peut être créer une méthode convertRelativeToAbsolue.
Merci beaucoup pour ton aide :)
Bien cordialement,
Henry
Back to fr.comp.lang.java | Previous | Next — Previous in thread | Next in thread | Find similar
Programme spreadsheet Java henryd <nospam_henry.dossot@gmail.com.invalid> - 2021-06-14 04:26 -0500
Re: Programme spreadsheet Java Yliur <yliur@free.fr> - 2021-06-15 09:49 +0000
Re: Programme spreadsheet Java henryd <nospam_henry.dossot@gmail.com.invalid> - 2021-06-15 13:25 -0500
Re: Programme spreadsheet Java Yliur <yliur@free.fr> - 2021-06-15 20:55 +0000
Re: Programme spreadsheet Java henryd <nospam_henry.dossot@gmail.com.invalid> - 2021-06-17 01:33 -0500
Re: Programme spreadsheet Java Yliur <yliur@free.fr> - 2021-06-17 08:35 +0000
csiph-web