SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
Renato Urvina
Escuela de Ingenierías
Ingeniería en Sistemas de
Información
Programación Orientada a Objetos
Programación Orientada a Objetos
Programación Orientada a Objetos
Sobrecarga
Herencia
Renato Urvina
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:
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.
Programación Orientada a Objetos
Herencia
Renato Urvina
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
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
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
Programación Orientada a Objetos
Tipos de Herencia
Renato Urvina
Programación Orientada a Objetos
Herencia en java
Renato Urvina
Programación Orientada a Objetos
Constructor subclase
Renato Urvina
Programación Orientada a Objetos
Herencia
Renato Urvina
Por ejemplo, en Java se puede crear una subclase `Perro` que hereda de una superclase `Animal`:
Programación Orientada a Objetos
Herencia
Renato Urvina
Por ejemplo, en python se puede crear una subclase `Perro` que hereda de una superclase `Animal`:
Programación Orientada a Objetos
Herencia
Renato Urvina
Por ejemplo, en javascript se puede crear una subclase `Perro` que hereda de una superclase `Animal`:
Programación Orientada a Objetos
Herencia
Renato Urvina
Por ejemplo, en dart se puede crear una subclase `Perro` que hereda de una superclase `Animal`:
Programación Orientada a Objetos
Herencia
Renato Urvina
Por ejemplo, en c++ se puede crear una subclase `Perro` que hereda de una superclase `Animal`:
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;
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
Programación Orientada a Objetos
Herencia
Renato Urvina
Ejemplo en typescript, se puede crear una subclase `Perro` que hereda de una superclase `Animal`:
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
} }
Programación Orientada a Objetos
Herencia
Renato Urvina
Ejemplo en java, se puede crear una subclase `Perro` que hereda de una superclase `Animal`:

Mais conteúdo relacionado

Semelhante a introducción a herencia programación orientada a objetos

Semelhante a introducción a herencia programación orientada a objetos (20)

Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
Introducción a la Programaciónen Java
Introducción a la Programaciónen JavaIntroducción a la Programaciónen Java
Introducción a la Programaciónen Java
 
Programacion de algoritmos
Programacion de algoritmosProgramacion de algoritmos
Programacion de algoritmos
 
Programacion Orientada Objetos.pdf
Programacion Orientada Objetos.pdfProgramacion Orientada Objetos.pdf
Programacion Orientada Objetos.pdf
 
Trabajo practico de lenguaje java.Conceptos. Estructuras. Programacion.
Trabajo practico de lenguaje java.Conceptos. Estructuras. Programacion.Trabajo practico de lenguaje java.Conceptos. Estructuras. Programacion.
Trabajo practico de lenguaje java.Conceptos. Estructuras. Programacion.
 
Guía práctica Herencia
Guía práctica HerenciaGuía práctica Herencia
Guía práctica Herencia
 
Programacion web
Programacion webProgramacion web
Programacion web
 
Unidad_01_01.pdf
Unidad_01_01.pdfUnidad_01_01.pdf
Unidad_01_01.pdf
 
Python
PythonPython
Python
 
PYTHON ORIENTADO A OBJETOS
PYTHON ORIENTADO A OBJETOSPYTHON ORIENTADO A OBJETOS
PYTHON ORIENTADO A OBJETOS
 
Taller 2 conceptualizacion
Taller 2 conceptualizacionTaller 2 conceptualizacion
Taller 2 conceptualizacion
 
Programación de aplicaciones
Programación de aplicacionesProgramación de aplicaciones
Programación de aplicaciones
 
Clase 1 - Programación orientada a Objetos (2).pptx
Clase 1 - Programación orientada a Objetos (2).pptxClase 1 - Programación orientada a Objetos (2).pptx
Clase 1 - Programación orientada a Objetos (2).pptx
 
Fondo1 (2)
Fondo1 (2)Fondo1 (2)
Fondo1 (2)
 
DIAPOSITIVAS CURSO PYTHON.pptx.pdf
DIAPOSITIVAS CURSO PYTHON.pptx.pdfDIAPOSITIVAS CURSO PYTHON.pptx.pdf
DIAPOSITIVAS CURSO PYTHON.pptx.pdf
 
Hola mundorafaelnavarroprieto
Hola mundorafaelnavarroprietoHola mundorafaelnavarroprieto
Hola mundorafaelnavarroprieto
 
Java jaucito
Java jaucitoJava jaucito
Java jaucito
 
Lab herencia
Lab herenciaLab herencia
Lab herencia
 
Unidad III epoo
Unidad III epooUnidad III epoo
Unidad III epoo
 
Pycon es 17 noviembre 2014
Pycon es 17 noviembre 2014Pycon es 17 noviembre 2014
Pycon es 17 noviembre 2014
 

Mais de apssoftwaredegestion

Mais de apssoftwaredegestion (7)

Listas dinámicas y programación de objetos en java
Listas dinámicas y programación de objetos  en javaListas dinámicas y programación de objetos  en java
Listas dinámicas y programación de objetos en java
 
clase 01BDF.pdf
clase 01BDF.pdfclase 01BDF.pdf
clase 01BDF.pdf
 
el-software-y-sus-clases.pdf
el-software-y-sus-clases.pdfel-software-y-sus-clases.pdf
el-software-y-sus-clases.pdf
 
Las-Variables.pdf
Las-Variables.pdfLas-Variables.pdf
Las-Variables.pdf
 
BD Federadas 01.pptx
BD Federadas 01.pptxBD Federadas 01.pptx
BD Federadas 01.pptx
 
El arte de la ciencia de datos
El arte de la ciencia de datosEl arte de la ciencia de datos
El arte de la ciencia de datos
 
Qué es la ciencia de datos.pdf
Qué es la ciencia de datos.pdfQué es la ciencia de datos.pdf
Qué es la ciencia de datos.pdf
 

Último

Vínculo afectivo (labor expositivo de grupo )
Vínculo afectivo (labor expositivo de grupo )Vínculo afectivo (labor expositivo de grupo )
Vínculo afectivo (labor expositivo de grupo )portafoliodigitalyos
 
2. Entornos Virtuales de Aprendizaje.pptx
2. Entornos Virtuales de Aprendizaje.pptx2. Entornos Virtuales de Aprendizaje.pptx
2. Entornos Virtuales de Aprendizaje.pptxJunkotantik
 
11.NEOLIBERALISMO: que es, ventajas, desventajas, consecuenciaspptx
11.NEOLIBERALISMO: que es, ventajas, desventajas, consecuenciaspptx11.NEOLIBERALISMO: que es, ventajas, desventajas, consecuenciaspptx
11.NEOLIBERALISMO: que es, ventajas, desventajas, consecuenciaspptxFESARAUGUSTOFANDIORI
 
PATRONES DE REFERENCIA, CRITERIOS Y DIAGNOSTICO Angeles.pptx
PATRONES DE REFERENCIA, CRITERIOS Y DIAGNOSTICO Angeles.pptxPATRONES DE REFERENCIA, CRITERIOS Y DIAGNOSTICO Angeles.pptx
PATRONES DE REFERENCIA, CRITERIOS Y DIAGNOSTICO Angeles.pptxSusanaAlejandraMende
 
DESCRIPCIÓN-LOS-DILEMAS-DEL-CONOCIMIENTO.pptx
DESCRIPCIÓN-LOS-DILEMAS-DEL-CONOCIMIENTO.pptxDESCRIPCIÓN-LOS-DILEMAS-DEL-CONOCIMIENTO.pptx
DESCRIPCIÓN-LOS-DILEMAS-DEL-CONOCIMIENTO.pptxMARCOSMARTINALACAYOP1
 
Ediciones Previas Proyecto de Innovacion Pedagogica ORIGAMI 3D Ccesa007.pdf
Ediciones Previas Proyecto de Innovacion Pedagogica ORIGAMI 3D  Ccesa007.pdfEdiciones Previas Proyecto de Innovacion Pedagogica ORIGAMI 3D  Ccesa007.pdf
Ediciones Previas Proyecto de Innovacion Pedagogica ORIGAMI 3D Ccesa007.pdfDemetrio Ccesa Rayme
 
Estudios Sociales libro 8vo grado Básico
Estudios Sociales libro 8vo grado BásicoEstudios Sociales libro 8vo grado Básico
Estudios Sociales libro 8vo grado Básicomaxgamesofficial15
 
novelas-cortas--3.pdf Analisis introspectivo y retrospectivo, sintesis
novelas-cortas--3.pdf Analisis introspectivo y retrospectivo, sintesisnovelas-cortas--3.pdf Analisis introspectivo y retrospectivo, sintesis
novelas-cortas--3.pdf Analisis introspectivo y retrospectivo, sintesisPsicClinGlendaBerrez
 
RESPONSABILIDAD SOCIAL EN LAS ORGANIZACIONES (4).pdf
RESPONSABILIDAD SOCIAL EN LAS ORGANIZACIONES (4).pdfRESPONSABILIDAD SOCIAL EN LAS ORGANIZACIONES (4).pdf
RESPONSABILIDAD SOCIAL EN LAS ORGANIZACIONES (4).pdfANEP - DETP
 
a propósito de la globalización y sus efectos
a propósito de la globalización y sus efectosa propósito de la globalización y sus efectos
a propósito de la globalización y sus efectossubfabian
 
Análisis de los factores internos en una Organización
Análisis de los factores internos en una OrganizaciónAnálisis de los factores internos en una Organización
Análisis de los factores internos en una OrganizaciónJonathanCovena1
 
Pasos para enviar una tarea en SIANET - sólo estudiantes.pdf
Pasos para enviar una tarea en SIANET - sólo estudiantes.pdfPasos para enviar una tarea en SIANET - sólo estudiantes.pdf
Pasos para enviar una tarea en SIANET - sólo estudiantes.pdfNELLYKATTY
 
2.15. Calendario Civico Escolar 2024.docx
2.15. Calendario Civico Escolar 2024.docx2.15. Calendario Civico Escolar 2024.docx
2.15. Calendario Civico Escolar 2024.docxCarlosEnriqueArgoteC
 
ACERTIJO CÁLCULOS MATEMÁGICOS EN LA CARRERA OLÍMPICA. Por JAVIER SOLIS NOYOLA
ACERTIJO CÁLCULOS MATEMÁGICOS EN LA CARRERA OLÍMPICA. Por JAVIER SOLIS NOYOLAACERTIJO CÁLCULOS MATEMÁGICOS EN LA CARRERA OLÍMPICA. Por JAVIER SOLIS NOYOLA
ACERTIJO CÁLCULOS MATEMÁGICOS EN LA CARRERA OLÍMPICA. Por JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
EVALUACION del tercer trimestre 2024 nap.docx
EVALUACION  del tercer trimestre 2024 nap.docxEVALUACION  del tercer trimestre 2024 nap.docx
EVALUACION del tercer trimestre 2024 nap.docxuniversidad Indoamerica
 
ANTOLOGIA COMPLETA ANITA LA ABEJITA PARA LA LECTOESCRITURA EN PRIMER GRADO.pdf
ANTOLOGIA COMPLETA ANITA LA ABEJITA PARA LA LECTOESCRITURA EN PRIMER GRADO.pdfANTOLOGIA COMPLETA ANITA LA ABEJITA PARA LA LECTOESCRITURA EN PRIMER GRADO.pdf
ANTOLOGIA COMPLETA ANITA LA ABEJITA PARA LA LECTOESCRITURA EN PRIMER GRADO.pdflvela1316
 
proyecto semana de los Jardines, actividades a realizar para resaltar esta fecha
proyecto semana de los Jardines, actividades a realizar para resaltar esta fechaproyecto semana de los Jardines, actividades a realizar para resaltar esta fecha
proyecto semana de los Jardines, actividades a realizar para resaltar esta fechanitoagurto67
 
a propósito del estado su relevancia y definiciones
a propósito del estado su relevancia y definicionesa propósito del estado su relevancia y definiciones
a propósito del estado su relevancia y definicionessubfabian
 

Último (20)

Vínculo afectivo (labor expositivo de grupo )
Vínculo afectivo (labor expositivo de grupo )Vínculo afectivo (labor expositivo de grupo )
Vínculo afectivo (labor expositivo de grupo )
 
2. Entornos Virtuales de Aprendizaje.pptx
2. Entornos Virtuales de Aprendizaje.pptx2. Entornos Virtuales de Aprendizaje.pptx
2. Entornos Virtuales de Aprendizaje.pptx
 
11.NEOLIBERALISMO: que es, ventajas, desventajas, consecuenciaspptx
11.NEOLIBERALISMO: que es, ventajas, desventajas, consecuenciaspptx11.NEOLIBERALISMO: que es, ventajas, desventajas, consecuenciaspptx
11.NEOLIBERALISMO: que es, ventajas, desventajas, consecuenciaspptx
 
PATRONES DE REFERENCIA, CRITERIOS Y DIAGNOSTICO Angeles.pptx
PATRONES DE REFERENCIA, CRITERIOS Y DIAGNOSTICO Angeles.pptxPATRONES DE REFERENCIA, CRITERIOS Y DIAGNOSTICO Angeles.pptx
PATRONES DE REFERENCIA, CRITERIOS Y DIAGNOSTICO Angeles.pptx
 
DESCRIPCIÓN-LOS-DILEMAS-DEL-CONOCIMIENTO.pptx
DESCRIPCIÓN-LOS-DILEMAS-DEL-CONOCIMIENTO.pptxDESCRIPCIÓN-LOS-DILEMAS-DEL-CONOCIMIENTO.pptx
DESCRIPCIÓN-LOS-DILEMAS-DEL-CONOCIMIENTO.pptx
 
Ediciones Previas Proyecto de Innovacion Pedagogica ORIGAMI 3D Ccesa007.pdf
Ediciones Previas Proyecto de Innovacion Pedagogica ORIGAMI 3D  Ccesa007.pdfEdiciones Previas Proyecto de Innovacion Pedagogica ORIGAMI 3D  Ccesa007.pdf
Ediciones Previas Proyecto de Innovacion Pedagogica ORIGAMI 3D Ccesa007.pdf
 
Estudios Sociales libro 8vo grado Básico
Estudios Sociales libro 8vo grado BásicoEstudios Sociales libro 8vo grado Básico
Estudios Sociales libro 8vo grado Básico
 
novelas-cortas--3.pdf Analisis introspectivo y retrospectivo, sintesis
novelas-cortas--3.pdf Analisis introspectivo y retrospectivo, sintesisnovelas-cortas--3.pdf Analisis introspectivo y retrospectivo, sintesis
novelas-cortas--3.pdf Analisis introspectivo y retrospectivo, sintesis
 
RESPONSABILIDAD SOCIAL EN LAS ORGANIZACIONES (4).pdf
RESPONSABILIDAD SOCIAL EN LAS ORGANIZACIONES (4).pdfRESPONSABILIDAD SOCIAL EN LAS ORGANIZACIONES (4).pdf
RESPONSABILIDAD SOCIAL EN LAS ORGANIZACIONES (4).pdf
 
a propósito de la globalización y sus efectos
a propósito de la globalización y sus efectosa propósito de la globalización y sus efectos
a propósito de la globalización y sus efectos
 
Análisis de los factores internos en una Organización
Análisis de los factores internos en una OrganizaciónAnálisis de los factores internos en una Organización
Análisis de los factores internos en una Organización
 
flujo de materia y energía ecosistemas.
flujo de materia y  energía ecosistemas.flujo de materia y  energía ecosistemas.
flujo de materia y energía ecosistemas.
 
Pasos para enviar una tarea en SIANET - sólo estudiantes.pdf
Pasos para enviar una tarea en SIANET - sólo estudiantes.pdfPasos para enviar una tarea en SIANET - sólo estudiantes.pdf
Pasos para enviar una tarea en SIANET - sólo estudiantes.pdf
 
2.15. Calendario Civico Escolar 2024.docx
2.15. Calendario Civico Escolar 2024.docx2.15. Calendario Civico Escolar 2024.docx
2.15. Calendario Civico Escolar 2024.docx
 
ACERTIJO CÁLCULOS MATEMÁGICOS EN LA CARRERA OLÍMPICA. Por JAVIER SOLIS NOYOLA
ACERTIJO CÁLCULOS MATEMÁGICOS EN LA CARRERA OLÍMPICA. Por JAVIER SOLIS NOYOLAACERTIJO CÁLCULOS MATEMÁGICOS EN LA CARRERA OLÍMPICA. Por JAVIER SOLIS NOYOLA
ACERTIJO CÁLCULOS MATEMÁGICOS EN LA CARRERA OLÍMPICA. Por JAVIER SOLIS NOYOLA
 
EVALUACION del tercer trimestre 2024 nap.docx
EVALUACION  del tercer trimestre 2024 nap.docxEVALUACION  del tercer trimestre 2024 nap.docx
EVALUACION del tercer trimestre 2024 nap.docx
 
ANTOLOGIA COMPLETA ANITA LA ABEJITA PARA LA LECTOESCRITURA EN PRIMER GRADO.pdf
ANTOLOGIA COMPLETA ANITA LA ABEJITA PARA LA LECTOESCRITURA EN PRIMER GRADO.pdfANTOLOGIA COMPLETA ANITA LA ABEJITA PARA LA LECTOESCRITURA EN PRIMER GRADO.pdf
ANTOLOGIA COMPLETA ANITA LA ABEJITA PARA LA LECTOESCRITURA EN PRIMER GRADO.pdf
 
¿Que es Fuerza? online 2024 Repaso CRECE.pptx
¿Que es Fuerza? online 2024 Repaso CRECE.pptx¿Que es Fuerza? online 2024 Repaso CRECE.pptx
¿Que es Fuerza? online 2024 Repaso CRECE.pptx
 
proyecto semana de los Jardines, actividades a realizar para resaltar esta fecha
proyecto semana de los Jardines, actividades a realizar para resaltar esta fechaproyecto semana de los Jardines, actividades a realizar para resaltar esta fecha
proyecto semana de los Jardines, actividades a realizar para resaltar esta fecha
 
a propósito del estado su relevancia y definiciones
a propósito del estado su relevancia y definicionesa propósito del estado su relevancia y definiciones
a propósito del estado su relevancia y definiciones
 

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.
  • 5. Programación Orientada a Objetos Herencia Renato Urvina
  • 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
  • 9. Programación Orientada a Objetos Tipos de Herencia Renato Urvina
  • 10. Programación Orientada a Objetos Herencia en java Renato Urvina
  • 11. Programación Orientada a Objetos Constructor subclase 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`: