problema con HERENCIA

21/05/2007 - 20:56 por Daniel Maldonado | Informe spam
Estimados. estoy estudiando C#.net y estoy comenzando mi larga y tediosa
curva de aprendizaje. Si bien no será tan dificil dado que vengo desde C++
con POO. pero estuve haciendo esta prueba de herencia y el compilador me
tira el siguiente error. Pongo el código para que vean la simplicidad del
ejemplo.

Defino una clase MAMIFEROS y luego una clase HUMANOS como herencia de
MAMIFEROS y vean el problema principalmente con el constructor de la clase
HUMANOS.

Me dice: " Ninguna sobrecarga para el método MAMIFEROS acepta "0" argumentos
".

Cual sera el error conceptual que estoy cometiendo ???.


class Mamiferos

{

public string strNombreDeEspecie;

public int intTipoDeEspecie;

public Mamiferos(string n, int t)

{

this.strNombreDeEspecie = n;

this.intTipoDeEspecie = t;

}

}



****************************************************************************
********************

****************************************************************************
********************

class Humanos : Mamiferos

{

public string strRazaDeHumano;

public int intCantidadHumanos;

public Humanos (string r, int c)

{

this.strNombreDeEspecie = r;

this.intCantidadHumanos = c;

}

}

Preguntas similare

Leer las respuestas

#36 principiante
22/05/2007 - 21:17 | Informe spam
Fue que el ejemplo de una edad límite mas bien me pareció a una regla de
integridad o una restricción check de una base de datos.
Pero si no es en un sistema de base de datos, bueno, ok.

Saludos

Jose TH



Ya te ha respondido Alfredo Novoa. Yo no hago nada que tenga que ver con
bases de datos, y uso las propiedades casi a espuertas.


Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
> El que dé rosas de comer al burro, cobrará con un rebuzno.
Respuesta Responder a este mensaje
#37 Alberto Poblacion
22/05/2007 - 21:37 | Informe spam
"RFOG" wrote in message
news:
class OtraClase
{
void Funcion1(ref string x)
{...}
void HacerAlgo()
{
MiClase c = new MiClase();
String s=c.campo;
Funcion1(ref s);
}
}

Ahora ya da igual que campo sea una propiedad o una variable. Estás
gastando un puntero s más, pero si el optimizador es bueno, se lo saltará
y meterá directamente en la pila el valor de retorno de c.campo para que
lo use Funcion1.



Si, ¿pero y si el "OtraClase" no es tuyo? Es decir, a tí te encargan
mantener "MiClase", y esta clase está en una librería que muchos
programadores que tú no conoces han utilizado. Cuando te encuentras que
MiClase tiene un campo público, observas que no te gusta ese diseño y
decides que procede corregirlo y cambiarlo por una propiedad. Piensas que
puedes cambiarlo alegremente porque no va a afectar a ninguno de los
programas existentes (que no conoces ni puedes cambiar) que llaman a esa
librería. Y resulta que no, que no puedes hacer ese cambio porque sí puede
haber algunos programas que se rompan con ello (y que desde luego podrían
corregirse si hubiera alguien encargado de hacerlo, cosa que está fuera de
tu control).

La conclusión, volviendo a conectar con el origen de este hilo de
discusión, es que el diseño inicial de la clase no debería contener un campo
público sino una propiedad, aunque la propiedad por ahora no haga nada de
nada, porque en caso contrario se dificulta el posterior mantenimiento del
código en el caso de que en el futuro se necesite que sí que haya una
propiedad para meter algo de código en el acceso al campo.
Respuesta Responder a este mensaje
#38 RFOG
22/05/2007 - 21:57 | Informe spam
En Tue, 22 May 2007 21:37:47 +0200, Alberto Poblacion
escribió:

"RFOG" wrote in message
news:
class OtraClase
{
void Funcion1(ref string x)
{...}
void HacerAlgo()
{
MiClase c = new MiClase();
String s=c.campo;
Funcion1(ref s);
}
}

