Clases abstractas e interfaces (AlexandraPerez)

14,931 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
14,931
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
190
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Clases abstractas e interfaces (AlexandraPerez)

  1. 1. Programación IAlexandra PérezLab. E620/12/2012
  2. 2. Clases Abstractas  Un método abstracto es un método declarado en una clase para el cual esa clase no proporciona la implementación (el código). Una clase abstracta es una clase que tiene al menos un método abstracto. Una clase que extiende a una clase abstracta debe implementar los métodos abstractos (escribir el código) o bien volverlos a declarar como abstractos, con lo que ella misma se convierte también en clase abstracta.
  3. 3.  Presentan un nivel de "abstracción" tan elevado que no sirven para instanciar objetos de ellas.  elevados de algunas Representan los escalones más jerarquías de clases y solo sirven para derivar otras clases, en las que se van implementando detalles y concreciones, hasta que finalmente presentan un nivel de definición suficiente que permita instanciar objetos concretos. Se suelen utilizar en aquellos casos en que se quiere que una serie de clases mantengan una cierta característica o interfaz común. Por esta razón a veces se dice de ellas que son pura interfaz.
  4. 4.
  5. 5. Declaración e implementación de métodos abstractos abstract class FiguraGeometrica { ... abstract void dibujar(); ...}class Circulo extends FiguraGeometrica { ... void dibujar() { // codigo para dibujar Circulo ... }}
  6. 6. Declaración de clases abstractasLas clases abstractas se declaran empleando la palabrareservada abstract como se muestra a continuación: public abstract class IdClase . . .Ejemplo: /** * Declaracion de la clase abstracta FiguraGeometrica * A. Garcia-Beltran - noviembre, 2005*/public abstract class FiguraGeometrica { // Declaracion de atributos private String nombre; // Declaracion de metodos abstract public double area(); public figuraGeometrica (String nombreFigura ) { nombre = nombreFigura; } final public boolean mayorQue (FiguraGeometrica otra) { return area()>otra.area(); } final public String toString() { return nombre + " con area " + area(); }}
  7. 7. Reglas de uso:  Una clase abstracta solo puede ser usada como clase base para otras clases, pero no puede ser instanciada para crear un objeto. Una clase abstracta no puede ser utilizada como argumento o como retorno de una función. Si puede declararse punteros a clase abstracta . Se permiten referencias a clase abstracta, suponiendo que el objeto temporal no es necesario en la inicialización.
  8. 8. Referencias y objetos abstractosSe pueden crear referencias a clases abstractas como cualquier otra:  FiguraGeometrica figura;Sin embargo una clase abstracta no se puede instanciar, es decir, no sepueden crear objetos de una clase abstracta. El compilador producirá unerror si se intenta: FiguraGeometrica figura = new FiguraGeometrica();Esto es coherente dado que una clase abstracta no tiene completa suimplementación y encaja bien con la idea de que algo abstracto nopuede materializarse.Sin embargo: FiguraGeometrica figura = new Circulo(. . .); figura.dibujar();La invocación al método dibujarse resolverá en tiempo de ejecución y laJVM llamará al método de la clase adecuada.
  9. 9. Ejemplo clase abstractaint x, y; public abstract class Figura {public void mostrarOrigen() {System.out.println("x= "+x+" y= "+y);}public abstract double area(); // No tiene implementaciónpublic abstract double mostrarNombre();}public class Triangulo extends Figura {protected int base, altura;public Triangulo (int ba, int al) { base=ba; altura=al; }public double area() { return base*altura/2; }public void mostrarNombre() { System.out.println(“triangulo”); }}public class Cuadrado extends Figura {protected int lado;public Cuadrado (int lado) { this.lado=lado; }public double area() { return lado*lado; }public void mostrarNombre() { System.out.println(“cuadrado”);}}
  10. 10.  Prueba clase abstractapublic class PruebaClaseAbstracta {public static void main(String args[]) {Figura fig;Triangulo tri;Cuadrado cua; fig = new Figura(); // error no se puede//instanciar una clase abstractatri = new Triangulo(4,3);tri.mostrarOrigen();tri.mostrarNombre();fig = tri;fig.mostrarNombre();System.out.println("Area triangulo: "+fig.area());cua = new Cuadrado(5);fig = cua;System.out.println("Area cuadrado: "+fig.area());}}
  11. 11. Interfaces  Una interfaz en java es un conjunto de métodos abstractos y propiedades. En ellas se especifica qué se debe hacer pero no su implementación. Serán las clases que implementen estas interfaces las que describan la lógica del comportamiento de los métodos.
  12. 12. Ventajas al utilizar interfaces  Se organiza la programación. Obligar a que ciertas clases utilicen los mismos métodos (nombres y parámetros). Establecer relaciones entre clases que no estén relacionadas.
  13. 13. Declaración de interfaces interface NombreInterfaz {tipo static final NOMBRECONSTANTE1 = valor;…….….….public tipoDevuelto nombreMetodo1(listaParámetros);…….….….}class NombreClase implements NombreInterfaz1[, NombreInterfaz2 ..] {// declaración atributos y métodos de la clase…….….….}
  14. 14.
  15. 15. Extensión de interfaces  Se puede definir un interface que especialice a otro interface mediante extends similar a herencia. Un interface puede extender a varios interfaces a la vez.interface ElementoOrdenado extendsComparable, Cloneable, java.io.Serializable {// miembros y métodos propios del interfaz//ElementoOrdenado.....}
  16. 16. Ejemplo: public interface Nombrable {static final boolean CIERTO = true;public void mostrarNombre();}public class Elemento implements Nombrable {String nombre;public Elemento(String nom) {nombre = nom; }// obligatorio implementar método mostrarNombrepublic void mostrarNombre(){System.out.println("Nombre: "+nombre);if (CIERTO)System.out.println("Constante CIERTO ");}}
  17. 17. Net grafía:  http://gl-epn-programacion- ii.blogspot.com/2010/04/interfaces-en-java.html http://www.fdi.ucm.es/profesor/lgarmend/arcgisjava/temas /Tema%209%20Clases%20abstractas http://ocw.upm.es/lenguajes-y-sistemas- informaticos/programacion-en-java- i/Contenidos/LecturaObligatoria/16-herencia.pdf %20e%20interfaces.pdf http://www.slideshare.net/networksens/09-clases-abstractas- e-interfaces http://www.zator.com/Cpp/E4_11_8c.htm http://www.arrakis.es/~abelp/ApuntesJava/ClasesAbstractas .htm

×