SlideShare a Scribd company logo
1 of 6
Download to read offline
INTERFACES
Se ha preguntado ¿qué haría si varias clases que no están relacionadas por medio de superclases, necesitan
cumplir con el mismo diseño? Las interfaces definen y estandarizan las formas en que pueden interactuar los
objetos y clases entre sí.
Los objetos de software también se comunican a través de interfaces. Una interfaz de Java describe un
conjunto de métodos (y constantes) que pueden llamarse sobre un objeto; por ejemplo, para indicar al objeto
que realice cierta tarea, o que devuelva cierta pieza de información.
La declaración de una interfaz empieza con la palabra clave interface y sólo puede contener constantes y
métodos abstract. A diferencia de las clases, todos los miembros de la interfaz deben ser public, y las
interfaces no pueden especificar ningún detalle de implementación, como las declaraciones de métodos
concretos y variables de instancia. Todos los métodos que se declaran en una interfaz son public y abstract de
manera implícita, y todos los campos son implícitamente public, static y final.
Es un estilo apropiado declarar los métodos de una interfaz sin las palabras clave public y abstract, ya
que son redundantes en las declaraciones de los métodos de la interfaz. De manera similar, las constantes
deben declararse sin las palabras clave public, static y final, ya que también son redundantes.
Para utilizar una interfaz, una clase debe especificar que implementa (implements) a esa interfaz y debe
declarar cada uno de sus métodos con la firma especificada en la declaración de la interfaz. Para especificar
que una clase implementa a una interfaz, agregamos la palabra clave implements y el nombre de la interfaz al
final de la primera línea de la declaración de nuestra clase. Una clase que no implementa a todos los métodos
de la interfaz es una clase abstracta, y debe declararse como abstract. Implementar una interfaz es como
firmar un contrato con el compilador que diga, “Declararé todos los métodos especificados por la interfaz, o
declararé mi clase como abstract”.
Por lo general, una interfaz se utiliza cuando clases dispares (es decir, no relacionadas) necesitan
compartir métodos y constantes comunes. Esto permite que los objetos de clases no relacionadas se
procesen en forma polimórfica; los objetos de clases que implementan la misma interfaz pueden responder a
las mismas llamadas a métodos. Usted puede crear una interfaz que describa la funcionalidad deseada y
después implementar esta interfaz en cualquier clase que requiera esa funcionalidad.
A menudo, una interfaz se utiliza en vez de una clase abstract cuando no hay una implementación
predeterminada que heredar, esto es, no hay campos ni implementaciones de métodos predeterminados.
UML expresa la relación entre una clase y una interfaz a través de una relación conocida como realización. Se
dice que una clase “realiza”, o implementa, los métodos de una interfaz. En la siguiente figura se muestra un
ejemplo de esta relación.
Lenguaje de
programación
Técnica profesional en desarrollo de software
Profesor: Andrés Herrera R. Mail: jherrera@eam.edu.co
Laboratorio
Polimorfismo
Nombre:_________________________________________________________________________
2
Figura 1. Ejemplo de representación gráfica de la interfaz.
En la Figura 1 se puede interpretar que la configuración de la impresora usa un diseño que ofrece la
impresora.
Todos los objetos de una clase que implementan varias interfaces tienen la relación es un con cada tipo de
interfaz implementada. Al utilizar una referencia a la interfaz, podemos invocar de manera polimórfica a
cualquier método declarado en la interfaz y en la clase Object; una variable de un tipo de interfaz debe
hacer referencia a un objeto para llamar a los métodos, y todos los objetos contienen los métodos de la
clase Object.
Es importante aclara que, a diferencia de la herencia, un objeto en Java si puede implementar varias
interfaces al tiempo. A continuación, se muestra un ejemplo de cómo sería la estructura del código:
public class NombreClase extends NombreSuperClase implements
Primeralnterfaz,Segundalnterfaz, ...
Una clase puede implementar todas las interfaces que requiera,
simulando un poco la herencia múltiple, tal como se muestra en el siguiente gráfico.
Figura 2. Simulación de la herencia múltiple en Java.
Patrón: interfaces marcadoras (etiquetado de interfaces)
Una interfaz marcadora es una interfaz que no contiene ningún método. A priori esto puede parecer
extraño y algunos incluso lo consideran un antipatrón, ya que un interfaz por definición es un contrato, y un
contrato que no dice nada es un contrato un poco raro. Al implementar la interfaz no necesitamos implementar
ningún método, simplemente estamos marcando (de ahí el nombre) la clase como una implementación del
interfaz.
La ventaja de esta solución es que nos permite aprovechar la comprobación de tipos en tiempo de
compilación para asegurarnos de que ciertas operaciones sólo se realizan sobre las clases adecuadas. Un
ejemplo de este patrón es la interfaz Serializable.
3
Interfaces más comunes de Java
INTERFAZ DESCRIPCIÓN
Comparable La interfaz Comparable se utiliza para permitir que los objetos de una clase
que implementa a la interfaz se comparen entre sí. La interfaz Comparable
se utiliza comúnmente para ordenar objetos en una colección, como un
arreglo.
Serializable Una interfaz que se utiliza para identificar clases cuyos objetos pueden
escribirse en (serializarse), o leerse desde (deserializarse) algún tipo de
almacenamiento (archivo en disco, campo de base de datos) o transmitirse
a través de una red.
Runnable La implementa cualquier clase para la cual sus objetos deban poder
ejecutarse en paralelo, usando una técnica llamada multihilos.
Interfaces de
escucha de eventos
de la GUI
Cada interfaz de escucha de eventos especifica uno o más métodos que
deben implementarse para responder a las interacciones de los usuarios.
SwingConstants Contiene un conjunto de constantes que se utilizan en la programación de
GUI para posicionar los elementos de la GUI en la pantalla.
PRACTICA
1- Cree un proyecto que con nombre <<Prueba-Comparable>>.
2- Cree un paquete de nombre <<com.eam.lenguaje>>. Dentro del anterior paquete cree los paquetes <<vo>> y
<<business>>.
3- Agregue en <<vo>> la clase Estudiante y añada como atributo de clase id, nombre, edad y promedio de notas. Programe el
método constructor con todos los parámetros, además todos los métodos get y set.
4- Cree en el paquete <<business>> la clase LenguajeDeProgramacion y añada como atributo de clase una ArrayList de
Estudiantes. Programe el método constructor de la clase.
5- Inicialice en el método constructor siete estudiantes diferentes y agréguelos en el ArrayList.
6- Programe un método que muestre por consola los nombre y las notas de cada estudiante.
7- Programe un método que ordene el ArrayList de estudiantes de menor a mayor según su nombre.
8- Implemente en la clase Estudiante la interfaz Comparable y su método obligatorio. Modifique el método compareTo por lo
siguiente:
@Override
public int compareTo(Estudiante o) {
if( o.getNombre().compareTo(nombre) > 0 )
return -1;
else
return 1;
}
Agregue la siguiente línea de código, ¿en que consiste su funcionamiento?
4
9- Programé la clase Aplicación y cree en ella el método main. Llame y compruebe el funcionamiento de los métodos
programados.
El uso de interfaces permite acelerar el desarrollo de software tal y como se puedo notar con Comparable. Ahora es
momento de identificar como se debe implementar una interfaz.
------------------------------------------------------------------------------------------------------------
10- Cree un proyecto de nombre <<Empresa>>. Recuerde que todas las clases e interfaces se debe documentar.
11- Cree un paquete de nombre <<com.eam.isyc.lenguaje.empresa>>. Dentro cree los paquetes <<vo>>, <<interfaz>>,
<<business>>.
12- Cree una clase abstracta de nombre <<Persona>>. Agregue el atributo de clase nombre, el método constructor (usando el
campo nombre) y los respectivos métodos getters y setters.
13- Programe la interfaz <<ICliente>> en el paquete <<interfaz>> con base a lo especificado la Figura 3 (getEmail es tipo
String).
Figura 3. Representación de la interfaz ICliente.
14- Programe la clase <<Cliente>> en el paquete <<vo>>, herede de <<Persona>> y de <<ICliente>>. Siga el formato de la
clase en la Figura 4. No olvide el método constructor con sus correspondientes parámetros (getEmail() retorna String).
Figura 4. Representación de la clase Cliente.
15- Programe la interfaz <<IEmpleado>> según lo especificado en la Figura 5.
5
Figura 5. Representación de la interfaz IEmpleado.
16- Programe la clase <<Empleado>> en el paquete <<vo>>, herede de <<Persona>> y de <<IEmpleado>>. Siga el formato de
la clase en la Figura 6. No olvide el método constructor con sus correspondientes parámetros.
Figura 6. Representación de la clase Empleado.
17- Programe la clase <<ClienteEmpleado>> en el paquete <<vo>>, herede de <<Cliente>> y de <<IEmpleado>>. No olvide el
método constructor con sus correspondientes parámetros.
18- Cree la clase <<Empresa>> en el paquete <<business>>. Agregue como atributo de clase una matriz de personas.
Inicialice la matriz de tamaño 20X20 en el método constructor.
19- Programe un método que diga el número de empleados que están en la matriz.
20- Retorne el nombre del <<ClienteEmpleado>> o <<Cliente>> que tiene el email más largo y está por debajo de la diagonal
secundaría.
21- Retorne el nombre de la interfaz más usada en la matriz.
22- Programe el método agregar persona. Las personas deben ser agregadas en forma de serpiente, comenzando de arriba
hacia abajo.
23- Programe un método que elimine todos los elementos en la matriz que tiene la misma instancia que un elemento agregado
como parámetro (tenga en cuenta solo las clases).
24- Programe la clase <<Hijo>>. Los hijos tienen: nombre (String), edad (int) y gastos mensuales (double).
25- Agregue un arreglo (tamaño 10) de hijos en <<Persona>>. Programé el método agregarHijo. Los hijos de los de los
empleados se agregan desde la primera posición en adelante. Los hijos de los clientes se agregan desde la última posición
hacia atrás.
6
26- Programe un método que permita agregar un hijo a una persona según un nombre dado como parámetro (el método debe
recibir el nombre de la persona y el hijo). De existir varios nombres iguales, se le debe asignar el hijo a la última persona
que se encuentre.
27- Programe un método que retorne quien tiene más hijos ¿Los clientes o los empleados? No se deben tener en cuenta los
<<ClientesEmpleados>>.
28- Programen un método que le quite todos los hijos a las personas que son instancia especifica de un elemento entrado
como parámetro (pueden entrar un Cliente, un Empleado o un ClienteEmpleado).
29- Programe un método que le quite un hijo a la persona que tiene los hijos con más gastos. Solo debe revisar las posiciones
que están por debajo de la diagonal secundaria y primaria.
30- Programe un método que le cambien el nombre a la persona instancia de <<ClienteEmpleado>> que tiene más hijos (El
nuevo nombre debe ser Diomedes).
31- Programe la excepción propia de nombre <<MasHijosDeLoPosibleException>>. La excepción debe ser lanzada cuando se
desee agregar más de 10 hijos a una persona (este método pude ser programado después de estudiar la guía siete y
ocho).
32- Programe la excepción <<EmailSinFormatoException>>. La excepción debe ser lanzada cuando el email de un cliente no
tenga el formato adecuado (este método pude ser programado después de estudiar la guía siete y ocho).
33- Programe un método que elimine a los hijos más gastadores de todos los descendientes de <<IEmpleado>>.
34- Cree la clase <<Aplicación>> en el paquete general con su respectivo método main y pruebe los métodos programados.
ENTREGABLE
Enviar al correo jherrera@eam.edu.co el proyecto comprimido en zip la Practica realizada en su totalidad.
BIBLIOGRAFÍA
Deitel, P. J. & Deitel, H. M. (2012). Como Programar en java. Novena edición. México: Prentice Hall.

More Related Content

What's hot

What's hot (18)

Clases abstractas e interfaces en java
Clases abstractas e interfaces en javaClases abstractas e interfaces en java
Clases abstractas e interfaces en java
 
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
 
Interfaces en java
Interfaces en javaInterfaces en java
Interfaces en java
 
Programación 1: modularización
Programación 1: modularizaciónProgramación 1: modularización
Programación 1: modularización
 
Tutorial jared
Tutorial jaredTutorial jared
Tutorial jared
 
Programación Orientada a Objetos - herencia y polimorfismo
Programación Orientada a Objetos - herencia y polimorfismoProgramación Orientada a Objetos - herencia y polimorfismo
Programación Orientada a Objetos - herencia y polimorfismo
 
Clase viii
Clase viiiClase viii
Clase viii
 
Mapa conceptual del contenido de la unidad 4
Mapa conceptual del contenido de la unidad 4Mapa conceptual del contenido de la unidad 4
Mapa conceptual del contenido de la unidad 4
 
Modularidad en Jav
Modularidad en JavModularidad en Jav
Modularidad en Jav
 
Elementos caracteristicos de la poo
Elementos caracteristicos de la pooElementos caracteristicos de la poo
Elementos caracteristicos de la poo
 
Trabajo tutorial de visual C++
Trabajo tutorial de visual C++Trabajo tutorial de visual C++
Trabajo tutorial de visual C++
 
Interfaces en Java
Interfaces en JavaInterfaces en Java
Interfaces en Java
 
Clases abstractas e interfaces (AlexandraPerez)
Clases abstractas e interfaces (AlexandraPerez)Clases abstractas e interfaces (AlexandraPerez)
Clases abstractas e interfaces (AlexandraPerez)
 
POO
POOPOO
POO
 
Poo en java herencia
Poo en java   herenciaPoo en java   herencia
Poo en java herencia
 
4 Polimorfismo
4  Polimorfismo4  Polimorfismo
4 Polimorfismo
 
Herencia y Polimorfismo
Herencia y PolimorfismoHerencia y Polimorfismo
Herencia y Polimorfismo
 
Investigacion sobre carga de metodos
Investigacion sobre carga de metodosInvestigacion sobre carga de metodos
Investigacion sobre carga de metodos
 

Similar to Laboratorio interfaces (20)

03. Curso .NET con C# autor Universidad de Alicante.pdf
03. Curso .NET con C# autor Universidad de Alicante.pdf03. Curso .NET con C# autor Universidad de Alicante.pdf
03. Curso .NET con C# autor Universidad de Alicante.pdf
 
Curso netcsharp
Curso netcsharpCurso netcsharp
Curso netcsharp
 
Interfaz en Java y en C#
Interfaz en Java y en C#Interfaz en Java y en C#
Interfaz en Java y en C#
 
Interface-swt-swing.pptx
Interface-swt-swing.pptxInterface-swt-swing.pptx
Interface-swt-swing.pptx
 
2) introduccion al lenguaje java
2) introduccion al lenguaje java2) introduccion al lenguaje java
2) introduccion al lenguaje java
 
INTRODUCCION LENGUAJE JAVA
INTRODUCCION LENGUAJE JAVAINTRODUCCION LENGUAJE JAVA
INTRODUCCION LENGUAJE JAVA
 
2introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate022introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate02
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
 
Introducción
IntroducciónIntroducción
Introducción
 
4 unidad polimorfismo
4 unidad polimorfismo4 unidad polimorfismo
4 unidad polimorfismo
 
01 fundamentos-java
01 fundamentos-java01 fundamentos-java
01 fundamentos-java
 
2 3 3 Interfaces
2 3 3 Interfaces2 3 3 Interfaces
2 3 3 Interfaces
 
Interfaces en java
Interfaces en javaInterfaces en java
Interfaces en java
 
manual de C#
manual de C#manual de C#
manual de C#
 
Manual c# 2
Manual c# 2Manual c# 2
Manual c# 2
 
Manual de c#
Manual de c#Manual de c#
Manual de c#
 
Apendice general 4
Apendice general 4Apendice general 4
Apendice general 4
 
Datos Previos
Datos PreviosDatos Previos
Datos Previos
 
Datos previos
Datos previosDatos previos
Datos previos
 
Datos Previos
Datos PreviosDatos Previos
Datos Previos
 

More from Andres Herrera Rodriguez (17)

Lab archivos
Lab archivosLab archivos
Lab archivos
 
Lab excepciones propias
Lab excepciones propiasLab excepciones propias
Lab excepciones propias
 
unidad 5 excepciones propias
unidad 5 excepciones propiasunidad 5 excepciones propias
unidad 5 excepciones propias
 
Lab excepciones
Lab excepcionesLab excepciones
Lab excepciones
 
Excepciones
ExcepcionesExcepciones
Excepciones
 
3. unidad 4 polimorfismo
3. unidad 4 polimorfismo3. unidad 4 polimorfismo
3. unidad 4 polimorfismo
 
GuiaFTP
GuiaFTPGuiaFTP
GuiaFTP
 
Lab herencia
Lab herenciaLab herencia
Lab herencia
 
Guia mysql
Guia mysqlGuia mysql
Guia mysql
 
Lenguaje de programacion unidad 3 arreglos de objetos
Lenguaje de programacion unidad 3 arreglos de objetosLenguaje de programacion unidad 3 arreglos de objetos
Lenguaje de programacion unidad 3 arreglos de objetos
 
Lenguaje de programacion laboratorio arreglos
Lenguaje de programacion laboratorio arreglosLenguaje de programacion laboratorio arreglos
Lenguaje de programacion laboratorio arreglos
 
Formularios HTML
Formularios HTMLFormularios HTML
Formularios HTML
 
Botones HTML
Botones HTMLBotones HTML
Botones HTML
 
Lenguaje de programacion unidad 2 clases y objetos
Lenguaje de programacion unidad 2 clases y objetosLenguaje de programacion unidad 2 clases y objetos
Lenguaje de programacion unidad 2 clases y objetos
 
Lenguaje de programacion unidad 1 UML
Lenguaje de programacion unidad 1 UMLLenguaje de programacion unidad 1 UML
Lenguaje de programacion unidad 1 UML
 
programación WEB Unidad 1 html
programación WEB Unidad 1 htmlprogramación WEB Unidad 1 html
programación WEB Unidad 1 html
 
Lectura y ejemplos clases y objetos
Lectura y ejemplos clases y objetosLectura y ejemplos clases y objetos
Lectura y ejemplos clases y objetos
 

Recently uploaded

21 MARZO DIA INTERNACIONAL DOS BOSQUES.pdf
21 MARZO DIA INTERNACIONAL DOS BOSQUES.pdf21 MARZO DIA INTERNACIONAL DOS BOSQUES.pdf
21 MARZO DIA INTERNACIONAL DOS BOSQUES.pdfceeabarcia
 
Anna Llenas Serra. El monstruo de colores. Doctor de emociones.pdf
Anna Llenas Serra. El monstruo de colores. Doctor de emociones.pdfAnna Llenas Serra. El monstruo de colores. Doctor de emociones.pdf
Anna Llenas Serra. El monstruo de colores. Doctor de emociones.pdfSaraGabrielaPrezPonc
 
1ro Programación Anual D.P.C.C ACTUALIZADO
1ro Programación Anual D.P.C.C ACTUALIZADO1ro Programación Anual D.P.C.C ACTUALIZADO
1ro Programación Anual D.P.C.C ACTUALIZADODJElvitt
 
Adoración sin fin al Dios Creador por sus bendiciones
Adoración sin fin al Dios Creador por sus bendicionesAdoración sin fin al Dios Creador por sus bendiciones
Adoración sin fin al Dios Creador por sus bendicionesAlejandrino Halire Ccahuana
 
sociales ciencias segundo trimestre tercero
sociales ciencias segundo trimestre tercerosociales ciencias segundo trimestre tercero
sociales ciencias segundo trimestre terceroCEIP TIERRA DE PINARES
 
ficha de aplicacion para estudiantes El agua para niños de primaria
ficha de aplicacion para estudiantes El agua para niños de primariaficha de aplicacion para estudiantes El agua para niños de primaria
ficha de aplicacion para estudiantes El agua para niños de primariamichel carlos Capillo Dominguez
 
TECNOLOGÍA EDUCATIVA, USO DE LAS TIC.pptx
TECNOLOGÍA EDUCATIVA, USO DE LAS TIC.pptxTECNOLOGÍA EDUCATIVA, USO DE LAS TIC.pptx
TECNOLOGÍA EDUCATIVA, USO DE LAS TIC.pptxFranciscoCruz296518
 
