martes, 16 de julio de 2013
lunes, 15 de julio de 2013
Polimorfismo
•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 ejecución del programa, p hace
referencia 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.
----------------------------------------------------------
POLIMORFISMO:
CARACTERÍSTICAS
Ø Moldes de objetos (castings):
Ø Realizan
conversiones de tipo, no modifican al objeto, Solo su tipo.
Ø Upcasting: Interpretar un
objeto de una clase derivada como del mismo tipo que la clase base.
Ø No hace falta
especificarlo
Ø Downcasting: Interpretar un
objeto de una clase base como del mismo tipo que una clase derivada suya.
Ø Se especifica
precediendo al objeto a convertir con el nuevo tipo entre paréntesis.
-------------------------------------------------------
Ejemplo de Polimorfismo
Ejemplo de Polimorfismo
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()
}
Clases y métodos abstractos:
Clases y métodos abstractos:
- Clases abstractas: A menudo existen clases que sirven para definir un tipo genérico pero que no tiene sentido instancias (crear objetos de ella).
- Métodos abstractos: Un método abstracto significa que tiene que ser sobrescrito. No está implementado.
- Una clase con uno o varios métodos abstractos tiene que ser declarada abstracta.
- No obstante una clase abstracta no tiene por qué tener métodos abstractos.
MÉTODOS ABSTRACTOS
MÉTODOS ABSTRACTOS
•Tenemos un método f() aplicable a todos los
objetos de la clase A.
– Área de un polígono.
- La implementación del método es completamente diferente en cada subclase de A.
– Área de un triángulo.
– Área de un rectángulo
•Para declarar un método como abstracto, se pone
delante la palabra reservada abstract y no define un cuerpo:
abstract tipo nombreMétodo(....);
•Luego en cada subclase se define un método con la
misma cabecera y distinto cuerpo.
clases abstractas
CLASES ABSTRACTAS
•Si una clase contiene al menos un método
abstracto,entonces es una clase abstracta.
•Una clase abstracta es una clase de la que
no se pueden crear objetos, pero puede ser utilizada como clase padre para otras
clases.
•Declaración:
abstract class NombreClase {.............. }
------------------------------------------------------
------------------------------------------------------
EJEMPLO DE CLASES ABSTRACTAS
public class Presencial extends Alumno {
private double
matriculaCurso;
private double
plusPorConvocatoria;
private int
noConvocatoria;
public double pagoMensual() {
return (matriculaCurso + plusPorConvocatoria
*noConvocatoria) / 12;
}
public String getAsignaturas(){
return “todas las del curso “ + curso;
}
public
Presencial(String n, int e, int c, String nivel,double mc, double pc, int nc) {
super(n,e,c,nivel);
matriculaCurso=mc;
plusPorConvocatoria=pc;
noConvocatoria=nc;
}
}
//
FUNCIONES GLOBALES
Void mostrarAsignaturas(Alumno
v[]) {
for(int i=0; i<v.length; i++)
System.out.println(v[i].getAsignaturas());
// enlace
dinámico}
Double totalPagos(Alumno
v[]) {
doublet=0;
for(inti=0; i<v.length; i++)t
+= v[i].pagoMensual(); // enlace dinámico
returnt;
}
Suscribirse a:
Entradas (Atom)

