Previous Up Next

Structuration

Interface Assoc

Tout d’abord, la première version de mon programme n’utilise aucune implémentation. L’objet Assoc n’apparaît pas, car j’utilise tout de suite les deux tables de hachage : HashMap<StringListe,String[]> et HashMap<StringListe,StringListe> (ou StringListe désigne une liste d’objets de type String).

Est-ce que cela signifie que mon programme ne peut pas fonctionner ? ou est-ce au contraire possible ?

Vous voulez sans doute dire qu’il n’y a pas d’interface Assoc dans votre programme (cf. le cours sur les associations), ça ne pose pas de problème.

Combien de classes ?

Ensuite, j’ai construit mon préfixe comme un objet StringListe, même si c’est un StringListe particulier dont la taille est fixée par l’utilisateur. Cela rend la lecture un petit peu moins aisée, et m’oblige à reconstruire un préfixe de base dans plusieurs fonctions.

Est-il possible (et nécessaire ...) de constituer une classe préfixe, qui construirait des StringListe de taille n donnée ? Je ne savais pas comment faire ça, le codage suivant me paraissant faux :

class Prefixe {

  Prefixe (int n) {

    this = null ;
    for (int i = 0 ; i<n ; i++)
      this = new StringListe (<START>, this) ;
    }
  }
}

Adopter une classe Prefixe pour représenter les préfixes est une bonne idée, car votre programme sera mieux structuré. Plus precisément il fera la différence entre les préfixes (les clés de vos tables de hachage) et les listes de chaînes (les objets rangés dans votre première table de hachage).

Cela peut aussi vous aider à éviter de « reconstruire un préfixe de base dans plusieurs fonctions ». En tout cas, la construction du « préfixe de base » (?) devrait se faire par une méthode de la classe Prefixe, et une duplication de code se remplacer par des appels de méthode.

Enfin le code que vous me donnez ci-dessus est très faux. On ne peut pas affecter this. En outre, si this est objet de la classe Prefixe, il ne peut pas être un StringListe. Le plus simple semble d’encapsuler une liste de chaînes comme une variable d’instance privée de la classe Prefixe, comme c’est fait par exemple pour la classe Set de la section 1.4 du poly.

Enfin, mon programme est en fait constitué de deux fichier (celui contenant la fonction main, Markov, et celui construisant la classe StringListe), est-ce que cela pose problème ?

Aucun problème, mais n’oubliez pas, le moment venu, de m’envoyer tous les fichiers source nécessaires.


Previous Up Next