Herencia.

 

La herencia es uno de los pilares del paradigma orientado a objetos, cuando creamos una clase base y por necesidad queremos implementar la herencia a sus clases derivadas.

Todas las clases están clasificadas en una jerarquía, donde cada clase tiene su superclase (clase base) y cada clase puede tener una o más subclases (clase derivada).

La herencia me permite heredar los atributos y métodos de una clase base a una clase derivada.

A continuación veremos el siguiente diagrama para ejemplificar lo que es herencia:

clip_image001

La clase base (superclase) persona va heredar sus atributos y métodos (algunos o todos) a la clase derivada veterinario y abogado (subclases), esto con el fin de no escribir las mismas líneas de código en cada clase que hacemos herencia, si bien sabemos que un veterinario tiene un nombre, una edad, un peso y el abogado también no es necesario escribir nuevamente el nombre, el peso y la edad en las clases derivadas.

Aquí observamos en UML ejemplo de herencia.

clip_image002

La clase persona es una generalización de las clases veterinario y abogado.

Aquí pongo un  ejemplo de como se implementa la herencia en C#

class Abogado : Persona

class Veterinario : Persona

Donde la clase Abogado y Veterinario van heredar todos los atributos y métodos de la clase persona…pero ¿será cierto que hereda todo?

Aquí se muestra el código de la clase veterinario.

class Veterinario : Persona
   {
       //atributos...aqui puede poner nuevos atributos
       public string cedula;
       public string especialidad;
       //aqui puede meter nuevos métodos
       public void enConsulta(int a)
       {
           if (a == 1)

               System.Console.WriteLine("estoy en consulta");

           else

               System.Console.WriteLine("no estoy en consulta");

       }
       public void enCirugia(int b)
       {
           if (b == 1)

               Console.WriteLine("Estoy en cirugia");

           else
               Console.WriteLine("No estoy en Cirugia");
       }

   }

Aquí se muestra el código de la clase abogado.

class Abogado : Persona
    {
        //atributos
        public string titulo;
        public string cursos;

        //metodos
        public void litigar(int a)
        {
            if (a == 1)

                Console.WriteLine("Estoy en un litigio");

            else

                Console.WriteLine("No estoy en un litigio");
        }
    }

Aquí se muestra el código de la clase base Persona

class Persona
   {   //Atributos de la clase Persona
       public string nombre;
       public int edad;
       public double peso;
       public double estatura;
       public string colorOjos;
       public string sexo;

       /*en esta parte voy a agregar los métodos de la
        * clase persona*/
       public void comer(int state)
       {
           if (state == 1)

               System.Console.WriteLine("estoy comiendo");

           else

               System.Console.WriteLine("no estoy comiendo");
       }

       public void bailar(int st)
       {
           if (st == 1)
               System.Console.WriteLine("Estoy bailando");
           else
               Console.WriteLine("No estoy bailando");
       }

       public void tomar(int ste)
       {
           if (ste == 1)
               Console.WriteLine("Estoy tomando agua");
           else
               Console.WriteLine("No estoy tomando agua");
       }
       public void correr(int stat)
       {
           if (stat == 1)
               Console.WriteLine("Estoy corriendo");
           else
               Console.WriteLine("No estoy corriendo");
       }
       public void despertar(int s)
       {
           if (s == 1)
               Console.WriteLine("Estoy despierto, estoy despierto");
           else
               Console.WriteLine("No estoy despierto, sigo dormido");
       }
       public void dormir(int at)
       {
           if (at == 1)
               Console.WriteLine("Estoy dormido");
           else
               Console.WriteLine("SIgo despierto, tengo energia");
       }

   }

Aquí se muestra el main

static void Main(string[] args)
       {
           Veterinario persona01 = new Veterinario();  //forma de instanciar objetos instancio la clase veterinario en persona01
           persona01.nombre = "Alvaro"; //asigno los valores a los atributos del objeto persona01
           persona01.edad = 24;
           persona01.estatura = 1.80;
           persona01.peso = 79.022;
           persona01.colorOjos = "cafes";
           persona01.sexo = "Hombre";
           persona01.cedula = "1548A1115";
           persona01.especialidad = "Anfibios";
           Console.WriteLine("mi nombre es:  " + persona01.nombre);
           Console.WriteLine("Mi edad es: " + persona01.edad );
           Console.WriteLine("Mido :  " + persona01.estatura);
           Console.WriteLine("Mi peso es :  " + persona01.peso);
           Console.WriteLine(" Tengo los ojos : " + persona01.colorOjos);
           Console.WriteLine(" Mi sexo es :  " + persona01.sexo);
           Console.WriteLine(" Mi cedula es :  " + persona01.cedula);
           Console.WriteLine(" Mi especialidad es :  " + persona01.especialidad);
           persona01.tomar(0);
           persona01.enCirugia(0);
           persona01.enConsulta(1);

           Abogado persona02 = new Abogado(); //Instancio el objeto persona02
           persona02.nombre = "Fatima"; //asigno valores a sus atributos del objeto
           persona02.edad = 22;
           persona02.estatura = 1.75;
           persona02.peso = 65.201;
           persona02.colorOjos = "azules";
           persona02.sexo = "Mujer";
           persona02.titulo = "Licenciatura";
           persona02.cursos = "Litigios sobre desarollo rural, Leyes fiscales";
           Console.WriteLine("mi nombre es:  " + persona02.nombre); //imprimo en pantalla los datos de persona02
           Console.WriteLine("Mi edad es: " + persona02.edad);
           Console.WriteLine("Mido :  " + persona02.estatura);
           Console.WriteLine("Mi peso es :  " + persona02.peso);
           Console.WriteLine(" Tengo los ojos : " + persona02.colorOjos);
           Console.WriteLine(" Mi sexo es :  " + persona02.sexo);
           Console.WriteLine(" Mi titulo maximo es :  " + persona02.titulo);
           Console.WriteLine(" Mis cursos son :  " + persona02.cursos);
           persona02.litigar(0);           
       }

¿Las clases derivadas heredaron los atributos y métodos de la clase persona?

Espero sus comentarios ya que sirven de mucho para mejorar estos ejemplos.

Comentarios

Nimmue ha dicho que…
Vaaaaayaaa!!! ya te habías tardado!!!!! no nos abandones tanto ok??? aun no lo hago, en cuanto lo haga te reroalimentaré ;)

http://www.nimmue.monterd.net
La China ha dicho que…
¿Pero se podria reducir? la verdad es que necesito saber si se puede...

Entradas populares de este blog

Placa 36 cara y cruz del comandante Moneda

Cosas que debes saber antes de que vayas a programar en C#