// Animal.cs // Versión 1.0 // Fecha 6-Enero-2003 // Autor Juan Manuel Cueva Lovelle // Ejemplo de herencia
using System;
namespace Mascotas { /// <summary> /// La clase animal es la base de una jerarquía de clases /// </summary> class Animal { protected string nombre="Sin nombre"; /// <summary> /// Propiedad Nombre /// </summary> public string Nombre { set {nombre=value;} get {return nombre;} } protected int codigo; protected static int contador=0;
// Propiedad Edad protected int edad;
public int Edad { set { if (value>=0) edad=value; else Console.WriteLine("Edad no válida"); } get{return edad;} } //Sobrecarga de constructores public Animal() { codigo=contador++; Console.WriteLine("Se construyo el animal "+nombre); }
public Animal(string nombre) { this.nombre=nombre; codigo=contador++; Console.WriteLine("Se construyo el animal "+nombre); }
public virtual void Hablar() { Console.WriteLine("El animal "+nombre+" dice um, um ..."); } //Método estático public static int VerContador() { return contador; }
public override string ToString() { return ("Animal:"+nombre+" Código:"+codigo+" Edad:"+edad); } } class Mamifero:Animal { public Mamifero () { // Llamada implícita al constructor de la clase padre Console.WriteLine("Se construyo el mamifero "+nombre); } public Mamifero (string nombre):base(nombre) { // Llamada implícita al constructor de la clase padre Console.WriteLine("Se construyo el mamifero "+nombre); } public override void Hablar() { base.Hablar(); Console.WriteLine("El mamifero dice "+nombre+" dice uf,uf,..."); } } class Perro:Mamifero { public Perro () { // Llamada implícita al constructor de la clase padre Console.WriteLine("Se construyo el perro "+nombre); } public Perro (string nombre):base(nombre) { // Llamada implícita al constructor de la clase padre Console.WriteLine("Se construyo el perro "+nombre); } public override void Hablar() { base.Hablar(); Console.WriteLine("El perro dice "+nombre+" dice guau"); } /// <summary> /// Prueba unitaria del módulo Mascotas /// </summary> [STAThread] static void Main(string[] args) { //Pruebas de la clase Animal Animal prehistorico = new Animal(); Animal casero = new Animal("Elmo");
prehistorico.Edad=5000; casero.Edad=1; casero.Hablar();
string unNombre; Console.Write("Dame un nombre para un animal prehistórico: "); unNombre=Console.ReadLine(); prehistorico.Nombre=unNombre;
Console.WriteLine("Dime lo que sabes de ... "+prehistorico); Console.WriteLine("Dime lo que sabes de ... "+casero);
// Pruebas de la clase Mamifero Mamifero delfin = new Mamifero(); delfin.Nombre="delfín"; Console.WriteLine("Dime lo que sabes de ... "+delfin);
Mamifero ballena = new Mamifero ("baba"); ballena.Hablar();
Console.WriteLine("Dime lo que sabes de ... "+ballena);
// Pruebas de la clase Perro Perro pio = new Perro(); pio.Edad=2; pio.Nombre="pio"; pio.Hablar(); Console.WriteLine("Dime lo que sabes de ... "+pio);
Perro pancho = new Perro ("pancho"); pancho.Hablar(); Console.WriteLine("Dime lo que sabes de ... "+pancho);
//Ejemplo de llamada a método estático Console.WriteLine("Los animales creados son "+Animal.VerContador());
//Espera una tecla para finalizar Console.ReadLine();
} } }
|