Estrategia Nacional de Refuerzo Escolar SJA Ccesa007.pdf
introducción a herencia programación orientada a objetos
1. Renato Urvina
Escuela de Ingenierías
Ingeniería en Sistemas de
Información
Programación Orientada a Objetos
2. Programación Orientada a Objetos
Programación Orientada a Objetos
Sobrecarga
Herencia
Renato Urvina
3. Programación Orientada a Objetos
Sobrecarga
La sobrecarga es cuando hay funciones con el
mismo nombre y funcionalidad similar en clases
independientes o dentro de la misma clase pero
con diferentes parámetros.
La ventaja de la sobrecarga es que se puede usar
el mismo nombre para métodos que realizan la
misma operación con distintos tipos o cantidades
de datos.
Renato Urvina
Por ejemplo, en Java se puede sobrecargar el método
`println` para imprimir diferentes tipos de datos:
4. Programación Orientada a Objetos
Herencia
Una vez definidos los conceptos de clases y
objetos, atributos y estados, métodos y mensajes.
Antes de pasar al concepto de herencia, se debe
pasar por el concepto de Jerarquización.
Jerarquización
No es un concepto específicamente de POO, sino
que es algo que se ve en la vida real en muchos
ámbitos, algo inherente a cualquier tipo de
sistema.
Puedo haber diversos tipos de jerarquías, como
clasificación o composición
Renato Urvina
Clasificación: Este tipo de jerarquización indica que unos elementos
son una especialización de otros. Por ejemplo, los animales, donde
tenemos vertebrados e invertebrados. Luego, dentro de los
vertebrados encontramos aves, reptiles, mamíferos, etc. En los
mamíferos encontramos perros, vacas, conejos.
Composición: Es cuando unos elementos podemos decir que están
compuestos de otros, o que unos elementos están presentes en otros.
Por ejemplo, el sistema respiratorio y los pulmones, la nariz, etc.
Podemos decir que los pulmones están dentro del sistema
respiratorio, así como dentro de los pulmones encontramos
bronquios y alvéolos. En esta jerarquía de elementos tenemos
composición porque donde unos forman parte de otros. En una
factura también podemos decir que puede haber una jerarquía de
composición. La factura tiene un cliente, varios conceptos facturables,
un impuesto, etc.
6. Programación Orientada a Objetos
Herencia
Reutilización del código
Por otra parte, otro de los mecanismos que cualquier lenguaje de
programación debe proveer es la posibilidad de reutilizar el código.
En la programación estructurada tenemos las funciones, así que ya hemos
podido reutilizar código de alguna manera. Así pues, el equivalente a las
funciones, los métodos, ya nos da un grado de reutilización, pero no llegan al
nivel de potencia de las que encontraremos en la herencia.
En inglés lo resume el término "DRY", Don't Repeat Yourself (no te repitas) y es
un enunciado muy presente en programación.
"No es mejor programador quien más líneas de código hace, sino quien mejor
las reutiliza".
La herencia es un mecanismo fundamental para reutilizar código.
Renato Urvina
7. Programación Orientada a Objetos
Herencia
La herencia es crear una nueva clase que hereda
las características de otra clase ya existente.
La clase existente se llama superclase o clase
base o clase padre, y la nueva clase se llama
subclase o clase derivada.
La herencia permite reutilizar el código de la
superclase y modificar o ampliar su
comportamiento en la subclase.
Renato Urvina
8. Programación Orientada a Objetos
Herencia
Las subclases pueden redefinir los métodos y
atributos de la clase padre y añadir iotros nuevos
Renato Urvina
12. Programación Orientada a Objetos
Herencia
Renato Urvina
Por ejemplo, en Java se puede crear una subclase `Perro` que hereda de una superclase `Animal`:
13. Programación Orientada a Objetos
Herencia
Renato Urvina
Por ejemplo, en python se puede crear una subclase `Perro` que hereda de una superclase `Animal`:
14. Programación Orientada a Objetos
Herencia
Renato Urvina
Por ejemplo, en javascript se puede crear una subclase `Perro` que hereda de una superclase `Animal`:
15. Programación Orientada a Objetos
Herencia
Renato Urvina
Por ejemplo, en dart se puede crear una subclase `Perro` que hereda de una superclase `Animal`:
16. Programación Orientada a Objetos
Herencia
Renato Urvina
Por ejemplo, en c++ se puede crear una subclase `Perro` que hereda de una superclase `Animal`:
17. Programación Orientada a Objetos
Herencia
Renato Urvina
Por ejemplo, en delphi se puede crear una subclase `Perro` que hereda de una superclase `Animal`:
// Definimos una clase padre Animal
type
TAnimal = class
private
FNombre: string;
FPatas: integer;
public
constructor Create(Nombre: string; Patas: integer);
function MostrarDatos: string; virtual;
property Nombre: string read FNombre write FNombre;
property Patas: integer read FPatas write FPatas;
end;
// Definimos una clase hija Perro que hereda de Animal
type
TPerro = class(TAnimal)
private
FRaza: string;
public
constructor Create(Nombre: string; Patas: integer; Raza: string);
function MostrarDatos: string; override;
property Raza: string read FRaza write FRaza;
end;
// Implementamos el constructor de la clase padre Animal
constructor TAnimal.Create(Nombre: string; Patas: integer);
begin
FNombre := Nombre;
FPatas := Patas;
end;
// Implementamos el método MostrarDatos de la clase padre Animal
function TAnimal.MostrarDatos: string;
begin
Result := FNombre + ' tiene ' + IntToStr(FPatas) + ' patas';
end;
// Implementamos el constructor de la clase hija Perro
constructor TPerro.Create(Nombre: string; Patas: integer; Raza: string);
begin
inherited Create(Nombre, Patas); // Llamamos al constructor de la clase padre
FRaza := Raza;
end;
// Implementamos el método MostrarDatos de la clase hija Perro
function TPerro.MostrarDatos: string;
begin
Result := inherited MostrarDatos + ' y es de raza ' + FRaza; // Llamamos al método de la clase padre
end;
// Creamos un objeto de la clase Perro y lo mostramos en un Memo
var
Perro: TPerro;
begin
Perro := TPerro.Create('Firulais', 4, 'Labrador');
Memo1.Lines.Add(Perro.MostrarDatos);
end;
18. Programación Orientada a Objetos
Herencia
Renato Urvina
Ejemplo en Go, aunque es un lenguaje que no tiene soporte para la herencia clásica de clases, sino que
usa la composición y las interfaces para lograr un comportamiento similar
19. Programación Orientada a Objetos
Herencia
Renato Urvina
Ejemplo en typescript, se puede crear una subclase `Perro` que hereda de una superclase `Animal`:
20. Programación Orientada a Objetos
Herencia
Renato Urvina
Ejemplo en c#, se puede crear una subclase `Perro` que hereda de una superclase `Animal`:
class Program{
static void Main(string[] args) {
Perro perro = new Perro("Firulais", "Labrador");
perro.MostrarNombre(); // Llamamos al método de la clase hija
perro.MostrarRaza(); // Llamamos al método de la clase hija
} }
21. Programación Orientada a Objetos
Herencia
Renato Urvina
Ejemplo en java, se puede crear una subclase `Perro` que hereda de una superclase `Animal`: