OVH Cloud OVH Cloud

Héritage

3 réponses
Avatar
zordan
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 }

Merci d'avance

3 réponses

Avatar
Merlin
zordan a écrit :
Sachant que l'héritage multiple est interdit en C#, quelle est la solution
si je veux garder ce type de solution.



la stratégie la plus appropriée dès que l'idée d'héritage multiple
effleure l'esprit ce sont les interfaces, tout simplement.

--

///3rL1n________
www.e-naxos.com
gratuit section "Delphi Stargate"
Avatar
Ambassadeur Kosh
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) {...} }

class MyWorker
{
private MyReader reader ;
private MyWriter writer ;
}

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
Avatar
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.

--

///3rL1n________
www.e-naxos.com
gratuit section "Delphi Stargate"