Probleme d'héritage

Résolu
Lyorix Messages postés 12 Date d'inscription jeudi 18 mai 2006 Statut Membre Dernière intervention 26 novembre 2009 - 19 oct. 2006 à 11:49
Lyorix Messages postés 12 Date d'inscription jeudi 18 mai 2006 Statut Membre Dernière intervention 26 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 ?

Merci de vos réponses,

Cdlt,

7 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
19 oct. 2006 à 12:54
Utilise la délégation : créer une classe spécialement concue pour faire ta fonction, et utilise là dans tes classes héritées...
3
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
19 oct. 2006 à 12:05
Salut,

oui utilise les interfaces en java tu verras cela compense beaucoup l'heritage multiple

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
Lyorix Messages postés 12 Date d'inscription jeudi 18 mai 2006 Statut Membre Dernière intervention 26 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)
0
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 22
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 ^^

voilà

le monde a des idées : la preuve, c'est qu'il y en a de mauvaises
ne comprends pas tout, mais je parle de tout : c'est ce qui compte
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Lyorix Messages postés 12 Date d'inscription jeudi 18 mai 2006 Statut Membre Dernière intervention 26 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 ?
0
super_toinou Messages postés 764 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 8 mars 2011 6
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
0
Lyorix Messages postés 12 Date d'inscription jeudi 18 mai 2006 Statut Membre Dernière intervention 26 novembre 2009
20 oct. 2006 à 09:55
Je me suis finalement décidé à utiliser la délégaton comme vous me l'avez conseillé.

Merci,
0
Rejoignez-nous