clases abstractas

15
Clases Abstractas Profesor: Lic. Carlos A. Ruiz De La Cruz Melo. Correo: [email protected] ALGORITMICA II

Upload: yossamz

Post on 27-Dec-2015

26 views

Category:

Documents


3 download

TRANSCRIPT

Clases Abstractas

Profesor:

Lic. Carlos A. Ruiz De La Cruz Melo.

Correo: [email protected]

ALGORITMICA II

Definición

Una de las características más útiles de cualquier lenguaje orientado a objetos es la posibilidad de declarar clases que definen como se utiliza solamente, sin tener que implementar métodos. Esto es muy útil cuando la implementación es específica para cada usuario, pero todos los usuarios tienen que utilizar los mismos métodos.

CUANDO 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)

Cuando se utilizan clases abstractas?Cuando deseamos definir una abstracción que englobe objetos de distintos tipos y queremos hacer uso del polimorfismo.

Ejemplo 1

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();

} 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;}

}

class 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;}

}class Operaciones{ static public void main(String ar[]){ Circulo c=new Circulo(2,6,10); System.out.println("area circulo="+c.area()); Cuadrado cua=new Cuadrado(10,30,10); System.out.println("area cuadrado="+cua.area()); }}

Ejemplo 2

Si no estuviésemos interesados en conocer la posición de una Figura, podríamos eliminar por completo su implementación y convertir Figura en un interfaz.

interface Figura{public abstract double area();

} class Circulo implements Figura{

private double radio;public Circulo(double radio){

this.radio=radio;}public double area(){

return Math.PI*radio*radio;}

}class Cuadrado implements Figura{

private double lado;public Cuadrado(double lado){

this.lado=lado;}public double area(){

return lado*lado;}

}class Operaciones{ static public void main(String ar[]){ Circulo c=new Circulo(10); System.out.println("area circulo="+c.area()); Cuadrado cua=new Cuadrado(10); System.out.println("area cuadrado="+cua.area()); }}

QUE ES UNA INTERFACE?Un interface es una colección de definiciones de métodos (sin implementaciones) y de valores constantes. Los interfaces se utilizan para definir un protocolo de comportamiento que puede ser implementado por cualquier clase del árbol de clases

capturar similitudes entre clases no relacionadas sin forzar una relación entre ellas.

declarar métodos que una o varias clases necesitan implementar.

Utilidad de las Interfaces

Definir un Interface

Para crear un Interface, se debe escribir tanto la declaración como el cuerpo de la interface.

declaraciondeInterface { cuerpodeInterface}

Utilizar un Interface como un Tipo de dato

Cuando se define un nuevo interface, en esencia se está definiendo un tipo de referencia. Se pueden utilizar los nombres de interface en cualquier lugar donde se usaría un nombre de dato de tipos primitivos o un nombre de datos del tipo de referencia.

Ejemplo 3

interface A { public void m1();}class B implements A{

int x;B(int y){ x=y; }public void m1(){

System.out.println("metodo 1="+x);}

}class Linea { void poner(A ca) { ca.m1(); } static public void main(String arg[]){ Linea l=new Linea(); B b=new B(20); A i=b; l.poner(i); } }

Un interfaz es una clase completamente abstracta

En Java una interface es una clase abstracta pura, es dcir una clase donde todos los métodos son abstractos (no se implementa ninguno).

Permite al diseñador de clases establecer la forma de una clase (nombres de métodos, listas de argumentos y tipos de retorno, pero no bloques de código).

Una interface puede también contener datos miembro, pero estos son siempre static y final. Una interface sirve para establecer un 'protocolo' entre clases. 

Diferencias entre un interface y una clase abstracta

Un interface es simplemente una lista de métodos no implementados

Un interface además puede incluir la declaración de constantes.

Una clase abstracta puede incluir métodos implementados y no implementados o abstractos, miembros dato constantes y otros no constantes.

Clase Abstractas e Interfaces

A nivel conceptual, las clases abstractas e interfaces permiten definir que puede hacer un conjunto o familia de clases relacionadas.Por ejemplo en el contexto de la universidad:

Se suelen utilizar en aquellos casos en que se quiere que una serie de

clases mantengan una cierta característica o interfaz común.

Las clases abstractas presentan un nivel de "abstracción" tan elevado que no sirven para instanciar objetos de ellas

solo sirven para derivar otras clases, en las que se van implementando detalles y concreciones.

Representan los escalones más elevados de algunas jerarquías de clases

CARACTERISTICAS