Herencia Múltiple

08/02/2005 - 10:26 por Mario | Informe spam
Hola a todos,

Ya se que no existe la herencia múltiple en C# y que teoricamente se puede
simular con implementación de interfaces, pero no entiendo la funcionalidad
de ésta última si en la clase final tengo que impementar todos los metodos
declarados de las clases interface.

ejemplo:
Tengo 3 clases:
A .- cJoystick (clase que lee los eventos del joystick)
B.- cTeclado (clase que lee los eventos del teclado)
C.- cMenu (Clase con una clase de menus al estilo de un MainMenu)

Mi objetivo es crear una clase que sea un Menu que se pueda recorrer a
partir de los eventos del Joytick y el Teclado.

Teoricamente como herencia múltiple sería:

A B
\/
C

pero debido a que no existe en c# deberemos implementar A ó B como
interfaces con la siguiente consecuencia de tener que implementar en C todos
los metodos declarados en la interface.

Exite una manera más elegante, funcional y modular para simular la herencia
múltiple?

Un saludo,
Mario
 

Leer las respuestas

#1 Miguel Ortiz Falcón
08/02/2005 - 11:26 | Informe spam
Bueno te voy a dar mi opinión. Desde que el problema es
que "debe haber una herencia multiple" ya sea simulada o
no, es que por ahí hay un problema de jerarquización de
clases. Pero bien, para mi no existe algo elegante o
modular en el uso de interfaces, simplemente se aplican
como se deben de aplicar, definiendo todos sus métodos.
No asi funcionalmente, lo funcional depende del código
que defina cada uno de sus métodos, y obviamente este
código depende del desarrollador, que es quien define su
funcionalidad en ese aspecto.

Por lo que veo en tu jerarquía de clases. No le veo razón
la "herencia" de Menu a partir de las otras dos, puesto
que a mi parecer no tienen nada que ver directamente,
como para ser necesario heredar. No así en su
interacción, lo que te puede hacer falta allí son unas
dos Interfaces ahora si, por ejemplo IPulsable,
IJoystickable (IJoystickable ?...que nombre, pero se me
ocurrio =) ) para poder interactuar entre las clases.

Entonces por ejemplo lees una tecla con tu clase Teclado,
y obviamente quiere decir que va a pasar algo en tu clase
Menu. Entonces lo que puedes hacer es a través de un
método "accion();" que pertenece a IPulsable (y que
para ese entonces ya lo implementaste en Menu)... lo
llamas. Es decir Pasa algo en Teclado, tratas a menu como
IPulsable y llamas a su método y sale...

Sabes, a ver si comentas para qué quieres todo esto?...a
mi punto de vista no es una buena práctica de
programación, quizás haya otra manera mejor, de hacer lo
que quieres hacer.

Saludos...

Miguel Ortiz Falcón


Hola a todos,

Ya se que no existe la herencia múltiple en C# y que


teoricamente se puede
simular con implementación de interfaces, pero no


entiendo la funcionalidad
de ésta última si en la clase final tengo que impementar


todos los metodos
declarados de las clases interface.

ejemplo:
Tengo 3 clases:
A .- cJoystick (clase que lee los eventos del joystick)
B.- cTeclado (clase que lee los eventos del teclado)
C.- cMenu (Clase con una clase de menus al estilo de


un MainMenu)

Mi objetivo es crear una clase que sea un Menu que se


pueda recorrer a
partir de los eventos del Joytick y el Teclado.

Teoricamente como herencia múltiple sería:

A B
\/
C

pero debido a que no existe en c# deberemos implementar


A ó B como
interfaces con la siguiente consecuencia de tener que


implementar en C todos
los metodos declarados en la interface.

Exite una manera más elegante, funcional y modular para


simular la herencia
múltiple?

Un saludo,
Mario



.

Preguntas similares