On Thu, 12 Jun 2003 16:10:19 +0200, St�phan BERNARD <[EMAIL PROTECTED]> wrote:

OK, mais le fait d'avoir une interface ne me permet pas plus de definir une m�thode statique abstraite, non ?

Non, mais comme de toute fa�on, les m�thodes statiques sont, � mon sens, � �viter en Java, je ne trouve pas �a si grave que �a ;-)

C'est effectivement sur ce type de solution que je vais me pencher, mais �a m'ajoute un casse-t�te conceptuel suppl�mentaire l� o� je ne m'attendais pas � des difficult�s :-(

L'impl�mentation d'une machine � �tat en Java n'est pas tr�s compliqu�e. Elle repose sur une interface tr�s simple (du moins, pour obtenir une machine � �tat �l�mentaire) qui pourrait se d�crire comme suit :

public interface State {
        /**
         * Retourne l'�tat correspondante aux donn�es entr�es
         * @param data donn�es d�finissant l'�tat futur de la machine � �tat
         */
        public State getNextState(InputData data);
}

Et tu obtiens une impl�mentation �l�mentaire avec le bout de code suivant :
public State getNextState(InputData data) {
// si la donn�e correspond � un certain mod�le, on passe � l'�tat StateForFirstData qui essayera � son tour de d�terminer le meilleur �tat.
if(data.equals(data1)) return StateForFirstData.getInstance() .getNextState(data);
// ... autres �tats possibles
}
Le seul ecueil dans cette d�finition, c'est que tu peux te retrouver dans un �tat transitoire o� deux �tats se renvoient la balle.
Pour le contourner, tu peux utiliser une boucle avec un "Fit", qui d�finit l'�cart maximum tol�rable entre l'algorithme courant et l'algorithme id�al pour ton jeu de donn�es.

Disons que j'ai commenc� par regarder la doc de l'API java, sans trop comprendre comment c'�tait utilis�. J'ai donc �crit un peu vite...

Oula, tu me fais peur. Tu connais bien Java ?

St�phan BERNARD



--
Nicolas Delsaux
"Les Etats-Unis d'Am�rique forment un pays qui est pass� directement de la barbarie � la d�cadence sans jamais avoir connu la civilisation."

Répondre à