[C#] Dudas construccion de clases

21/03/2007 - 22:55 por Paulino Padial | Informe spam
Hola lista, antes de nada saludar y dar las gracias :)

Os planteo mi duda, es con temas de herencia de clases en c#.

Mi sistema de clases, interpretara un "ES UN" del modelo E/R. Tengo una
clase "Persona" y una clase "Alumno" ( una persona es un alumno, es un
cliente, es un profesor... )

[Informacion adicional]
Estas clases "mapean" tablas de la base de datos y tendrán funciones de
cargar, actualizar, insertar, eliminar... de modo que podre usar
tranquilamente
Alumno a = new Alumno( 1 ); //me cargara el alumno con codigo 1 y me
rellenaria el objeto a con esos datos

a.Nombre = "Otro Nombre";
a.Update() -> me actualiza los datos en la base de datos
a.LimpiarObjeto() -> resetea el objeto
[/Informacion adicional]

class Persona{

//miembros privados
private int _codigo;
private string _nombre;

Persona()//Constructor por defecto
{
_codigo = -1;
_nombre = "";
}
Persona( Persona p ){} //constructor de copias

//metodos de la clase
//Este metodo "limpia -> pone los valores por defecto a los miembros
como si se acabase de crear el objeto"

public void LimpiarObjeto(){
_codigo = -1;
_nombre = "";
}
}

//ahora tengo mi clase alumno que hereda de persona
class Alumno : Persona {
private int _nota;
Alumno() : base() /* Esto llama al constructor de la clase padre y
inicializa los valores de la clase padre a valores por defecto*/
{
_nota = -1;
}

}

[Planteamiento de las dudas]
Aqui van mis dudas:

1.- Deseo crear en la clase Hija ( Alumno ) una funcion que se llame
igual que la de la clase padre -> LimpiarObjeto() que lo que hara sera
lo mismo que la del padre pero con los datos del objeto alumno. El caso
esque cuando la creo me dice que ya existe, y yo quiero ponerle EL MISMO
NOMBRE.

2.- Me gustaria saber si puedo hacer la funcion como hago el constructor
de la clase hija , usando base, para no tener que incluir en el codigo
de la funcion de alumno lo siguiente

public void LimpiarObjeto(){
base.LimpiarObjeto()
}

Me gustaria algo parecido a esto
public void LimpiarObjeto() : base() {} para evitarme poner eso de
base.LimpiarObjeto()

[/Planteamiento de las dudas]


Muchas gracias de antemano.
 

Leer las respuestas

#1 Octavio Hernandez
22/03/2007 - 00:52 | Informe spam
Paulino,

1. Lo q debes haber recibido es una advertencia (no un error), diciéndote
que uses la palabra clave
new para indicar q realmente deseas ocultar el método de la clase base
definiendo otro del mismo
nombre:

public new void LimpiarObjeto()
{
base.LimpiarObjeto();
}

2. La sintaxis ": base()" solo vale para los constructores, aquí tendrás que
hacer explícita la llamada.

Slds - Octavio



"Paulino Padial" escribió en el mensaje
news:
Hola lista, antes de nada saludar y dar las gracias :)

Os planteo mi duda, es con temas de herencia de clases en c#.

Mi sistema de clases, interpretara un "ES UN" del modelo E/R. Tengo una
clase "Persona" y una clase "Alumno" ( una persona es un alumno, es un
cliente, es un profesor... )

[Informacion adicional]
Estas clases "mapean" tablas de la base de datos y tendrán funciones de
cargar, actualizar, insertar, eliminar... de modo que podre usar
tranquilamente
Alumno a = new Alumno( 1 ); //me cargara el alumno con codigo 1 y me
rellenaria el objeto a con esos datos

a.Nombre = "Otro Nombre";
a.Update() -> me actualiza los datos en la base de datos
a.LimpiarObjeto() -> resetea el objeto
[/Informacion adicional]

class Persona{

//miembros privados
private int _codigo;
private string _nombre;

Persona()//Constructor por defecto
{
_codigo = -1;
_nombre = "";
}
Persona( Persona p ){} //constructor de copias

//metodos de la clase
//Este metodo "limpia -> pone los valores por defecto a los miembros como
si se acabase de crear el objeto"

public void LimpiarObjeto(){
_codigo = -1;
_nombre = "";
}
}

//ahora tengo mi clase alumno que hereda de persona
class Alumno : Persona {
private int _nota;
Alumno() : base() /* Esto llama al constructor de la clase padre y
inicializa los valores de la clase padre a valores por defecto*/
{ _nota = -1;
}

}

[Planteamiento de las dudas]
Aqui van mis dudas:

1.- Deseo crear en la clase Hija ( Alumno ) una funcion que se llame igual
que la de la clase padre -> LimpiarObjeto() que lo que hara sera lo mismo
que la del padre pero con los datos del objeto alumno. El caso esque
cuando la creo me dice que ya existe, y yo quiero ponerle EL MISMO NOMBRE.

2.- Me gustaria saber si puedo hacer la funcion como hago el constructor
de la clase hija , usando base, para no tener que incluir en el codigo de
la funcion de alumno lo siguiente

public void LimpiarObjeto(){
base.LimpiarObjeto()
}

Me gustaria algo parecido a esto
public void LimpiarObjeto() : base() {} para evitarme poner eso de
base.LimpiarObjeto()

[/Planteamiento de las dudas]


Muchas gracias de antemano.

Preguntas similares