SlideShare una empresa de Scribd logo
Herencia y Polimorfismo
UNIDAD2
ING. ALVARO ENRIQUE RUANO
Contenido
● Herencia
● Tipos de Herencia
● Polimorfismo
Herencia
● La POO se caracteriza por incorporar la característica
de Herencia.
● La Herencia es la característica que le permite a los
objetos ser construidos a partir de otros objetos.
● Es la capacidad de un objeto para utilizar las
estructuras de datos y los métodos previstos en
antepasados o ascendientes.
● El objetivo principal es la reutilización del código
desarrollado anteriormente.
Herencia
● Se apoya en el significado de los objetos en la vida diaria.
Existen clases principales y subclases que “heredan” de las
primeras.
● Un ejemplo podría ser la clase “Vehículo” que implemente
atributos como “Motor” y “Ruedas” y métodos como
“Moverse” y “Frenar”.
● Podemos crear subclases, como por ejemplo “Motocicleta”
y “Camión”.
Herencia
● Estas subclases heredan los atributos y métodos de la
clases padre, por lo que no tendremos que reescribirlos.
● Lo que sí tendremos que hacer es escribir código para
“CargarMercancía” (que es un método específico de la
clase camión).
Herencia
● La clase principal se llama “Clase Base”.
● La clase que hereda se llama “Clase Derivada”
● El conjunto de relaciones de herencia se llama “Jerarquía
de Clases” que puede verse como un árbol de relaciones.
● Las clases derivadas pueden heredar de la clases base
todas las características sin cambios, o bien modificar
aquellas características que no se acoplen a la perfección.
Herencia
Ejemplo Jerarquía de Clases
Ejemplo Herencia
Ejemplo Herencia
Ejemplo Herencia
Ejemplo Herencia
Ejemplo Herencia
Tipos de Herencia
● La herencia puede ser simple o múltiple.
● La “Herencia Simple” es aquella donde una subclase
puede heredar datos y métodos de una única clase, así
como añadir y quitar comportamientos de la clases
base.
● Entre los lenguajes que manejan herencia simple
están: Object Pascal, Smaltalk, Java y C#.
Tipos de Herencia
Tipos de Herencia
● La “Herencia Múltiple” es aquella donde una subclase
puede tener más de un ascendiente inmediato.
● Dicho de otra forma es aquel tipo de herencia donde
una clases puede adquirir datos y métodos de más de
una clase.
● La herencia múltiple puede provocarnos problemas
asociados a la ambigüedad en el nombre de métodos y
atributos entre las distintas clases Base.
● Entre los lenguajes que manejan herencia múltiple
están: Eiffel, C++ y Python.
Tipos de Herencia
Modificadores de Herencia
● Son palabras reservadas de los lenguajes de
programación que permiten especificar la forma en
que una clase se comportará en una Jerarquía de
clases.
● Existen cinco tipos principales:
o Clase Abstracta (también Métodos y Atributos)
o Clase Sellada (también Métodos y Atributos)
o Métodos y Atributos Virtuales
o Métodos y Atributos Invalidados
o Nuevas implementaciones (new operator)
Modificadores de Herencia
● Clases Abstractas: Son aquellas clases que son creadas
para ser clases base, no pueden instanciarse y la única
forma de utilizar sus métodos y atributos es por medio
de las clases derivadas. Se definen por medio de
palabras reservadas como abstract (C#, C++ y Java),
MustInherit (Visual Basic). También se puede aplicar a
los métodos y propiedades.
Modificadores de Herencia
● Clases Selladas: Son aquellas clases que no pueden ser
utilizadas como clase base, es decir no se puede
heredar de ellas. Debido a esto no pueden ser
abstractas (son modificadores excluyentes). Se definen
por medio de palabras reservadas como sealed (C# y
C++), NotInheritable (Visual Basic) o final (Java).
Modificadores de Herencia
● Propiedades y Métodos Virtuales: Indica si un
determinado atributo o método puede ser invalidado en
una clase derivada. Si las clases derivadas no invalidan el
método, se seguirá utilizando el método original. No se
puede mezclar con los modificadores estático, abstracto o
privado. El valor por defecto dependerá del lenguaje de
programación, por ejemplo los métodos son “no
virtuales” en C# y “virtuales” en Java.
Modificadores de Herencia
● Propiedades y Métodos Invalidados: Permiten
sustituir los métodos abstractos y virtuales de la clase
padre. Se utilizan palabras reservadas como override
(C#) o Overrides (Visual Basic).
Modificadores de Herencia
● Nuevas implementaciones: Se permite brindar
nuevas implementaciones a los atributos y métodos
de las clases base, utilizando la palabra new (no se
puede mezclar con override). Este tipo de
implementaciones ocultan el método original
permitiendo acceder al método correspondiente
(padre o hijo) según la forma en que estemos
accediendo al objeto (polimorfismo).
● No se necesita que el método en la clase padre sea
virtual.
● No es el caso usual.
Modificadores de Herencia
● Nuevas implementaciones:
Polimorfismo
● Habilidad de tomar diferentes formas.
● Habilidad de cambiar su comportamiento en función
de la instancia del objeto (tipo de dato en tiempo de
ejecución).
● Directamente relacionado con el concepto de
herencia.
● Permite tratar de la misma manera, como objetos de
la clase base, a múltiples objetos de las distintas
subclases, seleccionando en cada caso los métodos
apropiados.
Polimorfismo
● Esta característica nos permite crear y/o reemplazar
métodos de la clase base en cada subclase.
● Permite escribir código que ignora el tipo de dato
específico del objeto y lo trata como una familia de las
subclases.
● Se basa en los conceptos de métodos virtuales y
abstractos.
Polimorfismo
Polimorfismo
Polimorfismo
Notación Gráfica (UML)
La Herencia se
representa por una
llínea sólida
finalizada en un
triángulo,
representando una
flecha que apunta
hacia la clase
base.
Se utiliza letra en
itálica para
representar
atributos,
métodos o clases
abstractas.
Notación Gráfica (UML)
Si varias clases heredan
de la misma clase base, se
puede utilizar la notación
de árbol (tree notation).
Interfaces
● Consiste en un conjunto firmas de propiedades y
métodos (no están implementados).
● Una clase puede implementar una interfaz
especificando cada uno de los miembros indicados en
la definición de la interfaz.
● Son una opción cuanto tenemos alguna funcionalidad
de que debe aplicarse a varias clases en una jerarquía,
pero que no puede agregarse en un clase padre ya
que no todos los hijos la debe heredar.
Notación Gráfica (UML)
La implementación
de interfaces se
representa por una
llínea entrecortada
finalizada en un
triángulo,
representando una
flecha que apunta
hacia la interfaz.
La interfaz se
representa como
una clase con el
encabezado
<<interface>>.
Interfaces
Interfaces
• Usted ha desarrollado un programa con
la siguiente estructura de clases.
• Debido a un requerimiento del negocio
se le asigna la tarea de agregar la
funcionalidad fly() a los patos.
Interfaces
Diagrama original de las clases
Interfaces
Luego de que usted realiza el cambio.
Interfaces
Surge un problema con su cambio.
Interfaces
La solución es el uso de interfaces.
Métodos o atributos estáticos
● Es un atributo o método que pertenece a la clase y no
al una instancia, por lo que son llamados métodos o
atributos “de clase”.
● Para usarlos no es necesario instanciar la clase,
pueden ser llamados directamente utilizando el
<clase> + <.> + <método estático>
● Se puede declarar una clase estática, esta no se podrá
instanciar.
● Ejemplos:
● Math.Pow(…)
● Math.Abs (..)
● Console.WriteLine(…)
Métodos o atributos estáticos
Métodos o atributos estáticos
Gracias por su atención

Más contenido relacionado

La actualidad más candente

concepto de estructuras de datos
concepto de estructuras de datosconcepto de estructuras de datos
concepto de estructuras de datos
Eduardo Robayo Castro
 
Patrones de diseño(presentación 7)
Patrones de diseño(presentación 7)Patrones de diseño(presentación 7)
Patrones de diseño(presentación 7)
programadorjavablog
 
Listas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de DatosListas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de Datos
Yorka Marisol Perez Feliz
 
Guía de ejercicios de normalizacion
Guía de ejercicios de normalizacionGuía de ejercicios de normalizacion
Guía de ejercicios de normalizacion
Rodrigo Alzamora Mendieta
 
POO Unidad 4: Persistencia de objetos y manejo de archivos
POO Unidad 4: Persistencia de objetos y manejo de archivosPOO Unidad 4: Persistencia de objetos y manejo de archivos
POO Unidad 4: Persistencia de objetos y manejo de archivos
Franklin Parrales Bravo
 
Modelo de datos
Modelo de datosModelo de datos
Modelo de datos
Cristian Salazar C.
 
Pilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datosPilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datos
Waldi Misael Saturno Encarnacion
 
Programación 3: árboles binarios y ordenados
Programación 3: árboles binarios y ordenadosProgramación 3: árboles binarios y ordenados
Programación 3: árboles binarios y ordenados
Angel Vázquez Patiño
 
Modos de direccionamiento y formatos
Modos de direccionamiento y formatosModos de direccionamiento y formatos
Modos de direccionamiento y formatos
Aldo Antonio Blanco Villalobos
 
Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)
Juan Astudillo
 
Normalizacion de bases de datos
Normalizacion de bases de datosNormalizacion de bases de datos
Normalizacion de bases de datos
Caro_Noirgean
 
Modelo relacional
Modelo relacionalModelo relacional
Modelo relacional
Victor Quintero
 
Diagramas uml
Diagramas umlDiagramas uml
Diagramas uml
Jaziel Torres
 
Modelado Orientado a Objetos
Modelado Orientado a ObjetosModelado Orientado a Objetos
Modelado Orientado a Objetos
Rafael Miranda
 
Uml lenguaje unificado de modelado
Uml lenguaje unificado de modeladoUml lenguaje unificado de modelado
Uml lenguaje unificado de modelado
Marvin Zumbado
 
Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos
josecuartas
 
Unidad 3 topicos avanzados de programacion
Unidad 3 topicos avanzados de programacionUnidad 3 topicos avanzados de programacion
Unidad 3 topicos avanzados de programacion
Irving Che
 
Ejercicios resueltos con Python
Ejercicios resueltos con PythonEjercicios resueltos con Python
Ejercicios resueltos con Python
Facultad de Ciencias y Sistemas
 
Poo 3 herencia
Poo 3 herenciaPoo 3 herencia
Poo 3 herencia
jlmanmons
 
UML
UMLUML

La actualidad más candente (20)

concepto de estructuras de datos
concepto de estructuras de datosconcepto de estructuras de datos
concepto de estructuras de datos
 
Patrones de diseño(presentación 7)
Patrones de diseño(presentación 7)Patrones de diseño(presentación 7)
Patrones de diseño(presentación 7)
 
Listas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de DatosListas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de Datos
 
Guía de ejercicios de normalizacion
Guía de ejercicios de normalizacionGuía de ejercicios de normalizacion
Guía de ejercicios de normalizacion
 
POO Unidad 4: Persistencia de objetos y manejo de archivos
POO Unidad 4: Persistencia de objetos y manejo de archivosPOO Unidad 4: Persistencia de objetos y manejo de archivos
POO Unidad 4: Persistencia de objetos y manejo de archivos
 
Modelo de datos
Modelo de datosModelo de datos
Modelo de datos
 
Pilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datosPilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datos
 
Programación 3: árboles binarios y ordenados
Programación 3: árboles binarios y ordenadosProgramación 3: árboles binarios y ordenados
Programación 3: árboles binarios y ordenados
 
Modos de direccionamiento y formatos
Modos de direccionamiento y formatosModos de direccionamiento y formatos
Modos de direccionamiento y formatos
 
Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)
 
