Polimorfismo
Enviado por Jorge Osvaldo Amezcua • 2 de Diciembre de 2021 • Documentos de Investigación • 4.416 Palabras (18 Páginas) • 61 Visitas
Instituto Tecnológico de Jiquilpan ___________________________________________________ Programación Orientada a Objetos (plan 2010)
Unidad IV Polimorfismo.
4.1 Definición.
El polimorfismo es la propiedad que permite enviar el mismo mensaje a objetos de diferentes clases, de forma que cada uno de ellos responde a ese mismo mensaje de modo distinto, dependiendo de su implementación, además de ser otro de los principios fundamentales de la programación orientada a objetos, para aplicar el polimorfismo de una manera satisfactoria se recomienda que se utilice en unión con la herencia.
Polimorfismo significa muchas formas y es una característica que permite a una interfaz ser utilizada como una clase de acción general, ya que la acción específica se determina por la naturaleza exacta de la situación.
Nota: El polimorfismo sólo se aplica a métodos que tienen la misma signatura (prototipo) pero que están definidos en clases diferentes.
Una de las ventajas del polimorfismo es permitir que un sistema sea más flexible, sin perder ninguna de las ventajas de la compilación estática que tiene lugar en tiempo de compilación.
Aunque en Java existe menos libertad que en otros lenguajes, el polimorfismo es una de las herramientas muy potente, que puede ser utilizada en situaciones diferentes.
Las aplicaciones más frecuentes del polimorfismo son:
- Especialización de clases derivadas. El uso más común del polimorfismo es derivar clase especializadas de clases que han sido definidas.
- Estructuras de datos heterogéneos. Con el polimorfismo se pueden crear y manipular fácilmente estructuras de datos heterogéneas, que son fáciles de diseñar, sin perder la comprobación de tipos de los elementos utilizados.
- Gestión de una jerarquía de clase. Son colecciones de clases altamente especializadas, con relaciones de herencia que se pueden extender fácilmente.
Una forma de aplicar el polimorfismo en Java es utilizando la sobre escritura o redefinición de los métodos, ya que en tiempo de ejecución podemos determinar cuál es el método que se debe ejecutar, dependiendo de su implementación.
Llamadas min, res Leer Mostrar Calcular
Local Nacional Internacional Calcular
Local loc=new Local(); Nacional nac=new Nacional();
Loc.Calcular(); nac.Calcular();
El polimorfismo es esencial en la programación orientada a objeto, ya que permite que una clase general especifiqué métodos que serán comunes a todas las clases que se deriven de la misma; de manera que las subclases podrán definir la implementación de algunos o de todos esos métodos.
Para aplicar satisfactoriamente el polimorfismo es importante comprender que las clases base forman una estructura jerárquica, que se mueve desde una menor a una mayor especialización. Cuando se utiliza correctamente, una clase base proporciona los elementos que una clase derivada puede usar directamente o redefinirlo en caso de que sea necesario.
Areas área,res Mostrar Leer Calcular
Circulo radio Cuadrado lado Leer Calcular
package IVUnidad
class Areas{
public int área,res;
}
4.2 Clases abstractas: definición, métodos abstractos, implementación de clases abstractas, modelado de clases abstractas.
Una clase abstracta representa conceptos generales y las características comunes de una serie de objetos. Dicha clase puede definir variables de instancia y métodos normales, pero además debe contener al menos un método abstracto, para que la clase se considere como tal.
Una característica importante de las clases abstractas es que no se pueden definir objetos de dichas clases, conceptualmente es una contradicción, además de que el compilador genera un error al intentarlo.
Las características de una clase abstracta son:
- Se utiliza la palabra abstract para definir una clase abstracta y le precede a la palabra class de la clase.
- Una clase con métodos abstractos debe ser una clase abstracta.
- Una clase derivada que no define un método abstracto se transforma en una clase abstracta.
- Las clases abstracta pueden contener variables de instancia y método no abstractos.
- No se pueden crear objetos de una clase abstracta.
La sintaxis de una clase abstracta es:
public abstract class Nombre_Clase
{
//variables de instancia
//métodos normales
//métodos abstractos
}
Como se mencionó anteriormente no es posible crear un objeto de una clase abstracta, pero si se puede crear una referencia de dicha clase. Las variables de referencia se declaran a partir de una clase abstracta y se pueden utilizar para recibir un objeto de la clase derivada de una clase abstracta, en ese momento la referencia puede ser utilizada como un objeto y llamar a los métodos de la clase derivada.
Areas obj=new Areas(); xxxxxxx
Areas ref; //variable de referencia
Circulo cir=new Circulo();
cir.Leer();
cir.Calcular();
cir.Mostrar();
Areas ref;
Circulo cir=new Circulo();
ref=cir; //conversion implícita de objeto de clase derivada a objetos de clase base
ref.Leer();
ref.Calcular();
ref.Mostrar();
Cuadrado cua=new Cuadrado();
ref=cua;
ref.Leer();
ref.Calcular();
ref.Mostrar();
Clase_Abstracta ref;
Clase_Derivada obj=new Clase_Derivada();
ref=obj;
Por omisión todos los métodos tienen ligadura estática, si la palabra reservada abstract le precede a su tipo de dato, dicho método se transforma en un método abstracto y le indica al compilador que su cuerpo será definido en una clase derivada, pero no necesariamente en la derivada inmediata, ya que puede existir una jerarquía de clases derivadas.
...