2. El Polimorfismo es la respuesta distinta frente a una
llamada a un método dependiendo de la naturaleza
del objeto.
Consiste en definir métodos distintos, que comparten el
mismo nombre, pero que se aplican a clases diferentes.
Por ejemplo, un método llamado operación puede responder
de manera distinta dependiendo de quien lo invoque:
polimorfismo
3. Así como la herencia está relacionada
con las clases y la jerarquía, el
polimorfismo está relacionado con los
métodos
RELACIÓN
4. • El polimorfismo esta presente cuando se
envía un mensaje a un objeto del que no se
sabe su tipo, ejecutándose el método
adecuado de
acuerdo con su tipo.
5. POLIMORFISMO
Es posible diseñar e implementar sistemas
que son mas fácilmente extensibles podemos
escribir programas que procesen
generalmente como objeto de superclase,
objetos de todas las clases existentes en una
jerarquía
Las clases que no existen durante el desarrollo
de los programas se pueden agregar con poca
o ninguna modificación de la parte genérica
del programa
6. polimorfismo y {
{ sobrecarga
POLIMORFISMO SOBRECARGA
Declaramos una La sobrecarga de
superclase con un métodos es dentro de
método obligando a que una misma clase definir
las clases que hereden de que un mismo método
ella lo implementen y ejecute distintas
dependiendo de que tipo instrucciones
de objeto es el que llame dependiendo los
al método es el código parámetros que se le
que se ejecuta. pasen.
7. Existen básicamente 3 formas de polimorfismo:
SOBRECARGA .- Significa el uso de un mismo identificador u
operador en distintos contextos y con distintos significados.
SOBREESCRITURA.- se aplica a los métodos y está
directamente relacionada a la herencia; se refiere a la
redefinición de los métodos de la clase base en las subclases.
ENLACE DINAMICO.- Esto permite invocar operaciones en
objetos obviando el tipo actual de éstos hasta el momento de
ejecutar el código, es decir nos permite definir elementos como
un tipo e instanciarlos como un tipo heredado.
Clasificación:
8.
9. class programa{
public void metodo(){
System.out.println ("nProgramacion II");
}
}
class operador extend programa{
}
class compilar extend programa{
public void metodo(){
System.out.println ("nElectronica");
}
}
public class Ej_pol {
public static void main(String[] args) {
compilar obj=new compilar();
obj.metodo();
operador obj2=new operador();
obj2.metodo(); }
}
10. Para poner en práctica se hará un ejemplo bastante
sencillo. Se hará una librería de clases que represente
figuras tridimensionales y bidimensionales, y su
respectiva jerarquía de clases. Las clases deben ser
capaces de tener funcionamiento bastante básico, como
obtener áreas, volúmenes y perímetros de la figura
correspondiente.
11.
12. Una misma llamada ejecuta distintas sentencias
dependiendo de la clase a la que pertenezca el objeto al
que se aplica el método.
Supongamos que declaramos: Persona p;
Podría suceder que durante la ej. del programa, p
referencie a un profesor o a un alumno en distintos
momentos, y
Entonces:
Si p referencia a un alumno, con p.toString(), se ejecuta el
toString de la clase Alumno.
Si p referencia a un profesor, con p.toString(), se ejecuta el
toString de la clase Profesor.
Enlace dinámico: Se decide en tiempo de ejecución
qué método se ejecuta.
OJO!: Sobrecarga de fs => enlace estático (t. de
compilación).
13. public static void main(String[] args) {
Persona v[]=new Persona[10];
// Se introducen alumnos, profesores y personas en v
for (int i=0 ; i<10; i++)
/* Se piden datos al usuario de profesor, alumno o persona
*/
switch (tipo) {
case /* profesor */: v*i+ = new Profesor (<.); break;
case /* alumno */: v*i+ = new Alumno(<); break;
case /* persona */: v*i+ = new Persona(<); break;
default: /* ERROR */ }
}
for (int i=0 ; i<10; i++)
System.out.println(v[i]); // enlace dinámico con toString()
}