[Java] Question bête sur le double héritage

Question bête sur le double héritage [Java] - Java - Programmation

Marsh Posté le 04-07-2004 à 21:47:38    

Je voulais savoir s'il existe une solution astucieuse pour éviter le double héritage, que j'ai malheureusement l'habitude d'utiliser venant du C++.
 
Par exemple j'ai une classe Objet, une classe ObjetPositionné qui dérive d'Objet, une classe Robot qui dérive d'Objet et une classe RobotPositionné qui dérive de Robot et de ObjetPositionné, une classe Mur qui dérive d'Objet et une classe MurPositionné qui dérive de Mur et d'ObjetPositionné.
 
Comment feriez-vous ça en java ?

Reply

Marsh Posté le 04-07-2004 à 21:47:38   

Reply

Marsh Posté le 04-07-2004 à 21:54:39    

L'héritage multiplie comme il existe en C++ n'existe pas en Java.
En java, on fait de l'héritage multiple avec des contrats : les classes implémentent des interfaces (autant que tu veux) et héritent d'une seule classe uniquement.
 
Quand tu implémente une interface, tu dois forcément refaire l'implémentation toi même.
 
Il est fortement conseillé d'utiliser la composition plutôt que l'héritage quand c'est possible.

Reply

Marsh Posté le 04-07-2004 à 21:58:39    

Désolé si c'est encore une question bête, mais qu'entends-tu par composition ?

Reply

Marsh Posté le 04-07-2004 à 22:10:18    

Machin HAS A Truc au lieu de Machin IS A Truc


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 04-07-2004 à 22:12:56    

raytaller a écrit :

Il est fortement conseillé d'utiliser la composition plutôt que l'héritage quand c'est possible.

c'est pas comme si tu avais le choix en fait

Reply

Marsh Posté le 04-07-2004 à 22:44:22    

Tu peux assez facilement faire comme de l'héritage multiple en passant par un système de wrapper (cf le Design pattern correspondant) ...
 
mais ca oblige à écrire les méthodes de délégations ...
avec un bon IDE ca se fait vite ;)

Reply

Marsh Posté le 04-07-2004 à 22:45:28    

d'ou il sort le nom de ton DP ? :o


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 04-07-2004 à 22:48:38    

benou a écrit :

Tu peux assez facilement faire comme de l'héritage multiple en passant par un système de wrapper (cf le Design pattern correspondant) ...
 
mais ca oblige à écrire les méthodes de délégations ...
avec un bon IDE ca se fait vite ;)

t'auras beau essayé, tu arrivera jamais a une relation ISA

Reply

Marsh Posté le 04-07-2004 à 22:49:44    

et c'est tant mieux [:itm]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 04-07-2004 à 22:51:18    

on peut troller ? (enfin continuer du moins ?)

Reply

Marsh Posté le 04-07-2004 à 22:51:18   

Reply

Marsh Posté le 04-07-2004 à 22:55:06    

Taz a écrit :

on peut troller ?


comme si t'avais attendu d'avoir une permission [:kiki]

Reply

Marsh Posté le 04-07-2004 à 22:55:07    

Reply

Marsh Posté le 04-07-2004 à 22:58:56    

on peut troller orthographe au lieu de répéter des conneries qui ont déjà été dite 100 fois ? Les C++eux n'ont pas à venir faire chier les javateux, puisqu'ils sont incapables de changer leurs méthodes d'analyse et de modélisation, de simplifiers leurs modèles, qu'ils restent dans leur merde.
 
 
JAVA C'EST UN LANGAGE D'INTéGRISTES ET DE GROS CONS? IL FAUT PAS L'APPRENDRE.
 
si ça pouvait dégager quelques boulets pour qu'on puisse avancer un peu.

Reply

Marsh Posté le 04-07-2004 à 23:15:30    

Citation :

