Java, design et scoop

Fermé
Car0 - 11 déc. 2003 à 03:39
 Utilisateur anonyme - 11 déc. 2003 à 21:14
Bonjour,

Je travaille sur une petite application "maison" en Java pour gérer les infos d'une base de données (sur une collection de livres). Puisqu'il s'agit avant tout d'une exercice d'apprentissage, je me pause plusieurs questions concernant le design et la meilleure façon de faire interagir mes classes

L'idée principale est de gérer l'affichage par une classe et la connection par une autre. J'ai créé une classe BiblioDB, une classe BiblioGUI extends JFrame puis une série de classe LivrePanel, AuteurPanel, (... etc) extends JPanel, pour présenter mes infos. BiblioGUI présente une fonction createInternalFrame qui permet de créer et afficher mes différents XXXPanel sur son JDesktopPane.

Ça fonctionne assez bien sauf que je me retrouve avec des trous illogiques.

Question 1:
Mes XXPanel ne devrait pas pouvoir avoir un parent autre qu'un BiblioGUI. Que faire? Déclarer ces classes Private et les mettre dans le même package que BiblioGUI? En faire des inner class?

Question 2:
BiblioGUI initiliase une instance de BiblioDB qui ouvre une connection avec la BD et initialise une série de PreparedStatement. Or, mes XXXpanels ont aussi besoin de connaître cette variable de connection. Les déclarer comme étant des extends de BiblioGUI n'a pas de sens (ce ne sont pas des JPanel!). Comment faire pour qu'ils voient BiblioDB? L'idée des inner Class me vient encore mais... je ne veux pas non plus d'une mega classe BiblioGUI!

Voilà. Ce qui me semblait très simple au départ se complique, sûrement à cause de mon manque de connaissances sur quelques principes d'orienté objet et de java en particulier.

Qui donc a des suggestions, commentaires, trucs?


Merci!
Car0
A voir également:

1 réponse

Nettogrof Messages postés 521 Date d'inscription lundi 29 septembre 2003 Statut Membre Dernière intervention 8 décembre 2005 672
11 déc. 2003 à 20:21
Salut je vais tenter de t'aider....

Réponse 1: Je ne crois pas que faire des inner class aiderait, cela deviendrait encore plus compliqué, tu peux utiliser la méthode :getTopLevelAncestor qui te permet de récupéré ton BiblioGUI dans un panel, si jamais tu as besoins de tranféré des données entre des XXpanel.

Réponse 2: Une facon que je voie la chose, il est p-e possible de passer en paramètre ta BiblioDB , à tes XXpanel lors de leur initialisation.

Exmple

BiblioDB db = new BibliDB();
LivrePanel livre = new LivrePanel(db);


Je te garantie pas que c'est la meilleur chose, car moi aussi il m'en reste encore bcp à apprendre, mais je crois que ca peut t'aider...
bye


Nettogrof tseb era seiromem emoS
0
Utilisateur anonyme
11 déc. 2003 à 21:14
Bonjour!

Merci pour ta réponse!
Je me dit que ce que je fais présentement n'est pas si fou que ça :)

Voilà ce que j'ai déjà comme code :

//****
if (getTopLevelAncestor().getClass().getName() == "BiblioGUI") {
BiblioGUI bGui = (BiblioGUI)getTopLevelAncestor();
BiblioDB bDB = bGui.getBiblioDB();

//Et exécution des requêtes dont j'ai besoin grâce à bDB...
}
//****

J'espérais trouvé un moyen pour améliorer ce code. Passer BiblioDB en paramètre pourrait améliorer les choses. Je vais essayer ça.

Merci bien :)
Caro
0