2. 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.
3. 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 (No
abstractos).
- La clase abstracta puede definir atributos comunes a sus subclases.
- En el sistema no se crean ejemplares de la clase abstracta porque no
serían objetos con existencia propia en el mundo real.
4. 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.
6. 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
7. 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.
8.
9. CONCLUSIONES DE LA
CASES ABSTRACTAS
1.-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.
10. INTERFACES
DEFINICION:
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:
11. CARACTERISTICAS
• Define una forma estándar y pública de especificar el
comportamiento de clases (define un contrato)
• Todos lo métodos de una interface son métodos
abstractos (firmas de métodos sin implementación)
• Una clase concreta debe implementar (implements) la
interface, es decir, implementar todos los métodos
• Permite la implementación de clases con
comportamientos comunes, sin importar su ubicación
en la jerarquía de clases
14. 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
15. UTILIZACION DE INTERFACES
• Para revelar la interface de la programación de un
objeto (funcionalidad del objeto) sin revelar su
implementació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, imponiendo
conjuntos múltiples de comportamientos a la clase
16. DIFERENCIAS ENTRE UNA CLASE
ABSTRACTA Y UNA INTERFAZ
• Todos los métodos de una interface son métodos
abstractos mientras algunos métodos de una clase
abstracta son métodos abstractos
– Los métodos abstractos de una clase abstracta tienen el
modificador abstract
• Una interfaz puede definir constantes mientras que
una clase abstracta puede tener campos
• Las interfaces no tienen ninguna relación de herencia
directa con una clase particular, se definen
independientemente