Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Guía práctica de estudio: Polimorfismo en Programación Orientada a Objetos, Guías, Proyectos, Investigaciones de Programación Java

Programación JavaProgramación JavaProgramación JavaProgramación JavaProgramación Java

Tipo: Guías, Proyectos, Investigaciones

2019/2020

Subido el 25/08/2021

seldos-nee
seldos-nee 🇨🇱

3 documentos

1 / 11

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
1
Guía práctica de estudio 08:
Polimorfismo
Objetivo:
Implementar el concepto de polimorfismo en un lenguaje de programación orientado a
objetos.
Introducción
El término polimorfismo es constantemente referido como uno de los pilares de la
programación orientada a objetos (junto con la Abstracción, el Encapsulamiento y la
Herencia).
El término polimorfismo es una palabra de origen griego que significa muchas formas. En
la programación orientada a objetos se refiere a la propiedad por la que es posible enviar
mensajes sintácticamente iguales a objetos de tipos distintos.
El polimorfismo consiste en conseguir que un objeto de una clase se comporte como un
objeto de cualquiera de sus subclases. Se puede aplicar tanto a métodos como a tipos de
datos. Los métodos pueden evaluar y ser aplicados a diferentes tipos de datos de manera
indistinta. Los tipos polimórficos son tipos de datos que contienen al menos un elemento
cuyo tipo no está especificado.
El polimorfismo se puede clasificar en dos grandes grupos:
Polimorfismo dinámico (o paramétrico): es aquel en el que no se especifica el tipo
de datos sobre el que se trabaja y, por ende, se puede recibir utilizar todo tipo de
datos compatible. Este tipo de polimorfismo también se conoce como
programación genérica.
Polimorfismo estático (o ad hoc): es aquel en el que los tipos de datos que se
pueden utilizar deben ser especificados de manera explícita antes de ser
utilizados.
NOTA: En esta guía se tomará como caso de estudio el lenguaje de programación JAVA,
sin embargo, queda a criterio del profesor el uso de éste u otro lenguaje orientado a
objetos.
pf3
pf4
pf5
pf8
pf9
pfa

Vista previa parcial del texto

¡Descarga Guía práctica de estudio: Polimorfismo en Programación Orientada a Objetos y más Guías, Proyectos, Investigaciones en PDF de Programación Java solo en Docsity!

Guía práctica de estudio 08:

Polimorfismo

Objetivo:

Implementar el concepto de polimorfismo en un lenguaje de programación orientado a objetos.

Introducción

El término polimorfismo es constantemente referido como uno de los pilares de la programación orientada a objetos (junto con la Abstracción, el Encapsulamiento y la Herencia). El término polimorfismo es una palabra de origen griego que significa muchas formas. En la programación orientada a objetos se refiere a la propiedad por la que es posible enviar mensajes sintácticamente iguales a objetos de tipos distintos. El polimorfismo consiste en conseguir que un objeto de una clase se comporte como un objeto de cualquiera de sus subclases. Se puede aplicar tanto a métodos como a tipos de datos. Los métodos pueden evaluar y ser aplicados a diferentes tipos de datos de manera indistinta. Los tipos polimórficos son tipos de datos que contienen al menos un elemento cuyo tipo no está especificado. El polimorfismo se puede clasificar en dos grandes grupos: Polimorfismo dinámico (o paramétrico): es aquel en el que no se especifica el tipo de datos sobre el que se trabaja y, por ende, se puede recibir utilizar todo tipo de datos compatible. Este tipo de polimorfismo también se conoce como programación genérica. Polimorfismo estático (o ad hoc): es aquel en el que los tipos de datos que se pueden utilizar deben ser especificados de manera explícita antes de ser utilizados. NOTA: En esta guía se tomará como caso de estudio el lenguaje de programación JAVA, sin embargo, queda a criterio del profesor el uso de éste u otro lenguaje orientado a objetos.

Polimorfismo

Polimorfismo se refiere a la habilidad de tener diferentes formas. Como se vio en la práctica de herencia, el término IS-A se refiere a la pertenencia de un objeto con un tipo, es decir, si se crea una instancia de tipo A, se dice que el objeto creado es un A. En Java, cualquier objeto que pueda comportarse como más de un IS-A (es un) puede ser considerado polimórfico. Por lo tanto, todos los objetos en Java pueden ser considerados polimórficos porque todos se pueden comportar como objetos de su propio tipo y como objetos de la clase Object. Por otro lado, debido a que la única manera de acceder a un objeto es a través de su referencia, existen algunos puntos clave que se deben recordar sobre las mismas: Una referencia puede ser solo de un tipo y, una vez declarado, el tipo no puede ser cambiado. Una referencia es una variable, por lo tanto, ésta puede ser reasignada a otros objetos (a menos que la referencia sea declarada como final). El tipo de una referencia determina los métodos que pueden ser invocados del objeto al que referencia, es decir, solo se pueden ejecutar los métodos definidos en el tipo de la referencia. A una referencia se le puede asignar cualquier objeto que sea del mismo tipo con el que fue declarada la referencia o de algún subtipo (Polimorfismo).