Les C++eux n'ont pas à venir faire chier les javateux, puisqu'ils sont incapables de changer leurs méthodes d'analyse et de modélisation, de simplifiers leurs modèles, qu'ils restent dans leur merde.


 
et vice et versa (sic)
 
ce n'est pas parce que tu t'interdis quelque chose qu'il faut l'interdire aux autres. et quand on voit la tronche du DP (et le résultat chiatique), ose redire (bon je sais tu vas le redire, c'est purement rhétorique) que dans des cas naturels, l'héritage multiple est le modèle le plus complexe ? d'ailleurs complexe ne veut pas dire compliqué :D
 
 
mais on peut effectivement parler orthographe
sur ce je d/l Farenheit 911 de M.Moore
https://linuxfr.org/~grad/14381.html
le torrent marche bien.

Reply

Marsh Posté le 06-07-2004 à 17:44:53    

L'héritage multiple n'est pas une mauvaise chose en soi.
Tout dépend de l'utilisation qu'on en fait.
 
Les design patterns sont bien. Ca permet d'accélerer les développements relatifs à certains problème réccurents en programmation, mais si on en met partout c'est l'effet inverse qui se produit !!!
 
Il faut savoir user des choses sans en abuser.
 
Je tiens à rappeler qu'en java rien n'interdit de tout coder dans l'unique méthode main d'une unique classe Comme un sale porc !!

Reply

Marsh Posté le 06-07-2004 à 17:47:11    

pascal34 a écrit :

Les design patterns sont bien. Ca permet d'accélerer les développements relatifs à certains problème réccurents en programmation, mais si on en met partout c'est l'effet inverse qui se produit !!!

tiens, une fortune !

Reply

Marsh Posté le 06-07-2004 à 18:15:57    

Il ne faut pas se demander comment programmer en C++ avec Java, mais comment est l'approche Java pour un problème donné.
 


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 06-07-2004 à 18:26:10    

nraynaud a écrit :

on peut troller orthographe au lieu de répéter des conneries qui ont déjà été dite 100 fois ? Les C++eux n'ont pas à venir faire chier les javateux, puisqu'ils sont incapables de changer leurs méthodes d'analyse et de modélisation, de simplifiers leurs modèles, qu'ils restent dans leur merde.
 


 
désolé c'est l'habitude d'utiliser l'heritage multiple sous eiffel [:itm]
 
(t'es bien ennuyé la, hein ? [:itm])

Reply

Marsh Posté le 06-07-2004 à 20:29:30    

HelloWorld a écrit :

Il ne faut pas se demander comment programmer en C++ avec Java, mais comment est l'approche Java pour un problème donné.


 
Bah j'ai demandé pour un problème donné, d'ailleurs si tu pouvais me dire comment tu ferais pour ce problème ça pourrait bien m'aider :jap:

Reply

Marsh Posté le 06-07-2004 à 22:33:54    

Je m'insurge !!!
 
L'héritage multiple existe en Java... ou au moins double
 
Je m'explique (ca fait longtemps que j'ai pas pondu du code, alors il faudra savoir adapter...)
 

Code :
  1. public class A {
  2.    public String toto() { return "toto"; }
  3. }
  4. public class B {
  5.    public String titi() { return "titi"; }
  6.    public class C extends A {
  7.       public String tototiti() { return toto()+titi(); }
  8.    }
  9. }
  10. public class D extends B.C {
  11. }
  12. public class Test {
  13.    static void main(String[] args) {
  14.       D d = new D();
  15.       d.toto();
  16.       d.titi();
  17.    }
  18. }


 
qq chose comme ça doit marcher, mais c'est méga porc...
 
C'est basé sur le fait qu'une inner class hérite de la outer class et peut aussi étendre une autre class.
 
Je crois me souvenir que C et D doivent être bidouillées pour que ça marche...

Reply

Marsh Posté le 06-07-2004 à 22:41:19    

euh oui et donc D étends A, c'est super.
et ?


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 06-07-2004 à 23:00:40    

- Renaud - a écrit :


C'est basé sur le fait qu'une inner class hérite de la outer class

et la marmotte ? elle a eu une promotion et elle fait dans l'emballage plastique maintenant ?
 
Tu viens de gagner un voyage dans le JLS gratos.

Reply

Marsh Posté le 06-07-2004 à 23:39:33    

[:drapo], popcorn, chaise longue...
 
Les trolls java ? Jamais sans mon pop corn
 
Les interfaces c plus verbeux que l'héritage multiple surement, mais un bon IDE comble le vide rapidement...


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 07-07-2004 à 01:59:50    

oué enfin dans l'absolu je ne sais pas si c'est une bonne politique de miser sur l'ide pour contourner une limitation du langage

Reply

Marsh Posté le 07-07-2004 à 02:15:09    

tout à fait.
mieux vaut miser sur un design propre.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 07-07-2004 à 07:37:04    

the real moins moins a écrit :

tout à fait.
mieux vaut miser sur un design propre.

pas fatigué de dire que l'héritage multiple c'est sale ?

Reply

Marsh Posté le 07-07-2004 à 08:04:05    

the real moins moins a écrit :

tout à fait.
mieux vaut miser sur un design propre.


 
++

Reply

Marsh Posté le 07-07-2004 à 08:50:55    


 
C++  [:aloy]  
 
 
--->  [:cupra] [:jesorsv]
 
 
de tt façon je vois pas l'intéret de la discussion, sachant qu'on est face à deux philosophies de devel incompatibles, qui s'inscrivent chacune dans la logique de leurs langages respectifs...et qui sont incompatibles...
 
je me demande comment ca vous fatigue pas ce genre de discussions..c tjs les mêmes, avec les mêmes arguments poilus, les même smileys...rassurez moi vous faites du copier coller d'un vieux topic au nouveau ???


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 07-07-2004 à 09:51:18    

Pourquoi incompatible ? Les ABC c'est pas nouveau en C++, et elles ont leur place.
http://www.artima.com/intv/modern.html


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 07-07-2004 à 10:06:36    

chrisbk a écrit :

désolé c'est l'habitude d'utiliser l'heritage multiple sous eiffel [:itm]
 
(t'es bien ennuyé la, hein ? [:itm])

je vois pas le rapport.
1) comparer l'héritage multiple en Eiffel et dans les autres langages ... bon ben voilà quoi ...
2)  l'héritage multiple en eiffel me fout un gros doute. Puet-être une fois de temps en temps pour récupérer du code sans se fatiguer ("marriage d'intérêt" selon Meyer) mais comme design, je doute.