5°-CARPETA PEDAGÓGICA 2024-MAESTRAS DE PRIMARIA PERÚ-978387435.doc
5°-CARPETA PEDAGÓGICA 2024-MAESTRAS DE PRIMARIA PERÚ-978387435.doc5°-CARPETA PEDAGÓGICA 2024-MAESTRAS DE PRIMARIA PERÚ-978387435.doc
5°-CARPETA PEDAGÓGICA 2024-MAESTRAS DE PRIMARIA PERÚ-978387435.docGLADYSPASTOR
 
Kirpi-el-erizo libro descargar pdf 1 link
Kirpi-el-erizo libro descargar pdf 1 linkKirpi-el-erizo libro descargar pdf 1 link
Kirpi-el-erizo libro descargar pdf 1 linkMaximilianoMaldonado17
 
U2_EA1_descargable TIC 2 SEM VIR PRE.pdf
U2_EA1_descargable TIC 2 SEM VIR PRE.pdfU2_EA1_descargable TIC 2 SEM VIR PRE.pdf
U2_EA1_descargable TIC 2 SEM VIR PRE.pdfJavier Correa
 
CIENCIAS SOCIALES SEGUNDO TRIMESTRE TERCERO
CIENCIAS SOCIALES SEGUNDO TRIMESTRE TERCEROCIENCIAS SOCIALES SEGUNDO TRIMESTRE TERCERO
CIENCIAS SOCIALES SEGUNDO TRIMESTRE TERCEROCEIP TIERRA DE PINARES
 
explicacionsobrelasemanasanta-190411100653.ppt
explicacionsobrelasemanasanta-190411100653.pptexplicacionsobrelasemanasanta-190411100653.ppt
explicacionsobrelasemanasanta-190411100653.pptjosemanuelcremades
 
Recursos Tecnológicos, página AIP-CRT 2 0 2 4.pdf
Recursos Tecnológicos, página  AIP-CRT 2 0 2 4.pdfRecursos Tecnológicos, página  AIP-CRT 2 0 2 4.pdf
Recursos Tecnológicos, página AIP-CRT 2 0 2 4.pdfNELLYKATTY
 
SECUENCIA DIDÁCTICA Matemática 1er grado
SECUENCIA  DIDÁCTICA Matemática 1er gradoSECUENCIA  DIDÁCTICA Matemática 1er grado
SECUENCIA DIDÁCTICA Matemática 1er gradoAnaMara883998
 
Anuncio de Remitido Colegio SEK a la comunidad pública
Anuncio de Remitido Colegio SEK a la comunidad públicaAnuncio de Remitido Colegio SEK a la comunidad pública
Anuncio de Remitido Colegio SEK a la comunidad públicaIvannaMaciasAlvarez
 
EL BRILLO DEL ECLIPSE (CUENTO LITERARIO). Autor y diseñador JAVIER SOLIS NOYOLA
EL BRILLO DEL ECLIPSE (CUENTO LITERARIO). Autor y diseñador JAVIER SOLIS NOYOLAEL BRILLO DEL ECLIPSE (CUENTO LITERARIO). Autor y diseñador JAVIER SOLIS NOYOLA
EL BRILLO DEL ECLIPSE (CUENTO LITERARIO). Autor y diseñador JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 

Recently uploaded (20)

Conducta ética en investigación científica.pdf
Conducta ética en investigación científica.pdfConducta ética en investigación científica.pdf
Conducta ética en investigación científica.pdf
 
21 MARZO DIA INTERNACIONAL DOS BOSQUES.pdf
21 MARZO DIA INTERNACIONAL DOS BOSQUES.pdf21 MARZO DIA INTERNACIONAL DOS BOSQUES.pdf
21 MARZO DIA INTERNACIONAL DOS BOSQUES.pdf
 
Anna Llenas Serra. El monstruo de colores. Doctor de emociones.pdf
Anna Llenas Serra. El monstruo de colores. Doctor de emociones.pdfAnna Llenas Serra. El monstruo de colores. Doctor de emociones.pdf
Anna Llenas Serra. El monstruo de colores. Doctor de emociones.pdf
 
1ro Programación Anual D.P.C.C ACTUALIZADO
1ro Programación Anual D.P.C.C ACTUALIZADO1ro Programación Anual D.P.C.C ACTUALIZADO
1ro Programación Anual D.P.C.C ACTUALIZADO
 
Adoración sin fin al Dios Creador por sus bendiciones
Adoración sin fin al Dios Creador por sus bendicionesAdoración sin fin al Dios Creador por sus bendiciones
Adoración sin fin al Dios Creador por sus bendiciones
 
Actividad de bienestar docente 2016 Pereira
Actividad de bienestar docente 2016 PereiraActividad de bienestar docente 2016 Pereira
Actividad de bienestar docente 2016 Pereira
 
sociales ciencias segundo trimestre tercero
sociales ciencias segundo trimestre tercerosociales ciencias segundo trimestre tercero
sociales ciencias segundo trimestre tercero
 
ficha de aplicacion para estudiantes El agua para niños de primaria
ficha de aplicacion para estudiantes El agua para niños de primariaficha de aplicacion para estudiantes El agua para niños de primaria
ficha de aplicacion para estudiantes El agua para niños de primaria
 
TECNOLOGÍA EDUCATIVA, USO DE LAS TIC.pptx
TECNOLOGÍA EDUCATIVA, USO DE LAS TIC.pptxTECNOLOGÍA EDUCATIVA, USO DE LAS TIC.pptx
TECNOLOGÍA EDUCATIVA, USO DE LAS TIC.pptx
 
