Clases abstractas e interfaces

18
Clases abstractas e interfaces Marco López

Transcript of Clases abstractas e interfaces

Page 1: Clases abstractas e interfaces

Clases abstractas e interfaces

Marco López

Page 2: Clases abstractas e interfaces

Clases abstractas

Definición: Clases definidas en la jerarquía que simplemente recogen las características comunes de otra serie de clases ( sus descendientes), pero que no se van a o no se deben utilizar para crear ejemplares.

Una clase que declara la existencia de métodos pero no la implementación de dichos métodos , estos métodos no hacen nada, solo son declarados, se considera una clase abstracta. Una clase abstracta puede contener métodos no abstractos pero al menos uno de los métodos debe ser abstracto.

Page 3: Clases abstractas e interfaces

Características de una Clase abstracta:

- Modela el comportamiento común de sus clases derivadas.- Establece métodos que necesariamente han de ser

implementados por sus subclases (las clases derivadas)

METODOS ABSTRACTOS.

- Métodos sin código, se declaran pero no se definen- Deben definirse en alguna subclase- Si una subclase no implementa un método abstracto

heredado debe ser abstracta también- Un método abstracto debe pertenecer a una clase abstracta- Implementa métodos que son comunes a todas sus subclases (Noabstractos).- La clase abstracta puede definir atributos comunes a sus subclases.- En el sistema no se crean ejemplares de la clase abstracta porque noserían objetos con existencia propia en el mundo real.

Page 4: Clases abstractas e interfaces

REPRESENTACION GRÁFICA

Clases Abstractas: Objeto Grafico y Paralelogramo En el programa de dibujo sólo se van a crear objetos gráficos concretos de : puntos, elipses, círculos, cuadrados, rectángulos, rombos o romboides.

Page 5: Clases abstractas e interfaces

ESTRUCTURA

Page 6: Clases abstractas e interfaces

CUANDO USAR METODOS Y CLASES ABSTRACTAS

• Los métodos abstractos son normalmente declarados donde dos o más subclases se espera que cumplan un papel similar en diferentes modos a través de diferentes implementaciones (polimorfismo)– Las subclases extienden la misma clase abstracta y proporcionan diferentes implementaciones para los método abstractos• Usar clases abstractas para definir tipos amplios de comportamientos en la raíz de la jerarquía de clases y usar sus subclases para proporcionar los detalles de implementación de la clase abstracta

Page 7: Clases abstractas e interfaces

EJEMPLO

Como ejemplo tomaremos dos figuras geométricas, el Rectángulo y el Triangulo rectángulo, para el ejemplo sólo consideraremos dos características similares: el ancho y el alto, por lo que podemos crear una súper clase Figura geométrica con estas dos características y sus métodos correspondientes, además del métodos getArea() que devolverá el área de la Figura. Pero, se presenta un problema, el cálculo del área del Rectángulo es diferente al cálculo del área del Triangulo.

Área del Rectángulo = ancho X alto Área del Triangulo = (ancho X alto)/2

Por lo tanto, el método getArea() deberá ser abstracto, por lo cual, la clase Figura también deberá ser abstracta.

Page 8: Clases abstractas e interfaces
Page 9: Clases abstractas e interfaces

CONCLUSIONES DE LA CASES

ABSTRACTAS1.- Este tipo de datos es privado para todas aquellas clases que no son derivadas, pero público para una clase derivada de la clase en la que se ha definido la variable como protected.

2.- Una clase abstracta no se puede instanciar (es decir no se pueden volver en objetos) pero si se puede heredar y las clases hijas serán las encargadas de agregar la funcionalidad a los métodos abstractos.

Page 10: Clases abstractas e interfaces

INTERFACESDEFINICION:

Una interface es una variante de una clase abstracta con la condición de que todos sus métodos deben ser abstractos. Si la interface va a tener atributos, éstos deben llevar las palabras reservadas static final y con un valor inicial ya que funcionan como constantes por lo que, por convención, su nombre va en mayúsculas. EJEMPLO:

Page 11: Clases abstractas e interfaces

CARACTERISTICAS

• Define una forma estándar y pública de especificar elcomportamiento de clases (define un contrato)• Todos lo métodos de una interface son métodosabstractos (firmas de métodos sin implementación)• Una clase concreta debe implementar (implements) lainterface, es decir, implementar todos los métodos• Permite la implementación de clases concomportamientos comunes, sin importar su ubicaciónen la jerarquía de clases

Page 12: Clases abstractas e interfaces

DECLARACION DE INTERFACES

Page 13: Clases abstractas e interfaces

INPLEMENTACION DE INTERFACES

Page 14: Clases abstractas e interfaces

CONSTANTES EN INTERFACES

• Las interfaces no pueden tener variables de instancia, pero es legal especificar constantes• Todas las variables en una interface son automáticamente public static final por lo que se puede omitir en la declaración

Page 15: Clases abstractas e interfaces

UTILIZACION DE INTERFACES• Para revelar la interface de la programación de unobjeto (funcionalidad del objeto) sin revelar suimplementación (encapsulado)– La implementación puede cambiar sin afectar el llamador de la interface, que no necesita la implementación en tiempo de compilación• Para tener implementación de métodos similares(comportamientos) en clases sin relacionar• Para modelar herencia múltiple, imponiendoconjuntos múltiples de comportamientos a la clase

Page 16: Clases abstractas e interfaces

DIFERENCIAS ENTRE UNA CLASE ABSTRACTA Y UNA

INTERFAZ• Todos los métodos de una interface son métodosabstractos mientras algunos métodos de una claseabstracta son métodos abstractos– Los métodos abstractos de una clase abstracta tienen elmodificador abstract• Una interfaz puede definir constantes mientras queuna clase abstracta puede tener campos• Las interfaces no tienen ninguna relación de herenciadirecta con una clase particular, se definenindependientemente

Page 17: Clases abstractas e interfaces

HERENCIA ENTRE INTERFACES

Page 18: Clases abstractas e interfaces

BIBLIOGRAFIA

http://www2.uah.es/jcaceres/capsulas/java_abstractas.pdf

http://eii.ucv.cl/pers/guidi/cursos/estructuras/pdf/Java-Clases%20Abstractas%20e%20Interfaces.pdf

http://www.unalmed.edu.co/~jaguzman/docencia_archivos/objetos/diapositivas/8-Clases%20abstractas.pdf

www2.uah.es/jcaceres/capsulas/java_abstractas.pdf