Interfaces

Páginas: 5 (1035 palabras) Publicado: 17 de diciembre de 2013
Clases abstractas e interfaces
Clases abstractas
Una clase abstracta…
es una clase que no se puede instanciar
se usa únicamente para definir subclases

¿Cuándo es una clase abstracta?
En cuanto uno de sus métodos no tiene implementación (en Java, el
método abstracto se etiqueta con la palabra reservada abstract).

¿Cuándo se utilizan clases abstractas?
Cuando deseamos definir unaabstracción que englobe objetos de
distintos tipos y queremos hacer uso del polimorfismo.

Figura es una clase abstracta (nombre en cursiva en UML)

porque no tiene sentido calcular su área, pero sí la de un cuadrado o un
círculo. Si una subclase de Figura no redefine area(), deberá
declararse también como clase abstracta.
OOP – Principios de diseño: Java

- 16 -

© Fernando Berzal public abstract class Figura
{
protected double x;
protected double y;
public Figura (double x, double y)
{
this.x = x;
this.y = y;
}
public abstract double area ();
}
public class Circulo extends Figura
{
private double radio;
public Circulo (double x, double y, double radio)
{
super(x,y);
this.radio = radio;
}
public double area ()
{
return Math.PI*radio*radio;
}
}
publicclass Cuadrado extends Figura
{
private double lado;
public Cuadrado (double x, double y, double lado)
{
super(x,y);
this.lado = lado;
}
public double area ()
{
return lado*lado;
}
}
OOP – Principios de diseño: Java

- 17 -

© Fernando Berzal

Interfaces
Una interfaz es una clase completamente abstracta
(una clase sin implementación)

En el ejemplo anterior, si no estuviésemosinteresados en conocer la
posición de una Figura, podríamos eliminar por completo su
implementación y convertir Figura en una interfaz:

public interface Figura
{
public double area ();
}

En Java, las interfaces se declaran con la palabra reservada
interface de manera similar a como se declaran las clases
abstractas.
En la declaración de una interfaz, lo único que puede aparecer sondeclaraciones de métodos (su nombre y signatura, sin su
implementación) y definiciones de constantes simbólicas.
Una interfaz no encapsula datos, sólo define cuáles son los métodos
que han de implementar los objetos de aquellas clases que
implementen la interfaz.
OOP – Principios de diseño: Java

- 18 -

© Fernando Berzal

public class Circulo implements Figura
{
private doubleradio;
public Circulo (double radio)
{
this.radio = radio;
}
public double area ()
{
return Math.PI*radio*radio;
}
}

public class Cuadrado implements Figura
{
private double lado;
public Cuadrado (double lado)
{
this.lado = lado;
}
public double area ()
{
return lado*lado;
}
}

En Java, para indicar que una clase implementa una interfaz se
utiliza la palabra reservadaimplements.
La clase debe entonces implementar todos los métodos definidos
por la interfaz o declararse, a su vez, como una clase abstracta (lo
que no suele ser especialmente útil):
abstract class SinArea implements Figura
{
}
OOP – Principios de diseño: Java

- 19 -

© Fernando Berzal

Herencia múltiple de interfaces
Una clase puede implementar varios interfaces simultáneamente,
pese aque, en Java, una clase sólo puede heredar de otra clase
(herencia simple de implementación, múltiple de interfaces).

public abstract class Figura
{
public abstract double area ();
}
public interface Dibujable
{
public void dibujar ();
}
public interface Rotable
{
public void rotar (double grados);
}
public class Circulo extends Figura
implements Dibujable

public class Cuadradoextends Figura
implements Dibujable, Rotable

OOP – Principios de diseño: Java

- 20 -

© Fernando Berzal

El principio de segregación de interfaces
Robert C. Martin: C++Report, 1996

Los clientes de una clase
no deberían depender de interfaces que no utilizan.

PROBLEMA: Estamos implementando un sistema de seguridad en el
cual controlamos varias puertas. Algunas de esas...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Interfaces
  • Interface
  • Interface
  • Interfaces
  • Interfaces
  • interfaces
  • Interfaces
  • interfaces

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS