Sie sind auf Seite 1von 9

Captulo 3: El lenguaje de programacin Java Clases Abstractas e Interfaces

Pedro Rodrguez Moreno

Paradigmas de Programacin

Departamento de Sistemas de Informacin

1/9

Clases abstractas
Una clase abstracta representa un concepto muy genrico, sin un comportamiento claro y especfico. En Java Se declaran mediante la palabra reservada abstract. Se fija un conjunto de mtodos y atributos que permitan modelar un cierto concepto, que ser refinado mediante la herencia. Una clase abstracta no puede ser instanciada, es decir, no se puede hacer new sobre este tipo de clases. Pero s se pueden definir los constructores. Su utilidad es permitir que otras clases deriven de ella, proporcionndoles un marco o modelo que deben seguir y algunos mtodos de utilidad general.

Una clase abstract puede tener mtodos que no son abstract y con una implementacinUn mtodo no puede ser abstract y static a la vez, ya que los mtodos static no pueden ser redefinidos. Mtodos abstractos:

Son declarados como abstract.


Slo cuentan con la declaracin y no poseen cuerpo de definicin. La implementacin es especfica de cada subclase.

Toda clase que contenga algn mtodo abstracto (heredado o no) es abstracta. Puede tener tambin mtodos efectivos.
Paradigmas de Programacin Departamento de Sistemas de Informacin 2/9

Pedro Rodrguez Moreno

Ejemplos
public abstract class FiguraGeometrica {
FiguraGeometrica (); FiguraGeometrica (int x, int y); public asbtract void Mover();

public abstract void Dibujar();


public abstract void Rotar(); ... } public class Cuadrado extends FiguraGeometrica { public void Dibujar(){ //cdigo especifico para dibujar cuadrados ... } ... }

Pedro Rodrguez Moreno

3/9

En C++
class FiguraGeometrica { protected: int px; int py; public: FiguraGeometrica (); FiguraGeometrica (int x, int y); virtual ~FiguraGeometrica (); virtual void Mover() = 0; virtual void Rotar(int ang)=0; Mtodos virtuales puros En C++, una clase es asbtracta si tiene al menos un mtodo definido Como virtual puro.

virtual void Dibujar()=0;


};

Pedro Rodrguez Moreno

Paradigmas de Programacin

Departamento de Sistemas de Informacin

4/9

Concepto de Interface
Una interface es un conjunto de declaraciones de mtodos. Si una clase implementa una interface, debe definir todos los mtodos especificados por la interface. Las interfaces pueden tambin definir variables finales pero no de instancia y tampoco static. Una interface puede derivar de otra interface o incluso de varias interfaces, lo que equivale decir que una clase puede implementar ms de una interface Una interface sirve para crear referencias a objetos. Cuando el nombre de un objeto es de un tipo de interface, a travs de dicho nombre (y el operador punto) slo se pueden utilizar los mtodos declarados por dicha interface. Una clase puede implementar una o varias interfaces. Si una clase implementa una interface sta debe proporcionar una definicin de todos los mtodos de sta.

Un interface es como una especie de protocolo o modo de conducta. Todas las clases que implementan una interface tienen una conducta similar (en los aspectos determinados por los mtodos de la interface).
Las interfaces son independiente de las jerarquas de clases, pueden ser utilizadas o implementadas en cualquiera de ellas, y sirven para proporcionar un comportamiernto adicional a objetos de cualquier jerarqua de clases.
Paradigmas de Programacin Departamento de Sistemas de Informacin 5/9

Pedro Rodrguez Moreno

Ejemplo
interface Dibujable { public void Dibujar(Graphics g); } public class Circulo extends FiguraGeometrica implements Dibujable { ... public void Dibujar(Graphics g) { g.setColor(color); g.drawArc((int)(centro.CoordX() this.radio), (int)centro.CoordY() this.radio),(int)(2*this.radio),(int)(2*this.radio),angulo,360); } protected void Mover(Punto c) {

centro = c;
} }
Pedro Rodrguez Moreno Paradigmas de Programacin Departamento de Sistemas de Informacin 6/9

Definicin de interfaces
Una interface se define de una forma similar a una clase:

public interface Dibujable { final float PI = 3.14159; // Una constante public void Dibujar(Graphics g); }

Si la interface nos es public no ser accesible fuera del package.


Los mtodos declarados en una interface son public y abstract de modo implcito. Cada interface public debe ser definida en un archivo *.java especial con el nombre de la interface.

Entre interfaces existe una jerarqua que permite herencia simple y mltiple.
Si una interface extiende otra, incluye todas sus constantes y declaraciones de mtodos. Una interface puede ocultar una constante definida en su super-interface definiendo otra con el mismo nombre. De la misma forma puede ocultar la declaracin de un mtodo de su super-interface redeclarndolo nuevamente. Una interface puede extender varias interfaces (se ponen su nonbres tras la palabra extends, separada por comas).
Paradigmas de Programacin Departamento de Sistemas de Informacin 7/9

Pedro Rodrguez Moreno

Utilizacin de Interfaces
Las constantes definidas en una interface se utilizan en cualquier otra clase (que no la implemente) precedindoles del nombre de la interface, como por ejemplo: area = 2.0*Dibujable.PI*r; Si embargo, en las clases que implementan la interface, las constantes de la interface se pueden utilizar directamente, como si fueran constantes de la misma clase. El nombre de una interface se puede utilizar como un nuevo tipo de variable:
En este sentido, el nombre de una interface puede ser utilizado en lugar del nombre de la clase que la implementa. El objeto cuya referencia sea de un tipo de interface slo se podr utilizar con los mtodos declarados en dicha interface. Un objeto de ese tipo puede tambin ser utilizado como valor de retorno.

Las interfaces no deben ser modificadas, ms que en caso de extrema necesidad. Si se modifican, por ejemplo aadiendo alguna declaracin, las clases que implementan dicha inteface dejarn de funcionar a menos que implementen el nuevo mtodo.

Pedro Rodrguez Moreno

Paradigmas de Programacin

Departamento de Sistemas de Informacin

8/9

Diferencias entre una interface y una clase abstracta

Una clase no puede heredar de dos clases abstractas, pero si puede heredar de una clase abstracta e implementar una o mas interfaces. Los interfaces son muy tiles para definir un mecanismo comn de comunicacin en objetos de tipologa variada (independencia de la jerarqua). Las interfaces permiten mucha mas flexibilidad para conseguir que dos clases tengan el mismo comportamiento independientemente de dnde estn en la jerarqua de clases de Java. Los mtodos de las interfaces no tienen cdigo en la definicin de la interface. Los mtodos de las clases abstractas s pueden tener cdigo, a excepcin de los mtodos declarados como abstract. Una clase que hereda de una clase abstracta est obligada a implementar todos los mtodos abstractos, no as si fuese tambin una clase abstracta.

Pedro Rodrguez Moreno

Paradigmas de Programacin

Departamento de Sistemas de Informacin

9/9

Das könnte Ihnen auch gefallen