Así mismo, un método puede recibir cualquier tipo de dato como parámetro. Cuando el parámetro definido es una referencia a una clase, el método es capaz de recibir un objeto de ese tipo o de cualquier subtipo de esa clase. A esto se le conoce también como polimorfismo, pero en métodos. Como ya se mencionó en la práctica anterior, la palabra reservada instanceof permite identificar el tipo de objeto enviado, es decir, no revisa la referencia si no el objeto en sí. Código (Métodos polimórficos)

Clases abstractas

Una clase abstracta es una clase de la que no se pueden crear objetos, debido a que define la existencia de métodos, pero no su implementación. Las clases abstractas sirven como modelo para la creación de clases derivadas. Algunas características de éstas son: Pueden contener métodos abstractos y métodos concretos. Pueden contener atributos. Pueden heredar de otras clases. Para declarar una clase abstracta en Java solo es necesario anteponer la palabra reservada abstract antes de palabra reservada class, es decir: public abstract class Poligono { // Métodos abstractos o concretos } Una clase abstracta puede tener métodos declarados abstractos, en cuyo caso no se da definición del método (no se implementa). Si una clase tiene algún método abstracto es obligatorio que la clase sea abstracta. La sintaxis para declarar un método abstracto es: public abstract double perimetro( ); La clase que hereda de una clase abstracta debe implementar los métodos abstractos definidos en la clase base: public class Triangulo extends Poligono { public double perimetro() { // bloque de código para obtener el perímetro } } Es posible crear referencias de una clase abstracta: Poligono figura; Sin embargo, una clase abstracta no se puede instanciar, es decir, no se pueden crear objetos de una clase abstracta, la siguiente línea de código generaría un error en tiempo de compilación: Poligono figura = new Poligono();

Interfaces

El concepto de Interfaces lleva un paso más adelante la idea de las clases abstractas. Una interfaz es una clase abstracta pura, es decir, una clase donde todos los métodos son abstractos (no se implementa ninguno). Una interfaz es un contrato sobre qué puede hacer la clase, sin decir cómo lo va a hacer. Debido a que es una clase 100% abstracta, no es posible crear instancias de una interfaz. Este tipo de diseños permiten establecer la forma de una clase (nombres de métodos, listas de argumentos y tipos de retorno), pero no bloques de código. Para crear una interfaz en Java, se utiliza la palabra reservada interface en lugar de class. La interfaz puede definirse pública o sin modificador de acceso y tiene el mismo significado que para las clases, su sintaxis es la siguiente: public interface NombreInterfaz { tipoRetorno nombreMetodo([Parametros]); } Todos los métodos que declara una interfaz son siempre públicos y abstractos. Así mismo, una interfaz puede contener atributos, pero estos son siempre públicos, estáticos y finales. Las interfaces pueden ser implementadas por cualquier clase. La clase que implementa una interfaz está obligada a definir (implementar) los métodos que la interfaz declaró y, en ese sentido, adquieren una conducta o modo de funcionamiento particular (contrato). La sintaxis para implementar una interfaz es la siguiente: public class MiClase implements NombreInterfaz El compilador se encargará de verificar que la clase efectivamente declare e implemente todos los métodos de la interfaz.

Ejemplo:

En este caso, se aplican las mismas reglas que en la herencia, es decir, la interfaz que hereda de otras interfaces posee todos los métodos definidos en ellas. Por otro lado, la clase que implemente esta interfaz (la interfaz que hereda de otras interfaces) debe definir los métodos de todas las interfaces. Figura 3. Herencia múltiple entre interfaces. Atributos en las interfaces Dado que, por definición, todos los datos miembros (atributos) que se definen en una interfaz son públicos, estáticos y finales y dado que las interfaces no pueden instanciarse, resultan una buena herramienta para implantar grupos de constantes que pueden ser llamados sin crear objetos. Ejemplo:

Bibliografía

Barnes David, Kölling Michael Programación Orientada a Objetos con Java. Tercera Edición. Madrid Pearson Educación, 2007 Deitel Paul, Deitel Harvey. Como programar en Java Septima Edición. México Pearson Educación, 2008 Martín, Antonio Programador Certificado Java 2. Segunda Edición. México Alfaomega Grupo Editor, 2008 Dean John, Dean Raymond. Introducción a la programación con Java Primera Edición. México Mc Graw Hill, 2009