Wiki ~ namok.be

LAJ1/P1 - Java1 - Projet1 - Shop - Précisions

FAQ

Voici quelques questions déjà posées … peut-être y trouverez vous votre bonheur

Question: Le Data.java de pbt est-t-il compatible avec Windows?

Je n'arrive pas à le compiler dans le cmd et, avec NetBeans il n'arrive pas à générer les fichiers. @Mathieu A.

Oui, la classe Data est “compatible Windows”. Le problème vient certainement d'ailleurs … On peut en discuter sur fora si tu veux. –Pbt

MBA– Ca dépend ce qu'on entend par compatible : le java est bien compatible, mais la manière dont sont crées les noms de fichiers ne l'est pas. Vous pouvez remplacer System.getEnv (“HOME”)+ … par

    private final static String FILENAME_FAVORITES = 
         System.getenv("HOMEDRIVE")+System.getenv("HOMEPATH") +
    	               "/.shop_favoriteslist.dat" ; 
    private final static String FILENAME_SHOPPING =  
         System.getenv("HOMEDRIVE")+System.getenv("HOMEPATH") + 
    	               "/.shop_shoppinglist.dat" ; 

en tous cas pour XP ;-) . La commande set vous permet d'en savoir plus … voir ci-dessous pour Vista –MBA

Il faudrait effectivement touver un moyen plus portable … –Pbt

A propos des tests

On vous demande de faire des tests unitaires pour les classes FavoriteList et ShoppingList

  • Pour FavoriteList pas de problème : Après l'ajout d'un élément, on peut utiliser la méthode get() pour vérifier qu'il s'y trouve bien.
  • Pour ShoppingList c'est un peu moins simple car on ne dispose pas de méthode publique pour interroger l'ojbet.

Deux solutions :

  • Effectuer les tests DANS la classe ShoppingList ce qui donne accès aux attributs privés.
  • Garder les test dans ShoppingListTest mais ajouter à ShoppingList une méthode publique non demandée. On vous autorise à ajouter la méthode taille())). Exemple : après avoir vidé la liste on vérifie que sa taille est à 0. –MCD

A propos des arguments avec espaces en passant pas le script shop

le script shop ne filtre pas convenablement les arguments avec espaces sur la ligne de commande ? Corrigez-le ainsi :

eval java gxxxxx.projet1.Shop $@

force le shell à réévaluer la ligne de commande

pour les arguments contenant des espaces doublez les guillemets : comme ceci :

 ./shop new art " 'mon art' "

merci JCJ ;-) mba

Contributions d'étudiants

Afin de pouvoir être écrite dans un fichier (par exemple) une classe doit êtré étiquetée sérialisable. Ne pas oublier l'import pour le Serializable (java.io.Serializable)

import java.io.Serializable;
 
public class MaClasse implements Serializable

Pour intégrer un String de numéro dans un Int il faut utiliser :

String str;
int variable = Integer.parseInt(str);

@Mathieu A.

Cette phrase n'a pas beaucoup de sens ;-) Je dirais que la commande que donne Mathieu permet de convertir un String en int … en fait parseInt retourne le premier entier présent dans la chaine et ce, en début de chaine. Sinon une erreur est générée. –Pbt


Sous vista il se peut que vous ayez un soucis avec ceci se trouvant dans la classe Data.java:

private final static String FILENAME_FAVORITES =System.getenv("HOME")+
"/.shop_favoriteslist.dat";
private final static String FILENAME_SHOPPING=System.getenv("HOME")+
"/.shop_shoppinglist.dat";

Pour pallier a ce problème je vous invite a remplacer “HOME” par “public” et a tester…Normalement si c'est comme sous mon Vista les fichiers :

shop_favoriteslist.dat shop_shoppinglist.dat

Se trouveront dans le dossier Users\Public.