SlideShare ist ein Scribd-Unternehmen logo
1 von 43
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

Weitere ähnliche Inhalte

Was ist angesagt?

Herencia y Polimorfismo
Herencia y PolimorfismoHerencia y Polimorfismo
Herencia y Polimorfismonestor_moren
 
02 python Programación orientada a objetos y funcional
02 python Programación orientada a objetos y funcional02 python Programación orientada a objetos y funcional
02 python Programación orientada a objetos y funcionalJuan Rodríguez
 
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étodosAlvaro Enrique Ruano
 
Cuestionario
CuestionarioCuestionario
CuestionarioJose Nava
 
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 clasesAlvaro Enrique Ruano
 
Programación Orientada a Objetos - Resumen
Programación Orientada a Objetos - ResumenProgramación Orientada a Objetos - Resumen
Programación Orientada a Objetos - ResumenKarlytoz_36
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetosale8819
 
Algebra relacional
Algebra relacionalAlgebra relacional
Algebra relacionalLuis Jherry
 
Unidad 3 estructura lineales
Unidad 3 estructura linealesUnidad 3 estructura lineales
Unidad 3 estructura linealesEnrique2194
 
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 destructoresAlvaro Enrique Ruano
 
Programación orientada a objetos presentacion
Programación    orientada    a objetos presentacionProgramación    orientada    a objetos presentacion
Programación orientada a objetos presentacionfranciscocain
 
Analisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A ObjetosAnalisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A Objetosyoiner santiago
 
Diagramas UML
Diagramas UMLDiagramas UML
Diagramas UML1da4
 
8b Curso de POO en java - paso de diagrama clases a java 1
8b Curso de POO en java - paso de diagrama clases a java 18b Curso de POO en java - paso de diagrama clases a java 1
8b Curso de POO en java - paso de diagrama clases a java 1Clara Patricia Avella Ibañez
 

Was ist angesagt? (20)

Herencia y Polimorfismo
Herencia y PolimorfismoHerencia y Polimorfismo
Herencia y Polimorfismo
 
Introducción a PHP
Introducción a PHPIntroducción a PHP
Introducción a PHP
 
Tipos de listas en estructura de datos
Tipos de listas en estructura de datosTipos de listas en estructura de datos
Tipos de listas en estructura de datos
 
02 python Programación orientada a objetos y funcional
02 python Programación orientada a objetos y funcional02 python Programación orientada a objetos y funcional
02 python Programación orientada a objetos y funcional
 
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
 
Estructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busquedaEstructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busqueda
 
Cuestionario
CuestionarioCuestionario
Cuestionario
 
Exposición Diagrama de Clases
Exposición Diagrama de ClasesExposición Diagrama de Clases
Exposición Diagrama de Clases
 
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 - Resumen
Programación Orientada a Objetos - ResumenProgramación Orientada a Objetos - Resumen
Programación Orientada a Objetos - Resumen
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetos
 
Algebra relacional
Algebra relacionalAlgebra relacional
Algebra relacional
 
Lenguaje Ensamblador
Lenguaje EnsambladorLenguaje Ensamblador
Lenguaje Ensamblador
 
Unidad 3 estructura lineales
Unidad 3 estructura linealesUnidad 3 estructura lineales
Unidad 3 estructura lineales
 
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
 
Programación orientada a objetos presentacion
Programación    orientada    a objetos presentacionProgramación    orientada    a objetos presentacion
Programación orientada a objetos presentacion
 
Algebra relacional
Algebra relacionalAlgebra relacional
Algebra relacional
 
Analisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A ObjetosAnalisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A Objetos
 
Diagramas UML
Diagramas UMLDiagramas UML
Diagramas UML
 
8b Curso de POO en java - paso de diagrama clases a java 1
8b Curso de POO en java - paso de diagrama clases a java 18b Curso de POO en java - paso de diagrama clases a java 1
8b Curso de POO en java - paso de diagrama clases a java 1
 

Ähnlich wie Herencia y Polimorfismo POO

Jyoc java-cap08 principios poo
Jyoc java-cap08 principios pooJyoc java-cap08 principios poo
Jyoc java-cap08 principios pooJyoc 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
 
Scala: un vistazo general
Scala: un vistazo generalScala: un vistazo general
Scala: un vistazo generalMiguel Pastor
 
18448198 programacion-orientada-a-objetos
18448198 programacion-orientada-a-objetos18448198 programacion-orientada-a-objetos
18448198 programacion-orientada-a-objetosDavid Henrry Rosas Cruz
 
Presentacion Java
Presentacion JavaPresentacion Java
Presentacion Javamaeusogo
 
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 objetosAndres Herrera Rodriguez
 
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
 
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 ObjetosHectorMamani
 
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
 
Java morld cap2 [CURSO JAVA]
Java morld cap2 [CURSO JAVA]Java morld cap2 [CURSO JAVA]
Java morld cap2 [CURSO JAVA]Hack '
 

Ähnlich wie Herencia y Polimorfismo POO (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]
 

Mehr von 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
 
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 algoritmosAlvaro Enrique Ruano
 
Ordenamientos por selección y Shell
Ordenamientos por selección y ShellOrdenamientos por selección y Shell
Ordenamientos por selección y ShellAlvaro Enrique Ruano
 
Ordenamientos burbuja e inserción
Ordenamientos burbuja e inserciónOrdenamientos burbuja e inserción
Ordenamientos burbuja e inserciónAlvaro 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 softwareAlvaro Enrique Ruano
 

Mehr von Alvaro Enrique Ruano (14)

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
 
Ordenamientos burbuja e inserción
Ordenamientos burbuja e inserciónOrdenamientos burbuja e inserción
Ordenamientos burbuja e inserción
 
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
 

Herencia y Polimorfismo POO

  • 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