5°-CARPETA PEDAGÓGICA 2024-MAESTRAS DE PRIMARIA PERÚ-978387435.doc
5°-CARPETA PEDAGÓGICA 2024-MAESTRAS DE PRIMARIA PERÚ-978387435.doc5°-CARPETA PEDAGÓGICA 2024-MAESTRAS DE PRIMARIA PERÚ-978387435.doc
5°-CARPETA PEDAGÓGICA 2024-MAESTRAS DE PRIMARIA PERÚ-978387435.doc
 
VISITA DE ESTUDO À CRUZ VERMELHA _
VISITA DE ESTUDO À CRUZ VERMELHA                   _VISITA DE ESTUDO À CRUZ VERMELHA                   _
VISITA DE ESTUDO À CRUZ VERMELHA _
 
Kirpi-el-erizo libro descargar pdf 1 link
Kirpi-el-erizo libro descargar pdf 1 linkKirpi-el-erizo libro descargar pdf 1 link
Kirpi-el-erizo libro descargar pdf 1 link
 
U2_EA1_descargable TIC 2 SEM VIR PRE.pdf
U2_EA1_descargable TIC 2 SEM VIR PRE.pdfU2_EA1_descargable TIC 2 SEM VIR PRE.pdf
U2_EA1_descargable TIC 2 SEM VIR PRE.pdf
 
CIENCIAS SOCIALES SEGUNDO TRIMESTRE TERCERO
CIENCIAS SOCIALES SEGUNDO TRIMESTRE TERCEROCIENCIAS SOCIALES SEGUNDO TRIMESTRE TERCERO
CIENCIAS SOCIALES SEGUNDO TRIMESTRE TERCERO
 
explicacionsobrelasemanasanta-190411100653.ppt
explicacionsobrelasemanasanta-190411100653.pptexplicacionsobrelasemanasanta-190411100653.ppt
explicacionsobrelasemanasanta-190411100653.ppt
 
Recursos Tecnológicos, página AIP-CRT 2 0 2 4.pdf
Recursos Tecnológicos, página  AIP-CRT 2 0 2 4.pdfRecursos Tecnológicos, página  AIP-CRT 2 0 2 4.pdf
Recursos Tecnológicos, página AIP-CRT 2 0 2 4.pdf
 
SECUENCIA DIDÁCTICA Matemática 1er grado
SECUENCIA  DIDÁCTICA Matemática 1er gradoSECUENCIA  DIDÁCTICA Matemática 1er grado
SECUENCIA DIDÁCTICA Matemática 1er grado
 
Anuncio de Remitido Colegio SEK a la comunidad pública
Anuncio de Remitido Colegio SEK a la comunidad públicaAnuncio de Remitido Colegio SEK a la comunidad pública
Anuncio de Remitido Colegio SEK a la comunidad pública
 
Tema 5.- BASES DE DATOS Y GESTIÓN DE LA INF. PARA EL MARKETING.pdf
Tema 5.- BASES DE DATOS Y GESTIÓN DE LA INF. PARA EL MARKETING.pdfTema 5.- BASES DE DATOS Y GESTIÓN DE LA INF. PARA EL MARKETING.pdf
Tema 5.- BASES DE DATOS Y GESTIÓN DE LA INF. PARA EL MARKETING.pdf
 
EL BRILLO DEL ECLIPSE (CUENTO LITERARIO). Autor y diseñador JAVIER SOLIS NOYOLA
EL BRILLO DEL ECLIPSE (CUENTO LITERARIO). Autor y diseñador JAVIER SOLIS NOYOLAEL BRILLO DEL ECLIPSE (CUENTO LITERARIO). Autor y diseñador JAVIER SOLIS NOYOLA
EL BRILLO DEL ECLIPSE (CUENTO LITERARIO). Autor y diseñador JAVIER SOLIS NOYOLA
 