Reply

Marsh Posté le 07-07-2004 à 10:20:52    

Taz a écrit :

[quote]
mais on peut effectivement parler orthographe
sur ce je d/l Farenheit 911 de M.Moore
https://linuxfr.org/~grad/14381.html
le torrent marche bien.


 
Pour un peu je sanctionnais, mais vu que Moore a l'air d'accord...
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 07-07-2004 à 10:23:29    

Jubijub a écrit :

C++  [:aloy]  
 
 
--->  [:cupra] [:jesorsv]
 
 
de tt façon je vois pas l'intéret de la discussion, sachant qu'on est face à deux philosophies de devel incompatibles, qui s'inscrivent chacune dans la logique de leurs langages respectifs...et qui sont incompatibles...
 
je me demande comment ca vous fatigue pas ce genre de discussions..c tjs les mêmes, avec les mêmes arguments poilus, les même smileys...rassurez moi vous faites du copier coller d'un vieux topic au nouveau ???


 
C'est des nerdz de Pavlov.  
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 07-07-2004 à 11:40:33    

gilou a écrit :

C'est des nerdz de Pavlov.  
A+,

[:ddr555]
 
 
 
(tain je pète un plomb moi, j'avais mis [:gilou] en pensant [:ddr555] :heink:)


Message édité par the real moins moins le 07-07-2004 à 11:41:05

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed