Académique Documents
Professionnel Documents
Culture Documents
Clases abstractas
Clases cuya descripcin es incompleta. Una clase abstracta declara mtodos, pero no tiene que implementarlos.
No proporcionan la implementacin de todos sus mtodos Los mtodos no implementados se declaran como abstract Una clase con un mtodo abstracto debe declararse como clase abstracta Pero una clase puede declararse como abstracta aunque no tenga ningn mtodo abstracto
Clases abstractas
Forma xpos ypos color ... dibuja setColor ...
{abstract}
Otras
Circulo radio ... setRadio ... Rectangulo altura anchura ... setAltura ...
Clases abstractas
public abstract class Forma { private int xpos, ypos; private Color color; // ... public abstract void dibuja(); public void setColor(Color c){ /*...*/ }; } public class Circle extends Forma{ private int radio; // ... public void dibuja(){ /*...*/ }; public void setRadio(int){/*...*/}; } public class Rectangle extends Forma{ private int altura, anchura; // ... public void dibuja(){ /*...*/ }; public void setAltura(int){/*...*/}; }
clases abstractas e Interfaces
dibuja un rectngulo
Clases abstractas
Las subclases de una clase abstracta deben: Sobreescribir todos los mtodos abstractos de la superclase, o bien Ser declaradas como clases abstractas Una clase abstracta no puede instanciarse No se pueden crear objetos de una clase abstracta Una clase abstracta puede incluir variables y mtodos no abstractos. No se pueden definir constructores abstractos o mtodos estticos abstractos.
Ejercicio 1
Declarar como como abstracta abstracta la la clase clase Figura Figura del del tema tema anterior anterior Declarar
Ejercicio 1
Todas las Figuras deben tener mtodo dameArea()
Interfaces
Slo declaran comportamiento
Se utiliza la palabra clave interface Por defecto todos sus mtodos son pblicos y abstractos
No implementan el comportamiento
10
Interfaces
Permite simular algunos aspectos de la herencia mltiple
Define un tipo de datos Posibilita el enlace dinmico
Si la clase no proporciona la implementacin para todos los mtodos del interfaz debe ser declarada como abstracta
clases abstractas e Interfaces 11
Declaracin de interfaces
Sintaxis
interface NombreInterfaz NombreInterfaz { { interface tipo static static final final NOMBRECONSTANTE1 NOMBRECONSTANTE1 = = valor; valor; tipo ... ... public tipoDevuelto tipoDevuelto nombreMetodo1(listaParmetros); nombreMetodo1(listaParmetros); public ... ... } } class NombreClase implements implements NombreInterfaz1 class NombreClase NombreInterfaz1 Implementacin del interfaz en una clase [, NombreInterfaz2 NombreInterfaz2 ..] ..] { { [, // declaracin declaracin atributos y mtodos mtodos de la clase clase Una clase puede implementar variosde interfaces // atributos y la ... ... } }
clases abstractas e Interfaces 12
interfaces
Programador es un Asalariado
ite m r e ep
13
Ejemplo de interfaz
public interface interface Nombrable Nombrable { { public static final final boolean boolean CIERTO CIERTO = = true; true; static public void void mostrarNombre(); mostrarNombre(); public } } public class class Elemento Elemento implements implements Nombrable Nombrable { { public String nombre; nombre; String public Elemento(String Elemento(String nom) nom) { { public nombre = = nom; nom; } } nombre // obligatorio obligatorio implementar implementar mtodo mtodo mostrarNombre mostrarNombre // public void void mostrarNombre(){ mostrarNombre(){ public System.out.println("Nombre: "+nombre); "+nombre); System.out.println("Nombre: if (CIERTO) (CIERTO) if System.out.println("Constante CIERTO CIERTO "); "); System.out.println("Constante clases abstractas e Interfaces 14 }} }}
Ejemplo de interfaces
{interface}
Humano Actor Canino
16
Ejemplo de interfaces
interface Actor { void actua(); }
sin cuerpo
public class Persona extends Humaon implements Actor { public void actua(){ /*...*/}; //... } public class Perro extends Canino implements Actor { public void actua(){ /*...*/}; //... }
clases abstractas e Interfaces 17
Extensin de interfaces
Se puede definir un interface que especialice a otro interface mediante
extends
Es similar a la herencia de clases
18
Extensin de interfaces
No obstante un interface puede extender a varios interfaces a la vez
Aqu la herencia mltiple no plantea problemas porque no se hereda cdigo
interface ElementoOrdenado ElementoOrdenado extends extends interface Comparable, Cloneable, Cloneable, java.io.Serializable java.io.Serializable { { Comparable, // miembros miembros y y mtodos mtodos propios propios del del interfaz interfaz // //ElementoOrdenado //ElementoOrdenado ..... ..... } }
clases abstractas e Interfaces 19
Rsumen de interfaces
Las interfaces sirven para:
Declarar mtodos que sern implementados por una o ms clases. Determinar la interface de programacin de un objeto, sin mostrar el cuerpo de la clase. Capturar similitudes entre clases no relacionadas, sin forzar una relacin entre ellas. Describir objetos "tipo-funcin", que podrn ser utilizados como argumentos al invocar mtodos sobre objetos.
clases abstractas e Interfaces 20
Rsumen de interfaces
Tipo herencia instanciable implementa datos
21
22
23
24
25
Ejercicio 2: Inmobiliaria
Se quiere modelar una agencia inmobiliaria para lo cual se deben tener en cuenta las siguientes entidades e informaciones asociadas: a. Un inmueble viene dado por su ubicacin y los metros cuadrados que ocupa. Hay dos tipos de inmuebles: superficies y construcciones. Los primeros tienen su precio por metro cuadrado. A su vez, hay dos tipos de superficies: solares y plazas de garaje. Los solares pueden estar en zona rstica o urbana. Las plazas de garaje pueden formar parte de un garaje pblico o de uno privado. Por su parte, las construcciones pueden ser nuevas o de segunda mano. Hay dos tipos de construcciones: viviendas y locales comerciales. Las viviendas tienen precio, nmero de habitaciones y piso. Los locales tienen precio por metro cuadrado.
26
Ejercicio 2: Inmobiliaria
b. La agencia que queremos modelar se dedica a la venta y alquiler de inmuebles. Ahora bien, solamente alquila plazas de garaje y locales comerciales, mientras que solo vende solares y viviendas. c. La agencia inmobiliaria viene dada por sendas secuencias de alquileres y ventas. Se pide: Definir la jerarqua de clases de forma que se cumplan los requisitos anteriores. Para cada una de las clases, definir su(s) constructora(s), mtodos de acceso a cada uno de los atributos y un mtodo muestra() que escriba, de la manera que consideres ms conveniente, la informacin de la entidad de que se trate. Definir un mtodo pblico precio() que calcula el precio que tiene una superficie.
clases abstractas e Interfaces 27
Ejercicio 2: Inmobiliaria
Definir un mtodo aadeVentaInmueble(in), que aade el inmueble dado por el parmetro a la secuencia de inmuebles en venta de la agencia, siempre que no estuviera ya antes en venta. Definir un mtodo aadeAlquilerInmueble(in), que aade el inmueble dado por el parmetro a la secuencia de inmuebles en alquiler de la agencia, siempre que no estuviera ya antes en alquiler. Definir mtodos que respondan a los siguientes servicios: 1. inmueblesVenta(p), que muestra los inmuebles con un precio de venta inferior al parmetro. 2. localesSegundaMano(m), que muestra los locales comerciales de segunda mano con una superficie superior al parmetro. 3. solaresRusticos(), que averigua cuntos solares no urbanos estn en venta.
28
Ejercicio 2: Inmobiliaria
2. Define el mtodo equals() y toString() para las clases AgenciaInmobiliaria, Inmueble, Superficie y Solar. 3. Dos agencias inmobiliarias han decidido fusionarse. Define un mtodo fusion(ag) dentro de la clase de las agencias inmobiliarias, que permita crear una agencia nueva a partir de la agencia que invoca el mtodo y la del parmetro dado.
29