Pb JAVA/Héritage multiple

bon, je sais que l’héritage multiple n’existe pas, mais j’aimerai savoir si vous connaissez un moyen de faire ce qui suit :

J’ai besoin d’une classe TapisRoulant, qui hérite de la classe Automate, et qui contient en plus (entre autre) les variables cmdMarcheArret, estDemarre, et des fonctions qui s’y rapporte (ca, pas de problème)
J’ai besoin d’une classe Balance, qui hérite de la classe Automate, et qui contient en plus (entre autre) une variable poids… et des fonctions qui s’y rapporte (ca, pas de problème non plus)

J’ai besoin d’une classe TapisRoulantPeseur, qui hérite de la classe Automate, et qui se comporte exactement comme un TapisRoulant ET une Balance (et contient donc les fonctions et variable de TapisRoulant et de Balance); et il peut eventuellement y avoir interaction ou modification de certaines fonctions

Le but est bien evidemment de minimiser les copier coller du contenu des fonctions telles que celle qui commande la mise en marche et l’arret (parcequ’en fait, ca va trifouiller une base SQL, donc ca fini par etre assez gros, et si je fait du copier-coller, ca devient inmaintenable)

merci d’avance

[Edité le 6/11/2002 par urdle]

c’est la premiere solution que je vais adopter, je pense… le seul “défaut”, est que ca double les propriété d’automate, mais je devrais pour m’en arranger…

merci

Tton problème est un cas d’école (le losange : on crée deux sous-classes et on veut le faire hériter dans une seule). Normalement, comme l’a dit Donjohn, on résout ça avec des interfaces. Ton cas est différent car comme tu dis on en pourrait pas avoir de comportement communs à tous les automates.

Je te propose donc 2 solutions , pas très propres dirons nous, mais ki marchent :

  • la première, si les classes Balance et TapisRoulant doivent être utilisables à l’extérieur de la classe TapisRoulantPeseur, est de créer deux membres privés :

class TapisRoulantPeseur
{
private Balance balance;
private TapisRoulant tapis;
/** … */
}

  • la seconde, si les classes Balance et TapisRoulant ne doivent pas etre utilisables à l’extérieur de la classe TapisRoulantPeseur, est de créer deux inner classes :

class TapisRoulantPeseur
{
/* … */

 class Balance extends Automate
 {
      /* Implémentation ici... */
 }

 class Balance extends Automate
 {
      /* Implémentation ici... */
 }

}

oui, j’vais proposer ça à ma boite : plutot que de faire des formations java, ca vous ennui si j’me forme à C# ?

mais je connais déjà la réponse qu’elle me donnera : aucun client n’a demandé du C#, alors non… sniff…

oui mais une interface, ca m’empechera d’avoir des fonctions génériques à tous les automates… pas bon

Mets toi au C# !!!

Reponse : Interface
deja transforme ta Classe Automate en Interface ca t’aidera je pense :stuck_out_tongue: