Une solution peut consister � mettre tous les objets auxquels tu veux acc�der dans tes 
autres classes dans un singleton initialis� par ta classe maitresse.

Au niveau des classes utilisatrices un MonSingleton.getInstance() suffit pour 
retrouver tes objets.
Tu peux aussi mettre des attributs public static dans ta classe maitresse mais ce 
n'est pas tr�s �l�gant je trouve.

Personnellemenent quand j'ai des attributs � faire suivre � des classes filles 
(enchainement de dialogues typiquement) je passe les r�f�rences dans le constructeur. 
C'est clair, on sait � la lecture de la doc quelles sont les classes utilis�es (ce qui 
n'est pas le cas si tu fais appel � des attibuts static d'une classe).

Cependant s'il s'agit de connexions JDBC je passerais plut�t par JNDI.C'est standard, 
�a �vite d'avoir � r�inventer la roue.


-----Original Message-----
From: Aurelien Mazurie <[EMAIL PROTECTED]>
To: [EMAIL PROTECTED]
Date: Tue, 1 Oct 2002 13:50:35 +0200
Subject: Classe ma�tresse dans un programme


        Bonjour � tous,
        J'ai une question sur l'organisation des programmes Java; mon 
programme a une classe "ma�tresse", qui lors du d�marrage instancie 
toutes les autres en se passant � leurs constructeurs. Ainsi, chacune 
des classes filles peut utiliser des m�thodes de cette classe ma�tresse.
        Par exemple, la classe ma�tresse s'occupe de la connection � une base 
de donn�e, et r�cup�re un handle pour cette connection 
(java.sql.Connection); ce que je veux, c'est que chaque classe fille 
puisse avoir acc�s � cette variable (comme la variable est le r�sultat 
de l'instanciation d'une classe d�di�e � la connection, j'aimerai ne 
cr�er cette derni�re classe qu'une fois pour toute, pour toutes les 
classes du programme).

        Pour le moment je proc�de comme �a; le code ma classe ma�tresse est:

================================================================

        import classes_filles.*;

        public class MaClasseMaitresse
                {
                        public Connection connection;           // variable � partager 
chez toutes 
les classes-filles

                        public MaClasseMaitresse()
                                {
                                        connection = ....                       // on 
initialise cette variable...
                                
                                        // Puis on initialise une classe fille en 
passant � son 
constructeur
                                        // une r�f�rence � la classe ma�tresse
                                        ClassFille fille = new ClassFille(this);
                                }

================================================================

Ce qui fait que, pour la classe-fille, je peux acc�der � la variable 
"connection" de la classe ma�tresse de la fa�on suivante:

================================================================
        public class ClassFille
                {
                        public Connection connection;                   // variable 
destin�e � recevoir la 
valeur du handle Connection tel que d�fini par la classe ma�tresse
                        public MaClassMaitresse classMaitresse;

                        public ClassFille (MaClassMaitresse maitresse)
                                {
                                        classMaitresse = maitresse;
                                        connection = classMaitresse.connection; // et 
hop !
                                        ...

================================================================

        Mon probl�me c'est que c'est lourd de devoir cha�ner la r�f�rence � la 
classe ma�tresse dans toutes les classes filles (qui elle-m�me cr�ent 
des sous-filles, auxquelles la r�f�rence doit �galement �tre pass�e...)
        N'y a-t'il pas un moyen de stocker quelque part la r�f�rence � la 
classe ma�tresse, pour que n'importe quelle autre classe du programme 
puisse utiliser ses m�thodes ? (sachant que la classe ma�tresse est 
instanci�e avant toutes les autres) Je n'ai pas d'exp�rience dans ce 
domaine; lorsque mon programme �tait � ses d�buts, c'�tait jouable mais 
maintenant ca devient p�nible (et j'imagine, une g�ne pour la vitesse 
d'ex�cution / occupation m�moire) de passer cette r�f�rence de fille en 
fille, sachant que j'ai une arborescence de classes assez importante.

        J'imagine que c'est un probl�me classique qu'a du rencontrer tout 
programmeur d�butant en java ?

        En vous remerciant,

        Aur�lien Mazurie



-- S'il n'y a pas de solution, il n'y a pas de probl�me --

Répondre à