Je r�ponds aux deux messages.

>-----Message d'origine-----
>De : MARQUES D ext OCISI [mailto:[EMAIL PROTECTED]]
>Envoy� : lundi 9 d�cembre 2002 10:01
>� : Java Mailing List
>Objet : interface - design
>
>
>bonjour,
>
>j'ai un petit probl�me de design.
>j'aurai voulu cr�er l'interface suivante :
>public Interface Format {
>    public abstract boolean isFormatOk();
>    public abstract String format() throws FormatException;
>    public static String display ( String value );
>}
>
>
>�a n'a pas grand chose � voir avec ton probl�me mais il me semble que de
>toute
>fa�on ton interface est fausse : une m�thode ne peut �tre d�clar�e abstract
>dans
>une interface puisque qu'elle l'est forc�ment (sinon on n'appellerait pas �a
>une
>interface mais une classe abstraite)

Si �a compile, c'est que c'est possible. D'un autre c�t�, c'est redondant 
puisqu'effectivement, une interface ne fournit pas de code pour les m�thodes. Donc il 
vaudrait mieux l'enlever.
>
>le probl�me, c'est que dans mon interface je ne peux qualifier ma m�thode
>display en static comme souhait�.
>pourtant, je voudrais que toutes mes classes impl�mentant l'interface Format
>impl�mente la m�thode display et qu'on puisse l'utiliser (la m�thode
>display) de la fa�on suivante :
>MonFormat.display("texte � formater");
>je vois pas comment faire pour avoir ma m�thode en static et entrant dans le
>contrat d'une interface.

C'est peut-�tre un petit probl�me de d�finition. Tout d'abord, un rappel.
Une m�thode statique est li�e � la classe dans laquelle elle est d�clar�e. C'eest pour 
cette raison que les m�thodes statiques ne peuvent �tre ds�riv�es (c'est une faiblesse 
du langage, soit, mais au moins, on le sait). Comme la m�thode statique est li�e � son 
unit� e de d�claration, elle devrait th�oriquement �tre li�e � l'interface. Or dans 
celle-ci, il est impossible de d�finir le code des m�thodes. Par cons�quent, tu 
aurais, si tu pouvais la d�finir, une m�thode sans code et sans possibilit� de lui 
donner de code d'impl�mentation.
Passons maintenant � la partie conceptuelle.
Tu souhaites d�finir une m�thode qui soit accessible dans toutes tes classes, et qui 
te fournisse un moyen d'acc�der aux m�thodes de ton interface. Je te conseille 
ardement de jeter un coup d'oeil � la classe DateFormat, qui fonctionne exactement de 
la mani�re souhait�e, par l'utilisation d'un pattern pseudo-singleton.
>
>merci � tous
>

-- 
Nicolas Delsaux
"Ia d�mocratie est la pire des dictatures parce qu'elle est la dictature exerc�e par 
le plus grand nombre sur la minorit�."
Pierre Desproges


Répondre à