Normalizacion de bases de datos
Normalizacion de bases de datosNormalizacion de bases de datos
Normalizacion de bases de datos
 
Modelo relacional
Modelo relacionalModelo relacional
Modelo relacional
 
Diagramas uml
Diagramas umlDiagramas uml
Diagramas uml
 
Modelado Orientado a Objetos
Modelado Orientado a ObjetosModelado Orientado a Objetos
Modelado Orientado a Objetos
 
Uml lenguaje unificado de modelado
Uml lenguaje unificado de modeladoUml lenguaje unificado de modelado
Uml lenguaje unificado de modelado
 
Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos
 
Unidad 3 topicos avanzados de programacion
Unidad 3 topicos avanzados de programacionUnidad 3 topicos avanzados de programacion
Unidad 3 topicos avanzados de programacion
 
Ejercicios resueltos con Python
Ejercicios resueltos con PythonEjercicios resueltos con Python
Ejercicios resueltos con Python
 
Poo 3 herencia
Poo 3 herenciaPoo 3 herencia
Poo 3 herencia
 
UML
UMLUML
UML
 

Similar a Programación Orientada a Objetos - herencia y polimorfismo

Jyoc java-cap08 principios poo
Jyoc java-cap08 principios pooJyoc java-cap08 principios poo
Jyoc java-cap08 principios poo
Jyoc X
 
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Sergio Sanchez
 
