En C++, je crée souvent des classes du type Reader et Writer qui héritent
d'une classe de base virtuelle (je définit le destructeur virtuel) avec
"virtual public" pour que les données de ma classe de base abstaite ne soient
pas dupliquées.
Ensuite je crée un classe de travail qui hérite de mes classes Reader et
Writer, ce qui me permet d'avoir une classe complète comprenant le lecteur et
l'écrivain.
Sachant que l'héritage multiple est interdit en C#, quelle est la solution
si je veux garder ce type de solution.
ex en C++ :
public Class A{ //Déclaration de données}
public Class B : virtual public A { //Fonction }
public Class C : virtual public A { //Fonction }
public Class D : public B, public C { //Fonction }
maintenant, si vraiment, tu te situes dans un cas précis d'interface, utilises la solution de Merlin. les habitués du C++ ont tendance à toujours faire de l'héritage d'implantation, c'est trés fashion, mais c'est trés souvent injustifié, inaproprié, et ça a plus d'inconvenients que d'avantages...
-- Ambassadeur Kosh GLP Dotnet
la stratégie la plus appropriée, c'est de ne pas faire d'héritage multiple,
mais de l'utilisation.
class MyReader { public MyReader(Stream stream) {...} }
class MyWriter { public MyReader(Stream stream) {...} }
maintenant, si vraiment, tu te situes dans un cas précis d'interface,
utilises la solution de Merlin.
les habitués du C++ ont tendance à toujours faire de l'héritage
d'implantation, c'est trés fashion, mais c'est trés souvent injustifié,
inaproprié, et ça a plus d'inconvenients que d'avantages...
maintenant, si vraiment, tu te situes dans un cas précis d'interface, utilises la solution de Merlin. les habitués du C++ ont tendance à toujours faire de l'héritage d'implantation, c'est trés fashion, mais c'est trés souvent injustifié, inaproprié, et ça a plus d'inconvenients que d'avantages...
-- Ambassadeur Kosh GLP Dotnet
Merlin
Ambassadeur Kosh a écrit :
les habitués du C++ ont tendance à toujours faire de l'héritage d'implantation, c'est trés fashion, mais c'est trés souvent injustifié, inaproprié, et ça a plus d'inconvenients que d'avantages...
je suis tout à fait d'accord. La solution d'utilisation est d'ailleurs une bonne solution aussi. Les interfaces proposent quelques avantages supplémentaires selon les circonstances, mais ici je pense que les deux solutions sont parfaitement applicables.
les habitués du C++ ont tendance à toujours faire de l'héritage
d'implantation, c'est trés fashion, mais c'est trés souvent injustifié,
inaproprié, et ça a plus d'inconvenients que d'avantages...
je suis tout à fait d'accord.
La solution d'utilisation est d'ailleurs une bonne solution aussi. Les
interfaces proposent quelques avantages supplémentaires selon les
circonstances, mais ici je pense que les deux solutions sont
parfaitement applicables.
les habitués du C++ ont tendance à toujours faire de l'héritage d'implantation, c'est trés fashion, mais c'est trés souvent injustifié, inaproprié, et ça a plus d'inconvenients que d'avantages...
je suis tout à fait d'accord. La solution d'utilisation est d'ailleurs une bonne solution aussi. Les interfaces proposent quelques avantages supplémentaires selon les circonstances, mais ici je pense que les deux solutions sont parfaitement applicables.