8/18/2019 Interfaces Java.
1/23
Interfaces
8/18/2019 Interfaces Java.
2/23
Para que sirven las interfaces
Ventajas de la herencia.
1. Favorecer el mantenimiento y la extensión de las aplicaciones. ¿Porqué Porque al definir interfaces permitimos la existencia devariables polimórficas y la invocación polimórfica de métodos.
". #tra ventaja clara de las interfaces es que nos permiten declararconstantes que van a estar disponi$les para todas las clases quequeramos %implementando esa interfa&'. (os ahorra códi)o evitandotener que escri$ir las mismas declaraciones de constantes endiferentes clases.
8/18/2019 Interfaces Java.
3/23
IMPLEMENTAR NA INTER!A"E #EL API $A%A.E$EMPL&.
*l +PI de ,ava define interfaces que aparte de usarlas para definirtipos- nosotros podemos implementar en una clase propia en nuestrocódi)o.
Para utili&ar interfaces- como la interfa& ompara$le- ha$remos deescri$ir en ca$ecera de la clase/
pu$lic class (om$re0ealase implements ompara$le2(om$re0ealase3 4 5 6
8/18/2019 Interfaces Java.
4/23
'()é interés tiene implementar )na interfacedel API si no nos proporciona códi*o nin*)no+
7na interface puede verse en relación a la pro)ramación como unanorma ur$an8stica en una ciudad.
9i lees la documentación de la interfa&- aunque no proporcionacódi)o- s8 proporciona instrucciones respecto a caracter8sticascomunes para las clases que la implementen y define qué métodoshan de incluirse para cumplir con la interfa& y para qué servir:n esos
métodos.
9i implementamos la interface- lo que hacemos es ajustarnos a lanorma.
8/18/2019 Interfaces Java.
5/23
'()é interés tiene implementar )na interfacedel API si no nos proporciona códi*o nin*)no+
uando un pro)ramador tiene que continuar un pro)rama iniciado por otro notiene que pre)untarse/ ¿qué método podré usar para comparar varios o$jetosde este tipo y ponerlos en orden ; no hay que pre)unt:rselo porque en)eneral los pro)ramadores se ci' se implementala interfa& ompara$le y su método compare?o%'. ; adem:s- ya sa$emos quétipo ha de devolver ese método y cómo ha de funcionar- porque as8 lo indica
la documentación de la interface. @uchas clases del +PI de ,ava ya tienen implementada la interface
ompara$le. Por ejemplo la clase Inte)er tiene implementada esta interfa&-lo que si)nifica que el método compare?o%' es un método disponi$le paracualquier o$jeto de tipo Inte)er.
8/18/2019 Interfaces Java.
6/23
IN,TR""I-N PE#IR "&N $A%A. EL$TET!IEL#. EL M/T& 0ETTET.
a forma de pedir datos con ,ava a través de un control visual resulta untanto distinta a la inserción de datos a través de consola. 7na petición dedatos- se reali&ar: a través de un o$jeto prefa$ricado de la clase ,?extField.
8/18/2019 Interfaces Java.
7/23
8/18/2019 Interfaces Java.
8/23
8/18/2019 Interfaces Java.
9/23
%1' Paquete
*n este punto- se usa la sentencia import1 para declarar los paquetesque emplearemos en nuestro pro)rama. *xplicar- que un paquete esal)o similar a una ruta- donde se encuentran las clases que
utili&aremos en el pro)rama. *n nuestro caso- $Text!ield1 $Panel1 $!rame1 son clases que
pertenecen al paquete 2avax.s3in*- as8 como laclase "olor pertenece al paquete 2ava.a3t.
os paquetes forman parte de java- lo Anico que hacemos nosotros escar)arlos para poder usarlos en nuestro pro)rama.
8/18/2019 Interfaces Java.
10/23
%"' Formulario
Pro*rama extends $!rame. a idea de esta sentencia- es hacer quenuestro pro)rama ten)a el comportamiento de un formulario %ventana
BindoCs' y para ello de$emos heredar %extends' de ,Frame- susparticularidades. ,Frame- es una clase que tiene todas lascaracter8sticas propias de una ventana en BindoCs. + partir de estepunto- nuestro pro)rama deja de ser un pro)rama de consola 0#9 ypasa a ser un pro)rama visual tipo ventana BindoCs.
8/18/2019 Interfaces Java.
11/23
%D' ontroles del formulario
+qu8- se crean los o$jetos de los controles visuales que se mostrar:nen el formulario. *l primer o$jeto que vemos es jpanel- mencionar-
que es un nom$re cualquiera y pertenece a la clase $Panel. * o$jetojpanel- es lo que se llama un contenedor1 que como su propionom$re indica- va a contener a los dem:s controles visuales. *s decir-que los controles visuales no se ponen directamente en el formulario-sino en el contenedor- colocado éste encima del formulario. *lsi)uiente o$jeto es jtextfield- perteneciente a laclase$Text!ield5 este o$jetojtextfield- contiene el control visual para
pedir un dato al usuario y tiene la apariencia de una caja parain)resar texto %text$ox'.
8/18/2019 Interfaces Java.
12/23
%E' onstructor del formulario
9i se o$serva- es una estructura i)ual a un método- que se inicia conuna apertura de llave =4= y termina con la clausura de la llave =6>.
*ntre dichas llaves se procede a dar a los o$jetos- que representan alos controles visuales- los atri$utos. ?am$ién a
8/18/2019 Interfaces Java.
13/23
%' Propiedades del contenedor del formulario
o que es un contenedor- ya fue explicado en el punto D. +hora aqu8-explicaremos las si)uientes instrucciones relacionadas al contenedor/
.6 2panel.setLayo)t7n)ll8. *sta instrucción si)nifica- que alpasarle n)ll como par:metro al método setLayo)t1 nuestrocontenedor- representado a través del o$jeto 2panel- no administrar:la forma de colocar los controles en el contenedor- sino que dejar:que esa la$or la realice el pro)ramador a través de coordenadas.
.6 2panel.set9ac:*ro)nd7"olor.li*;t0ray8. +lpasarse "olor.li*;t0ray1 como par:metro delmétodo set9ac:*ro)nd1 le decimos al contenedor- representado en elo$jeto jpanel- que tome un color de fondo )ris suave. +hora- siquisiéramos usar otro color de fondo- como el color verde- usar8amosel par:metro "olor.*reen1 y de i)ual manera para otros colores.
8/18/2019 Interfaces Java.
14/23
%G' Propiedades de los controles.
*n este punto- esta$leceremos a través de propiedades- la apariencia denuestros controles visuales. *n este ejemplo- el control visual ser: unacaja de texto para in)resar datos- representados en el
o$jeto 2textfield1 para lo cual explicaremos las instrucciones si)uientes/ .6 2textfield.set9o)nds7ne3 Rectan*le7=1
8/18/2019 Interfaces Java.
15/23
%G' Propiedades de los controles.
.6 2textfield.setEditable7false8. 9i esta instrucción- est: esta$lecidaen true- permite que se pueda escri$ir so$re el ,?extField. 9i est:
esta$lecida en false- impide que el usuario pueda modificar elcontenido del ,?extField.
.6 2textfield.setBoriontalAli*nment7$Text!ield.LE!T8.*l par:metro*F?- permite que el texto en la caja de texto- se alinee a lai&quierda- el par:metro *(?* al centro y el IJK? a la derecha.
8/18/2019 Interfaces Java.
16/23
%L' +dición de los controles al contenedor
.6 2panel.add72textfield1 n)ll8. *l método add pertenece a laclase $panel. *ste método- es usado para a
8/18/2019 Interfaces Java.
17/23
%M' Propiedades del formulario
7n formulario tiene una apariencia visual por defecto- por ejemplo eltama=?8.7$ica la esquina superior i&quierda del
formulario en la pantalla- en la coordenada%DHH-1H'N%x-y'N%columna-fila'.
.O setTitle7@!orm>@8. a cadena =Form1>- como par:metro delmétodo setTitle1 si)nifica que se esta$lecer: como t8tulo del
formulario la cadena =Form1>. .6 set%isible7tr)e8. *ste par:metro tr)e1 del
método set%isible1 determina que el formulario sea visi$le en lapantalla- ya que si ponemos false1 el formulario est: en la pantalla deforma invisi$le.
8/18/2019 Interfaces Java.
18/23
%' @étodos del formulario
*n este punto se definen los métodos que se necesitan para reali&arlas tareas que dise
8/18/2019 Interfaces Java.
19/23
EL M/T& 0ETTET
*l contenido que introduce un usuario a través de un ,?extField-tienecar:cter de texto. Para trasladar dicho contenido a una varia$le- se usa lafunción o método )et?ext. a sintaxis a emplear es/
9trin) cadena N jtextfield.)et?ext%'Q
8/18/2019 Interfaces Java.
20/23
9i deseamos convertir el valor retornado por lainstrucción 2textfield.*etText78-en forma de texto- que se reci$ió en lavaria$le cadena- a un valor en forma de nAmero- la sintaxis es la si)uiente/
float a N Float.parseFloat%cadena'Q
8/18/2019 Interfaces Java.
21/23
*sto supone- que la varia$le a- que ha sido definida como tipo float- adoptael contenido numérico del ,?extField.
a función *etText1 no elimina los espacios en $lanco- ni los ta$uladores nilos avances de l8nea. Para suprimirlos- podemos aplicar el ejemplo si)uiente/
9trin) cadena N = DM"H =Q
9trin) cadenalimpia N cadena.trim%'Q RR0evuelve =DM"H> como cadena
float a N Float.parseFloat%cadenalimpia'Q RR0evuelve DM"H como nAmero real
8/18/2019 Interfaces Java.
22/23
#tra forma relevante de pedir datos con ,ava- consiste en el uso de ventanas dedialo)o de petición de datos %,#ptionPane.shoCInput0ialo)'. uando se invoca lafunción ,#ptionPane.shoCInput0ialo)- se desplie)a una ventana independiente-
con un mensaje definido de solicitud de datos al usuario- que dispone de unacaja de texto asociado para responder y de $otones para aceptar o cancelar. a
sintaxis es/
9trin) s N ,#ptionPane.shoCInput0ialo)%SIntrodu&ca un nAmeroS-SIntroducción
nAmeroS'Q
donde =s> es una varia$le- que toma el valor que haya introducido elusuario en forma de cadena.
8/18/2019 Interfaces Java.
23/23
Ti$lio)raf8a
http/RRaprenderapro)ramar.comRindex.phpoptionNcomUcontentvieCNarticleidNML/ejercicioOejemploOresueltoOinterfaceOcompara$leOyOmetodoOcomparetoOapiOjavaOcompararOo$jetosOcuHH11ccatidNM/cursoOlen)uajeOpro)ramacionOjavaOnivelOavan&adoOiItemidN1MH