Академический Документы
Профессиональный Документы
Культура Документы
Mtodos abstractos
Tenemos un mtodo f() aplicable a todos los objetos de la clase A. rea de un polgono. La implementacin del mtodo es completamente diferente en cada subclase de A. rea de un tringulo. rea de un rectngulo.
29/10/2011
Mtodos abstractos
Para declarar un mtodo como abstracto, se pone delante la palabra reservada abstract y no define un cuerpo: abstract tipo nombreMtodo(....); Luego en cada subclase se define un mtodo con la misma cabecera y distinto cuerpo.
Clases Abstractas
Si una clase contiene al menos un mtodo 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. Declaracin: public abstract class NombreClase { .............. }
29/10/2011
Alumno alumno
-curso -nivelAcademico +cambiarCurso() +toString() : String +pagoMensual() : double +mostrarAsignaturas() profesor Profesor -asignatura +toString() : String
29/10/2011
29/10/2011
10
29/10/2011
11
Interfaces
Podra suceder que los objetos de varias clases compartan la capacidad de ejecutar un cierto conjunto de operaciones. Y dependiendo de la clase de objeto, cada operacin se realice de diferente manera. Ejemplo: Clases: Circulo, Elipse, Triangulo, .... Todas esas clases incluyen los mtodos: rea, perimetro, cambiarEscala, etc. Podramos definir una interfaz comn que agrupe todos los mtodos comunes (como mtodos abstractos). Y luego definir varias clases de modo que implementen una misma interfaz.
12
29/10/2011
Ejemplo de Interface
public interface Figura { public double area(); public double perimetro(); }
13
Ejemplo de Interface
public class Cuadrado implements Figura { private double lado; public Cuadrado(double lado) { this.lado = lado; } public double area() { return lado*lado; } public double perimetro() { return 4*lado; } }
14
29/10/2011
Ejemplo de Interface
public class Circulo implements Figura { private double radio; private final double PI=3.1416; public Circulo(double radio) { this.radio = radio; } public double area() { return PI*radio*radio; } public double perimetro() { return 2*PI*radio; } }
15
Interfaces
Se pueden declarar referencias a objetos que implementen una cierta interfaz. double totalArea(Figura v[]) { double t=0; for (int i=0; i<v.length; i++) t += v[i].area(); // enlace dinmico return t; }
16
29/10/2011
Interfaces
Una interfaz puede incluir tambin definiciones de constantes aparte de mtodos abstractos. Una misma clase puede implementar ms de una interfaz Herencia mltiple de interfaces
17
18
29/10/2011
19
20
10
29/10/2011
11