Está en la página 1de 20

TECNOLÓGICO NACIONAL DE MÉXICO

Instituto Tecnológico Superior de Guasave


Ingeniería en Sistemas Computacionales
Programación Orientada a Objetos
Unidad 3: Herencia

www.itsguasave.edu.mx..
PROGRAMACIÓN
FUNDAMENTOS DEORIENTADA A OBJETOS
BASE DE DATOS

Competencia de la unidad:
Identifica y aplica relaciones de herencia en clases derivadas
para reutilizar los miembros de una clase base en el desarrollo
de aplicaciones.
PROGRAMACIÓN ORIENTADA A OBJETOS
Introducción
La Herencia
• Es la capacidad de compartir atributos y métodos entre clases.

• Es la propiedad que permite definir nuevas clases usando como base


clases ya existentes.

• La nueva clase (clase derivada) hereda los atributos y comportamiento


que son específicos de esta.

3
PROGRAMACIÓN ORIENTADA A OBJETOS
• La idea básica es poder crear clases basadas en clases ya existentes.

• Cuando heredamos de una clase existente, estamos re-usando código


(métodos y campos).

• Podemos agregar métodos y variables para adaptar la clase a la nueva


situación.

• C++ también permite consultar por la estructura de una clase (cuáles son
sus métodos y variables). A esto se le llama reflexión.

4
PROGRAMACIÓN ORIENTADA A OBJETOS
• La herencia la identificamos cuando encontramos la relación es-un entre
la nueva clase y la ya existente. Un estudiante es una persona.

• La clase ya existente se le llama superclase, clase base , o clase padre.

• A la nueva clase se le llama subclase, clase derivada, o clase hija.

5
PROGRAMACIÓN ORIENTADA A OBJETOS
Redefinición de métodos
• En la clase derivada podemos redefinir (override) métodos, lo
cual corresponde a re-implementar un método de la clase base
en la clase derivada.

6
PROGRAMACIÓN ORIENTADA A OBJETOS
• Supongamos que los gerentes reciben bonos por su desempeño. Luego su
salario será aquel en su calidad de empleado más los bonos que le
correspondan.
Herencia Simple

7
PROGRAMACIÓN ORIENTADA A OBJETOS
• El conjunto de elementos que pertenecen a un tipo incluye a los
elementos que pertenezcan a sus subtipos. Herencia Simple

8
PROGRAMACIÓN ORIENTADA A OBJETOS
Principio de subtipos: “Un objeto de un subtipo puede aparecer en
cualquier lugar donde se espera que aparezca un objeto del supertipo.”
• Los animales son capaces de moverse por sí mismos.
• Los mamíferos son capaces de moverse por sí mismos.
• Las aves son capaces de moverse por sí mismas.
• Los gatos son capaces de moverse por sí mismos.
A la inversa no siempre se cumple:

9
PROGRAMACIÓN ORIENTADA A OBJETOS

10
PROGRAMACIÓN ORIENTADA A OBJETOS
El principio de los subtipos también se cumple en la P.O.O.
• Una función que recibe un objeto de la clase base.
void Despedir (empleado);
• Puede recibir objetos de la clase base y también de sus derivadas.
empleado e;
empleado_producción ep;
empleado_comerciales ec;
Despedir (e);
Despedir (ep);
Despedir (ec);
11
PROGRAMACIÓN ORIENTADA A OBJETOS
Herencia de variables y
métodos

12
PROGRAMACIÓN ORIENTADA A OBJETOS
Las clases derivadas reciben las variables y métodos de la clase base.
• Empleado_comercial ec;
• Empleado_produccion ep;
• ec.Cambiar_Sueldo();
• ep.Cambiar_Sueldo();

13
PROGRAMACIÓN ORIENTADA A OBJETOS
Relación tener-un: Un coche tiene un tipo de motor

• Composición significa contener un objeto.

14
PROGRAMACIÓN ORIENTADA A OBJETOS
Relación ser-un: Un coche es un vehículo

• Herencia significa contener una clase.

class coche:: vehiculo{ … };


class autobus:: vehiculo{ … };
15
PROGRAMACIÓN ORIENTADA A OBJETOS
Herencia en C ++
• C ++ permite definir una clase como subclase de
Clase Padre
una clase padre.
class clase_hija: :clase_padre
{
miembros de la clase
..........
Clase Hija

16
PROGRAMACIÓN ORIENTADA A OBJETOS
Sobre carga de constructores: los constructores también pueden ser
sobrecargados, por lo que al crear un nuevo objeto se debe indicar los
parámetros apropiados para llevarlo a cabo:

class Cuenta { Cuenta::Cuenta() {


public: numero = 0;
long numero; strcpy(nombre,"");
char nombre[20]; saldo = 0;
float saldo; } // primer constructor
Cuenta (); Cuenta::Cuenta (float sal, long nCta) {
Cuenta (float sal, long cTa); numero = nCta;
}; // clase Cuenta strcpy (nombre,"");
saldo = sal;
} // segundo constructor 17
PROGRAMACIÓN ORIENTADA A OBJETOS
Ejercicio de herencia
Realizar un programa que utilice POO, debe conceptualizar una clase llamada
persona y heredar sus características a otra subclase llamada empleado y otra
llamada estudiante.
• Se deben crear los constructores necesarios por clase.
• Se deben crear los métodos por clase apropiados para capturar los datos de
cada tipo de persona en cuestión.
• A la clase empleado agregar los atributos NumEmpleado, Sueldo, Depto.
• A la clase estudiante agregar los atributos Matricula, Carrera, Campus.
• En la rutina main se debe presentar un menú básico que permita decidir si
se van a capturar los datos de un empleado o de un estudiante.
18
PROGRAMACIÓN ORIENTADA A OBJETOS
Práctica de herencia
Realizar un programa que utilice POO y crear una clase llamada
ListaMultimedia que contenga Número, Nombre, productora, distribuidora,
duración, género, año. Debes utilizar arreglos para que se puedan capturar al
menos 20 elementos.
• Se cree una subclase ListaMusica, por cada elemento agregar nombre del
cantante, autor y álbum.
• Crear una subclase llamada ListaVideo de tamaño, por cada elemento
capturar protagonista, director, clasificación.

19
PROGRAMACIÓN ORIENTADA A OBJETOS
Proyecto de herencia
• Realizar un programa que utilice POO, debe generar la clase impuesto y
heredarla en 3 tipos de impuesto, IVA, IH, IEPS, cada uno de estos impuestos
tiene porcentajes distintos de cobro sobre la base grabable, por lo que la clase
padre debe tener método que reciba el monto y el porcentaje y regrese el total
a cobrar como impuesto, las clases heredadas harán uso de esta rutina sin
modificarla.
• Las clases heredadas deben contar con su propio método de captura cada una.
• Implementar en la rutina main un menú básico en el cual se pida el tipo de
impuesto a calcular, IVA =16%, IH=2% mas el IVA correspondiente, en el caso
del IEPS depende del octanaje de la gasolina, cuando es menor a 92 octanos es
11.95%, cuando es mayor o igual a 92 octanos es 16%, además de sumar el IVA
correspondiente al total de impuestos a pagar.
20

También podría gustarte