je voudrais votre avis sur une utilisation de l'héritage multiple qui ne
parait pas courante.
Soit une classe véhicule, dont l'utilisateur doit pouvoir déterminer la
position et à la couleur.
Soit une implémentation basée sur l'héritage multiple:
class Color {
public:
SetColor(...);
protected:
double r,g,b,a;
}
class Position {
public:
SetPosition(...);
protected:
double x,y;
}
class Vehicule : public Position, public Color {
...
}
Note: les classes Vehicule, Position, Color sont spécifiées et
implémentées par les mêmes développeurs (ie. pas d'héritage multiple de
classes "externes").
En gros, l'héritage multiple est utilisé pour ajouter en même temps une
interface et une implémentation à une classe.
Les avantages de cette implémentation sont les suivants:
- syntaxe très simple au niveau de Vehicule pour rajouter de nouvelles
propriétés
- très peu d'effort au niveau de Vehicule pour rajouter de nouvelles
propriétés
- Vehicule hérite automatiquement de toutes amélioration à Position
Par exemple, si SetPositionX() et SetPositionY() sont implémentées
dans Position(), Vehicule en profite automatiquement.
- syntaxe très simple pour l'utilisateur, qui n'a qu'à qu'à faire
monvehicule.SetColor()
Une limitation (au moins) est qu'on est embêté si le véhicule doit un
jour devenir bicolore.
A part ça, l'héritage multiple étant souvent sujet à controverse, y
a-t'il un risque particulier à une telle implémentation?
Quels sont les précautions à prendre?