Laboratorio interfaces

  • 1. INTERFACES Se ha preguntado ¿qué haría si varias clases que no están relacionadas por medio de superclases, necesitan cumplir con el mismo diseño? Las interfaces definen y estandarizan las formas en que pueden interactuar los objetos y clases entre sí. Los objetos de software también se comunican a través de interfaces. Una interfaz de Java describe un conjunto de métodos (y constantes) que pueden llamarse sobre un objeto; por ejemplo, para indicar al objeto que realice cierta tarea, o que devuelva cierta pieza de información. La declaración de una interfaz empieza con la palabra clave interface y sólo puede contener constantes y métodos abstract. A diferencia de las clases, todos los miembros de la interfaz deben ser public, y las interfaces no pueden especificar ningún detalle de implementación, como las declaraciones de métodos concretos y variables de instancia. Todos los métodos que se declaran en una interfaz son public y abstract de manera implícita, y todos los campos son implícitamente public, static y final. Es un estilo apropiado declarar los métodos de una interfaz sin las palabras clave public y abstract, ya que son redundantes en las declaraciones de los métodos de la interfaz. De manera similar, las constantes deben declararse sin las palabras clave public, static y final, ya que también son redundantes. Para utilizar una interfaz, una clase debe especificar que implementa (implements) a esa interfaz y debe declarar cada uno de sus métodos con la firma especificada en la declaración de la interfaz. Para especificar que una clase implementa a una interfaz, agregamos la palabra clave implements y el nombre de la interfaz al final de la primera línea de la declaración de nuestra clase. Una clase que no implementa a todos los métodos de la interfaz es una clase abstracta, y debe declararse como abstract. Implementar una interfaz es como firmar un contrato con el compilador que diga, “Declararé todos los métodos especificados por la interfaz, o declararé mi clase como abstract”. Por lo general, una interfaz se utiliza cuando clases dispares (es decir, no relacionadas) necesitan compartir métodos y constantes comunes. Esto permite que los objetos de clases no relacionadas se procesen en forma polimórfica; los objetos de clases que implementan la misma interfaz pueden responder a las mismas llamadas a métodos. Usted puede crear una interfaz que describa la funcionalidad deseada y después implementar esta interfaz en cualquier clase que requiera esa funcionalidad. A menudo, una interfaz se utiliza en vez de una clase abstract cuando no hay una implementación predeterminada que heredar, esto es, no hay campos ni implementaciones de métodos predeterminados. UML expresa la relación entre una clase y una interfaz a través de una relación conocida como realización. Se dice que una clase “realiza”, o implementa, los métodos de una interfaz. En la siguiente figura se muestra un ejemplo de esta relación. Lenguaje de programación Técnica profesional en desarrollo de software Profesor: Andrés Herrera R. Mail: jherrera@eam.edu.co Laboratorio Polimorfismo Nombre:_________________________________________________________________________
  • 2. 2 Figura 1. Ejemplo de representación gráfica de la interfaz. En la Figura 1 se puede interpretar que la configuración de la impresora usa un diseño que ofrece la impresora. Todos los objetos de una clase que implementan varias interfaces tienen la relación es un con cada tipo de interfaz implementada. Al utilizar una referencia a la interfaz, podemos invocar de manera polimórfica a cualquier método declarado en la interfaz y en la clase Object; una variable de un tipo de interfaz debe hacer referencia a un objeto para llamar a los métodos, y todos los objetos contienen los métodos de la clase Object. Es importante aclara que, a diferencia de la herencia, un objeto en Java si puede implementar varias interfaces al tiempo. A continuación, se muestra un ejemplo de cómo sería la estructura del código: public class NombreClase extends NombreSuperClase implements Primeralnterfaz,Segundalnterfaz, ... Una clase puede implementar todas las interfaces que requiera, simulando un poco la herencia múltiple, tal como se muestra en el siguiente gráfico. Figura 2. Simulación de la herencia múltiple en Java. Patrón: interfaces marcadoras (etiquetado de interfaces) Una interfaz marcadora es una interfaz que no contiene ningún método. A priori esto puede parecer extraño y algunos incluso lo consideran un antipatrón, ya que un interfaz por definición es un contrato, y un contrato que no dice nada es un contrato un poco raro. Al implementar la interfaz no necesitamos implementar ningún método, simplemente estamos marcando (de ahí el nombre) la clase como una implementación del interfaz. La ventaja de esta solución es que nos permite aprovechar la comprobación de tipos en tiempo de compilación para asegurarnos de que ciertas operaciones sólo se realizan sobre las clases adecuadas. Un ejemplo de este patrón es la interfaz Serializable.
  • 3. 3 Interfaces más comunes de Java INTERFAZ DESCRIPCIÓN Comparable La interfaz Comparable se utiliza para permitir que los objetos de una clase que implementa a la interfaz se comparen entre sí. La interfaz Comparable se utiliza comúnmente para ordenar objetos en una colección, como un arreglo. Serializable Una interfaz que se utiliza para identificar clases cuyos objetos pueden escribirse en (serializarse), o leerse desde (deserializarse) algún tipo de almacenamiento (archivo en disco, campo de base de datos) o transmitirse a través de una red. Runnable La implementa cualquier clase para la cual sus objetos deban poder ejecutarse en paralelo, usando una técnica llamada multihilos. Interfaces de escucha de eventos de la GUI Cada interfaz de escucha de eventos especifica uno o más métodos que deben implementarse para responder a las interacciones de los usuarios. SwingConstants Contiene un conjunto de constantes que se utilizan en la programación de GUI para posicionar los elementos de la GUI en la pantalla. PRACTICA 1- Cree un proyecto que con nombre <<Prueba-Comparable>>. 2- Cree un paquete de nombre <<com.eam.lenguaje>>. Dentro del anterior paquete cree los paquetes <<vo>> y <<business>>. 3- Agregue en <<vo>> la clase Estudiante y añada como atributo de clase id, nombre, edad y promedio de notas. Programe el método constructor con todos los parámetros, además todos los métodos get y set. 4- Cree en el paquete <<business>> la clase LenguajeDeProgramacion y añada como atributo de clase una ArrayList de Estudiantes. Programe el método constructor de la clase. 5- Inicialice en el método constructor siete estudiantes diferentes y agréguelos en el ArrayList. 6- Programe un método que muestre por consola los nombre y las notas de cada estudiante. 7- Programe un método que ordene el ArrayList de estudiantes de menor a mayor según su nombre. 8- Implemente en la clase Estudiante la interfaz Comparable y su método obligatorio. Modifique el método compareTo por lo siguiente: @Override public int compareTo(Estudiante o) { if( o.getNombre().compareTo(nombre) > 0 ) return -1; else return 1; } Agregue la siguiente línea de código, ¿en que consiste su funcionamiento?
  • 4. 4 9- Programé la clase Aplicación y cree en ella el método main. Llame y compruebe el funcionamiento de los métodos programados. El uso de interfaces permite acelerar el desarrollo de software tal y como se puedo notar con Comparable. Ahora es momento de identificar como se debe implementar una interfaz. ------------------------------------------------------------------------------------------------------------ 10- Cree un proyecto de nombre <<Empresa>>. Recuerde que todas las clases e interfaces se debe documentar. 11- Cree un paquete de nombre <<com.eam.isyc.lenguaje.empresa>>. Dentro cree los paquetes <<vo>>, <<interfaz>>, <<business>>. 12- Cree una clase abstracta de nombre <<Persona>>. Agregue el atributo de clase nombre, el método constructor (usando el campo nombre) y los respectivos métodos getters y setters. 13- Programe la interfaz <<ICliente>> en el paquete <<interfaz>> con base a lo especificado la Figura 3 (getEmail es tipo String). Figura 3. Representación de la interfaz ICliente. 14- Programe la clase <<Cliente>> en el paquete <<vo>>, herede de <<Persona>> y de <<ICliente>>. Siga el formato de la clase en la Figura 4. No olvide el método constructor con sus correspondientes parámetros (getEmail() retorna String). Figura 4. Representación de la clase Cliente. 15- Programe la interfaz <<IEmpleado>> según lo especificado en la Figura 5.
  • 5. 5 Figura 5. Representación de la interfaz IEmpleado. 16- Programe la clase <<Empleado>> en el paquete <<vo>>, herede de <<Persona>> y de <<IEmpleado>>. Siga el formato de la clase en la Figura 6. No olvide el método constructor con sus correspondientes parámetros. Figura 6. Representación de la clase Empleado. 17- Programe la clase <<ClienteEmpleado>> en el paquete <<vo>>, herede de <<Cliente>> y de <<IEmpleado>>. No olvide el método constructor con sus correspondientes parámetros. 18- Cree la clase <<Empresa>> en el paquete <<business>>. Agregue como atributo de clase una matriz de personas. Inicialice la matriz de tamaño 20X20 en el método constructor. 19- Programe un método que diga el número de empleados que están en la matriz. 20- Retorne el nombre del <<ClienteEmpleado>> o <<Cliente>> que tiene el email más largo y está por debajo de la diagonal secundaría. 21- Retorne el nombre de la interfaz más usada en la matriz. 22- Programe el método agregar persona. Las personas deben ser agregadas en forma de serpiente, comenzando de arriba hacia abajo. 23- Programe un método que elimine todos los elementos en la matriz que tiene la misma instancia que un elemento agregado como parámetro (tenga en cuenta solo las clases). 24- Programe la clase <<Hijo>>. Los hijos tienen: nombre (String), edad (int) y gastos mensuales (double). 25- Agregue un arreglo (tamaño 10) de hijos en <<Persona>>. Programé el método agregarHijo. Los hijos de los de los empleados se agregan desde la primera posición en adelante. Los hijos de los clientes se agregan desde la última posición hacia atrás.
  • 6. 6 26- Programe un método que permita agregar un hijo a una persona según un nombre dado como parámetro (el método debe recibir el nombre de la persona y el hijo). De existir varios nombres iguales, se le debe asignar el hijo a la última persona que se encuentre. 27- Programe un método que retorne quien tiene más hijos ¿Los clientes o los empleados? No se deben tener en cuenta los <<ClientesEmpleados>>. 28- Programen un método que le quite todos los hijos a las personas que son instancia especifica de un elemento entrado como parámetro (pueden entrar un Cliente, un Empleado o un ClienteEmpleado). 29- Programe un método que le quite un hijo a la persona que tiene los hijos con más gastos. Solo debe revisar las posiciones que están por debajo de la diagonal secundaria y primaria. 30- Programe un método que le cambien el nombre a la persona instancia de <<ClienteEmpleado>> que tiene más hijos (El nuevo nombre debe ser Diomedes). 31- Programe la excepción propia de nombre <<MasHijosDeLoPosibleException>>. La excepción debe ser lanzada cuando se desee agregar más de 10 hijos a una persona (este método pude ser programado después de estudiar la guía siete y ocho). 32- Programe la excepción <<EmailSinFormatoException>>. La excepción debe ser lanzada cuando el email de un cliente no tenga el formato adecuado (este método pude ser programado después de estudiar la guía siete y ocho). 33- Programe un método que elimine a los hijos más gastadores de todos los descendientes de <<IEmpleado>>. 34- Cree la clase <<Aplicación>> en el paquete general con su respectivo método main y pruebe los métodos programados. ENTREGABLE Enviar al correo jherrera@eam.edu.co el proyecto comprimido en zip la Practica realizada en su totalidad. BIBLIOGRAFÍA Deitel, P. J. & Deitel, H. M. (2012). Como Programar en java. Novena edición. México: Prentice Hall.