Herecia múltiple en C#

12/12/2003 - 14:54 por Joseca | Informe spam
Hola a todos,

sabría alguien decirme como poder hacer una herencia
múltiple en C#, de hecho tengo entendido que no es posible
aunque no estoy seguro. Una posible idea sería: Si
queremos que la clase C derive de A y B, podemos hacer que
B derive de A y a su vez C de B (A-->B-->C). Pero esto no
me sirve puesto que no quiero que B adquiera los métodos y
propiedades de A.
Alguna sugerencia ?????

Muchas gracias.

Preguntas similare

Leer las respuestas

#6 Eugenio Serrano
15/12/2003 - 14:25 | Informe spam
Un ejemplo mas facil...

Un ser humano, puede tener los ojos de su padre, el caracter de su madre,
etc, etc, etc..

Saludos,
Eugenio Serrano
NDSoft Consultoria y Desarrollo
Voluntario INETA Latam - Comite Web


"Marcelo Papalini" escribió en el
mensaje news:0b6501c3c0c1$5d9f06b0$
Hola,

el tema de herencia multiple, es un tema muy DISCUTIDO
desde hace MUCHOS AÑOS (30 aprox !!!).

El por que no se usa depende de cada LENGUAJE. Hay varios
lenguajes que si la utilizan .

Lo critico es como se implementa en el lenguaje y COMO la
implementa el programador/diseñador .
En el modelo de un sistema informatico la multiple
herencia se resuelve de formas mas simple, como la
delegacion , hay otros formas, no es la unica.

En la vida real la herencia multiple EXISTE y hay varios
casos como ejemplo : el ornitorrinco..Tiene pelo,
pico de pato, con patas , es un mamifero, pone huevos y
amamanta a sus crias...y entonces ?, donde lo
clasificamos (QUE CLASE ES ?).

Regresando a tu pregunta lo mejor que podes hacer para
simular la doble herencia es utilizar una Interface y
listo. NO ?.


Hola a todos,

sabría alguien decirme como poder hacer una herencia
múltiple en C#, de hecho tengo entendido que no es


posible
aunque no estoy seguro. Una posible idea sería: Si
queremos que la clase C derive de A y B, podemos hacer


que
B derive de A y a su vez C de B (A-->B-->C). Pero esto no
me sirve puesto que no quiero que B adquiera los métodos


y
propiedades de A.
Alguna sugerencia ?????

Muchas gracias.

.

Respuesta Responder a este mensaje
#7 Guillermo guille
15/12/2003 - 15:15 | Informe spam
hola,

algo de eso es lo que yo hacía con VB5/6 para "simular" la herencia, además
implementaba las interfaces y hacía que se accediera a esos métodos,
llamándolos desde objetos creados a partir de esas variables.
http://www.mundoprogramacion.com/cl...RENCIA.HTM

Nos vemos.
Guillermo
Microsoft VB MVP desde 1997
Te invito a mi sitio dedicado al VB y más...
http://www.elguille.info/ (en construcción)
http://www.mundoprogramacion.com/
(puede que el correo usado sea anti-spam)