Guía Herencia PO_O
Guía Herencia PO_OGuía Herencia PO_O
Guía Herencia PO_O
lissette_torrealba
 
Scala: un vistazo general
Scala: un vistazo generalScala: un vistazo general
Scala: un vistazo general
Miguel Pastor
 
Herencia
HerenciaHerencia
18448198 programacion-orientada-a-objetos
18448198 programacion-orientada-a-objetos18448198 programacion-orientada-a-objetos
18448198 programacion-orientada-a-objetos
David Henrry Rosas Cruz
 
Csharp
CsharpCsharp
Csharp
cecilioaq
 
Presentacion Java
Presentacion JavaPresentacion Java
Presentacion Java
maeusogo
 
4 unidad polimorfismo
4 unidad polimorfismo4 unidad polimorfismo
4 unidad polimorfismo
Ing Joshua Betancourt
 
JAVA- basico
JAVA- basicoJAVA- basico
JAVA- basico
Jose Antonio
 
Lenguaje de programacion unidad 2 clases y objetos
Lenguaje de programacion unidad 2 clases y objetosLenguaje de programacion unidad 2 clases y objetos
Lenguaje de programacion unidad 2 clases y objetos
Andres Herrera Rodriguez
 
Herencia informatica
Herencia informaticaHerencia informatica
Herencia informatica
Edsel Barbosa González
 
Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes PO...
Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes PO...Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes PO...
Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes PO...
Didier Granados
 
Herencia Y Polimorfismo
Herencia Y PolimorfismoHerencia Y Polimorfismo
Herencia Y Polimorfismo
Rolando Steep Quezada Martinez
 
3 Bases De La OrientacióN A Objetos
3  Bases De La OrientacióN A Objetos3  Bases De La OrientacióN A Objetos
3 Bases De La OrientacióN A Objetos
HectorMamani
 
Curso de doctorado Tecnología de Objetos: Implementación de lenguajes orienta...
Curso de doctorado Tecnología de Objetos: Implementación de lenguajes orienta...Curso de doctorado Tecnología de Objetos: Implementación de lenguajes orienta...
Curso de doctorado Tecnología de Objetos: Implementación de lenguajes orienta...
Baltasar García Perez-Schofield
 
FPJUCE - Capitulo2
FPJUCE - Capitulo2FPJUCE - Capitulo2
FPJUCE - Capitulo2
Ing. Giovanny Moncayo
 
Interfaz en Java y en C#
Interfaz en Java y en C#Interfaz en Java y en C#
Interfaz en Java y en C#
Jonathan Llerena Stifler
 
Paradigmas de programación
Paradigmas de programaciónParadigmas de programación
Paradigmas de programación
Alvaro Enrique Ruano
 
Java morld cap2 [CURSO JAVA]
Java morld cap2 [CURSO JAVA]Java morld cap2 [CURSO JAVA]
Java morld cap2 [CURSO JAVA]
Hack '
 

Similar a Programación Orientada a Objetos - herencia y polimorfismo (20)

Jyoc java-cap08 principios poo
Jyoc java-cap08 principios pooJyoc java-cap08 principios poo
Jyoc java-cap08 principios poo
 
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
Unidad 2 ProgramacióN Orientada A Objetos (Repaso)
 
Guía Herencia PO_O
Guía Herencia PO_OGuía Herencia PO_O
Guía Herencia PO_O
 
Scala: un vistazo general
Scala: un vistazo generalScala: un vistazo general
Scala: un vistazo general
 
Herencia
HerenciaHerencia
Herencia
 
18448198 programacion-orientada-a-objetos
18448198 programacion-orientada-a-objetos18448198 programacion-orientada-a-objetos
18448198 programacion-orientada-a-objetos
 
Csharp
CsharpCsharp
Csharp
 
Presentacion Java
Presentacion JavaPresentacion Java
Presentacion Java
 
4 unidad polimorfismo
4 unidad polimorfismo4 unidad polimorfismo
4 unidad polimorfismo
 
JAVA- basico
JAVA- basicoJAVA- basico
JAVA- basico
 
Lenguaje de programacion unidad 2 clases y objetos
Lenguaje de programacion unidad 2 clases y objetosLenguaje de programacion unidad 2 clases y objetos
Lenguaje de programacion unidad 2 clases y objetos
 
Herencia informatica
Herencia informaticaHerencia informatica
Herencia informatica
 
Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes PO...
Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes PO...Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes PO...
Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes PO...
 
Herencia Y Polimorfismo
Herencia Y PolimorfismoHerencia Y Polimorfismo
Herencia Y Polimorfismo
 
3 Bases De La OrientacióN A Objetos
3  Bases De La OrientacióN A Objetos3  Bases De La OrientacióN A Objetos
3 Bases De La OrientacióN A Objetos
 
Curso de doctorado Tecnología de Objetos: Implementación de lenguajes orienta...
Curso de doctorado Tecnología de Objetos: Implementación de lenguajes orienta...Curso de doctorado Tecnología de Objetos: Implementación de lenguajes orienta...
Curso de doctorado Tecnología de Objetos: Implementación de lenguajes orienta...
 
FPJUCE - Capitulo2
FPJUCE - Capitulo2FPJUCE - Capitulo2
FPJUCE - Capitulo2
 
Interfaz en Java y en C#
Interfaz en Java y en C#Interfaz en Java y en C#
Interfaz en Java y en C#
 
Paradigmas de programación
Paradigmas de programaciónParadigmas de programación
Paradigmas de programación
 
Java morld cap2 [CURSO JAVA]
Java morld cap2 [CURSO JAVA]Java morld cap2 [CURSO JAVA]
Java morld cap2 [CURSO JAVA]
 

Más de Alvaro Enrique Ruano

Resumen caso Enron
Resumen caso EnronResumen caso Enron
Resumen caso Enron
Alvaro Enrique Ruano
 
Otras estructuras de datos (heap, tablas hash y diccionarios)
Otras estructuras de datos (heap, tablas hash y diccionarios)Otras estructuras de datos (heap, tablas hash y diccionarios)
Otras estructuras de datos (heap, tablas hash y diccionarios)
Alvaro Enrique Ruano
 
Árboles Multicamino, B y B+
Árboles Multicamino, B y B+Árboles Multicamino, B y B+
Árboles Multicamino, B y B+
Alvaro Enrique Ruano
 
Árboles binarios, ABB y AVL
Árboles binarios, ABB y AVLÁrboles binarios, ABB y AVL
Árboles binarios, ABB y AVL
Alvaro Enrique Ruano
 
Estructuras de datos lineales
Estructuras de datos linealesEstructuras de datos lineales
Estructuras de datos lineales
Alvaro Enrique Ruano
 
Introducción al análisis de algoritmos
Introducción al  análisis de algoritmosIntroducción al  análisis de algoritmos
Introducción al análisis de algoritmos
Alvaro Enrique Ruano
 
Ordenamientos rápido y mezcla
Ordenamientos rápido y mezclaOrdenamientos rápido y mezcla
Ordenamientos rápido y mezcla
Alvaro Enrique Ruano
 
Ordenamientos por selección y Shell
Ordenamientos por selección y ShellOrdenamientos por selección y Shell
Ordenamientos por selección y Shell
Alvaro Enrique Ruano
 
Búsqueda secuencial y binaria
Búsqueda secuencial y binariaBúsqueda secuencial y binaria
Búsqueda secuencial y binaria
Alvaro Enrique Ruano
 
Recursividad directa e indirecta
Recursividad directa e indirectaRecursividad directa e indirecta
Recursividad directa e indirecta
Alvaro Enrique Ruano
 
Programación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructoresProgramación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructores
Alvaro Enrique Ruano
 
Ordenamientos burbuja e inserción
Ordenamientos burbuja e inserciónOrdenamientos burbuja e inserción
Ordenamientos burbuja e inserción
Alvaro Enrique Ruano
 
Programación Orientada a Objetos - Otras relaciones entre clases
Programación Orientada a Objetos - Otras relaciones entre clasesProgramación Orientada a Objetos - Otras relaciones entre clases
Programación Orientada a Objetos - Otras relaciones entre clases
Alvaro Enrique Ruano
 
Programación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodosProgramación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodos
Alvaro Enrique Ruano
 
Técnicas de programación
Técnicas de programaciónTécnicas de programación
Técnicas de programación
Alvaro Enrique Ruano
 
Análisis de una inversión en activos financieros negociados por medio de la B...
Análisis de una inversión en activos financieros negociados por medio de la B...Análisis de una inversión en activos financieros negociados por medio de la B...
Análisis de una inversión en activos financieros negociados por medio de la B...
Alvaro Enrique Ruano
 
Solución de problemas y ciclo de vida del desarrollo de software
Solución de problemas y ciclo de vida del desarrollo de softwareSolución de problemas y ciclo de vida del desarrollo de software
Solución de problemas y ciclo de vida del desarrollo de software
Alvaro Enrique Ruano
 

Más de Alvaro Enrique Ruano (17)

Resumen caso Enron
Resumen caso EnronResumen caso Enron
Resumen caso Enron
 
Otras estructuras de datos (heap, tablas hash y diccionarios)
Otras estructuras de datos (heap, tablas hash y diccionarios)Otras estructuras de datos (heap, tablas hash y diccionarios)
Otras estructuras de datos (heap, tablas hash y diccionarios)
 
Árboles Multicamino, B y B+
Árboles Multicamino, B y B+Árboles Multicamino, B y B+
Árboles Multicamino, B y B+
 
Árboles binarios, ABB y AVL
Árboles binarios, ABB y AVLÁrboles binarios, ABB y AVL
Árboles binarios, ABB y AVL
 
Estructuras de datos lineales
Estructuras de datos linealesEstructuras de datos lineales
Estructuras de datos lineales
 
Introducción al análisis de algoritmos
Introducción al  análisis de algoritmosIntroducción al  análisis de algoritmos
Introducción al análisis de algoritmos
 
Ordenamientos rápido y mezcla
Ordenamientos rápido y mezclaOrdenamientos rápido y mezcla
Ordenamientos rápido y mezcla
 
Ordenamientos por selección y Shell
Ordenamientos por selección y ShellOrdenamientos por selección y Shell
Ordenamientos por selección y Shell
 
Búsqueda secuencial y binaria
Búsqueda secuencial y binariaBúsqueda secuencial y binaria
Búsqueda secuencial y binaria
 
Recursividad directa e indirecta
Recursividad directa e indirectaRecursividad directa e indirecta
Recursividad directa e indirecta
 
Programación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructoresProgramación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructores
 
Ordenamientos burbuja e inserción
Ordenamientos burbuja e inserciónOrdenamientos burbuja e inserción
Ordenamientos burbuja e inserción
 
Programación Orientada a Objetos - Otras relaciones entre clases
Programación Orientada a Objetos - Otras relaciones entre clasesProgramación Orientada a Objetos - Otras relaciones entre clases
Programación Orientada a Objetos - Otras relaciones entre clases
 
Programación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodosProgramación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodos
 
Técnicas de programación
Técnicas de programaciónTécnicas de programación
Técnicas de programación
 
Análisis de una inversión en activos financieros negociados por medio de la B...
Análisis de una inversión en activos financieros negociados por medio de la B...Análisis de una inversión en activos financieros negociados por medio de la B...
Análisis de una inversión en activos financieros negociados por medio de la B...
 
Solución de problemas y ciclo de vida del desarrollo de software
Solución de problemas y ciclo de vida del desarrollo de softwareSolución de problemas y ciclo de vida del desarrollo de software
Solución de problemas y ciclo de vida del desarrollo de software
 

Programación Orientada a Objetos - herencia y polimorfismo

  • 2. Contenido ● Herencia ● Tipos de Herencia ● Polimorfismo
  • 3. Herencia ● La POO se caracteriza por incorporar la característica de Herencia. ● La Herencia es la característica que le permite a los objetos ser construidos a partir de otros objetos. ● Es la capacidad de un objeto para utilizar las estructuras de datos y los métodos previstos en antepasados o ascendientes. ● El objetivo principal es la reutilización del código desarrollado anteriormente.
  • 4. Herencia ● Se apoya en el significado de los objetos en la vida diaria. Existen clases principales y subclases que “heredan” de las primeras. ● Un ejemplo podría ser la clase “Vehículo” que implemente atributos como “Motor” y “Ruedas” y métodos como “Moverse” y “Frenar”. ● Podemos crear subclases, como por ejemplo “Motocicleta” y “Camión”.
  • 5. Herencia ● Estas subclases heredan los atributos y métodos de la clases padre, por lo que no tendremos que reescribirlos. ● Lo que sí tendremos que hacer es escribir código para “CargarMercancía” (que es un método específico de la clase camión).
  • 6. Herencia ● La clase principal se llama “Clase Base”. ● La clase que hereda se llama “Clase Derivada” ● El conjunto de relaciones de herencia se llama “Jerarquía de Clases” que puede verse como un árbol de relaciones. ● Las clases derivadas pueden heredar de la clases base todas las características sin cambios, o bien modificar aquellas características que no se acoplen a la perfección.
  • 14. Tipos de Herencia ● La herencia puede ser simple o múltiple. ● La “Herencia Simple” es aquella donde una subclase puede heredar datos y métodos de una única clase, así como añadir y quitar comportamientos de la clases base. ● Entre los lenguajes que manejan herencia simple están: Object Pascal, Smaltalk, Java y C#.
  • 16. Tipos de Herencia ● La “Herencia Múltiple” es aquella donde una subclase puede tener más de un ascendiente inmediato. ● Dicho de otra forma es aquel tipo de herencia donde una clases puede adquirir datos y métodos de más de una clase. ● La herencia múltiple puede provocarnos problemas asociados a la ambigüedad en el nombre de métodos y atributos entre las distintas clases Base. ● Entre los lenguajes que manejan herencia múltiple están: Eiffel, C++ y Python.
  • 18. Modificadores de Herencia ● Son palabras reservadas de los lenguajes de programación que permiten especificar la forma en que una clase se comportará en una Jerarquía de clases. ● Existen cinco tipos principales: o Clase Abstracta (también Métodos y Atributos) o Clase Sellada (también Métodos y Atributos) o Métodos y Atributos Virtuales o Métodos y Atributos Invalidados o Nuevas implementaciones (new operator)
  • 19. Modificadores de Herencia ● Clases Abstractas: Son aquellas clases que son creadas para ser clases base, no pueden instanciarse y la única forma de utilizar sus métodos y atributos es por medio de las clases derivadas. Se definen por medio de palabras reservadas como abstract (C#, C++ y Java), MustInherit (Visual Basic). También se puede aplicar a los métodos y propiedades.
  • 20. Modificadores de Herencia ● Clases Selladas: Son aquellas clases que no pueden ser utilizadas como clase base, es decir no se puede heredar de ellas. Debido a esto no pueden ser abstractas (son modificadores excluyentes). Se definen por medio de palabras reservadas como sealed (C# y C++), NotInheritable (Visual Basic) o final (Java).
  • 21. Modificadores de Herencia ● Propiedades y Métodos Virtuales: Indica si un determinado atributo o método puede ser invalidado en una clase derivada. Si las clases derivadas no invalidan el método, se seguirá utilizando el método original. No se puede mezclar con los modificadores estático, abstracto o privado. El valor por defecto dependerá del lenguaje de programación, por ejemplo los métodos son “no virtuales” en C# y “virtuales” en Java.
  • 22. Modificadores de Herencia ● Propiedades y Métodos Invalidados: Permiten sustituir los métodos abstractos y virtuales de la clase padre. Se utilizan palabras reservadas como override (C#) o Overrides (Visual Basic).
  • 23. Modificadores de Herencia ● Nuevas implementaciones: Se permite brindar nuevas implementaciones a los atributos y métodos de las clases base, utilizando la palabra new (no se puede mezclar con override). Este tipo de implementaciones ocultan el método original permitiendo acceder al método correspondiente (padre o hijo) según la forma en que estemos accediendo al objeto (polimorfismo). ● No se necesita que el método en la clase padre sea virtual. ● No es el caso usual.
  • 24. Modificadores de Herencia ● Nuevas implementaciones:
  • 25. Polimorfismo ● Habilidad de tomar diferentes formas. ● Habilidad de cambiar su comportamiento en función de la instancia del objeto (tipo de dato en tiempo de ejecución). ● Directamente relacionado con el concepto de herencia. ● Permite tratar de la misma manera, como objetos de la clase base, a múltiples objetos de las distintas subclases, seleccionando en cada caso los métodos apropiados.
  • 26. Polimorfismo ● Esta característica nos permite crear y/o reemplazar métodos de la clase base en cada subclase. ● Permite escribir código que ignora el tipo de dato específico del objeto y lo trata como una familia de las subclases. ● Se basa en los conceptos de métodos virtuales y abstractos.
  • 30. Notación Gráfica (UML) La Herencia se representa por una llínea sólida finalizada en un triángulo, representando una flecha que apunta hacia la clase base. Se utiliza letra en itálica para representar atributos, métodos o clases abstractas.
  • 31. Notación Gráfica (UML) Si varias clases heredan de la misma clase base, se puede utilizar la notación de árbol (tree notation).
  • 32. Interfaces ● Consiste en un conjunto firmas de propiedades y métodos (no están implementados). ● Una clase puede implementar una interfaz especificando cada uno de los miembros indicados en la definición de la interfaz. ● Son una opción cuanto tenemos alguna funcionalidad de que debe aplicarse a varias clases en una jerarquía, pero que no puede agregarse en un clase padre ya que no todos los hijos la debe heredar.
  • 33. Notación Gráfica (UML) La implementación de interfaces se representa por una llínea entrecortada finalizada en un triángulo, representando una flecha que apunta hacia la interfaz. La interfaz se representa como una clase con el encabezado <<interface>>.
  • 35. Interfaces • Usted ha desarrollado un programa con la siguiente estructura de clases. • Debido a un requerimiento del negocio se le asigna la tarea de agregar la funcionalidad fly() a los patos.
  • 37. Interfaces Luego de que usted realiza el cambio.
  • 39. Interfaces La solución es el uso de interfaces.
  • 40. Métodos o atributos estáticos ● Es un atributo o método que pertenece a la clase y no al una instancia, por lo que son llamados métodos o atributos “de clase”. ● Para usarlos no es necesario instanciar la clase, pueden ser llamados directamente utilizando el <clase> + <.> + <método estático> ● Se puede declarar una clase estática, esta no se podrá instanciar. ● Ejemplos: ● Math.Pow(…) ● Math.Abs (..) ● Console.WriteLine(…)
  • 41. Métodos o atributos estáticos
  • 42. Métodos o atributos estáticos
  • 43. Gracias por su atención