Interfaces
René Guamán-Quinche
Facultad de la Energía, las Industrias y los Recursos Naturales No Renovables
Carrera de Ingeniería en Sistemas/Computación
Junio, 2022
Loja, Ecuador
2
1. Interfaces
2. Método abstracto
3. Representación en UML
4. Atributos de una interfaz
5. Ejemplo
Agenda
3
Interfaces

Son plantillas que permiten definir métodos abstractos

Es una colección de métodos sin implementar

Establecen el comportamiento que tendrán las clases que las implemente

Resuelven el problema de herencia simple porque una clase puede implementar
más de una interfaz

Establecen el término “able” que significa

modificable, configurable

Las clases que implementa a las interfaces pueden codificar el cuerpo de los
métodos abstractos de acuerdo a sus requerimientos.

Se pueden declarar constantes pero siempre que no sean variables de instancia
4
Interfaces
La estructura es similar al de una clase, pero para diferenciarlas se utiliza la palabra
reservada interface, su sintaxis es:
public interface NombreInterfaz{
// métodos abstractos
}
Todas las interfaces son abstractas por tal razón se deben definir o declarar métodos
abstractos
5
¿Qué es un método abstracto?

Es un método declarado pero no implementado

Es un método del que solo se define su cabecera y se omite su cuerpo, su sintaxis es:
modificador tipo_dato nombreMétodo(parámetros);

Al agregar el separador de instrucciones “;” al final de la cabecera del método, se
establece que carece de implementación y de forma implícita es un método abstracto

En las interfaces NO se puede declarar métodos con cuerpo o implementados
6
Representación en UML
En UML las interfaces se definen a través del estereotipo <<interfaz>>
public interface InstrumentoMusical {
public void tocar();
public void afinar();
public String tipoInstrumento();
}
7
Representación en UML

El siguiente paso es implementar la interfaz mediante las clases implementadora

En UML la flecha entre cortada especifica que una clase implementará los métodos
abstractos de una interfaz

Donde nace la flecha se ubica la clase implementadora y en la cabecera la interfaz, en la
siguiente figura se representa la relación de implementación:
8
Representación en UML

Ahora representaremos en UML la relación de implementación entre la interfaz
“InstrumentoMusical” y la clase “InstrumentoViento”.
public interface InstrumentoMusical {
public void tocar();
public void afinar();
public String tipoInstrumento();
}
public class InstrumentoViento implements InstrumentoMusical {
public void tocar(){}
public void afinar(){}
public String tipoInstrumento(){}
}
9
Representación en UML

En Java, la palabra reservada implements establece que una clase implementará los
métodos abstractos de una interfaz

La implementación de los métodos abstractos de la interfaz InstrumentoMusical
es:
public class InstrumentoViento implements InstrumentoMusical {
@Override
public void tocar() {
System.out.println("entonar");
}
@Override
public void afinar() {
System.out.println("Afinar");
}
@Override
public String tipoInstrumento() {
return "";
}
}
10
Representación en UML

En el ejemplo, la implementación se establece en la cabecera de la clase agregando la
palabra reservada implements y el nombre de la interfaz

La clase InstrumentoViento está en la obligación de implementar los métodos
abstractos de la interfaz, en otras palabras, sobre escribirlos y codificar su cuerpo

A cada método implementado se suele utilizar la anotación @Override sobre la
cabecera del método, esto permite aclarar ha sido sobre escrito

En la interfaz NO es necesario utilizar la palabra reservada abstract en los métodos
porque de manera implícita los métodos son declarados como abstractos
11
Atributos en una interfaz

Las interfaces puede definir constantes pero deben ser públicas o abstractas

No se pueden declarar variables de instancia

Todas las constantes incluidas en una interfaz se declaran implícitamente como public,
static y final (también se pueden omitir) y es necesario inicializarlas en la misma
sentencia de declaración
public interface Constantes {
double valorMaximo = 10000000.0;
double valorMinimo = -0.01;
int MAXIMUM_DEPTH = 100;
final static boolean UNDERWATER = true;
public static final String TYPE = "Submersible";
}
12
Heredar una interfaz
1.Hereda todos los métodos abstractos como sus propios métodos abstractos
2.La primera clase concreta que implementa una interfaz, o extiende una clase abstracta
que implementa una interfaz, debe proporcionar una implementación para todas los
métodos abstractos heredadas
●
Se puede extenderse usando la palabra clave extends
●
La nueva interfaz secundaria hereda todos los métodos abstractos de la interfaz
principal
●
A diferencia de una clase abstracta, una interfaz puede extender varias interfaces
13
Heredar una interfaz
public interface HasTail {
public int getTailLength();
}
public interface HasWhiskers {
public int getNumberOfWhiskers();
}
public interface Seal extends HasTail, HasWhiskers {
}
14
Método predeterminado
●
Es un método con la palabra reservada default, que proporciona un cuerpo de método
●
Un método predeterminado define un método abstracto con una implementación predeterminada
●
Las clases tienen la opción de anular el método predeterminado si lo necesitan, pero no están obligadas a
hacerlo
●
Si la clase no anula el método, se utilizará la implementación predeterminada
public interface IsWarmBlooded {
public boolean hasScales();
public default double getTemperature() {
return 10.0;
}
}
public class Body implements ISWarmBlooded {
public boolean hasScales(){
return false;
}
}
15
Método Estático
●
Estos métodos se definen explícitamente con la palabra reservada static
●
Funcionan de manera casi idéntica a los métodos estáticos definidos en las clases
●
Un método estático definido en una interfaz no se hereda en ninguna clase que implemente la
interfaz
public interface Hop {
public static int getJumpHeight() {
return 8;
}
}
public class ClasePrueba {
public void prueba(){
Hop.getJumpHeight();
}
}
16
Ejemplo