"JuanI" wrote in message
news:
CREO (soy nuevo en esto de objetos y C#) que para simular una herencia


multiple se puede heredar de A, y dentro de la clase nueva crear una instancia
de la clase C, y usar los metodos asi programando metodos "adaptadores".

me explico? no se, es algo que se me ocurre.

Encontre esto, talvez te ayude:
If you come across a situation in which you want to use multiple inheritance


(for
example wanting to have a ClockRadio class inherit from both AlarmClock and


Radio),
you can get most of the desired behavior by using containment. Containment


embeds a
member variable of the class you want to derive from. Here this technique


calls for
adding both an AlarmClock and a Radio variable to the ClockRadio class and


delegating
the wanted functionality to the appropriate private member variable. This


technique also
works for single inheritance, but it is the only workaround you have to mimic


multiple
inheritance in .NET - unless Microsoft surprises everyone by adding multiple
inheritance in a subsequent version.
(Wiley - C# Bible)




Joseca wrote:

Hola a todos,

sabría alguien decirme como poder hacer una herencia
múltiple en C#, de hecho tengo entendido que no es posible
aunque no estoy seguro. Una posible idea sería: Si
queremos que la clase C derive de A y B, podemos hacer que
B derive de A y a su vez C de B (A-->B-->C). Pero esto no
me sirve puesto que no quiero que B adquiera los métodos y
propiedades de A.
Alguna sugerencia ?????

Muchas gracias.


Respuesta Responder a este mensaje
#8 Mario Ruiz
15/12/2003 - 18:23 | Informe spam
Pero si el código ya lo tengo escrito en las clases A y B, por qué tengo que
reescribir?


"Mario Reiley" escribió en el mensaje
news:OLdqq$
Simulala con interfaces.

Mario

"Joseca" escribió en el mensaje
news:0c5b01c3c0b7$6c2afa90$
Hola a todos,

sabría alguien decirme como poder hacer una herencia
múltiple en C#, de hecho tengo entendido que no es posible
aunque no estoy seguro. Una posible idea sería: Si
queremos que la clase C derive de A y B, podemos hacer que
B derive de A y a su vez C de B (A-->B-->C). Pero esto no
me sirve puesto que no quiero que B adquiera los métodos y
propiedades de A.
Alguna sugerencia ?????

Muchas gracias.



Respuesta Responder a este mensaje
#9 Néstor Marcel Sánchez Ahumada
16/12/2003 - 02:15 | Informe spam
He leído que a la herencia múltiple le dan como alternativa to la
posibilidad de implementar múltiples interfaces, pero aquello sólo ayuda
desde la perspectiva de los consumidores (quienes llaman y hacen uso). Pero
no desde el punto de vista de la centralizar código.
La ventaja de la herencia es justamente para adquirir *naturalmente*
características de otra clase (u otras si es múltiple).
Con las interfaces hay que hacer el "truco" de delegar las características
heredadas o reescribirlas en cada implementador.

También he visto la quejas acerca de la herencia múltiple... que los
ancestros podrían tener miembros iguales, que el orden de llamadas de los
miembros ancestros, etc. etc.
Pero creo que esos problemas podrían resolverse si se "recorta" la
problemática lo suficiente como para servir.
Ejemplos: Se podrá hacer herencia múltiple siempre y cuando...
- Ninguno de los miembros comparta nombre (firma en realidad: nombre, más
tipo y parámetros), ya sea de ancestros o descendiente.
- Se acepte un orden predefinido por estándar, o explícitamente se indique
el órden de invocación de los miembros por cada ancestro.
- etc.
Saludos,

Néstor.

"Eugenio Serrano" <eugenios @ ndsoft.com.ar> wrote in message
news:
Es verdad que no existe herencia multiple en c#, pero tambien es verdad


que
una clase puede implementar multiples interfaces..

Saludos,
Eugenio Serrano
NDSoft Consultoria y Desarrollo
Voluntario INETA Latam - Comite Web


"Damian Bacalov" escribió en el mensaje
news:
> No es posible la herencia múltiple en C#.
> La herencia múltiple ha traído muchas más complicaciones que beneficios


en
> lenguajes como C++.
> Deberías poder resolver tu modelado de objetos sin necesidad de herencia
> múltiple.
>
> Damian
>
>
>
> "Joseca" wrote in message
> news:0c5b01c3c0b7$6c2afa90$
> Hola a todos,
>
> sabría alguien decirme como poder hacer una herencia
> múltiple en C#, de hecho tengo entendido que no es posible
> aunque no estoy seguro. Una posible idea sería: Si
> queremos que la clase C derive de A y B, podemos hacer que
> B derive de A y a su vez C de B (A-->B-->C). Pero esto no
> me sirve puesto que no quiero que B adquiera los métodos y
> propiedades de A.
> Alguna sugerencia ?????
>
> Muchas gracias.
>
>


Respuesta Responder a este mensaje
#10 Marcelo Papalini
16/12/2003 - 15:07 | Informe spam
EuGenio ,

si es un ejemplo !!!!!PERO NO TIENE nada que ver con
la herencia multiple.

Es un ERROR tu ejemplo. Es un concepto ERRONEO.

Tu ejemplo es util para explicar lo que es una instancia y
nada mas. La diferencia entre una instancia y una clase y
nada mas.

Tu ejemplo es una intancia de una clase determinada.

Puede ser una instancia de un ser humano, que tiene como
carcateristicas que es hombre o mujer, ojos azules, dos
piernas. Todos estos ATRIBUTOS son comunes en las
intancias de una misma clase. Como son atributos estos su
valor de los mismos pueden variar o NO, en cada intancia.
Pero son de la misma clase. Que tenga el mismo color de
ojos o el mismo gen de mis padres es un EMERGENTE del
modelo , NO ES UNA HERENCIA MULTIPLE, por que tengo el
color de ojos de mi mama, la piel de mi abuela y el mal
humor de mi padre. NO quiere decir que heredo (en mi
modelo) de estos tres personas, que no son clases son
intancias .

Quiero decir esto , aplicando tu ejemplo en la evolucion
del hombre (no se si el orden es asi, pero a modo de
ejemplo es util). Que las propiedades de cada instancias
no demuestra una multiherencia. Lo de multi es por Doble
Herencia.

0 - BigBan (Object)
0.1 - SerViviente (SubClasss Object).
0.1.1 -Vegetal (SubClasss de SerViviente)
0.1.2 - Animal (SubClasss de SerViviente)
0.1.3 - HombreMono (SubClasss SerViviente)
0.1.3.1- HombreModerno (SubClasss HombreMono)
0.1.3.2-HombreCromagnon.(SClasss Hombre Mono)
0.1.3.2.1-HombreActual (SClass de
HCromagnon)
0.1.3.3- Hombre de Nenderthal.(SClass de
HombreMono)

0.2 - Sexo (SubClass de Object)
0.2.1 - Macho (SubClass de Sexo)
0.2.1.1 -MachoAnimal (SubClass de Macho)
0.2.1.2 -MachoHombreCromagnon (SubClass de Macho)
0.2.1.3 -MachoHombreActual (SubClass de Macho)
0.2.2-Hembra (SubClass de Sexo)
0.2.2.1-HembraAnimal (SubClass de Macho)
0.2.2.2-HembraHombreCromagnon (SubClass de Macho)
0.2.2.3-HembraHombreActual (SubClass de Macho)



Espero que los tab del modelo anterior salga bien. De
todas formas las clases y subclases estan nummeradas.



Un ejemplo mas facil...

Un ser humano, puede tener los ojos de su padre, el


caracter de su madre,
etc, etc, etc..

Saludos,
Eugenio Serrano
NDSoft Consultoria y Desarrollo
Voluntario INETA Latam - Comite Web


"Marcelo Papalini"


escribió en el
mensaje news:0b6501c3c0c1$5d9f06b0$
Hola,

el tema de herencia multiple, es un tema muy DISCUTIDO
desde hace MUCHOS AÑOS (30 aprox !!!).

El por que no se usa depende de cada LENGUAJE. Hay varios
lenguajes que si la utilizan .

Lo critico es como se implementa en el lenguaje y COMO la
implementa el programador/diseñador .
En el modelo de un sistema informatico la multiple
herencia se resuelve de formas mas simple, como la
delegacion , hay otros formas, no es la unica.

En la vida real la herencia multiple EXISTE y hay varios
casos como ejemplo : el ornitorrinco..Tiene pelo,
pico de pato, con patas , es un mamifero, pone huevos y
amamanta a sus crias...y entonces ?, donde lo
clasificamos (QUE CLASE ES ?).

Regresando a tu pregunta lo mejor que podes hacer para
simular la doble herencia es utilizar una Interface y
listo. NO ?.


Hola a todos,

sabría alguien decirme como poder hacer una herencia
múltiple en C#, de hecho tengo entendido que no es


posible
aunque no estoy seguro. Una posible idea sería: Si
queremos que la clase C derive de A y B, podemos hacer


que
B derive de A y a su vez C de B (A-->B-->C). Pero esto no
me sirve puesto que no quiero que B adquiera los métodos


y
propiedades de A.
Alguna sugerencia ?????

Muchas gracias.

.





.

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida