SlideShare una empresa de Scribd logo
1 de 13
Programación de computadores 2
Introducción Herencia y Polimorfismo
Ingeniería de Software
2024
Herencia:
La herencia en programación orientada a objetos es un concepto fundamental
que permite la creación de clases nuevas basadas en clases existentes. En
términos simples, una clase puede heredar atributos y métodos de otra clase, lo
que facilita la reutilización del código y la organización de la jerarquía de clases.
Cuando una clase hereda de otra, la clase que hereda se llama subclase o clase
derivada, y la clase de la que hereda se llama superclase o clase base. La
subclase hereda todos los atributos y métodos de la superclase y puede agregar
nuevos atributos y métodos, o modificar los existentes.
La herencia facilita la creación de un código más modular y fácil de mantener.
Además, permite la aplicación del principio de sustitución de Liskov, que
establece que un objeto de una subclase puede ser usado en cualquier lugar
donde se espera un objeto de la superclase, sin alterar el comportamiento del
programa.
Ejemplo de herencia en Python:
En este ejemplo, la clase ‘Animal’ es la superclase, y
las clases ‘Perro’ y ‘Gato’ son subclases que heredan
de ‘Animal’. Cada subclase redefine el método
‘hacer_sonido’, proporcionando su propia
implementación específica.
Terminología importante:
• Superclase: la clase cuyas características se heredan se conoce como
superclase (o una clase base o una clase principal).
• Subclase: la clase que hereda la otra clase se conoce como subclase (o
una clase derivada, clase extendida o clase hija). La subclase puede
agregar sus propios campos y métodos, además de los campos y
métodos de la superclase.
• Reutilización: la herencia respalda el concepto de “reutilización”, es
decir, cuando queremos crear una clase nueva y ya hay una clase que
incluye parte del código que queremos, podemos derivar nuestra nueva
clase de la clase existente. Al hacer esto, estamos reutilizando los
campos/atributos y métodos de la clase existente.
Herencia en Java:
• Todas las clases son descendientes de la clase Object
• La cláusula extends especifica el ancestro inmediato de la clase
• Una subclase o clase derivada hereda todos los campos y métodos de la
superclase o clase base
• Java soporta herencia simple (sólo una clase base)
"hereda de"
"extiende"
"is a"
ancestro
superclase
clase base
descendientes
subclases
clases derivadas
Ejemplo herencia en Java:
class Figura {
int x, y;
public void print() { ... }
public void setX(int x) { this.x = x; }
public void setY(int y) { this.y = y; }
}
class Rectangulo extends Figura {
int largo, ancho;
public void setLargo(int largo) { this.largo = largo; }
public void setAncho(int ancho) { this.ancho = ancho; }
}
class App {
void f() {
Rectangulo r = new Rectangulo();
r.setX(10); r.setY(20);
r.setAncho(100); r.setLargo(300);
}
}
La clase Circulo es derivada de la
clase base Figura
La clase Circulo hereda métodos
setX y setY de clase base Figura
Encapsulamiento:
• Una clase derivada tiene acceso a los miembros public y protected de
una clase base, aunque pertenezcan a paquetes diferentes
• Una clase derivada tiene acceso a los miembros package de una clase
base si ambas clases pertenecen al mismo paquete
• Una clase derivada no tiene acceso a los miembros private de una clase
base
Polimorfismo:
El polimorfismo es otro concepto clave en la programación orientada a
objetos que se basa en la capacidad de los objetos de diferentes clases de
responder al mismo mensaje de manera distinta. En esencia, el
polimorfismo permite tratar objetos de diferentes clases de manera
uniforme si tienen una interfaz común.
Ejemplo de polimorfismo en Python:
En este ejemplo, la función ‘hacer_ruido’ puede
recibir objetos de cualquier subclase de ‘Animal’,
pero la implementación específica del método
‘hacer_sonido’ que se llama depende del tipo real
del objeto pasado. Esto demuestra cómo el
polimorfismo permite tratar objetos de diferentes
clases de manera uniforme.
¿Para que sirve el Polimorfismo:
Vamos a explicarlo para ello partiremos de un ejemplo en el cual tenemos
las siguientes clases:
• Persona
• Deportista
• Informatico.
¿Para que sirve el Polimorfismo:
Estas clases están organizadas en una jerarquía de herencia en la cual la
clase Persona es la clase padre y el resto heredan de ella.
El método correr de la clase Persona es un método abstracto y no tiene
implementación . Por el contrario los métodos de la clases hijas tienen
sobrecargado el método correr. El deportista correrá a 7 hm/hora y el
Informatico a 2km/h
_Herencia_Polimorfismo_Polimorfismo.pptx

Más contenido relacionado

Similar a _Herencia_Polimorfismo_Polimorfismo.pptx

Similar a _Herencia_Polimorfismo_Polimorfismo.pptx (20)

Herencia
Herencia Herencia
Herencia
 
Herencia y polimorfismo
Herencia y polimorfismoHerencia y polimorfismo
Herencia y polimorfismo
 
Reporte
ReporteReporte
Reporte
 
Reporte
ReporteReporte
Reporte
 
08 Herencia
08   Herencia08   Herencia
08 Herencia
 
Programaciom avanzada orientada a objetos
Programaciom avanzada orientada a objetosProgramaciom avanzada orientada a objetos
Programaciom avanzada orientada a objetos
 
Herencia poo
Herencia pooHerencia poo
Herencia poo
 
Cesar adrian barrios alarcon unidad 2
Cesar adrian barrios alarcon      unidad 2       Cesar adrian barrios alarcon      unidad 2
Cesar adrian barrios alarcon unidad 2
 
java (clases,herencias,encapsulamiento,.. )
java (clases,herencias,encapsulamiento,.. )java (clases,herencias,encapsulamiento,.. )
java (clases,herencias,encapsulamiento,.. )
 
Programación orientada a objetos (Herencia)
Programación orientada a objetos (Herencia)Programación orientada a objetos (Herencia)
Programación orientada a objetos (Herencia)
 
Herencia informatica
Herencia informaticaHerencia informatica
Herencia informatica
 
Clase y Herencia en VB
Clase y Herencia en VBClase y Herencia en VB
Clase y Herencia en VB
 
Herencia
HerenciaHerencia
Herencia
 
Historia java ruben rodriguez
Historia java ruben rodriguezHistoria java ruben rodriguez
Historia java ruben rodriguez
 
Presentacion de clases en c#
Presentacion de clases en c#Presentacion de clases en c#
Presentacion de clases en c#
 
Historia java ruben
Historia java rubenHistoria java ruben
Historia java ruben
 
Lp13
Lp13Lp13
Lp13
 
Tema4 herencia
Tema4 herenciaTema4 herencia
Tema4 herencia
 
Cuarta sesion herencia y polimorfismo-explicacion anibal
Cuarta sesion herencia y polimorfismo-explicacion anibalCuarta sesion herencia y polimorfismo-explicacion anibal
Cuarta sesion herencia y polimorfismo-explicacion anibal
 
JAVA- basico
JAVA- basicoJAVA- basico
JAVA- basico
 

Más de FabianAndresNuezPinz

_Algebra_Boole_Algebra_Boole_Algebra_Boole.pptx
_Algebra_Boole_Algebra_Boole_Algebra_Boole.pptx_Algebra_Boole_Algebra_Boole_Algebra_Boole.pptx
_Algebra_Boole_Algebra_Boole_Algebra_Boole.pptxFabianAndresNuezPinz
 
_Tablas_de_Verdad_Tablas_de_Verdad_Tablas_de_Verdad.pptx
_Tablas_de_Verdad_Tablas_de_Verdad_Tablas_de_Verdad.pptx_Tablas_de_Verdad_Tablas_de_Verdad_Tablas_de_Verdad.pptx
_Tablas_de_Verdad_Tablas_de_Verdad_Tablas_de_Verdad.pptxFabianAndresNuezPinz
 
Ecuaciones de RecurrenciaEcuaciones .pptx
Ecuaciones de RecurrenciaEcuaciones .pptxEcuaciones de RecurrenciaEcuaciones .pptx
Ecuaciones de RecurrenciaEcuaciones .pptxFabianAndresNuezPinz
 
_Presentación del curso_Presentación del curso.pptx
_Presentación del curso_Presentación del curso.pptx_Presentación del curso_Presentación del curso.pptx
_Presentación del curso_Presentación del curso.pptxFabianAndresNuezPinz
 
