Herencia 1ª parte

21
Herencia 1ª parte Apoyo POO

Transcript of Herencia 1ª parte

Herencia 1ª parte

Apoyo POO

Introducción

• La herencia es una característica de reutilización de código en la programación orientada a objetos.

• Imagine que tiene programada una clase que describe algunas características de un grupo de objetos.

2Mtl. Lourdes Cahuich

Introducción

• Imagine también que usted tiene que programar un grupo de objetos que tienen todas las características y comportamiento de la clase que ya tiene, pero este grupo tiene –además- ciertas características particulares.

3Mtl. Lourdes Cahuich

Introducción

• En lugar de programar desde cero una nueva clase que describa estos objetos y sus características principales, es mejor crear una clase que herede de la clase existente, con todas sus propiedades y métodos, y sólo agregar las características adicionales del grupo especial de objetos.

4Mtl. Lourdes Cahuich

Clase base y clase derivada

• La clase nueva se le llama clase “derivada”

• La clase general se llama clase “base”.

Clase base

Clase D

Clase B

Clase derivada

5Mtl. Lourdes Cahuich

- nombre:string- edad:int- genero:char

Persona

+ respirar():string+ reir():string

- carrera:string- numeroCuenta:double

+ estudiar():string

Estudiante

6Mtl. Lourdes Cahuich

Ejemplo herencia básica C#

• Vamos a crear un proyecto en C#, de la misma forma que lo hemos hecho durante el curso.

• Usaremos el archivo de clase que creamos en la actividad práctica 7 (cuando aprendimos a crear archivos de clase)

• Nuestra clase se llamó “MiPrimeraClase”, ahora cambiaremos un poco ese archivo.

7Mtl. Lourdes Cahuich

Creación clase base / padre / general

• Cambiaremos el nombre de la clase “MiPrimeraClase” por “Persona”.

• Las propiedades y los métodos no cambian.

//Propiedadesprivate string nombre;private int edad;private char genero;

8Mtl. Lourdes Cahuich

Se agregan los siguientes métodos

//Métodospublic string respirar(){return "inhalar - exhalar";

}public string reir(){return "LOL";

}

9Mtl. Lourdes Cahuich

Recordamos el constructor

public Persona(){

this.nombre = "sin nombre";this.edad = 0;this.genero = '?';

}

10Mtl. Lourdes Cahuich

Creación clase derivada / hija / especializada

• Ahora crearemos OTRO archivo de clase, de manera similar a como creamos el anterior.

• Sólo que ahora en el nuevo archivo de clase incluiremos el namespace de la clase Persona

11Mtl. Lourdes Cahuich

Clase derivada

• Esta nueva clase se llamará “Estudiante” y será una clase derivada de “Persona”

using ClasePersona; Este es el namespace de la clase base

namespace ClaseEstudiante Este es el namespace de la clase derivada que estamos creando

12Mtl. Lourdes Cahuich

Herencia

public class Estudiante : Persona

Clase baseClase derivada

13Mtl. Lourdes Cahuich

Clase derivada

public class Estudiante : Persona{

//propiedades particulares del estudianteprivate string carrera;private double numeroCuenta;//métodos particulares del estudiantepublic string estudiar(){

return "Leo, Anoto, Aprendo";}

14Mtl. Lourdes Cahuich

//métodos "setters/getters"public string leeCarrera(){

return this.carrera;}public void escribeCarrera(string c){

this.carrera = c;}public double leeNumeroCuenta(){

return this.numeroCuenta;}public void escribeNumeroCuenta(double nc){

this.numeroCuenta = nc;} 15Mtl. Lourdes Cahuich

//constructor clase estudiante

public Estudiante(){

this.carrera = "Aun no se inscribe";this.numeroCuenta = 0;

}}

16Mtl. Lourdes Cahuich

Creamos interfaz para probar herencia

• Ya que tenemos las clases base y derivada, agregaremos los controles gráficos en el archivo de código de nuestra aplicación, que debe lucir así.

17Mtl. Lourdes Cahuich

private void btnCreaPersona_Click(object sender, EventArgs e){

Persona humano = new Persona();//Métodos de personalblNombre.Text = humano.leeNombre().ToString();lblEdad.Text = humano.leeEdad().ToString();lblGenero.Text = humano.leeGenero().ToString();//Métodos de estudiantelblCarrera.Text ="";lblMatricula.Text ="";lblMetodoEstudiante.Text = "";metodoPersona = humano.respirar();

}18Mtl. Lourdes Cahuich

private void btnCreaEstudiante_Click(object sender, EventArgs e){

Estudiante alumno = new Estudiante();//Métodos de personalblNombre.Text = alumno.leeNombre().ToString();lblEdad.Text = alumno.leeEdad().ToString();lblGenero.Text = alumno.leeGenero().ToString();//Métodos de estudiantelblCarrera.Text = alumno.leeCarrera().ToString();lblMatricula.Text = alumno.leeNumeroCuenta().ToString();metodoEstudiante = alumno.estudiar().ToString();

}19Mtl. Lourdes Cahuich

private void btnMetodoPersona_Click(object sender, EventArgs e)

{lblMetodoPersona.Text = metodoPersona;

}

private void btnMetodoEstudiante_Click(object sender, EventArgs e){

lblMetodoEstudiante.Text = metodoEstudiante;}

20Mtl. Lourdes Cahuich

21Mtl. Lourdes Cahuich