Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1594 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Interface et redéfinition

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Interface et redéfinition

n°1908026
melissad87
Posté le 23-07-2009 à 15:15:59  profilanswer
 

Bonjour, j'essaie une nouvelle approche dans un programme où j'essaie d'y incorporer des interfaces.
Voilà un exemple de code, où je vous expliquerai mon problème par la suite:
 


public class X
{
    public static vois main(String[] args)
    {
        monX = new X();
        X.afficher(new z());
    }
 
    private void afficher (y uneMethode)
    {
        for(int i = 0; i<10l ++i)
        {
            uneMethode.afficher(i);
        }
    }
 
    /**
     *Un interface contenant une fonction ayant 3 signatures différentes (Pour les paramètres)
     */
    public interface y
    {
        public void fonction(int i);
        public void fonction(int i, int j);
        public void fonction(int i, int j, int k);
    }
 
    public class z implement y
    {
        //Redéfinition de la première signature
        public void fonction(int i)
        {
            System.out.println(i);
        }
        //Je n'ai malheureusement pas besoin des 2 autres fonctions ici, une autre classe implémentant la même interface l'utilisera peut-être.
    }
}


 
Bon ça peut peut-être semblé difficile à comprendre, mais ce type de code va me sauver beaucoup de temps éventuellement en empêchant de la redondance de code. Mais voici mon problème, mon interface contient plusieurs méthodes, certaines classes en utiliseront qu'une, d'autres p-e 2, qui sait.... Je ne veux pas avoir à redéfinir chaque fois les méthodes que je n'utilise pas pour chaque classe....
 
Jusqu'à maintenant, le seul moyen que j'ai trouvé pour cela, c'est de mettre le mot clef "abstract" devant la signature de mes classes, mais malheureusement, ceci empêche du même coup l'instanciation de cette même classe, ce dont j'ai besoin de pouvoir faire....
 
Y existe-t-il un mot clef ou qqc qui n'oblige pas une classe implantant une interface de redéfinir toutes les méthodes de cet interface?

mood
Publicité
Posté le 23-07-2009 à 15:15:59  profilanswer
 

n°1908028
flo850
moi je
Posté le 23-07-2009 à 15:19:22  profilanswer
 

non  
a la limite , tu fais des méthodes vide ( ou mieux, des méthodes qui lèvent ue exception si tu les appelle)


---------------

n°1908032
melissad87
Posté le 23-07-2009 à 15:33:13  profilanswer
 

Ok, j'avais déjà pensé à cette option, je voulais seulement éviter de toujours tout redéfinir les fonctions que je n'utilise pas, surtout que beaucoup de classes risque d'implémenter cette interface....
 
Le but était seulement de m'éviter du travail et de gagner du temps!

n°1908034
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 23-07-2009 à 15:40:49  profilanswer
 

Ouais mais c'est pas le but d'une interface. Une interface, c'est justement pour dire "hey, je suis un objet qui sait faire ça et ça".
Donc déjà, si tu te dis que tu auras plusieurs objets qui n'implémenteront pas telle ou telle méthode, pose-toi les questions : "est-ce que mon interface est bien définie ? Est-ce que c'est bien cette interface que mon objet doit implémenter ?" Quitte à faire plusieurs interfaces pour modéliser plusieurs comportements.

 

Après, si effectivement tu as besoin du comportement que tu décris, pense plutôt à faire un adapter : classe abstraite implémentant l'interface en renvoyant une exception ou un résultat par défaut. Tu dériveras ensuite cette classe en ne surchargeant que les méthodes que tu veux implémenter.
(attention, ce n'est pas toujours une bonne idée, pense bien à ce que tu veux faire)


Message édité par Taiche le 23-07-2009 à 15:40:57

---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°1908039
melissad87
Posté le 23-07-2009 à 15:53:57  profilanswer
 

En fait je cherche à simuler le passage d'une fonction en paramètre à une autre. Pour ce faire, les fonctions que je voudrais passer en paramètre se retrouve à être des classe implémentant un interface, ayant elle même plusieurs fonctions portant le même nom, mais se différenciant par les paramètres reçu...
 
De cette façon, au lieu de passer une fonction je passe un objet (D'où l'importance que ça puisse être instancier, donc non-abstrait), cela me permet alors de sauver beaucoup de redondance de code. En effet, si j'ai 10 méthodes qui ont chaque une boucle dans une boucle (Traversant exactement les mêmes éléments) mais n'en faisant simplement pas le même usage, j'ai une méthode représentant ce modèle de boucle, et je lui passe en paramètre à l'aide d'un objet l'utilisation que je veux en faire...
 
La raison des différentes signature de cette même fonction, c'est que j'ai plusieurs cas de code qui doit se répéter ainsi, donc dans chaque cas, je n'en voie pas nécessairement les mêmes informations à mon utilisation centrale.... (J'sais pas si c'est clair... :-s)

n°1908044
masklinn
í dag viðrar vel til loftárása
Posté le 23-07-2009 à 16:10:52  profilanswer
 

melissad87 a écrit :

En fait je cherche à simuler le passage d'une fonction en paramètre à une autre.


 [:prozac]  
 
http://java.sun.com/j2se/1.5.0/doc [...] nable.html
http://java.sun.com/j2se/1.5.0/doc [...] lable.html
http://google-collections.googleco [...] ction.html


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1908045
melissad87
Posté le 23-07-2009 à 16:20:12  profilanswer
 

J'Vois pas vraiment en quoi ces 3 liens peuvent m'aider...
 
Le premier parle des threads, je sais ce que c'est, et je n'en ai pas besoin dans ce context...
Le 2e semble est un interface permettant à une classe d'être appellée... j'comprend plus ou moins le principe, mais ça ne semble pas utile dans mon contexte
Le 3e semble servire à convertir un objet en un autre....
 
Au pire, j'irai avec plusieurs interface, ou je lancerai des exception, je regarde encore ce qui serait le mieux, de toute façon ce sont des méthodes au privée, alors si je m'arrnage pour ne pas appeller les mauvaises méthode de l'interface, je devrais m'en tirer..


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Interface et redéfinition

 

Sujets relatifs
Interface requête Base de données EXCELInterface web pour JMX
Base de données et interface en PythonProbleme avec interface graphique Tkinter
[VB6] Interface homme-machine multi-pagesInterface MII
Problème avec WebService et InterfaceInterface C/Ada + SDL
Programme C avec interface webcreation interface requete pour utilisateur
Plus de sujets relatifs à : Interface et redéfinition


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR