Groups | Search | Server Info | Login | Register


Groups > fr.comp.lang.java > #1833

Re: Programme spreadsheet Java

From Yliur <yliur@free.fr>
Newsgroups fr.comp.lang.java
Subject Re: Programme spreadsheet Java
Date 2021-06-15 20:55 +0000
Organization A noiseless patient Spider
Message-ID <sab448$lu8$2@dont-email.me> (permalink)
References <EOqdnayiFsoqvVr9nZ2dnUU798zNnZ2d@giganews.com> <sa9t46$lu8$1@dont-email.me> <D4adnZV0e8w8bVX9nZ2dnUU798zNnZ2d@giganews.com>

Show all headers | View raw


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).

Back to fr.comp.lang.java | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

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