Analicemos el siguiente ejercicio:

Existen dos interfaces, cada una ha definido métodos
abstractos, la clase implementadora
InstrumentoViento implementar las dos interfaces

Java permite la implementación de varias interfaces y las
separa a través de “,”.
Su sintaxis es:
public class NombreClase implements InterfazUna, InterfazDos, ……{
}
17
Ejemplo

La codificación de la interfaz AcordesMusicales es:
public interface AcordesMusicales {
public void obtenerSonido();
public void obtenerAcorde();
}
18
Ejemplo

La codificación de la clase implementadora InstrumentoViento es:
public class InstrumentoViento implements InstrumentoMusical, AcordesMusicales {
@Override
public void tocar() {
System.out.println("entonar");
}
@Override
public void afinar() {
System.out.println("Afinar");
}
@Override
public String tipoInstrumento() {
return "";
}
@Override
public void obtenerSonido() {
System.out.println("sonido devuelto");
}
@Override
public void obtenerAcorde() {
System.out.println("acorde devuelto");
}
19
Ejemplo

La clase InstrumentoViento al implementar las interfaces
InstrumentoMusical y AcordesMusicales está en la obligación de
implementar todos los métodos abstractos declarados en las interfaces y para
identificarlos se utiliza la anotación @Override
20
Cŕeditos
• Transparencias basadas por:
• Christopher Exposito Izquierdo & AiRam Exposito Marquez & otros
• Libro: Martina Seidl · Marion Scholz, Christian Huemer · Gerti
Kappel, UML @ Classroom, An Introduction to Object-Oriented
Modeling
Networking académico:
Correo electrónico: rguaman@unl.edu.ec
Twitter: @rene5254
SlideShare: https://es.slideshare.net/rene5254
21
Gracias

interfaces.pdf

  • 1.
    Interfaces René Guamán-Quinche Facultad dela Energía, las Industrias y los Recursos Naturales No Renovables Carrera de Ingeniería en Sistemas/Computación Junio, 2022 Loja, Ecuador
  • 2.
    2 1. Interfaces 2. Métodoabstracto 3. Representación en UML 4. Atributos de una interfaz 5. Ejemplo Agenda
  • 3.
    3 Interfaces  Son plantillas quepermiten definir métodos abstractos  Es una colección de métodos sin implementar  Establecen el comportamiento que tendrán las clases que las implemente  Resuelven el problema de herencia simple porque una clase puede implementar más de una interfaz  Establecen el término “able” que significa  modificable, configurable  Las clases que implementa a las interfaces pueden codificar el cuerpo de los métodos abstractos de acuerdo a sus requerimientos.  Se pueden declarar constantes pero siempre que no sean variables de instancia
  • 4.
    4 Interfaces La estructura essimilar al de una clase, pero para diferenciarlas se utiliza la palabra reservada interface, su sintaxis es: public interface NombreInterfaz{ // métodos abstractos } Todas las interfaces son abstractas por tal razón se deben definir o declarar métodos abstractos
  • 5.
    5 ¿Qué es unmétodo abstracto?  Es un método declarado pero no implementado  Es un método del que solo se define su cabecera y se omite su cuerpo, su sintaxis es: modificador tipo_dato nombreMétodo(parámetros);  Al agregar el separador de instrucciones “;” al final de la cabecera del método, se establece que carece de implementación y de forma implícita es un método abstracto  En las interfaces NO se puede declarar métodos con cuerpo o implementados
  • 6.
    6 Representación en UML EnUML las interfaces se definen a través del estereotipo <<interfaz>> public interface InstrumentoMusical { public void tocar(); public void afinar(); public String tipoInstrumento(); }
  • 7.
    7 Representación en UML  Elsiguiente paso es implementar la interfaz mediante las clases implementadora  En UML la flecha entre cortada especifica que una clase implementará los métodos abstractos de una interfaz  Donde nace la flecha se ubica la clase implementadora y en la cabecera la interfaz, en la siguiente figura se representa la relación de implementación:
  • 8.
    8 Representación en UML  Ahorarepresentaremos en UML la relación de implementación entre la interfaz “InstrumentoMusical” y la clase “InstrumentoViento”. public interface InstrumentoMusical { public void tocar(); public void afinar(); public String tipoInstrumento(); } public class InstrumentoViento implements InstrumentoMusical { public void tocar(){} public void afinar(){} public String tipoInstrumento(){} }
  • 9.
    9 Representación en UML  EnJava, la palabra reservada implements establece que una clase implementará los métodos abstractos de una interfaz  La implementación de los métodos abstractos de la interfaz InstrumentoMusical es: public class InstrumentoViento implements InstrumentoMusical { @Override public void tocar() { System.out.println("entonar"); } @Override public void afinar() { System.out.println("Afinar"); } @Override public String tipoInstrumento() { return ""; } }
  • 10.
    10 Representación en UML  Enel ejemplo, la implementación se establece en la cabecera de la clase agregando la palabra reservada implements y el nombre de la interfaz  La clase InstrumentoViento está en la obligación de implementar los métodos abstractos de la interfaz, en otras palabras, sobre escribirlos y codificar su cuerpo  A cada método implementado se suele utilizar la anotación @Override sobre la cabecera del método, esto permite aclarar ha sido sobre escrito  En la interfaz NO es necesario utilizar la palabra reservada abstract en los métodos porque de manera implícita los métodos son declarados como abstractos
  • 11.
    11 Atributos en unainterfaz  Las interfaces puede definir constantes pero deben ser públicas o abstractas  No se pueden declarar variables de instancia  Todas las constantes incluidas en una interfaz se declaran implícitamente como public, static y final (también se pueden omitir) y es necesario inicializarlas en la misma sentencia de declaración public interface Constantes { double valorMaximo = 10000000.0; double valorMinimo = -0.01; int MAXIMUM_DEPTH = 100; final static boolean UNDERWATER = true; public static final String TYPE = "Submersible"; }
  • 12.
    12 Heredar una interfaz 1.Heredatodos los métodos abstractos como sus propios métodos abstractos 2.La primera clase concreta que implementa una interfaz, o extiende una clase abstracta que implementa una interfaz, debe proporcionar una implementación para todas los métodos abstractos heredadas ● Se puede extenderse usando la palabra clave extends ● La nueva interfaz secundaria hereda todos los métodos abstractos de la interfaz principal ● A diferencia de una clase abstracta, una interfaz puede extender varias interfaces
  • 13.
    13 Heredar una interfaz publicinterface HasTail { public int getTailLength(); } public interface HasWhiskers { public int getNumberOfWhiskers(); } public interface Seal extends HasTail, HasWhiskers { }
  • 14.
    14 Método predeterminado ● Es unmétodo con la palabra reservada default, que proporciona un cuerpo de método ● Un método predeterminado define un método abstracto con una implementación predeterminada ● Las clases tienen la opción de anular el método predeterminado si lo necesitan, pero no están obligadas a hacerlo ● Si la clase no anula el método, se utilizará la implementación predeterminada public interface IsWarmBlooded { public boolean hasScales(); public default double getTemperature() { return 10.0; } } public class Body implements ISWarmBlooded { public boolean hasScales(){ return false; } }
  • 15.
    15 Método Estático ● Estos métodosse definen explícitamente con la palabra reservada static ● Funcionan de manera casi idéntica a los métodos estáticos definidos en las clases ● Un método estático definido en una interfaz no se hereda en ninguna clase que implemente la interfaz public interface Hop { public static int getJumpHeight() { return 8; } } public class ClasePrueba { public void prueba(){ Hop.getJumpHeight(); } }
  • 16.
    16 Ejemplo  Analicemos el siguienteejercicio:  Existen dos interfaces, cada una ha definido métodos abstractos, la clase implementadora InstrumentoViento implementar las dos interfaces  Java permite la implementación de varias interfaces y las separa a través de “,”. Su sintaxis es: public class NombreClase implements InterfazUna, InterfazDos, ……{ }
  • 17.
    17 Ejemplo  La codificación dela interfaz AcordesMusicales es: public interface AcordesMusicales { public void obtenerSonido(); public void obtenerAcorde(); }
  • 18.
    18 Ejemplo  La codificación dela clase implementadora InstrumentoViento es: public class InstrumentoViento implements InstrumentoMusical, AcordesMusicales { @Override public void tocar() { System.out.println("entonar"); } @Override public void afinar() { System.out.println("Afinar"); } @Override public String tipoInstrumento() { return ""; } @Override public void obtenerSonido() { System.out.println("sonido devuelto"); } @Override public void obtenerAcorde() { System.out.println("acorde devuelto"); }
  • 19.
    19 Ejemplo  La clase InstrumentoVientoal implementar las interfaces InstrumentoMusical y AcordesMusicales está en la obligación de implementar todos los métodos abstractos declarados en las interfaces y para identificarlos se utiliza la anotación @Override
  • 20.
    20 Cŕeditos • Transparencias basadaspor: • Christopher Exposito Izquierdo & AiRam Exposito Marquez & otros • Libro: Martina Seidl · Marion Scholz, Christian Huemer · Gerti Kappel, UML @ Classroom, An Introduction to Object-Oriented Modeling
  • 21.
    Networking académico: Correo electrónico:rguaman@unl.edu.ec Twitter: @rene5254 SlideShare: https://es.slideshare.net/rene5254 21 Gracias