_Concepto de interfaz_interfaz_interfaz_interfaz_interfaz_.pptx
_Concepto de interfaz_interfaz_interfaz_interfaz_interfaz_.pptx_Concepto de interfaz_interfaz_interfaz_interfaz_interfaz_.pptx
_Concepto de interfaz_interfaz_interfaz_interfaz_interfaz_.pptxFabianAndresNuezPinz
 
Presentación del cursocursocursocursocursocursocursocursocursocursocursocurso...
Presentación del cursocursocursocursocursocursocursocursocursocursocursocurso...Presentación del cursocursocursocursocursocursocursocursocursocursocursocurso...
Presentación del cursocursocursocursocursocursocursocursocursocursocursocurso...FabianAndresNuezPinz
 

Más de FabianAndresNuezPinz (6)

_Algebra_Boole_Algebra_Boole_Algebra_Boole.pptx
_Algebra_Boole_Algebra_Boole_Algebra_Boole.pptx_Algebra_Boole_Algebra_Boole_Algebra_Boole.pptx
_Algebra_Boole_Algebra_Boole_Algebra_Boole.pptx
 
_Tablas_de_Verdad_Tablas_de_Verdad_Tablas_de_Verdad.pptx
_Tablas_de_Verdad_Tablas_de_Verdad_Tablas_de_Verdad.pptx_Tablas_de_Verdad_Tablas_de_Verdad_Tablas_de_Verdad.pptx
_Tablas_de_Verdad_Tablas_de_Verdad_Tablas_de_Verdad.pptx
 
Ecuaciones de RecurrenciaEcuaciones .pptx
Ecuaciones de RecurrenciaEcuaciones .pptxEcuaciones de RecurrenciaEcuaciones .pptx
Ecuaciones de RecurrenciaEcuaciones .pptx
 
_Presentación del curso_Presentación del curso.pptx
_Presentación del curso_Presentación del curso.pptx_Presentación del curso_Presentación del curso.pptx
_Presentación del curso_Presentación del curso.pptx
 
_Concepto de interfaz_interfaz_interfaz_interfaz_interfaz_.pptx
_Concepto de interfaz_interfaz_interfaz_interfaz_interfaz_.pptx_Concepto de interfaz_interfaz_interfaz_interfaz_interfaz_.pptx
_Concepto de interfaz_interfaz_interfaz_interfaz_interfaz_.pptx
 
Presentación del cursocursocursocursocursocursocursocursocursocursocursocurso...
Presentación del cursocursocursocursocursocursocursocursocursocursocursocurso...Presentación del cursocursocursocursocursocursocursocursocursocursocursocurso...
Presentación del cursocursocursocursocursocursocursocursocursocursocursocurso...
 

Último

TECNOLOGIA DE LA INFORMACION Y MULTIMEDIA 15 MAYO.pptx
TECNOLOGIA DE LA INFORMACION Y MULTIMEDIA 15 MAYO.pptxTECNOLOGIA DE LA INFORMACION Y MULTIMEDIA 15 MAYO.pptx
TECNOLOGIA DE LA INFORMACION Y MULTIMEDIA 15 MAYO.pptxUPSE
 
Modelado de Casos de uso del negocio
Modelado de  Casos  de  uso  del negocioModelado de  Casos  de  uso  del negocio
Modelado de Casos de uso del negocioMagemyl Egana
 
serenidad APP presentacion.pdfes una innovadora aplicación móvil diseñada par...
serenidad APP presentacion.pdfes una innovadora aplicación móvil diseñada par...serenidad APP presentacion.pdfes una innovadora aplicación móvil diseñada par...
serenidad APP presentacion.pdfes una innovadora aplicación móvil diseñada par...juanforero141
 
TECNOLOGÍA DE LA INFORMACIÓN SLIDESHARE INVESTIGACION.pdf
TECNOLOGÍA DE LA INFORMACIÓN SLIDESHARE INVESTIGACION.pdfTECNOLOGÍA DE LA INFORMACIÓN SLIDESHARE INVESTIGACION.pdf
TECNOLOGÍA DE LA INFORMACIÓN SLIDESHARE INVESTIGACION.pdfUPSE
 
Ciberseguridad y Seguridad Informática Franco Correa Grupo B.pptx
Ciberseguridad y Seguridad Informática Franco Correa Grupo B.pptxCiberseguridad y Seguridad Informática Franco Correa Grupo B.pptx
Ciberseguridad y Seguridad Informática Franco Correa Grupo B.pptxcorreafrancoci00
 
Especificación casos de uso del negocio
Especificación  casos de uso del negocioEspecificación  casos de uso del negocio
Especificación casos de uso del negocioMagemyl Egana
 
Tipos de datos en Microsoft Access definiciones.pdf
Tipos de datos en Microsoft Access definiciones.pdfTipos de datos en Microsoft Access definiciones.pdf
Tipos de datos en Microsoft Access definiciones.pdfCarlosSanchez452245
 
CIBERSEGURIDAD Y SEGURIDAD INFORMÁTICA.pptx
CIBERSEGURIDAD  Y SEGURIDAD INFORMÁTICA.pptxCIBERSEGURIDAD  Y SEGURIDAD INFORMÁTICA.pptx
CIBERSEGURIDAD Y SEGURIDAD INFORMÁTICA.pptxalzabenjaminci00
 
El necesario mal del Legacy Code (Drupal Iberia 2024)
El necesario mal del Legacy Code (Drupal Iberia 2024)El necesario mal del Legacy Code (Drupal Iberia 2024)
El necesario mal del Legacy Code (Drupal Iberia 2024)Samuel Solís Fuentes
 

Último (9)

TECNOLOGIA DE LA INFORMACION Y MULTIMEDIA 15 MAYO.pptx
TECNOLOGIA DE LA INFORMACION Y MULTIMEDIA 15 MAYO.pptxTECNOLOGIA DE LA INFORMACION Y MULTIMEDIA 15 MAYO.pptx
TECNOLOGIA DE LA INFORMACION Y MULTIMEDIA 15 MAYO.pptx
 
Modelado de Casos de uso del negocio
Modelado de  Casos  de  uso  del negocioModelado de  Casos  de  uso  del negocio
Modelado de Casos de uso del negocio
 
serenidad APP presentacion.pdfes una innovadora aplicación móvil diseñada par...
serenidad APP presentacion.pdfes una innovadora aplicación móvil diseñada par...serenidad APP presentacion.pdfes una innovadora aplicación móvil diseñada par...
serenidad APP presentacion.pdfes una innovadora aplicación móvil diseñada par...
 
TECNOLOGÍA DE LA INFORMACIÓN SLIDESHARE INVESTIGACION.pdf
TECNOLOGÍA DE LA INFORMACIÓN SLIDESHARE INVESTIGACION.pdfTECNOLOGÍA DE LA INFORMACIÓN SLIDESHARE INVESTIGACION.pdf
TECNOLOGÍA DE LA INFORMACIÓN SLIDESHARE INVESTIGACION.pdf
 
Ciberseguridad y Seguridad Informática Franco Correa Grupo B.pptx
Ciberseguridad y Seguridad Informática Franco Correa Grupo B.pptxCiberseguridad y Seguridad Informática Franco Correa Grupo B.pptx
Ciberseguridad y Seguridad Informática Franco Correa Grupo B.pptx
 
Especificación casos de uso del negocio
Especificación  casos de uso del negocioEspecificación  casos de uso del negocio
Especificación casos de uso del negocio
 
Tipos de datos en Microsoft Access definiciones.pdf
Tipos de datos en Microsoft Access definiciones.pdfTipos de datos en Microsoft Access definiciones.pdf
Tipos de datos en Microsoft Access definiciones.pdf
 
CIBERSEGURIDAD Y SEGURIDAD INFORMÁTICA.pptx
CIBERSEGURIDAD  Y SEGURIDAD INFORMÁTICA.pptxCIBERSEGURIDAD  Y SEGURIDAD INFORMÁTICA.pptx
CIBERSEGURIDAD Y SEGURIDAD INFORMÁTICA.pptx
 
El necesario mal del Legacy Code (Drupal Iberia 2024)
El necesario mal del Legacy Code (Drupal Iberia 2024)El necesario mal del Legacy Code (Drupal Iberia 2024)
El necesario mal del Legacy Code (Drupal Iberia 2024)
 

_Herencia_Polimorfismo_Polimorfismo.pptx

  • 1.
  • 2. Programación de computadores 2 Introducción Herencia y Polimorfismo Ingeniería de Software 2024
  • 3. Herencia: La herencia en programación orientada a objetos es un concepto fundamental que permite la creación de clases nuevas basadas en clases existentes. En términos simples, una clase puede heredar atributos y métodos de otra clase, lo que facilita la reutilización del código y la organización de la jerarquía de clases. Cuando una clase hereda de otra, la clase que hereda se llama subclase o clase derivada, y la clase de la que hereda se llama superclase o clase base. La subclase hereda todos los atributos y métodos de la superclase y puede agregar nuevos atributos y métodos, o modificar los existentes. La herencia facilita la creación de un código más modular y fácil de mantener. Además, permite la aplicación del principio de sustitución de Liskov, que establece que un objeto de una subclase puede ser usado en cualquier lugar donde se espera un objeto de la superclase, sin alterar el comportamiento del programa.
  • 4. Ejemplo de herencia en Python: En este ejemplo, la clase ‘Animal’ es la superclase, y las clases ‘Perro’ y ‘Gato’ son subclases que heredan de ‘Animal’. Cada subclase redefine el método ‘hacer_sonido’, proporcionando su propia implementación específica.
  • 5. Terminología importante: • Superclase: la clase cuyas características se heredan se conoce como superclase (o una clase base o una clase principal). • Subclase: la clase que hereda la otra clase se conoce como subclase (o una clase derivada, clase extendida o clase hija). La subclase puede agregar sus propios campos y métodos, además de los campos y métodos de la superclase. • Reutilización: la herencia respalda el concepto de “reutilización”, es decir, cuando queremos crear una clase nueva y ya hay una clase que incluye parte del código que queremos, podemos derivar nuestra nueva clase de la clase existente. Al hacer esto, estamos reutilizando los campos/atributos y métodos de la clase existente.
  • 6. Herencia en Java: • Todas las clases son descendientes de la clase Object • La cláusula extends especifica el ancestro inmediato de la clase • Una subclase o clase derivada hereda todos los campos y métodos de la superclase o clase base • Java soporta herencia simple (sólo una clase base) "hereda de" "extiende" "is a" ancestro superclase clase base descendientes subclases clases derivadas
  • 7. Ejemplo herencia en Java: class Figura { int x, y; public void print() { ... } public void setX(int x) { this.x = x; } public void setY(int y) { this.y = y; } } class Rectangulo extends Figura { int largo, ancho; public void setLargo(int largo) { this.largo = largo; } public void setAncho(int ancho) { this.ancho = ancho; } } class App { void f() { Rectangulo r = new Rectangulo(); r.setX(10); r.setY(20); r.setAncho(100); r.setLargo(300); } } La clase Circulo es derivada de la clase base Figura La clase Circulo hereda métodos setX y setY de clase base Figura
  • 8. Encapsulamiento: • Una clase derivada tiene acceso a los miembros public y protected de una clase base, aunque pertenezcan a paquetes diferentes • Una clase derivada tiene acceso a los miembros package de una clase base si ambas clases pertenecen al mismo paquete • Una clase derivada no tiene acceso a los miembros private de una clase base
  • 9. Polimorfismo: El polimorfismo es otro concepto clave en la programación orientada a objetos que se basa en la capacidad de los objetos de diferentes clases de responder al mismo mensaje de manera distinta. En esencia, el polimorfismo permite tratar objetos de diferentes clases de manera uniforme si tienen una interfaz común.
  • 10. Ejemplo de polimorfismo en Python: En este ejemplo, la función ‘hacer_ruido’ puede recibir objetos de cualquier subclase de ‘Animal’, pero la implementación específica del método ‘hacer_sonido’ que se llama depende del tipo real del objeto pasado. Esto demuestra cómo el polimorfismo permite tratar objetos de diferentes clases de manera uniforme.
  • 11. ¿Para que sirve el Polimorfismo: Vamos a explicarlo para ello partiremos de un ejemplo en el cual tenemos las siguientes clases: • Persona • Deportista • Informatico.
  • 12. ¿Para que sirve el Polimorfismo: Estas clases están organizadas en una jerarquía de herencia en la cual la clase Persona es la clase padre y el resto heredan de ella. El método correr de la clase Persona es un método abstracto y no tiene implementación . Por el contrario los métodos de la clases hijas tienen sobrecargado el método correr. El deportista correrá a 7 hm/hora y el Informatico a 2km/h