Ahora ya da igual que campo sea una propiedad o una variable. Estás
gastando un puntero s más, pero si el optimizador es bueno, se lo
saltará y meterá directamente en la pila el valor de retorno de c.campo
para que lo use Funcion1.



Si, ¿pero y si el "OtraClase" no es tuyo? Es decir, a tí te encargan
mantener "MiClase", y esta clase está en una librería que muchos
programadores que tú no conoces han utilizado. Cuando te encuentras que
MiClase tiene un campo público, observas que no te gusta ese diseño y
decides que procede corregirlo y cambiarlo por una propiedad. Piensas
que puedes cambiarlo alegremente porque no va a afectar a ninguno de los
programas existentes (que no conoces ni puedes cambiar) que llaman a esa
librería. Y resulta que no, que no puedes hacer ese cambio porque sí
puede haber algunos programas que se rompan con ello (y que desde luego
podrían corregirse si hubiera alguien encargado de hacerlo, cosa que
está fuera de tu control).

La conclusión, volviendo a conectar con el origen de este hilo de
discusión, es que el diseño inicial de la clase no debería contener un
campo público sino una propiedad, aunque la propiedad por ahora no haga
nada de nada, porque en caso contrario se dificulta el posterior
mantenimiento del código en el caso de que en el futuro se necesite que
sí que haya una propiedad para meter algo de código en el acceso al
campo.




Puñetas, si es lo que estoy diciendo, que pese a que no se pueda pasar una
propiedad como parámetro es preferible usarlas...


Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
El que dé rosas de comer al burro, cobrará con un rebuzno.
Respuesta Responder a este mensaje
#39 Juan Carlos Paramá
23/05/2007 - 12:26 | Informe spam
Hola,


"Alfredo Novoa" escribió en el mensaje de
noticias news:
On Tue, 22 May 2007 12:28:03 +0200, Juan Carlos Paramá
wrote:

¿Las propiedades no hacen nada?



Las propiedades de las que estamos hablando no hacen nada.



Excepto facilitar el mantenimiento de un aplicación.

Acepto que en casos extremos, donde el rendimiento sea el objetivo básico,
una
variable pública puede ser razonable. En el resto de casos no le veo mucho
sentido
al utilizar variables públicas en vez de propiedades ni siquiera para
propiedades "Internal".

Las ventajas de mantenimiento compensan la minima caida de rendimiento.



Tanto TABLA, TABLA2 como VISTA tienen la misma estructura
y sin embargo no siempre se puede cambiar TABLA por VISTA. Por ejemplo
si la vista es:

SELECT id, valor1, valor2 FROM TABLA
UNION
SELECT id, valor3, valor3 FROM TABLA2



¿Y por que dices que no se pueden cambiar?

Si quieres puedes hacer esta vista actualizable.




No todos los motores permiten unions actualizables, en los que los permiten
hay soluciones tan poco elegantes como insertar el mismo registro en todas
las
tablas de la unión y eso no siempre es posible si por ejemplo una de las
selects
tiene una función o campo calculado, etc.

Es decir, igual que con las propiedades las vistas no son intercambiables
por las
tablas. Los son en algunas circunstancias y no en otras. Eso no es un
defecto de
diseño. Son cosas distintas aunque en ocasiones se comporten igual.

Saludos,

Juan Carlos Paramá
Respuesta Responder a este mensaje
#40 RFOG
23/05/2007 - 13:23 | Informe spam
En Tue, 22 May 2007 13:22:07 +0200, Alfredo Novoa
escribió:


El otro día leí una crítica de una traducción que destrozaba un libro
con traducciones como: "casualidades de la guerra" por "casualties of
war", y otras burradas del mismo calibre.

Vamos, como traducir "instancia" por "instance" }:-)



¿Cómo lo traducirías tu? Es que no veo otra palabra para ello.

Desde luego que como a su significado original clama al cielo (eso o poner
una póliza de 5 ptas a cada "ejemplo" en tiempo de ejecución de la clase
susodicha, y luego llevarla a la ventanilla 6). :-P
Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
El que dé rosas de comer al burro, cobrará con un rebuzno.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida