Investigación Polimorfismo

Share Embed Donate


Short Description

Herencia y polimorfismo JAVA...

Description

21-9-2017

Herencia y Polimorfismo Investigación 2

Iván Echeverría - 0900152278 SECCION B

 Índice  Índice ......................................................................................................................................................... 1 Introducción ............................................................................................................................................. 2 Objetivos ................................................................................................................................................... 3 Objetivo general. .................................................................................................................................. 3 Objetivos específicos. ........................................................................................................................... 3 Herencia .................................................................................................................................................... 4 ¿En qué consiste? .................................................................................................................................. 4 ¿Para qué se usa? .................................................................................................................................. 4  Ventajas................................................................................................................................................. 4 Desventajas ........................................................................................................................................... 4 Herencia en Java ................................................................................................................................... 5  Visibilidad ............................................................................................................................................. 5 Herencia en un diagrama de clases ..................................................................................................... 6 Extensión a la clase coche ................................................................................................................. 6

Herencia y constructores ..................................................................................................................... 7 Polimorfismo ............................................................................................................................................ 7 Tipos de polimorfismo ......................................................................................................................... 8 Sobrecarga: ........................................................................................................................................ 8 Paramétrico: ...................................................................................................................................... 8 Inclusión ............................................................................................................................................ 8

Polimorfismo en Java ............................................................................................................................ 8 Conversión de referencias (casting) ................................. ..................................... ............................ 9

Conclusiones............................................................................................................................................ 10 Bibliografía................................................................................................................................................ 11

PÁGINA 1

Introducción La herencia y el polimorfismo son mecanismos de la programación orientada a objetos (POO) basados en clases y métodos, por medio del cual una clase se deriva de otra de manera que extiende su funcionalidad y un método se deriva de otro para extender su funcionalidad. JAVA permite el empleo de la herencia y el polimorfismo, y permite definir una clase y un método tomando como base a otra clase u otro método ya existente, es decir, reutilización de código. La herencia y el polimorfismo son considerados conceptos fundamentales en la programación orientada a objetos ya que a partir de esto podemos establecer relaciones con otras clases de manera jerárquica.

PÁGINA 2

Objetivos OBJETIVO GENERAL. •

Definir los conceptos de herencia y polimorfismo

OBJETIVOS ESPECÍFICOS. • • •

Definir la diferencia entre herencia y polimorfismo Explicar las utilidades de la herencia y polimorfismo Describir ejemplos de herencia y polimorfismo

PÁGINA 3

Herencia Herencia en la programación orientada a objetos es la habilidad de extender una funcionalidad existente definiendo una nueva clase que hereda funcionalidad de una clase existente. ¿En qué consiste? Si se cuenta con una clase que se acerca a lo que necesitamos; no es necesario crear una clase desde cero, podemos extenderla para crear nuestra nueva clase. Esta nueva clase se llamará subclase y la clase que ya teníamos se llamará superclase.  Al igual que las herencias en la vida real, la clase hija pasa a tener lo que tiene la clase padre • •

 Atributos Métodos

La subclase heredara todos los atributos y los métodos que fueron definidos en la clase padre. Si necesitamos cambiar algún método, se puede sobrescribir el comportamiento en nuestra subclase; utilizando el mismo nombre y los mismos argumentos del método que se encuentra en la subclase. Si se requiere podemos crear un nuevo método e incluirlo en nuestra subclase. Un objeto de la clase hija es también un objeto de la clase padre. Una clase puede heredar atributos por dos superclases (clases padres). La herencia múltiple puede ser usada para agrupar atributos y métodos de distintas clases en una sola.

¿EN QUÉ CONSISTE? •

En la clase hija se definen las diferencias respecto de la clase padre

¿PARA QUÉ SE USA? • •

Para extender la funcionalidad de la clase padre Para especializar el comportamiento de la clase padre

 VENTAJAS • •



Tipo especial de relación entre clases Es uno de los aspectos que distinguen el Paradigma de Orientación a Objetos frente a otros paradigmas Mecanismo que facilita la modificabilidad y reutilización de los diseños y el código

DESVENTAJAS • • • • •

Se introduce una fuerte dependencia en la clase hija respecto a la clase padre Puede dificultar la reutilización Un cambio en la clase padre puede tener efectos imprevistos en las clases hijas. Se establece una jerarquía o clasificación. Si cambia el criterio de clasificación puede acarrear muchas modificaciones

PÁGINA 4

HERENCIA EN JAVA Se indica usando la palabra reservada extends.

 VISIBILIDAD •

• • • • •

• •

Los miembros privados de la superclase no son visibles desde la subclase Los miembros públicos de la superclase son visibles y siguen siendo públicos en la subclase. Se puede acceder a los miembros de la superclase usando la palabra reservada super . Si una clase se declara como final no se puede heredar de ella. En java, todas las clases heredan implícitamente de la clase Object. Sólo se puede hacer herencia de implementación ( extends) de una clase. No se crean problemas de referencias circulares o alternativas a un método con la misma declaración. Se puede hacer herencia de interfaz ( implements) de todas las interfaces que se quiera. Los atributos y métodos de la superclase no se repiten en las subclases.

PÁGINA 5

HERENCIA EN UN DIAGRAMA DE CLASES

Extensión a la clase coche

PÁGINA 6

HERENCIA Y CONSTRUCTORES • • •

• • •

Los constructores no se heredan las subclases deben definir su propio constructor Normalmente será necesario inicializar los atributos de la superclase para ello se llama a su constructor desde el de la subclase la llamada a super  debe ser la primera instrucción del constructor de la subclase Si desde un constructor de una subclase no se llama expresamente al de la superclase el compilador añade la llamada al constructor sin parámetros. en el caso de que la superclase no tenga un constructor sin parámetros se produciría un error de compilación

Polimorfismo La palabra polimorfismo viene de “múltiples formas” . Las operaciones polimórficas son aquellas que

hacen funciones similares con objetos diferentes.

En programación orientada a objetos es una técnica para optimizar la funcionalidad basada en tipos particulares. La diferencia entre herencia y polimorfismo es que herencia está relacionada con clases  y polimorfismo con métodos. Gracias a la herencia, se puede interpretar que un objeto de una subclase es también un objeto de una superclase El polimorfismo es un mecanismo que se aprovecha de la herencia (especialmente de interfaz) para manejar indistintamente objetos de las subclases como si fuesen objetos de la clase base, sin preocuparse por la clase en concreto a la que pertenecen Interesa utilizarlo cuando un comportamiento varía en función del tipo de algo. Existen 3 tipos de polimorfismo.

PÁGINA 7

TIPOS DE POLIMORFISMO Sobrecarga: Es cuando existen funciones con el mismo nombre, con funcionalidad similar; en clases que son completamente independientes una de la otra.

Paramétrico: Existen funciones con el mismo nombre, pero se usan diferentes parámetros (nombre o tipo). Se selecciona el método dependiendo del tipo de datos que se mande.

Inclusión: Es cuando se puede llamar a un método sin tener que conocer su tipo, así no se toma en cuenta los detalles de las clases especializadas, utilizando una interfaz común.

POLIMORFISMO EN JAVA El polimorfismo en Java consiste en dos propiedades: 1.Una referencia a una superclase puede apuntar a un objeto de cualquiera de sus subclases

2. La operación se selecciona en base a la clase del objeto, no a la de la referencia

Gracias a esas dos propiedades, el método moverFigura() sería:

PÁGINA 8

 Y podría invocarse de la forma siguiente:

• •

Gracias a la primera propiedad el parámetro f puede referirse a cualquier subclase de Figura Gracias a la segunda propiedad en mueveFigura se llama a las operaciones borra y dibuja apropiadas

Conversión de referencias (casting) Se declaran atributos, parámetros o variables de la clase base, se les asignan objetos de alguna de las subclases, se pueden usar todos los métodos declarados en la clase base, si necesitamos usar métodos de las subclases es necesario hacer un cast. Un casting es una operación especial que nos permite realizar una conversión entre tipos. El casting es un procedimiento para transformar una variable primitiva de un tipo a otro, o transformar un objeto de una clase a otra clase siempre y cuando haya una relación de herenci a entre ambas. Dentro del casting de variables primitivas se distinguen dos clases: •



Implícito: no se necesita escribir código para que se lleve a cabo. Ocurre cuando se realiza una conversión ancha ( widening casting), es decir, cuando se coloca un valor pequeño en un contenedor grande. Explícito: sí es necesario escribir código. Ocurre cuando se realiza una conversión estrecha (narrowing casting), es decir, cuando se coloca un valor grande en un contenedor pequeño. Son susceptibles de pérdida de datos.

PÁGINA 9

Conclusiones • •

• •





Las clases se pueden extender. La subclase hereda los atributos y métodos de la superclase.  Al extender una clase se pueden redefinir sus operaciones. si se desea, se puede invocar desde la nueva operación a la de la superclase, a esto se le conoce como programación incremental.  A la subclase se le pueden añadir nuevas operaciones y atributos El polimorfismo nos permite abstraer operaciones, podemos invocarlas sin preocuparnos de las diferencias, existentes para objetos diferentes, el sistema elige la operación apropiada al objeto. El polimorfismo se asocia a las jerarquías de clases: una superclase y todas las subclases derivadas de ella directa o indirectamente. El polimorfismo en Java consiste en dos propiedades: 1. Una referencia a una superclase puede apuntar a un objeto de cualquiera de sus subclases. 2.La operación se selecciona en base a la clase del objeto, no a la de la referencia

PÁGINA 10

Bibliografía • •





King, Kim N. “Java programming: from the beginning”. W. W.  Norton & Company, cop. 2000 Francisco Gutiérrez, Francisco Durán, Ernesto Pimentel. “Programación Orientada a Objetos con Java”. Paraninfo, 2007. Ken Arnold, James Gosling, David Holmes, “El lenguaje de programación Java”, 3ª edición.

 Addison-Wesley, 2000. Deitel, Harvey M. y Deitel, Paul J., “Cómo programar en Java”,   10ma. edición. Pearson Educación, México, 2015.

PÁGINA 11

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF