SlideShare une entreprise Scribd logo
1  sur  27
[object Object],[object Object],[object Object],TEMA 5
Clases Abstractas ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Clases Abstractas (Java) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Métodos Abstractos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Clases Abstractas: Ejemplo
Clase Figura abstract  class  Figura  { private  String  _nombre ; abstract   public  double  area  (); abstract   public  void  dibujar  (); public   Figura  (String nombreFigura) { _nombre = nombreFigura; } public  boolean  menorQue  (Figura f) { return ( this.area() < f.area() ); } public  String  toString  () { return ( _nombre + &quot; , &quot; + area() ); } } No es posible crear Objetos de esta clase Método sin implementación
Clase Circulo class  Circulo  extends  Figura { private  double  _radio ; private  static final double  PI  = 3.1415926535879; public   Circulo  (double r) { super (&quot;Circulo&quot;); _radio = r; } public   Circulo  () { this (10.0); } public  double  area  () { return ( PI * _radio * _radio ); } public  void  dibujar  () { System.out.println (&quot;Soy un Circulo de radio: &quot; + _radio); } } Los métodos abstractos han sido implementados: Es posible crear objetos  Circulo Construye la parte heredada de  Figura , NO un objeto específico
Clase Rectángulo class  Rectangulo  extends  Figura { private  double  _base ; private  double  _altura ; public Rectangulo  (double ancho, double alto) { super (&quot;Rectangulo&quot;); _base = ancho; _altura = alto; } public Rectangulo  () { this (10.0, 10.0); } public  double  area  () { return ( _base * _altura ); } public  void  dibujar  () { System.out.println (&quot;Soy un Rectangulo de: &quot; + _base + &quot;*&quot; + _altura); } } Los métodos abstractos han sido implementados: Es posible crear objetos  Rectangulo Construye la parte heredada de  Figura , NO un objeto específico
Clase Cuadrado class  Cuadrado  extends  Rectangulo { public Cuadrado  (double lado) { super (lado, lado); } public Cuadrado  () { super (10.0, 10.0); } } Deriva de  Rectangulo  que no tiene métodos abstractos: Es posible crear objetos  Cuadrado
Ejemplo de utilización de la jerarquía de Figuras class  testfiguras  { public  static void  main  (String[] args) { Figura[] fig = new Figura[3]; int menor; fig[0] = new Circulo(); fig[1] = new Cuadrado(55); fig[2] = new Rectangulo(20,30); for (int i=0; i<fig.length; i++) { System.out.println (fig[i]); System.out.println (&quot;Area: &quot; + fig[i].area()); System.out.println (&quot;Dibujar:&quot;); fig[i].dibujar(); } if ( fig[0].menorQue (fig[1]) ) menor = 0; else menor = 1; if ( fig[2].menorQue (fig[menor]) ) menor = 2; System.out.println (&quot;La figura menor es:&quot;); System.out.println (fig[menor]); } } Array de 3 Figuras ( no crea objetos ) Se crean 3 Figuras  concretas  y se almacenan en el array fig[i]  aplica los métodos de su clase : Circulo ,  Cuadrado ,  Rectangulo
Métodos finales ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Clases finales ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],Herencia múltiple Herencia Simple Herencia Múltiple 2, 3, 4, ...
Herencia múltiple: Conflictos (1)
Herencia múltiple: Conflictos (2)
Herencia múltiple ,[object Object],[object Object],[object Object],[object Object],[object Object]
Ejemplo Herencia Múltiple
Interfaces ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Interfaces en Java ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Interfaces de JAVA - Una interfaz puede derivarse de varias interfaces. En este  caso hereda todas las constantes y métodos de sus  superinterfaces, excepto aquellos que ella redefina. }
import java.util.*; // Interfaz IFecha: métodos y constantes para obtener el día, //mes y año public interface IFecha { public final static int DIA_DEL_MES = Calendar.DAY_OF_MONTH; public final static int MES_DEL_AÑO = Calendar.MONTH; public final static int AÑO = Calendar.YEAR; public abstract int día(); public abstract int mes(); public abstract int año(); } Ejemplo Interface Java
public class CCuentaAhorro extends CCuenta implements IFecha { .... public void comisiones() {  // Se aplican mensualm.por el mantenimiento de la cuenta if (día() == 1) reintegro(cuotaMantenimiento); } public double intereses() { if (día() != 1) return 0.0; // Acumular los intereses por mes sólo los días 1 de cada mes double intProducidos = 0.0; intProducidos= estado() * obtenerTipoDeInterés()/12; ingreso(intProducidos); // Devolver el interés mensual por si fuera necesario return interesesProducidos; }
// Implementación de los métodos de la interfaz //IFecha public int dia() { GregorianCalendar fechaActual = new GregorianCalendar(); return fechaActual.get(DIA_DEL_MES); } public int mes() { return 0;} // no se necesita public int año() { return 0;} // no se necesita }  Ejemplo Interface Java
[object Object],[object Object],[object Object],Ejemplo Interface Java
Jerarquía de Clases Clase Object Clase CCuenta Clase CcuentaCorriente Clase CcuentaCorrienteConIn Interfaz IFecha Clase CCuentaAhorro
Clase abstracta vs interfaz ¿ Es equivalente una interfaz a una clase abstracta? Ejemplo: la interfaz IFecha  ¿se podría definir como una clase abstracta? No, pues CCuentaAhorro y CCuentaCorriente ya tienen una superclase.  Mas aún, la idea es que la interacción con GregorianCalendar no requiere establecer una relación de clases. Sólo se utiliza la interfaz para implementar uno o dos métodos específicos. Una interfaz es sólo un protocolo que implementa una clase cuando necesita usarlo.
¿Para qué se usa una interfaz? 1º Para captar similitudes entre clases no relacionadas, sin forzar una relación artificial. 2º Para declarar métodos que una o mas clases deben implementar en determinadas situaciones. 3º Publicar la interfaz de programación de una clase, sin descubrir como esta implementada.

Contenu connexe

Tendances

Clases abstractas e interfaces
Clases abstractas e interfacesClases abstractas e interfaces
Clases abstractas e interfacesEduardo Lapo
 
3 Bases De La OrientacióN A Objetos
3  Bases De La OrientacióN A Objetos3  Bases De La OrientacióN A Objetos
3 Bases De La OrientacióN A ObjetosHectorMamani
 
Programación 3: Clases y objetos en Java
Programación 3: Clases y objetos en JavaProgramación 3: Clases y objetos en Java
Programación 3: Clases y objetos en JavaAngel Vázquez Patiño
 
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 6 de 7(Colecciones y Genericos)
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 6 de 7(Colecciones y Genericos)OCP, JSE 6 Programmer (1Z0-851) - Guia practica 6 de 7(Colecciones y Genericos)
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 6 de 7(Colecciones y Genericos)Oscar V
 
Guia de estudio OCP Java SE 7 Programmer
Guia de estudio OCP Java SE 7 ProgrammerGuia de estudio OCP Java SE 7 Programmer
Guia de estudio OCP Java SE 7 ProgrammerOscar V
 
Diseño de la logica
Diseño de la logicaDiseño de la logica
Diseño de la logicaanych27
 
OCP JSE 6 Programmer (1Z0-851) - Guia practica 1 de 7(Declaraciones)
OCP JSE 6 Programmer (1Z0-851) - Guia practica 1 de 7(Declaraciones)OCP JSE 6 Programmer (1Z0-851) - Guia practica 1 de 7(Declaraciones)
OCP JSE 6 Programmer (1Z0-851) - Guia practica 1 de 7(Declaraciones)Oscar V
 
11 Curso de POO en java - métodos constructores y toString()
11 Curso de POO en java - métodos constructores y toString()11 Curso de POO en java - métodos constructores y toString()
11 Curso de POO en java - métodos constructores y toString()Clara Patricia Avella Ibañez
 
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)Videoconferencias UTPL
 

Tendances (20)

MéTodos En Java
MéTodos En JavaMéTodos En Java
MéTodos En Java
 
Datos Previos
Datos PreviosDatos Previos
Datos Previos
 
Clases abstractas e interfaces
Clases abstractas e interfacesClases abstractas e interfaces
Clases abstractas e interfaces
 
Datos Previos
Datos PreviosDatos Previos
Datos Previos
 
3 Bases De La OrientacióN A Objetos
3  Bases De La OrientacióN A Objetos3  Bases De La OrientacióN A Objetos
3 Bases De La OrientacióN A Objetos
 
Programación 3: Clases y objetos en Java
Programación 3: Clases y objetos en JavaProgramación 3: Clases y objetos en Java
Programación 3: Clases y objetos en Java
 
Estructuras y clases
Estructuras y clasesEstructuras y clases
Estructuras y clases
 
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 6 de 7(Colecciones y Genericos)
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 6 de 7(Colecciones y Genericos)OCP, JSE 6 Programmer (1Z0-851) - Guia practica 6 de 7(Colecciones y Genericos)
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 6 de 7(Colecciones y Genericos)
 
Guia de estudio OCP Java SE 7 Programmer
Guia de estudio OCP Java SE 7 ProgrammerGuia de estudio OCP Java SE 7 Programmer
Guia de estudio OCP Java SE 7 Programmer
 
JAVA ORIENTADO A OBJETOS - ALCANCE DE CLASE
JAVA ORIENTADO A OBJETOS - ALCANCE DE CLASEJAVA ORIENTADO A OBJETOS - ALCANCE DE CLASE
JAVA ORIENTADO A OBJETOS - ALCANCE DE CLASE
 
MéTodos Java
MéTodos JavaMéTodos Java
MéTodos Java
 
Programación 1: modularización
Programación 1: modularizaciónProgramación 1: modularización
Programación 1: modularización
 
Intro
IntroIntro
Intro
 
Programación Orientada a Objetos para Python
Programación Orientada a Objetos para PythonProgramación Orientada a Objetos para Python
Programación Orientada a Objetos para Python
 
Diseño de la logica
Diseño de la logicaDiseño de la logica
Diseño de la logica
 
4 manejo de_metodos
4 manejo de_metodos4 manejo de_metodos
4 manejo de_metodos
 
OCP JSE 6 Programmer (1Z0-851) - Guia practica 1 de 7(Declaraciones)
OCP JSE 6 Programmer (1Z0-851) - Guia practica 1 de 7(Declaraciones)OCP JSE 6 Programmer (1Z0-851) - Guia practica 1 de 7(Declaraciones)
OCP JSE 6 Programmer (1Z0-851) - Guia practica 1 de 7(Declaraciones)
 
5 metodos y parametros
5 metodos y parametros5 metodos y parametros
5 metodos y parametros
 
11 Curso de POO en java - métodos constructores y toString()
11 Curso de POO en java - métodos constructores y toString()11 Curso de POO en java - métodos constructores y toString()
11 Curso de POO en java - métodos constructores y toString()
 
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
 

Similaire à ABSTRACT CLASES HERENCIA INTERFACES

Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02Kositha Jimhiz G
 
Net1 oop vbnet
Net1 oop vbnetNet1 oop vbnet
Net1 oop vbnetjhordy2000
 
Clases abstractas e interfaces en java
Clases abstractas e interfaces en java Clases abstractas e interfaces en java
Clases abstractas e interfaces en java Nathy_A
 
Programación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismoProgramación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismoAngel Vázquez Patiño
 
Clases Abstractas Pc
Clases Abstractas PcClases Abstractas Pc
Clases Abstractas Pcguest28ee92
 
Sesion 07 nivel_acceso_miembros_clases
Sesion 07 nivel_acceso_miembros_clasesSesion 07 nivel_acceso_miembros_clases
Sesion 07 nivel_acceso_miembros_clasesecodereck
 
Presentacion Java
Presentacion JavaPresentacion Java
Presentacion Javamaeusogo
 
JAVA_BASICO_modo_consola_introduccion.pptx
JAVA_BASICO_modo_consola_introduccion.pptxJAVA_BASICO_modo_consola_introduccion.pptx
JAVA_BASICO_modo_consola_introduccion.pptxFamiliaAyluardo
 
Tema 4 clases_y_objetos
Tema 4 clases_y_objetosTema 4 clases_y_objetos
Tema 4 clases_y_objetosBelenMonse
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetosjent46
 

Similaire à ABSTRACT CLASES HERENCIA INTERFACES (20)

Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02
Clasesabstractaseinterfacesalexandraperez 121220190613-phpapp02
 
Clases abs e interfaces
Clases abs e interfacesClases abs e interfaces
Clases abs e interfaces
 
03 java poo_parte_2
03 java poo_parte_203 java poo_parte_2
03 java poo_parte_2
 
Net1 oop vbnet
Net1 oop vbnetNet1 oop vbnet
Net1 oop vbnet
 
Clases abstractas e interfaces en java
Clases abstractas e interfaces en java Clases abstractas e interfaces en java
Clases abstractas e interfaces en java
 
Programación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismoProgramación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismo
 
Tema2
Tema2Tema2
Tema2
 
Laboratorio clase abstract
Laboratorio clase abstractLaboratorio clase abstract
Laboratorio clase abstract
 
17533924.ppt
17533924.ppt17533924.ppt
17533924.ppt
 
Clases Abstractas Pc
Clases Abstractas PcClases Abstractas Pc
Clases Abstractas Pc
 
Clase viii
Clase viiiClase viii
Clase viii
 
Sesion 07 nivel_acceso_miembros_clases
Sesion 07 nivel_acceso_miembros_clasesSesion 07 nivel_acceso_miembros_clases
Sesion 07 nivel_acceso_miembros_clases
 
interfaces.pdf
interfaces.pdfinterfaces.pdf
interfaces.pdf
 
MéTodos
MéTodosMéTodos
MéTodos
 
MéTodos
MéTodosMéTodos
MéTodos
 
Presentacion Java
Presentacion JavaPresentacion Java
Presentacion Java
 
JAVA_BASICO_modo_consola_introduccion.pptx
JAVA_BASICO_modo_consola_introduccion.pptxJAVA_BASICO_modo_consola_introduccion.pptx
JAVA_BASICO_modo_consola_introduccion.pptx
 
Tema 4 clases_y_objetos
Tema 4 clases_y_objetosTema 4 clases_y_objetos
Tema 4 clases_y_objetos
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetos
 
MéTodos
MéTodosMéTodos
MéTodos
 

Dernier

Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 

Dernier (13)

Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 

ABSTRACT CLASES HERENCIA INTERFACES

  • 1.
  • 2.
  • 3.
  • 4.
  • 6. Clase Figura abstract class Figura { private String _nombre ; abstract public double area (); abstract public void dibujar (); public Figura (String nombreFigura) { _nombre = nombreFigura; } public boolean menorQue (Figura f) { return ( this.area() < f.area() ); } public String toString () { return ( _nombre + &quot; , &quot; + area() ); } } No es posible crear Objetos de esta clase Método sin implementación
  • 7. Clase Circulo class Circulo extends Figura { private double _radio ; private static final double PI = 3.1415926535879; public Circulo (double r) { super (&quot;Circulo&quot;); _radio = r; } public Circulo () { this (10.0); } public double area () { return ( PI * _radio * _radio ); } public void dibujar () { System.out.println (&quot;Soy un Circulo de radio: &quot; + _radio); } } Los métodos abstractos han sido implementados: Es posible crear objetos Circulo Construye la parte heredada de Figura , NO un objeto específico
  • 8. Clase Rectángulo class Rectangulo extends Figura { private double _base ; private double _altura ; public Rectangulo (double ancho, double alto) { super (&quot;Rectangulo&quot;); _base = ancho; _altura = alto; } public Rectangulo () { this (10.0, 10.0); } public double area () { return ( _base * _altura ); } public void dibujar () { System.out.println (&quot;Soy un Rectangulo de: &quot; + _base + &quot;*&quot; + _altura); } } Los métodos abstractos han sido implementados: Es posible crear objetos Rectangulo Construye la parte heredada de Figura , NO un objeto específico
  • 9. Clase Cuadrado class Cuadrado extends Rectangulo { public Cuadrado (double lado) { super (lado, lado); } public Cuadrado () { super (10.0, 10.0); } } Deriva de Rectangulo que no tiene métodos abstractos: Es posible crear objetos Cuadrado
  • 10. Ejemplo de utilización de la jerarquía de Figuras class testfiguras { public static void main (String[] args) { Figura[] fig = new Figura[3]; int menor; fig[0] = new Circulo(); fig[1] = new Cuadrado(55); fig[2] = new Rectangulo(20,30); for (int i=0; i<fig.length; i++) { System.out.println (fig[i]); System.out.println (&quot;Area: &quot; + fig[i].area()); System.out.println (&quot;Dibujar:&quot;); fig[i].dibujar(); } if ( fig[0].menorQue (fig[1]) ) menor = 0; else menor = 1; if ( fig[2].menorQue (fig[menor]) ) menor = 2; System.out.println (&quot;La figura menor es:&quot;); System.out.println (fig[menor]); } } Array de 3 Figuras ( no crea objetos ) Se crean 3 Figuras concretas y se almacenan en el array fig[i] aplica los métodos de su clase : Circulo , Cuadrado , Rectangulo
  • 11.
  • 12.
  • 13.
  • 16.
  • 18.
  • 19.
  • 20. Interfaces de JAVA - Una interfaz puede derivarse de varias interfaces. En este caso hereda todas las constantes y métodos de sus superinterfaces, excepto aquellos que ella redefina. }
  • 21. import java.util.*; // Interfaz IFecha: métodos y constantes para obtener el día, //mes y año public interface IFecha { public final static int DIA_DEL_MES = Calendar.DAY_OF_MONTH; public final static int MES_DEL_AÑO = Calendar.MONTH; public final static int AÑO = Calendar.YEAR; public abstract int día(); public abstract int mes(); public abstract int año(); } Ejemplo Interface Java
  • 22. public class CCuentaAhorro extends CCuenta implements IFecha { .... public void comisiones() { // Se aplican mensualm.por el mantenimiento de la cuenta if (día() == 1) reintegro(cuotaMantenimiento); } public double intereses() { if (día() != 1) return 0.0; // Acumular los intereses por mes sólo los días 1 de cada mes double intProducidos = 0.0; intProducidos= estado() * obtenerTipoDeInterés()/12; ingreso(intProducidos); // Devolver el interés mensual por si fuera necesario return interesesProducidos; }
  • 23. // Implementación de los métodos de la interfaz //IFecha public int dia() { GregorianCalendar fechaActual = new GregorianCalendar(); return fechaActual.get(DIA_DEL_MES); } public int mes() { return 0;} // no se necesita public int año() { return 0;} // no se necesita } Ejemplo Interface Java
  • 24.
  • 25. Jerarquía de Clases Clase Object Clase CCuenta Clase CcuentaCorriente Clase CcuentaCorrienteConIn Interfaz IFecha Clase CCuentaAhorro
  • 26. Clase abstracta vs interfaz ¿ Es equivalente una interfaz a una clase abstracta? Ejemplo: la interfaz IFecha ¿se podría definir como una clase abstracta? No, pues CCuentaAhorro y CCuentaCorriente ya tienen una superclase. Mas aún, la idea es que la interacción con GregorianCalendar no requiere establecer una relación de clases. Sólo se utiliza la interfaz para implementar uno o dos métodos específicos. Una interfaz es sólo un protocolo que implementa una clase cuando necesita usarlo.
  • 27. ¿Para qué se usa una interfaz? 1º Para captar similitudes entre clases no relacionadas, sin forzar una relación artificial. 2º Para declarar métodos que una o mas clases deben implementar en determinadas situaciones. 3º Publicar la interfaz de programación de una clase, sin descubrir como esta implementada.