Oop U3
Oop U3
Oop U3
2
PROGRAMACIÓN ORIENTADA A OBJETOS
• La idea básica es poder crear clases basadas en clases ya existentes.
• 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.
3
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.
4
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.
5
PROGRAMACIÓN ORIENTADA A OBJETOS
Herencia Simple
6
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
7
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:
8
PROGRAMACIÓN ORIENTADA A OBJETOS
9
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); 10
PROGRAMACIÓN ORIENTADA A OBJETOS
Herencia de variables y
métodos
11
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();
12
PROGRAMACIÓN ORIENTADA A OBJETOS
Relación tener-un: Un coche tiene un tipo de motor
13
PROGRAMACIÓN ORIENTADA A OBJETOS
Relación ser-un: Un coche es un vehículo
15
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:
Cuenta::Cuenta() {
class Cuenta {
numero = 0;
public:
strcpy(nombre,"");;
long numero;
saldo = 0;
char nombre[20];
}; // primer constructor
float saldo;
Cuenta::Cuenta (float sal, long nCta) {
Cuenta ();
numero = nCta;
Cuenta (float sal,
strcpy (nombre,"");
long cTa);
saldo =
}; // clase Cuenta
sal;
}; // segundo constructor
16
PROGRAMACIÓN ORIENTADA A OBJETOS
Ejercicio de herencia
Realizar un programa que utilice POO, debe generar 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 cada tipo de persona
en cuestión.
• 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.
17
PROGRAMACIÓN ORIENTADA A OBJETOS
Práctica 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.
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.
18