PROGRAMACION ORIENTADA
A OBJETOS
Sesión
Clases Abstractas e Interfaces
[email protected]
Agenda
1 • Objetivos
2 • Definición de Clases Abstractas
3 • Métodos Abstractos
4 • Definición de Interfaces
5 • Crear interfaces
6 • Implementar Interfaces
7 • Invocación de métodos de la superclase
Objetivos
Al finalizar la sesión, usted estará en capacidad de:
Definir clases abstractas
Definir métodos abstractos
Definir interfaces
Implementar interfaces
3
Clases Abstractas
No puede ser instanciada.
Los métodos abstractos deben ser implementados por las subclases.
Las interfaces soportan herencia múltiple.
superclase
Abstracta
Cuenta
subclases
Ahorro Corriente
Concretas
4
Clases Abstractas
Utilizar la palabra reservada abstract para declarar una clase como
abstracta.
public abstract class Cuenta {
private int numero;
public void depositar()…
}
public class Ahorro public class Corriente
extends Cuenta extends Cuenta
{ {
private double interes; private double sobregiro;
public int getInteres()… public void setSobregiro()…
5
Métodos Abstractos
Un método abstracto :
Es un marcador de implementación.
Es parte de una clase abstracta.
Debe ser sobreescrito por una subclase concreta
Cada subclase concreta puede implementar el método de forma
diferente.
6
Definición de Métodos Abstractos
Utilice la palabra reservada abstract para declarar un método como
abstracto:
Proporcionar solamente la firma del método.
La clase también debe ser abstracta.
Se declara la estructura de una clase determinada, sin proporcionar la
implementación completa de cada método.
public abstract class Cuenta
{
public abstract void depositar();
…
7
Interfaces
Una interface es como una clase completamente abstracta:
Todos sus métodos son abstractos.
Todas las variables son public static final.
Una interface lista una serie de firma de métodos sin ningún detalle de
código.
Una clase que implementa la interface debe proporcionar detalle de
código para todos los métodos de la interface.
Una clase puede implementar muchas interfaces, pero puede extender
de una sola clase.
8
Ejemplos de Interfaces
Las interfaces describen un aspecto del comportamiento que requieren
diferentes clases.
Por ejemplo, las clases que pueden estar relacionadas soportan la
interface “Manejable” (Se puede conducir).
Las clases pueden no estar relacionadas.
noManejable Manejable
9
Creando Interfaces
Utilice la palabra reservada interface:
public interface Manejable {
int MAXIMO_GIRO= 45;
void girarIzquierda(int grados);
void girarDerecha(int grados);
}
Todos los métodos son public abstract.
Todas las variables son public static final.
10
Implementando Interfaces
Utilice la palabra reservada implements:
public class Yate extends Barco
implements Manejable {
public void girarIzquierda(int grados) {…}
public void girarDerecha(int grados) {…}
}
11
Ordenar: Un ejemplo del mundo real
Es utilizado por varias clases no relacionadas
Contiene un conjunto conocido de métodos
Se necesita para ordenar cualquier tipo de objeto
Usa las reglas de comparación que son conocidas sólo por el objeto
ordenable
Soporta la buena reutilización de código
12
Información General de las Clases
Creada por el experto en ordenar:
public interface public abstract
Ordenable class Ordenar
Creada por el experto en película:
public class Pelicula public class
implements Ordenable MiAplicacion
13
Cómo funciona Ordenar
MiAplicacion
ordenarObjetos() MiAplicacion pasa un arreglo
devuelve la lista 4 1 de peliculas a
ordenada Ordenar.ordenarObjetos().
Ordenar
Pelicula devuelve el ordenarObjetos()
resultado de la hace una pelicula
comparación.
3 2 compararse con otra
pelicula.
Pelicula
14
La Interface Ordenable
Específica el método comparar() :
public interface Ordenable
{
// comparar(): Compara este objeto con otro objeto
// Devuelve:
// 0 si este objeto es igual a obj2
// un valor < 0 si este objeto < obj2
// un valor > 0 si este objeto > obj2
int comparar(Object obj2);
}
15
La Clase Ordenar
Contiene ordenarObjetos():
public abstract class Ordenar
{
public static void ordenarObjetos(Ordenable[] items)
{
// Pasa a través del arreglo comparando e intercambiando
// hacer esto length-1 veces
for (int i = 1; i < items.length; i++)
{
for (int j = 0; j < items.length - 1; j++)
{
if (items[j].comparar(items[j+1]) > 0)
{
Ordenable tempitem = items[j+1];
items[j+1] = items[j];
items[j] = tempitem; } } } } }
16
La Clase Pelicula
Implementa Ordenable:
public class Pelicula extends InventarioArticulo
implements Ordenable
{
String titulo;
public int comparar(Object pelicula2)
{
String titulo1 = this.titulo;
String titulo2 = ((Pelicula)pelicula2).getTitulo();
return(titulo1.compareTo(titulo2));
}
}
17
Utilizando Ordenar
Llamar a Ordenar.ordenarObjetos(Ordenable []) con un arreglo de
Pelicula como argumento:
class miAplicacion
{
Pelicula[] listaPelicula;
… // crear el arreglo de Pelicula
Ordenar.ordenarObjetos(listaPelicula);
}
18
Utilizando instanceof con Interfaces
Utilice el operador instanceof para determinar si un objeto
implementa una interface.
Utilice downcasting para llamar a métodos que son definidos en la
interface:
public void unMetodo(Object obj)
{
…
if (obj instanceof Ordenable)
((Ordenable)obj).comparar(obj2);
}
19
Resumen
En esta sesión, ha aprendido lo sgte :
Una clase abstracta no puede ser instanciada.
Un método abstracto tiene una firma pero no código.
Una interface es una colección de métodos abstractos para ser
implementados en donde sea.
Una clase puede implementar muchas interfaces.
La implementación de más de una interface es comparable a la
herencia múltiple.
20
Práctica: Información General
Esta práctica cubre:
Crear una interface y una clase abstracta
Probar la clase abstracta y la interface
21
Espacio para preguntas
¡Muchas gracias!
[email protected]