Lyorix
Messages postés12Date d'inscriptionjeudi 18 mai 2006StatutMembreDernière intervention26 novembre 2009
-
19 oct. 2006 à 11:49
Lyorix
Messages postés12Date d'inscriptionjeudi 18 mai 2006StatutMembreDernière intervention26 novembre 2009
-
20 oct. 2006 à 09:55
Bonjour,
J'ai actuellement plusieurs classes qui héritent toutes d'un composant swing. Ainsi, chacune de mes classes est un composant auquel je peux ajouter mes propres fonctions. Jusque là rien de spécial...
Mais voilà que je rencontre un problème. J'aimerais que toutes mes classes (Chacune d'elle hérite donc déjà d'un composant swing) implémentent une même fonction... Or java interdit l'héritage multiple. Y a t'il un moyen pour ne pas que j'ai à faire un "copier-coller" de cette fonction dans chacune de mes classes ?
Pour mieux comprendre voici un exemple :
MyTextField extends JTextField
MyCheckBox extends JCheckBox
MyComboBox extends JComboBox
...
Je veux maintenant implémenter une fonction "MyFunction()" pour qu'elle soit utilisée par toutes mes classes. Comment puis-je l'implémenter sans faire un copier-coller de celle-ci dans toutes mes classes ?
Lyorix
Messages postés12Date d'inscriptionjeudi 18 mai 2006StatutMembreDernière intervention26 novembre 2009 19 oct. 2006 à 12:31
Une interface définit un ensemble de méthodes qui doivent ensuite être implémentées par les classes qui y font appel. Si je déclare "MyFunction()" dans une interface et que mes classes font appel a cette interface, je devrai quand même implémenter "MyFunction()" dans chacune de mes classes.
Or le code de "MyFunction()" est identique pour toutes mes classes... Je voudrais donc ne pas avoir à recopier ce code à chaque fois.
Mais peut-être que j'ai mal saisi ton idée ou alors que j'ai mal saisi le fonctionnement des interfaces... (C'est vrai que j'ai eu rarement à utiliser des interfaces)
indiana_jules
Messages postés750Date d'inscriptionmardi 9 mars 2004StatutMembreDernière intervention23 décembre 200822 19 oct. 2006 à 12:47
Salut,
Dans ce cas, tu crées une classe abstraite qui hérite du composant Swing, et tes composants héritont de cette classe abstraite qui contient ta méthode ^^
Lyorix
Messages postés12Date d'inscriptionjeudi 18 mai 2006StatutMembreDernière intervention26 novembre 2009 19 oct. 2006 à 14:52
Merci pour vos réponse,
Concernant la délégation c'est une solution en effet, mais créer une classe spécialement concue pour une fonction ne me semble pas très "propre"... J'aimerais garder une certaine hierarchie dans mes classes.
Pour la réponse d'indiana_jules je ne comprends pas bien ta solution... Si tu pouvais développer s'il te plait ?
super_toinou
Messages postés764Date d'inscriptionmardi 25 mai 2004StatutMembreDernière intervention 8 mars 20116 19 oct. 2006 à 16:29
yopla,
ce n est pas super mal propre de faire ce que t as proposé DarkSidious (je comprend néanmoins tes doutes) mais pour info le patttern Strategy propose cette délégation pour avoir plus de souplesse que l héritage.
Le que t propose indiana_jules est une bonne idée mais pas facilement faisable dans ton cas (de plus si la méthode est la meme partout ca ne sert a rien que la classe soit abstraite)
Et ce que propose Twinuts est la voie 'normale' mais t impose pour chaque classe de recoder ta fct,
bref perso j pencherai plus pour la délégation
++ Toinou