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

#16 Marcelo Papalini
16/12/2003 - 18:37 | Informe spam
Ar.Iel,

Primero lo primer.Los errores no eran de gramatica, si
conceptos, a los que me referia.

Segundo lo segundo, soy re estupido. Y mas aun.

Tercero lo tercero, no tengo ni idea quien es Guille. si
es Dios, en una de esas le pida perdon .

Cuarto lo cuarto, no le falte el respeto. Solo le marque
cosas que para mi son errores.

Quinto lo quinto. Tenes algo interesante que decir ?

Salu2

Marcelo, mas alla de las ensaladas de frutas y errores de


gramatica, me
parece bastante estupido de tu parte hablar con esa


insolencia, mas todavia
conociendo todos la trayectoria y reconocimiento de el


Guille.
Me parece que no hace falta ser tan agresivo.

salu2

"Marcelo Papalini"


wrote in message
news:14ff901c3c3f2$dfcbe750$
Guillermo, lei tu articulo.

En la nota final del articulo que "recomndas"dice algo
asi :

"cómo se puede conseguir el Polimorfismo mediante la
implementación de interfaces, (al menos en VB); y esto no
es algo particular de Visual Basic"

Que ves cuando ve un martillo ?. .un clavo ?
Ahora cuando ves un zapato que ves ?..un cordon ?...

Un avion es un avion en medio de la pista quieto ?. O
recien es un avion, cuando esta en el aire ?. Un avion sin
voalr, lo puedo utilizar como una casa. Entonces que es un
avion o una casa (caundo no esta volando)?.

Otra pregunta , un pinguino es un ave ?,y por que no
vuela entonces ?. Tiene alas y todo !!!!

Un Martillo es un martillo cuando lo queres utillizar
para "clavar", "algo".
Ahora un zapato, no puede ser un martillo ?. En mi casa un
zapato es un Martillo, por que no tengo Martillo.
Ahora el zapato no tiene ninguna interzas del Martillo. El
zapto con sus propias caracteristicas tiene la posibilidad
de "martillar o clavar", en mi modelo o sea mi casa.
Cuando salgo de este (la calle) es un zapato.
El polimorfismo esta en martillar (clavar un clavo, usarlo
de seguridad personal, hacer ruido,etc poli formas de uso)
del zapato.

Ahora no entiendo por que decis que podes "solucionar" el
polimorfismo con las Interfaces ?.
Te pregunto si querer investigar nada de VB y lo poco que
se, trato de olvidarme dia a dia.

Te pregunto porque considero que es agregar un problema
mas "a tu solucion". Como vos decis es muy bueno "VER" las
limitaciones que tienen los lenguajes que usamos y6 yo
agrego que es muy sano, no querer caminar mas de lo que el
tajo de la pollera te deja.
El problema que veo, y te repito de mi comentario
anterior, de esta forma parece mas a una ensalada de fruta
que a un programa que aplica el paradigma de objetos.


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
#17 Marcelo Papalini
16/12/2003 - 18:43 | Informe spam
Guille, si me venden un zapato que en ese momento lo
compre para caminar,ser mas lindo de lo feo que soy.

En un momento de mi desordenada vida, lo use de martillo.
O sea LO REDEFINI. Esa es la idea. No comprar una CIERTA
interfaz por cada cosa que en un futuro lo quiera usar.
Esto es muy dificl para los seres humanos, por que aun no
podemos saber el futuro.

O sea usar, usar, Redefinir. Esa es la idea

El polimorfismo se puede conseguir mediante la
implementación de interfaces o
mediante la derivación por herencia.



Entre una de tantas cosas y no es la UNICA

Para la gente que desarollo el .net (Para mi una Interface
es un invento que ya te conte el pro que)

Tambien hay otras, no te quedes con eso solo.

Si no es así... que cambien (o rectifiquen) la
documentación de Visual Studio
..NET



A llorar a lo velorios.
La idea es no quedarse con un solo concepto por mas que
sea el mismo Dios el que te habla.




Si alguien te vende un zapato que implementa la interfaz


IMartillear, debería
asegurarse que sirva para eso... si no la implementa,


seguro que acabarás con
el zapato roto... o al menos agujereado por el clavo...

Bromas aparte.
Seguramente esos conceptos son erróneos, pero son los que


me han enseñado y los
que siguen enseñando:
El polimorfismo se puede conseguir mediante la


implementación de interfaces o
mediante la derivación por herencia.
Si no es así... que cambien (o rectifiquen) la


documentación de Visual Studio
..NET


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)


"Marcelo Papalini"


wrote in message
news:14ff901c3c3f2$dfcbe750$


.

Respuesta Responder a este mensaje
#18 Ariel Gimenez
16/12/2003 - 18:55 | Informe spam
1 Sinceramente me parece que re-estupido te queda chico
2 Lo que a vos te puede parecer interesante para mi seguramente es
irrelevante y viceversa.

salu2

"Marcelo Papalini" wrote in message
news:150cc01c3c3fb$3c058c30$
Ar.Iel,

Primero lo primer.Los errores no eran de gramatica, si
conceptos, a los que me referia.

Segundo lo segundo, soy re estupido. Y mas aun.

Tercero lo tercero, no tengo ni idea quien es Guille. si
es Dios, en una de esas le pida perdon .

Cuarto lo cuarto, no le falte el respeto. Solo le marque
cosas que para mi son errores.

Quinto lo quinto. Tenes algo interesante que decir ?

Salu2

Marcelo, mas alla de las ensaladas de frutas y errores de


gramatica, me
parece bastante estupido de tu parte hablar con esa


insolencia, mas todavia
conociendo todos la trayectoria y reconocimiento de el


Guille.
Me parece que no hace falta ser tan agresivo.

salu2

"Marcelo Papalini"


wrote in message
news:14ff901c3c3f2$dfcbe750$
Guillermo, lei tu articulo.

En la nota final del articulo que "recomndas"dice algo
asi :

"cómo se puede conseguir el Polimorfismo mediante la
implementación de interfaces, (al menos en VB); y esto no
es algo particular de Visual Basic"

Que ves cuando ve un martillo ?. .un clavo ?
Ahora cuando ves un zapato que ves ?..un cordon ?...

Un avion es un avion en medio de la pista quieto ?. O
recien es un avion, cuando esta en el aire ?. Un avion sin
voalr, lo puedo utilizar como una casa. Entonces que es un
avion o una casa (caundo no esta volando)?.

Otra pregunta , un pinguino es un ave ?,y por que no
vuela entonces ?. Tiene alas y todo !!!!

Un Martillo es un martillo cuando lo queres utillizar
para "clavar", "algo".
Ahora un zapato, no puede ser un martillo ?. En mi casa un
zapato es un Martillo, por que no tengo Martillo.
Ahora el zapato no tiene ninguna interzas del Martillo. El
zapto con sus propias caracteristicas tiene la posibilidad
de "martillar o clavar", en mi modelo o sea mi casa.
Cuando salgo de este (la calle) es un zapato.
El polimorfismo esta en martillar (clavar un clavo, usarlo
de seguridad personal, hacer ruido,etc poli formas de uso)
del zapato.

Ahora no entiendo por que decis que podes "solucionar" el
polimorfismo con las Interfaces ?.
Te pregunto si querer investigar nada de VB y lo poco que
se, trato de olvidarme dia a dia.

Te pregunto porque considero que es agregar un problema
mas "a tu solucion". Como vos decis es muy bueno "VER" las
limitaciones que tienen los lenguajes que usamos y6 yo
agrego que es muy sano, no querer caminar mas de lo que el
tajo de la pollera te deja.
El problema que veo, y te repito de mi comentario
anterior, de esta forma parece mas a una ensalada de fruta
que a un programa que aplica el paradigma de objetos.


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
#19 Marcelo Papalini \( \(arielGimenez\) Convert.ToRe-ReEstupido\(ReEstupido\)\)
16/12/2003 - 19:41 | Informe spam
JuanI,
creo que estas leyendo una biblia apocrifa ?

Cuidado con los falsos mesias !!!!

Miremos el ejemplo que da.

El Dicipulo dice:
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.



El arbol de clases del dicipulo es asi :


AlarmClock
Radio
ClockRadio.

Yo quisiera preguntarle si sabe que es una clase y el por
que se utiliza la jerarquia ?.
Y te digo por que , . Un reloj de una Radio (ClockRadio)
es una cosa que no tiene por que heredar de la radio, ES
UNA PARTE DE LA RADIO . Es aqui un ERORO de diseño del
modelo !!!!!!!!!, que supone el uso de la herencia doble.





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)
Respuesta Responder a este mensaje
#20 JuanI
16/12/2003 - 20:53 | Informe spam
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1">
<title></title>
</head>
<body>
<br>
<br>
Marcelo Papalini ( (arielGimenez) Convert.ToRe-ReEstupido(ReEstupido))
wrote:<br>
<blockquote type="cite" cite="mid02df01c3c404$309a2eb0$">
<pre wrap="">JuanI,
creo que estas leyendo una biblia apocrifa ?

Cuidado con los falsos mesias !!!!

Miremos el ejemplo que da.

El Dicipulo dice:
</pre>
<blockquote type="cite">
<pre wrap="">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.</pre>
</blockquote>
</blockquote>
El arbol de clases del dicipulo es asi :<br>
<blockquote type="cite" cite="mid02df01c3c404$309a2eb0$">
<blockquote type="cite">
<pre wrap="">AlarmClock
Radio
ClockRadio.

Yo quisiera preguntarle si sabe que es una clase y el por
que se utiliza la jerarquia ?.
Y te digo por que , . Un reloj de una Radio (ClockRadio)
es una cosa que no tiene por que heredar de la radio, ES
UNA PARTE DE LA RADIO . Es aqui un ERORO de dise&ntilde;o del
modelo !!!!!!!!!, que supone el uso de la herencia doble.</pre>
</blockquote>
</blockquote>
<pre wrap="">
</pre>
<pre wrap=""><b>Yo creo que entendiste mal lo que pone en ese libro...
yo entiendo que es mas bien asi:
<i>for example wanting to have a ClockRadio class inherit from both AlarmClock and Radio</i>
</b></pre>
<b>alarmclock ==&nbsp; \ <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; == clock radio&nbsp; (radio + tiempo/alarma) <br>
radio&nbsp; / <br>
<br>
clockradio no esta heredando de radio, sino de ambos.<br>
No estoy seguro, pero creo que interpretaste mal el clockradio. <font
color="#ff0000">clockradio no es un reloj EN una radio, sino un
aparato que ademas de sintonizar emisoras de radio tambien mide el
tiempo</font>, y probablemente fusione caracteristicas de ambos, como
sintonizar una determinada estacion a una determinada hora. osea,
clockradio no es la parte de una radio que mide el tiempo, sino un
aparato nuevom que hace ambas cosas.<br>
<br>
Clockradio no deriva de radio, clockradio es una nueva clase, que
necesita hacer cosas que hacian las otras dos, y la manera que sujiere
de hacer esto es instanciando una radio y un clock desntro de la nueva
clase clockradio, y utilizar los metodos de las mismas para simular que
son una sola clase clockradio. eso entiendo al menos.</b><br>
<br>
<br>
<br>
<blockquote type="cite" cite="mid02df01c3c404$309a2eb0$">
<pre wrap="">

</pre>
<blockquote type="cite">
<pre wrap="">--Mensaje original--

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".
</pre>
</blockquote>
<pre wrap=""><!->
</pre>
<blockquote type="cite">
<pre wrap="">me explico? no se, es algo que se me ocurre.
</pre>
</blockquote>
<pre wrap=""><!->
</pre>
<blockquote type="cite">
<pre wrap="">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)
</pre>
</blockquote>
<pre wrap=""><!->


</pre>
</blockquote>
</body>
</html>
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida