Héritage multiple ? - Java - Programmation
Marsh Posté le 01-06-2005 à 18:40:32
ReplyMarsh Posté le 01-06-2005 à 18:41:09
Ton problème n'est pas là ou tu crois qu'il est
Marsh Posté le 01-06-2005 à 18:51:06
mais bien sur. C'est un petit peu là différence entre 'les développeurs du compilateur gèrent le problème pour toi, même si tu ne le rencontres pas' et 't'es bien dans le caca quand tu veux faire ton travail'
Dans ce cas là, Sun a inventé java.lang.Runnable pour se sortir de là.
Marsh Posté le 01-06-2005 à 18:54:35
euh, vouloir faire qu'un JPanel soit un Thread, j'appelle pas ça faire son travail moi, vois-tu
Marsh Posté le 01-06-2005 à 19:36:30
mais qu'est ce que vous êtes entrain de raconter bon sang ?
je voudrais faire ça :
class une extends JFrame extends Thread {}
mais le problème c'est que l'héritage multiple n'est pas permis !!!!
Marsh Posté le 01-06-2005 à 19:44:25
et moi je te dis que c'est pas ça le problème
Marsh Posté le 01-06-2005 à 19:53:29
comment ça ? c'est pas ça le problème ?
mais c'est moi qui connait mon problème?
qu'est ce que t'es entrain de raconter ?
Marsh Posté le 01-06-2005 à 19:54:34
On ne donne pas une pommade contre l'acnée à quelqu'un qui a la rougeole
Marsh Posté le 01-06-2005 à 19:59:01
ReplyMarsh Posté le 01-06-2005 à 20:01:01
là:
Citation : A Frame is a top-level window with a title and a border. |
Marsh Posté le 01-06-2005 à 20:22:10
écoute , je crois que t'as pas bien compris mon problème
lis stp bien ce que j'ai écrit
Marsh Posté le 01-06-2005 à 20:44:00
zenodotnet a écrit : écoute , je crois que t'as pas bien compris mon problème |
Si justement, et le problème n'est pas celui que tu crois.
Qu'es-ce qu'une fenêtre ?
|
Qu'es-ce qu'un thread ?
|
Ta classe one, par l'héritage multiple, se retrouve être à la fois l'un et l'autre. Es-ce un réel concept de ton application, ou es-ce que tu te dirige vers cette solution pour unifier le tout dans une énorme classe qui fait tout ? L'affichage (JFrame) et le traitement (le thread) ?
La réponse à apporter est : c'est mal(tm). Mixer les deux ainsi abouti souvent à des plats de spaghettis inmintenables et indébuggables, et il faut séparer les deux. Ce concept de programmation, qui date quand même de la fin dees années soixantes, est la séparation des concerns, qui a abouti (entre autres) au pattern MVC (Modeèle / Vue / Controlleur), qui est la séparation des trois niveau d'une application.
Donc pour ton problème, il ne faut pas que tu utilise ce double extends (il y a des cas où ça sert, mais ce n'est pas pour ici, et dans ce cas, tu utilises de toutes façon d'autres technos). Tu dois avoir deux objets séparés (ta jframe, qui est l'affichage de ton traitement), et ton thread (qui est ton traitement en train de fonctionner). Ta vue doit voir ton traitement, et ton traitement doit notifier ceux qui le surveillent (on dit ses listeners) lorsqu'il a fait une avancé qui pourrait être affichée.
Les avantages ? Demain, tu ne veux plus afficher ton traitement sur une JFrame, mais par un autre système (une page web, un afficher LCD sur ta tour, que sais-je), tu n'as pas a retoucher ton traitement.
De plus, rien ne t'empêche d'afficher plusiuers fois la même information dans des contextes différents, avec un look différent. En une ligne de code, tu peux rajouter une deusxième JFrame qui va afficher ton traitement en parralèle.
C'est pour cela qu'on te dit que tu te trompe de problème. L'héritage multiple aurait abouti à une mauvais design. Reprendre ton design de manière propre donnera un bien meilleur logiciel.
Marsh Posté le 01-06-2005 à 20:45:48
zenodotnet: je pense que ce qu'ils veulent te dire , c qu'on ne melange pas les pommes et les poires
t'as un thread , t'as une JFrame, n'essaie pas de les combiner
je ce connais pas ton probleme, mais peut-etre qu'un "implements Runnable" devrait suffire ?
Marsh Posté le 01-06-2005 à 20:47:50
Et en deux mots, si on traduit l'héritage par une relation "est un", je vois mal comment un objet XYZ pourrait à la fois "être une Fenetre" et "être un Thread". ("Truc est un four à pain et un bidon d'huile" )
Marsh Posté le 01-06-2005 à 23:30:15
au fait, je vous ai déjà dit que swing c'est en inversion de dépendence de bout-en-bout ?
il faudrait vraiment que je l'écrive ce tuto ...
zenodotnet > une frame ne peut matériellement pas être gérée dans un thread que tu choisis, donc dès le départ c'est foireux ton truc, indépendament du troll sur l'héritage multiple.
je t'invite à consulter le tutorial swing sur les threads qui explique en détail les choses. (google -> tutorial+swing+threads )
Marsh Posté le 01-06-2005 à 18:36:47
bonjour ,
j'ai deux classes :
class une extends JFrame implements ActionListener {
}
class deux extends Thread{
}
ben le problème , c'est que je veux que même la première classe hérite de Thread sachant que l'héritage multiple est interdit en java .