Está en la página 1de 23

PROGRAMACION ORIENTADA

A OBJETOS

Sesión
Clases Abstractas e Interfaces

jose.caicedos@ug.edu.ec
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!

jose.caicedos@ug.edu.ec

También podría gustarte