ApéndiceJ2SE

download ApéndiceJ2SE

of 114

Transcript of ApéndiceJ2SE

  • 8/18/2019 ApéndiceJ2SE

    1/114

     

     Java 1.4

    Dr. Diego Lz. de Ipiña Gz. de Artaza

    http://paginaspersonales.deusto.es/[email protected]

    http://paginaspersonales.deusto.es/dipinahttp://paginaspersonales.deusto.es/dipinamailto:[email protected]:[email protected]://paginaspersonales.deusto.es/dipinahttp://paginaspersonales.deusto.es/dipina

  • 8/18/2019 ApéndiceJ2SE

    2/114

     

    Introduccin a la

    plata!or"a Java #I$ %volucin de la progra"acin

    &'u( es progra"ar) *ases de un pro+ecto in!or",tico

    An,lisis. Diseño.

    -odicacin co"pilacin. Depuracin prue0as. Docu"entacin.

  • 8/18/2019 ApéndiceJ2SE

    3/114

     

    Introduccin a la

    plata!or"a Java #II$ %volucin de los lenguaes. Lenguaes ",2uina. Lenguaes ensa"0lador. Lenguaes de alto nivel.

    3rogra"acin estructurada. Instrucciones secuenciales. Instrucciones condicionales. Instrucciones repetitivas.

    n progra"a en eecucin: proceso.

    La relacin con la ",2uina. Los or5genes del lenguae Java.

    1661 7un 8icros+ste"s intenta crear un lenguaepara progra"ar dispositivos el(ctricos.

  • 8/18/2019 ApéndiceJ2SE

    4/114

     

    Introduccin a la

    plata!or"a Java #III$ 3ri"era versin se lla" 9A. ;o tuvo (

  • 8/18/2019 ApéndiceJ2SE

    5/114

     

    Introduccin a la

    plata!or"a Java #I$ Desventaas

    8enor rendi"iento. 3(rdida de caracter5sticas espec5cas.

    9rientacin a 90etos. Applets. 3rogra"acin distri0uida B8I #Be"ote

    8ethod Invocation$

    8ultiproceso / 8ultihilo #8ultiChreading$ 3rogra"acin "vil J8% #8icro %dition$ 3rogra"acin aplicaciones Ee0 J73 #Java

    7erver 3ages$

  • 8/18/2019 ApéndiceJ2SE

    6/114

     

    Introduccin a la

    plata!or"a Java #$ La evolucin del lenguae Java.

    La orientacin actual es la de o!recer

    "ultitud de utilidades para !acilitar eldesarrollo de aplicaciones. 7ervidores de aplicaciones.

     Cransparencia en el acceso a datos. Desarrollo 0asado en co"ponentes#0eans$.

  • 8/18/2019 ApéndiceJ2SE

    7/114 

    3rogra"acin 9rientada a

    90etos en Java #I$ &'u( es la 3rogra"acin 9rientada a

    90etos)

    3aradig"a de progra"acin 2ue per"ite"odelar de !or"a sencilla conceptos del"undo real a nivel de progra"acin.

    &3or 2u( es Ftil la 399) 9!rece un conunto de herra"ientas 2ueuna vez interiorizadas per"iten gran

    e

  • 8/18/2019 ApéndiceJ2SE

    8/114 

    3rogra"acin 9rientada a

    90etos en Java #II$ 3ala0ras reservadas en Java.

    abstract default goto operator synchronized

    boolean do if outer this

    break double implements package threadsafe

    byte else import private throw

    byvalue extends inner protected throws

    case false instanceof public transient

    cast final int rest true

    catch finally interface return try

    char float long short var  

    class for native static void

    const future new super volatille

    continue generic null switch while

  • 8/18/2019 ApéndiceJ2SE

    9/114 

    3rogra"acin 9rientada a

    90etos en Java #III$ Herra"ientas de la 399.

    La clase co"o ele"ento "5ni"o.

    na clase es una representacin de un concepto del"undo real. -ontiene dos co"ponentes / "ie"0ros:

    Datos Atri0utos. Acciones 8(todos.

    7e usa el operador punto .K para acceder a los "ie"0ros. na clase se dene con la pala0ra reservada classM.

    -lase s 90eto -lase -oncepto Denicin N BecetaO.

    90eto Instancia %le"ento realM N 3astelO.

  • 8/18/2019 ApéndiceJ2SE

    10/114 

    3rogra"acin 9rientada a

    90etos en Java #I$ 3a2uetes.

    -oncepto 2ue per"ite englo0ar en una "is"aidea varias clases.

    7e"eanza con estructura de directorios. 3uedeha0er una erar2u5a. %n co"pilacinP se generandirectorios !5sicos.

    7e usa el operador punto .K para poder acceder

    a las clases de un pa2uete o a los su0pa2uetes. isi0ilidad de pa2uete.

    Pública: 7e per"ite usar esa clase desde otropa2uete.

    No pública: 7lo se puede usar esa clase desde ese

    pa2uete.

  • 8/18/2019 ApéndiceJ2SE

    11/114 

    3rogra"acin 9rientada a

    90etos en Java #$ %structura 0,sica de un chero !uente Java. Denicin de pa2uete #opcional$:  packageM I"portacin de clase #opcional$: importM

    7e pueden i"portar todas las clases usando QM

    Denicin de clases. 7lo una con visi0ilidad pF0lica de pa2uete. %l chero de0e lla"arseigual 2ue esta clase.

     package paquete;

    import otroPaquete.OtraClase;

     public class ClaseConVisibilidadPublica

    {}

    class ClaseConVisibilidadNoPublica

    {}

  • 8/18/2019 ApéndiceJ2SE

    12/114 

    3rogra"acin 9rientada a

    90etos en Java #I$ Beglas de estilo 0,sicas.

    Los no"0res de pa2uete en "inFsculas.paquete

    Los no"0res de clase en "a+Fscula la pri"era letra + en"a+Fscula la pri"era letra de cada ca"0io de concepto.NombreDeClase

    Los no"0res de "ie"0ros en "inFsculas + en"a+Fscula la pri"era letra de cada ca"0io de concepto.

    nombreDeMiembroDeClase Los no"0res de constantes en "a+Fsculas todas las

    letras + cada ca"0io de concepto con un guin 0ao RK.NOMBREDECON!"#N"E

  • 8/18/2019 ApéndiceJ2SE

    13/114 

    3rogra"acin 9rientada a

    90etos en Java #II$ -o"entarios. Ha+ S tipos.

    De Bloque: -o"ienzan por $%M + ter"inan por %$M.;o se per"iten anidaciones.

    De Línea: Denidos por $$M. De Documentación: 3er"iten insertar te

  • 8/18/2019 ApéndiceJ2SE

    14/114 

    3rogra"acin 9rientada a

    90etos en Java #III$ %ncapsulacin.

    -ontrol de acceso a los "ie"0ros.

    tipos de encapsulacin: Pública: n "ie"0ro accesi0le desde cual2uierpunto. 7e usa la pala0ra reservada  publicM antesde denir el "ie"0ro.

    Privada: n "ie"0ro accesi0le Fnica"ente desde

    la propia clase. 7e usa la pala0ra reservada privateM antes de denir el "ie"0ro. Los datos pF0licos pueden ca"0iar en cual2uier

    "o"ento. 8ediante encapsulacin privadaPslo pueden ca"0iar desde "(todos control.

  • 8/18/2019 ApéndiceJ2SE

    15/114 

    3rogra"acin 9rientada a

    90etos en Java #IT$  Cipos de datos en Java.

    3ri"itivos. %nteros.

     byte: U 0its positivos + negativos #>1U V W V 1X$ char: 1= 0its positivos #W V =YYSY$ short: 1= 0its positivos + negativos #>SX=U V W V

    SX=X$ int: S 0its positivos + negativos long: =4 0its positivos + negativos

    Deci"ales. float: S 0its double: =4 0its

    Lgicos. boolean: true o false

    ;o pri"itivos: -lases.

  • 8/18/2019 ApéndiceJ2SE

    16/114 

    3rogra"acin 9rientada a

    90etos en Java #T$ aria0les.tipo * identi+icati,o * -V#/OR0N0C0#/1 * ; %l concepto de ,"0ito.

    Dene la visi0ilidadP accesi0ilidadP duracin de unavaria0le. 7e representa "ediante Z + [K.

    %

  • 8/18/2019 ApéndiceJ2SE

    17/114 

    3rogra"acin 9rientada a

    90etos en Java #TI$ 8ie"0ros est,ticos.

    Denidos con la pala0ra reservada staticM n "ie"0ro est,tico #o de clase$ es Fnico para todos los o0etos

    2ue se creen. 7e puede decir 2ue sie"pre est, creado. 7epuede acceder a (l sin necesidad de un o0eto. n "ie"0ro no est,tico #o de instancia$ pertenece a cada o0eto

    individual. 7e puede decir 2ue se crea unto con el o0eto. Desde un "(todo est,tico no se puede acceder a "ie"0ros no

    est,ticos.

    -reacin de o0etos. -uando se declara una varia0le de tipo no pri"itivoP real"ente

    representa una re!erencia a un posi0le o0eto. 3ara poder crearel o0eto al 2ue re!erenciar se usa el operador ne(M.

  • 8/18/2019 ApéndiceJ2SE

    18/114 

    3rogra"acin 9rientada a

    90etos en Java #TII$ -ontantes.

    %nteras.23456 #intP por de!ecto$

    23456/ #long$7234 #octal$7)87# #he

  • 8/18/2019 ApéndiceJ2SE

    19/114 

    3rogra"acin 9rientada a

    90etos en Java #TIII$ %

  • 8/18/2019 ApéndiceJ2SE

    20/114 

    3rogra"acin 9rientada a

    90etos en Java #TI$ %dicinP -o"pilacin + %ecucin en Java.

    7o!tEare: http://EEE.ava.sun.co"   JD: Java Develop"ent it. -o"pilador J8.  JB%: Java Bunti"e %nviro"ent. J8.

    %dicin en cual2uier editor. %l directorio binM del JD contiene los co"andos. -o"pilacin. -o"ando ?a,acM.

    @d: Indica el directorio donde generar los .class. @classpat': Indica las rutas a los .class a usar.?a,ac Ad R"# Aclasspat' R"# +ic'ero.?a,a

    %l chero .?a,a puede ser %.?a,a.

    http://www.java.sun.com/http://www.java.sun.com/http://www.java.sun.com/

  • 8/18/2019 ApéndiceJ2SE

    21/114

     

    3rogra"acin 9rientada a

    90etos en Java #T$ %ecucin. -o"ando ?a,aM.

    @cp: Indica las rutas de los .class a usar.?a,a Acp R"# +ic'ero

    ;o se indica la e

  • 8/18/2019 ApéndiceJ2SE

    22/114

     

    3rogra"acin 9rientada a

    90etos en Java #TI$ public class PrimerProrama

    {

     public static void  main=!trin-1 ars>

    {

    !stem.out.println=El primer prorama en a,a.;

    }

    }

    %ditarP co"pilar + eecutar este progra"a. Bealizar varios ca"0ios en el progra"a.

    8odicar la cadena a presentar. Añadir el pa2uete curso?a,a.primeroM. &'u( i"plicaciones

    tiene) Docu"entar el cdigo !uente. Generar docu"entacin.

  • 8/18/2019 ApéndiceJ2SE

    23/114

     

    3rogra"acin 9rientada a

    90etos en Java #TII$ package curso?a,a.tipos; public class "iposPrimiti,os

    {

     public static void  main=!trin-1 ars>

    {

     byte b 23F;char c G6; // Representa el carácter ‘A’

    short s 43FGF;

    // Conversiones implícitas

    int i b;

    long l s;

    float + i;

    double d +;

    }

    }

    Bealizar varios ca"0ios en el progra"a. Asignar valores !uera de rango a cada tipo. Intentar realizar conversiones inadecuadas. &-"o se !orzar5an)

  • 8/18/2019 ApéndiceJ2SE

    24/114

     

    3rogra"acin 9rientada a

    90etos en Java #TIII$ %

  • 8/18/2019 ApéndiceJ2SE

    25/114

     

    3rogra"acin 9rientada a

    90etos en Java #TIT$ Arit"(ticas. 7u"a *K: inario. %nteros + deci"ales. 8,s *K: nario. %nteros + deci"ales.

    Besta @K: inario. %nteros + deci"ales. 8enos @K: nario. %nteros + deci"ales. 8ultiplicacin %K: inario. %nteros +

    deci"ales. Divisin $K: inario. %nteros + deci"ales. Besto HK: inario. %nteros.Operador Operación Nivel de Precedencia

    *I @ =unitarios> *36   1

    @G.F36

    %I $I H 6 % 6 es 36   2

    36 $ G es 5

    36 H G es 2

    *I @ 3 * 4 es 6   3

    3 A 4 es @2

  • 8/18/2019 ApéndiceJ2SE

    26/114

     

    3rogra"acin 9rientada a

    90etos en Java #TT$ Incre"ento **K + Decre"ento @@K

    Pre: 7e incre"enta/decre"enta +

    despu(s se evalFa la e

  • 8/18/2019 ApéndiceJ2SE

    27/114

     

    3rogra"acin 9rientada a

    90etos en Java #TTI$ package curso?a,a.incdec;

     public class 0ncrementoDecremento

    {

     public static void  main=!trin-1 ars>

    {

    int ,ariable 6; !stem.out.println=,ariable>;!stem.out.println=**,ariable>;!stem.out.println=,ariable**>;!stem.out.println=,ariable@@>;!stem.out.println=@@,ariable>;!stem.out.println=,ariable>;}

    } Indicar la salida por pantalla de cada instruccin.

  • 8/18/2019 ApéndiceJ2SE

    28/114

     

    3rogra"acin 9rientada a

    90etos en Java #TTII$ 9peradores arit"(ticos en conuncin con

    el operador de asignacin

    ,ariable * e)presion; $$ ,ariable ,ariable * e)presion

    ,ariable @ e)presion; $$ ,ariable ,ariable A e)presion

    ,ariable $ e)presion; $$ ,ariable ,ariable $ e)presion

    ,ariable % e)presion; $$ ,ariable ,ariable % e)presion

    ,ariable H e)presion; $$ ,ariable ,ariable H e)presion

  • 8/18/2019 ApéndiceJ2SE

    29/114

     

    3rogra"acin 9rientada a

    90etos en Java #TTIII$ 9peradores relacionales. 9peradores

    2ue consiguen uno de los dos valores

    lgicos: true o false.Operador Significado Ejemplo

      Igual a a b

    J   No igual a a J b

    K   Mayor ue a K b

    L   Menor ue a L b

    K   Mayor o igual ue a K b

    L   Menor o igual ue a L b

  • 8/18/2019 ApéndiceJ2SE

    30/114

     

    3rogra"acin 9rientada a

    90etos en Java #TTI$ 9peradores lgicos:Operador Significado Tabla de verdad Ejemplo

    J   No l!gica" negaci!n a Ja J=) L >

    true +alse

    +alse true

      # l!gica a b a b ) L n K true true true

    true +alse true

    +alse true true

    +alse +alse +alse

      $ l!gica a b a b ) L n K

    true true true

    true +alse +alse

    +alse true +alse

    +alse +alse +alse

      # exclusiva a b a b ) L n K

    true true +alse

    true +alse true

    +alse true true

    +alse +alse +alse

  • 8/18/2019 ApéndiceJ2SE

    31/114

     

    3rogra"acin 9rientada a

    90etos en Java #TT$ 9peran so0re operandos 0ooleanos +

    generan resultados 0ooleanos.

    7e evalFan de iz2uierda a derecha. %l ",

  • 8/18/2019 ApéndiceJ2SE

    32/114

     

    3rogra"acin 9rientada a

    90etos en Java #TTI$ Instrucciones condicionales.

    7i"ple:if =COND0C0ON>

    {0N!"RCC0ONE!

    } Do0le:

    if =COND0C0ON>

    {0N!"RCC0ONE!

    }

    else

    {

    0N!"RCC0ONE!

    }

  • 8/18/2019 ApéndiceJ2SE

    33/114

     

    3rogra"acin 9rientada a

    90etos en Java #TTII$ 8Fltiple:

    switch=V#R0#B/E>

    {

    case V#/OR2Q break;

    case V#/OR3Q

     break;

    ...

    case V#/ORnQ

     break;

    defaultQ

     break;

    }

  • 8/18/2019 ApéndiceJ2SE

    34/114

     

    3rogra"acin 9rientada a

    90etos en Java #TIII$ Instrucciones repetitivas:

    Ha+ de dos tipos: De 0 a N: for + while

    for =0N0C0#/0#C0ON; COND0C0ON; P#!O>

    {0N!"RCC0ONE!

    }

     while=COND0C0ON>

    {

    0N!"RCC0ONE!

    } De 1 a N: do ... while

    do

    {

    0N!"RCC0ONE!

    }

     while=COND0C0ON>;

  • 8/18/2019 ApéndiceJ2SE

    35/114

     

    3rogra"acin 9rientada a

    90etos en Java #TTIT$ 8(todos.

    La signatura de un "(todo es lo 2ue lo dene.tiporetorno * identi+icati,o * = * -parSmetro=s>1 * >

    Los par,"etros son deniciones de varia0les con ,"0itolocal #de "(todo$ pero 2ue reci0en un valor inicial cuandose haga la lla"ada el "(todo.tipo * identi+icati,o

     Java soporta so0recarga: denicin de dos "(todos en la"is"a clase con el "is"o identicativo pero con nF"ero otipo de par,"etros di!erentes.

    7i no se 2uiere devolver nada se usa el tipo ,oidM. Cipos pri"itivos s tipos no pri"itivos #clases$ en "(todos.

  • 8/18/2019 ApéndiceJ2SE

    36/114

     

    3rogra"acin 9rientada a

    90etos en Java #TTT$ -onstructores 8(todos especiales 2ue se eecutan en el "o"ento

    de creacin de un o0eto #new$. ;o devuelven valor #ni void $. 7e lla"an igual 2ue la clase. 3uede ha0er so0recarga. 3or de!ecto sie"pre ha+ un constructor 2ue no reci0e

    par,"etros. 3reguntas:

    &'u( pasa si pone"os un Fnico constructor con par,"etros) &'u( pasa si pone"os un constructor con encapsulacin

    privada)

  • 8/18/2019 ApéndiceJ2SE

    37/114

     

    3rogra"acin 9rientada a

    90etos en Java #TTTI$ %l tipo de datos !trin %s un tipo de datos a0stracto #clase$ 2ue est, denido en el

    pa2uete ?a,a.lan. %s el Fnico tipo a0stracto de Java 2ue tiene su propia constante

    literal conocida dentro de la sinta

  • 8/18/2019 ApéndiceJ2SE

    38/114

     

    3rogra"acin 9rientada a

    90etos en Java #TTTII$ Ejemplo: Desarrollar un progra"a para aclarar el concepto devaria0le est,tica #de clase$ + no est,tica #de instancia$.pacTae curso?a,a.estatic;

    public class DeClaseDe0nstancia

    {

    public static ,oid main=!trin-1 ars>{

    #uda a2 ne( #uda=>;

    #uda a3 ne( #uda=>;

    #uda a4 ne( #uda=>;

    !stem.out.println=a2.deClase>;

    !stem.out.println=a2.de0nstancia>;

    }

    }

    class #uda

    {

    public static int deClase;public int de0nstancia;

    public #uda=>

    {

    deClase**;

    de0nstancia**;

    }

    }

  • 8/18/2019 ApéndiceJ2SE

    39/114

     

    3rogra"acin 9rientada a

    90etos en Java #TTTIII$ Ejemplo: Desarrollar un progra"a para aclarar el paso de par,"etros por valor + porre!erencia.

    pacTae curso?a,a.,alre+;public class ValorURe+erencia

    {

    public static ,oid metodo=int ,alor>

    {,alor**;

    }public static ,oid metodo=#uda ,alor>

    {,alor.,alor**;

    }

    public static ,oid main=!trin-1 ars>

    {int ,alor 6;

    metodo=,alor>;

    !stem.out.println=,alor>;

    #uda ob?eto ne( #uda=>;

    ob?eto.,alor 6;

    metodo=ob?eto>;

    !stem.out.println=ob?eto.,alor>;}

    }

    class #uda

    {public int ,alor 7;

    }

  • 8/18/2019 ApéndiceJ2SE

    40/114

     

    3rogra"acin 9rientada a

    90etos en Java #TTTI$ Arra+s en Java

    n arra+ es un conunto de datos del "is"o tipo situadosde !or"a consecutiva.

    Las varia0les arra+ en Java son re!erencias. 3or tantoP losarra+s son o0etos + ha+ 2ue crearlos.

    tipo * -1 * id * * ne( * tipo * - * cantidad * 1 * ;

    %l ne( ha creado el o0eto del arra+. casos: ipos primitivos: Los datos del arra+ se ha0r,n creado ta"0i(n

    #+a 2ue los tipos pri"itivos se crean directa"ente$. ipos no primitivos !clases": Los datos son re!erencias a null +

    por tanto de0en crearse a parte.

  • 8/18/2019 ApéndiceJ2SE

    41/114

     

    3rogra"acin 9rientada a

    90etos en Java #TTT$ %n la declaracin se pueden poner los corchetes

    NOM: Después del tipo: Indica 2ue C9D97 los identicativos

    2ue se denan ser,n arra+s.tipo * -1 * id ... Después del identi#cativo: Indica 2ue ese identicativo

    ser, el Fnico 2ue es arra+.tipo * id * -1 * ...

    %n Java no se per"ite indicar en la declaracin delarra+ el nF"ero de ele"entos del "is"o.tipo * -1 * id * * ne( * tipo * - * cantidad * 1 * ;

    Los arra+s en Java tienen 5ndices entre 7 + cantidadA 2.

    &'u( pasa si "e salgo de rango)

  • 8/18/2019 ApéndiceJ2SE

    42/114

     

    3rogra"acin 9rientada a

    90etos en Java #TTTI$ La inicializacin de los ele"entos de un arra+ puede ser:

    Elemento a elemento:tipo-1 id ne( tipo-31;

    id-71 ,alor;id-21 ,alor; $niciali%ación en declaración: 7e usan llaves.tipo-1 id {,alorI ,alor};

    La copia entre arra+s no se puede realizar "ediante laasignacin #&por 2u()$.

    %

  • 8/18/2019 ApéndiceJ2SE

    43/114

     

    3rogra"acin 9rientada a

    90etos en Java #TTTII$ Los arra+s "ultidi"ensionales se declaran

    "ediante el uso de NO consecutivos. Beal"ente son re!erencias 2ue contienen

    re!erencias #arra+s dentro de arra+s$.tipo-1-1 id ne( tipo-cantidad21-cantidad31;

    tipo-1-1 id {{,alorI ,alor}I {,alorI ,alor}}; 3ara acceder a conocer el nF"ero de ele"entos

    de cada di"ensin se usa el "is"o atri0utolength pero desde re!erencias distintas.id.lent' $$ 0ndica la cantidad2

    id-indice1.lent' $$ 0ndica la cantidad3

  • 8/18/2019 ApéndiceJ2SE

    44/114

     

    3rogra"acin 9rientada a

    90etos en Java #TTTIII$ %ntrada/7alida est,ndar.

    ?a,a.lan.!stem.out es de tipo ?a,a.io.Print!tream 2ue tiene los "(todos necesarios para "ostrar

    in!or"acin por la salida est,ndar.?a,a.io.Print!tream.print=>

    ?a,a.io.Print!tream.println=>

    ?a,a.lan.!stem.in es de tipo ?a,a.io.0nput!tream 2ue tiene "(todos "u+ 0,sicos de lectura de in!or"acin

    desde la entrada est,ndar. 3ara leer in!or"acin ",sela0orada #cadenas de caracteres$ se suelen usar o0etosdel tipo ?a,a.io.Bu++eredReader.

    ne( Bu++eredReader=ne( 0nput!treamReader=!stem.in>>

  • 8/18/2019 ApéndiceJ2SE

    45/114

     

    3rogra"acin 9rientada a

    90etos en Java #TTTIT$ %

  • 8/18/2019 ApéndiceJ2SE

    46/114

     

    3rogra"acin 9rientada a

    90etos en Java #TTTT$ Gestin de e

  • 8/18/2019 ApéndiceJ2SE

    47/114

     

    3rogra"acin 9rientada a

    90etos en Java #$ %

  • 8/18/2019 ApéndiceJ2SE

    48/114

     

    3rogra"acin 9rientada a

    90etos en Java #$ 8apeo de tipos pri"itivos en tipos a0stractos.

     Java o!rece dentro del pa2uete ?a,a.lan un"apeo de lo tipos pri"itivos de datos en tipos

    a0stractos #clases$. byte  L@K Bte char  L@K C'aracter short  L@K !'ort int  L@K 0nteer float  L@K 8loat double L@K Double

    %sta caracter5stica tiene "ultitud de utilidades.na de las ",s peculiares es la posi0ilidad deconstruir valores pri"itivos desde valores de tipo

    cadena.

  • 8/18/2019 ApéndiceJ2SE

    49/114

     

    3rogra"acin 9rientada a

    90etos en Java #$ Ejercicio Propuesto: Desarrollar un

    progra"a

    #curso?a,a.param.Parametros$ 2uepresente por pantalla todos lospar,"etros 2ue se le ha+an pasado porl5nea de co"andos.

  • 8/18/2019 ApéndiceJ2SE

    50/114

     

    3rogra"acin 9rientada a

    90etos en Java #$ Ejercicio Propuesto: -rear una clase

    lla"ada EntradaDatos dentro del pa2uetecurso?a,a.util 2ue per"ita leer deteclado valores de tipos de datos pri"itivos: int: leer%ntero double: leerBeal char: leer-aracter !trin: leer-adena

    Bealizar el control correspondiente"ediante iteraciones sucesivas.

  • 8/18/2019 ApéndiceJ2SE

    51/114

     

    3rogra"acin 9rientada a

    90etos en Java #$ Ejercicio Propuesto: Desarrollar un

    progra"a

    #curso?a,a.euros.DesloseCantidad$2ue pida al usuario 2ue introduzca unvalor entero en euros por teclado +desglose dicha cantidad en:

    illetes: YWW\P WW\P 1WW\P YW\P W\P 1W\ 8onedas: \P 1\

    isualizar cada cantidad por pantalla.

  • 8/18/2019 ApéndiceJ2SE

    52/114

     

    3rogra"acin 9rientada a

    90etos en Java #$ Ejercicio Propuesto: Desarrollar un progra"a

    #curso?a,a.aritmetica.Menu#ritmetico$ 2uevisualice repetida"ente un "enF por pantalla dondese puedan seleccionar distintas operaciones a realizar: 1.> 7u"a .> Besta S.> 8ultiplicacin 4.> Divisin Y.> Besto

    =.> &%s pri"o) X.> 7alir.

    Bealizar "odular"ente la progra"acin necesaria pararesolver los c,lculos.

  • 8/18/2019 ApéndiceJ2SE

    53/114

     

    3rogra"acin 9rientada a

    90etos en Java #$ Ejercicio Propuesto: Desarrollar un progra"a

    #curso?a,a.rect.RectanuloRelleno$ 2uepida al usuario 2ue introduzca la 0ase + la

    altura #enteras de no ",s de 1Y$ de unrect,ngulo para di0uarlo usando asteriscos:%%%%%%

    %%%%%%

    %%%%%%

    8odicarlo para 2ue el usuario introduzca el car,ctera usar en el di0uado. 8odicarlo para 2ue di0ue un rect,ngulo sin

    rellenar. #curso?a,a.rect.Rectanuloueco$

  • 8/18/2019 ApéndiceJ2SE

    54/114

     

    3rogra"acin 9rientada a

    90etos en Java #$ Ejercicio Propuesto: Desarrollar un

    progra"a#curso?a,a.adi,ina.#di,inaNumero$2ue calcule un nF"ero aleatorio entre 1 +1WW + pida sucesiva"ente al usuario 2ueintente adivinarlo indic,ndole si elnF"ero aleatorio es "a+or o "enor al

    nF"ero 2ue ha+a introducido. 8odicarlo para 2ue el usuario pueda decidir

    si 2uiere o no ugar una vez acertado elnF"ero.

  • 8/18/2019 ApéndiceJ2SE

    55/114

     

    3rogra"acin 9rientada a

    90etos en Java #$ %l o0eto t'is.

    La re!erencia para poder usar %L o0eto

    desde el cdigo de una clase. 7ie"pre accesi0le en entornos no est,ticos. ;o es o0ligatorio ",s 2ue en algunas

    ocasiones:

    3ara poder lla"ar a un constructor desde otroconstructor. De0e ser la pri"era instruccin delconstructor.

    %n casos de a"0ig]edad entre datos "ie"0ro +varia0les locales de un "(todo.

  • 8/18/2019 ApéndiceJ2SE

    56/114

     

    3rogra"acin 9rientada a

    90etos en Java #$ Belaciones entre o0etos. Las clases no son conceptos independientes. La 399 per"ite "odelar en do"inio del pro0le"a a nivel de

    progra"acin de !or"a casi directa. Ha+ dos tipos de relaciones.

    $nclusión: Dene la relacin ... tiene un ...M. 7e "aterializa"ediante un atri0uto de una clase en otra. n atri0uto de laclase es un o0eto de otra clase

    )erencia: Dene la relacin ... es un ...M. 7e "aterializa"ediante la generalizacin de una clase so0re otra.

  • 8/18/2019 ApéndiceJ2SE

    57/114

     

    3rogra"acin 9rientada a

    90etos en Java #$ Herencia.

    Herra"ienta 2ue per"ite generalizarconceptos.

    7e crea una erar2u5a. Los conceptos padreMdenen caracter5sticas co"unes 2ue losconceptos hioM heredan co"o propias.

     Java no per"ite la herencia "Fltiple. 7e usa la pala0ra reservada e)tendsM para

    relacionar las dos clases.class ClaseDeri,ada extends ClaseBase

  • 8/18/2019 ApéndiceJ2SE

    58/114

     

    3rogra"acin 9rientada a

    90etos en Java #$ -on esta nueva !or"a de relacionar

    conceptos surge un nuevo tipo de

    encapsulacin: protegida. 7e usa la pala0ra reservada protectedM. Dene "ie"0ros 2ue son accesi0les desde la

    propia clase + desde las clases derivadas.

    Ade",sP es e2uivalente a la encapsulacinpF0lica para clases del "is"o pa2uete.

  • 8/18/2019 ApéndiceJ2SE

    59/114

     

    3rogra"acin 9rientada a

    90etos en Java #$ %ncapsulacin.

    Encapsulación

    Desde laclase

    Desde clasederivada

    Desde clasedel paquete

    Desde clasede otro

    paquete

    pri,ate T

    en blanco T T

    protected T T T

    public T T T T

  • 8/18/2019 ApéndiceJ2SE

    60/114

     

    3rogra"acin 9rientada a

    90etos en Java #$ Gracias a la herencia se per"ite poder re!erenciar

    a un o0eto de tipo derivado co"o tipo 0ase."ipoBase ob?Base ne( "ipoDeri,ado=>;

    %sta utilidad per"ite poder tratar de la "is"a!or"a a todos los ele"entos derivados #est(n enel punto en el 2ue est(n dentro de la erar2u5a$."ipoBase-1 arra ne( "ipoBase-cantidad1;

    arra-indice71 ne( "ipoDeri,ado2=>;

    arra-indice21 ne( "ipoDeri,ado3=>;

  • 8/18/2019 ApéndiceJ2SE

    61/114

     

    3rogra"acin 9rientada a

    90etos en Java #$ Los o0etos derivados se constru+en en cascadaP e"pezandodesde la clase ",s 0aseM hacia a0ao. As5 puede o0servarsereal"ente 2ue cuando se crea un o0eto derivadoP real"ente secrean los o0etos 0ase ta"0i(n.

    %ste co"porta"iento tiene sus i"plicaciones cuando se pierde elconstructor por de!ecto: Ha+ 2ue lla"ar e

  • 8/18/2019 ApéndiceJ2SE

    62/114

     

    3rogra"acin 9rientada a

    90etos en Java #$ 3oli"ors"o.

    na caracter5stica de la 399 aplica0le a los

    "(todos. 3er"ite eecutar un cdigo de "(tododistinto segFn el o0eto 2ue se ha+ainstanciado + al 2ue se re!erencie.

    ;ecesidades para 2ue se d( en Java: Belacin de herencia. %

  • 8/18/2019 ApéndiceJ2SE

    63/114

     

    3rogra"acin 9rientada a

    90etos en Java #$ -lases a0stractas.

    7on clases declaradas con la pala0ra reservadaabstractM. public abstract class ClaseDeclarada#bstracta{ ...

    ;o se pueden instanciar #no se puede hacer new ClaseDeclarada#bstracta$.

    7u Fnica nalidad es 2ue otras clases hereden deellas. 7irven para poder i"ple"entar conceptos 2ue no

    de0an e

  • 8/18/2019 ApéndiceJ2SE

    64/114

     

    3rogra"acin 9rientada a

    90etos en Java #$ Los "(todos puede declararse con la pala0ra

    reservada abstractM public abstract void  metodo=>;

    %stos "(todos no pueden tener cuerpo #se poneun ;K al nal directa"ente$.

    na clase con al "enos un "(todo a0stractoPde0e declararse a0stracta.

    La caracter5stica de la a0straccin se propagapor la erar2u5a. Los "(todos a0stractosde0er,n ser i"ple"entados gracias alpoli"ors"o en clases derivadas.

  • 8/18/2019 ApéndiceJ2SE

    65/114

     

    3rogra"acin 9rientada a

    90etos en Java #$ Inter!aces. %l ",

    }

    3uede tener datos. Los "(todos se declaran de !or"a nor"al #sin abstractM$ + denen la

    signatura a i"ple"entar en las clases 2ue i"ple"enten la inter!az. Las clases pueden i"ple"entar todas las inter!aces 2ue 2uieran. 7e usa la

    pala0ra reservada i"ple"entsM.public class ClaseCon0nter+aW implements Nombre0nter+aW

  • 8/18/2019 ApéndiceJ2SE

    66/114

     

    3rogra"acin 9rientada a

    90etos en Java #$ La a0straccin per"ite denir inter!aces#signaturas de "(todos$ 2ue gracias alpoli"ors"oP i"ple"entar,n las clases

    derivadas/i"ple"entadoras. Gracias a 2ue un o0eto creado co"o derivado

    puede re!erenciarse desde un tipo de datos 0ase#clase a0stracta o inter!az$P se puede eecutarcdigo distinto segFn el o0eto derivado sin tener2ue conocerlo.Clase#bstracta-1 ob?#bs ne( Clase#bstracta-cantidad1;

    ob?#bs-indice71 ne( Clase0mplementadora2=>;

    ob?#bs-indice21 ne( Clase0mplementadora3=>;

  • 8/18/2019 ApéndiceJ2SE

    67/114

     

    3rogra"acin 9rientada a

    90etos en Java #$ 8(todos + clases +inalM. 7i se indica en un "(todoP no se podr, poli"or!earM

    ese "(todo en clases derivadas.class MiClase

    {public +inal ,oid metodoNoPolimor+eable=>

    { ... 7i se indica en una claseP no se podr, heredar de dicha

    clase.

    +inal class ClaseNoeredable{ ...

    3or ee"ploP los tipos de datos 0,sicos "apeados enclases son de tipo +inal.

  • 8/18/2019 ApéndiceJ2SE

    68/114

     

    3rogra"acin 9rientada a

    90etos en Java #$ 8ediante el operador instanceo+M

    se pueden conocer los tipos

    a0stractos de un o0eto 2ue se crecon el operador ne(M.boolean b =ob?eto instanceo+ "ipoClase>;

  • 8/18/2019 ApéndiceJ2SE

    69/114

     

    3rogra"acin 9rientada a

    90etos en Java #$ %e"plos de uso de herencia/poli"ors"o:

    %"presa ^ %"pleados. Lectura / %scritura de datos. #T8LP PrintZriter 

    #!stem.out o en 7ervlets$P etc.$ %ditor gr,co. 3ro!esor ^ -one

  • 8/18/2019 ApéndiceJ2SE

    70/114

     

    3rogra"acin 9rientada a

    90etos en Java #$ -onsecuencias del poli"ors"o:

    *mpliable: 3er"ite poder añadir nuevos tiposde datos co"pleta"ente nuevos. 3lug>ins.

    'eusable: 3er"ite denir ele"entos 2ue usanuna inter!az + 2ue pueden co"pilarse una solavez + durar,n para sie"preM.

    +le&ible: 7e puede ca"0iar el co"porta"iento

    de !or"a "u+ sencilla #un si"ple neE$. $ndependencia: Los "dulos se independizan.

    7e podr5an incluso desarrollar en paralelo.

  • 8/18/2019 ApéndiceJ2SE

    71/114

     

    3rogra"acin 9rientada a

    90etos en Java #$ %

  • 8/18/2019 ApéndiceJ2SE

    72/114

     

    3rogra"acin 9rientada a

    90etos en Java #$ lo2ue +inall %sta pala0ra reservada per"ite indicar un 0lo2ue de cdigo 2ue se

    eecutar, sie"pre tanto si se lanza una e

  • 8/18/2019 ApéndiceJ2SE

    73/114

     

     Jar 3er"ite conseguir en un chero englo0ar distintos

    cheros o0eto. 7e encuentra en el directorio bin del JD.  Ciene diversas opciones

    c: crear un chero .ar. ,: -rear una salida con in!or"acin ",s detallada del proceso. +: Indicar el no"0re del chero. ): e

  • 8/18/2019 ApéndiceJ2SE

    74/114

    3atrones de diseño Diseños esta0lecidos para poder dar

    soluciones a pro0le"as co"unes.

    san las herra"ientas de laorientacin a o0etos co"o 0ase peropueden ser i"ple"entados encual2uier lenguae orientado ao0etos #avaP -P 7"alltal_P -`P ...$

  • 8/18/2019 ApéndiceJ2SE

    75/114

    3atrones de diseño 7ingleton

    3lantea"iento: &-"o puedo conseguir controlar elnF"ero de instancias 2ue se van a crear de una clase)

    7olucin: -ontrol %ncapsulacin. -reacin -onstructores. -o"0inacin -onstructores privados.

    &-"o conseguir 2ue se pueda construir desde dentrosi no puedo construir) Acceso "ediante un "(todoest,tico. -ontrol "ediante varia0les est,ticas #Fnicas$.

  • 8/18/2019 ApéndiceJ2SE

    76/114

    3atrones de diseño public class !inleton

    {

     private static !inleton instance null;

     private !inleton=>

    {}

     public static !inleton et0nstance=>

    {

    if =instance null>

    instance new !inleton=>;return instance;

    }

    }

  • 8/18/2019 ApéndiceJ2SE

    77/114

    3atrones de diseño 90server

    3lantea"iento: &-"o puedo avisar de ciertoco"porta"iento de una clase a todos a2uellos2ue 2uieran conocerlo independiente"ente de2ui(n 2uiera conocerlo)

    7olucin: Independencia a0straccin inter!az. Ha+ dos ele"entos:

    Generador 90serva0le. %scuchador 90server.

  • 8/18/2019 ApéndiceJ2SE

    78/114

    3atrones de diseño

  • 8/18/2019 ApéndiceJ2SE

    79/114

    3atrones de diseño %l patrn 90server en la A3I de Java.

  • 8/18/2019 ApéndiceJ2SE

    80/114

    Acceso a ases de Datos

    en Java #I$ so de la A3I JD- #Java Data ase

    -ontrol$ 7e trata de una A3I 2ue dene

    inter!aces de acceso a datosco"pleta"ente independientes de lai"ple"entacin real de dichos datos.

    La A3I englo0a a distintos conceptosdenidos en el pa2uete ?a,a.sql.

  • 8/18/2019 ApéndiceJ2SE

    81/114

    Acceso a ases de Datos

    en Java #II$ %l acceso a la i"ple"entacin de datos lo realiza un

    driver concreto. %sta carga se realiza usando la A3I de reection de Java.Class.+orName=NOMBRECONP#[E"E!DE/#C/#!EDR0VER; Los drivers no son ",s 2ue clases Java.

    %l acceso real se realiza a trav(s de cone

  • 8/18/2019 ApéndiceJ2SE

    82/114

    Acceso a ases de Datos

    en Java #III$ -onsultas con JD-

    De la cone

    Prepared!tatementprepare!tatement=!trin>

    de Connection.

  • 8/18/2019 ApéndiceJ2SE

    83/114

    Acceso a ases de Datos

    en Java #I$ La inter!az !tatement per"ite controlar las sentencias.%n su uso ",s sencillo per"ite: Actualizacin:

    DE/E"EI PD#"EI 0N!ER"int e)ecutepdate=!trin> $$ De,uel,e el n` de elementos actualiWados

    -onsulta: !E/EC"

    Result!et e)ecute[uer=!trin> $$ De,uel,e una ,ista

    La inter!az 3repared7tate"ent e$ en orden 1 a;.

  • 8/18/2019 ApéndiceJ2SE

    84/114

    Acceso a ases de Datos

    en Java #$ %l recorrido de un o0eto 2ue i"ple"ente lainter!az Besult7et:Result!et rs \\\\\;

    ('ile=rs.ne)t=>>{

    }

    Ahora se pueden ir e

  • 8/18/2019 ApéndiceJ2SE

    85/114

    Acceso a ases de Datos

    en Java #I$ Acceso a 8etaDatos

    3er"ite conocer la estructura de la 0ase de datos

    #no su contenido$. 7e usan las inter!aces:

    DataBase,etaData: Aporta toda la in!or"acinacerca del acceso a datos #no"0res de ta0lasP colu"nasde una ta0laP pri"ar+ _e+sP !oreign _e+sP ...$. 7e e 'esult-et,etaData: Aporta in!or"acin so0re la

    vista. 7e e

  • 8/18/2019 ApéndiceJ2SE

    86/114

  • 8/18/2019 ApéndiceJ2SE

    87/114

    7Eing #II$  Codo co"ponente visual hereda de?a,a.a(t.Component.

    Dene lo 0,sico:  Ca"año. 3osicin. Di0uado. isi0ilidad/Ha0ilitacin. %ventos:

     Ceclado Batn Bedi"ensionado  Jerar2u5a.

  • 8/18/2019 ApéndiceJ2SE

    88/114

    7Eing #III$ Ade",s de ha0er una erar2u5a de clasesP AbCP +

    por tanto 7EingP dene una erar2u5a deco"ponentes "ediante inclusin.

  • 8/18/2019 ApéndiceJ2SE

    89/114

    7Eing #I$ La clase ContainerP ade",s de ser unComponentP per"ite al"acenar

    Components. Container tiene un Component. De esta !or"a se puede hacer 2ue algunos

    co"ponentes contengan a otrosP 2ue a su

    vez pueden ser contenedores de otros etc... %sta relacin se crea usando el "(todo add.

  • 8/18/2019 ApéndiceJ2SE

    90/114

    7Eing #$ Aun2ue se puede usar AbCP 7Eing es

    todav5a ",s independiente de plata!or"a.

    7Eing añade nuevas !uncionalidadesavanzadas. AbC + 7Eing poseen in"ensidad de

    !unciona"iento internoP desde control de

    hilos independientes hasta co"unicacinnativa con el 7iste"a 9perativo.

  • 8/18/2019 ApéndiceJ2SE

    91/114

    7Eing #I$ entana:

    %n AbC: ?a,a.a(t.8rame %n 7Eing: ?a,a).s(in.+rame Beal"ente la de 7Eing e

  • 8/18/2019 ApéndiceJ2SE

    92/114

    7Eing #II$ 8(todos principales:

    ,oid setVisible=boolean>: 3er"ite visualizar ono un co"ponente.

    ,oid dispose=>: -ierra la ventana. ,oid set!iWe=intI int>: Asigna un ta"año a un

    co"ponente. bidth ancho Height alto.

    ?a,a.a(t.Dimension et!iWe=>: 3er"iteconocer el ta"año de un co"ponente.

    ,oid setEnabled=boolean>: 3er"iteha0ilitar/Desha0ilitar un co"ponente.

  • 8/18/2019 ApéndiceJ2SE

    93/114

    7Eing #III$ 3anel:

    %n AbC: ?a,a.a(t.Panel.

    %n 7Eing: ?a,a).s(in.Panel. %n este caso no ha+ relacin herencia. %s el contenedor ",s sencillo. 7u utilidad suele ser la de poder "anear

    los co"ponentes 2ue englo0a desde unFnico punto.

    A+uda a organizar los co"ponentes.

  • 8/18/2019 ApéndiceJ2SE

    94/114

    7Eing #IT$ La0el:

    %n AbC: ?a,a.a(t./abel. %n 7Eing: ?a,a).s(in./abel. %n este caso no ha+ relacin de herencia. 3er"ite visualizar un te: Asigna el te

  • 8/18/2019 ApéndiceJ2SE

    95/114

    7Eing #T$ -uadros de te: Asigna el te

  • 8/18/2019 ApéndiceJ2SE

    96/114

    7Eing #TI$ reas de te: Asigna el te

  • 8/18/2019 ApéndiceJ2SE

    97/114

    7Eing #TII$ otones:

    Los ha+ de "uchos tipos. %l tipo 0,sico:

    %n AbC: ?a,a.a(t.Button. %n 7Eing: ?a,a).s(in.Button.

    %n este caso no ha+ relacin de herencia. 8(todos principales:

    ,oid set/abel=!trin>: Asigan el te: Becoge el te

  • 8/18/2019 ApéndiceJ2SE

    98/114

    7Eing #TIII$ otones con estado:

    %n AbC: ?a,a.a(t.C'ecTBo). %n 7Eing: ?a,a).s(in.C'ecTBo). %n este caso no ha+ relacin de herencia. 8(todos principales:

    ,oid set/abel=!trin>: Asigan el te: Becoge el te: Becoge el estado #slo en AbC$.

  • 8/18/2019 ApéndiceJ2SE

    99/114

    7Eing #TI$ -ontenedores de ite"s:

    Listas: %n AbC: ?a,a.a(t./ist 8(todos:

    ,oid add=!trin>: Añade un ele"ento. ,oid remo,e=!trin>: %li"ina un ele"ento. ,oid remo,e=int>: %li"ina un ele"ento segFn su posicin. int et0temCount=>: Indica el n de ele"entos 2ue contiene. !trin et0tem=int>: Becoge un ele"ento segFn su posicin. !trin-1 et0tems=>: Becoge todos los ele"entos.

    int et!elected0nde)=>: Becoge el 5ndice del ele"ento seleccionado. ,oid select=int>: Indica cFal de0e ser el ele"ento seleccionado. ,oid setMultipleMode=boolean>: 3er"ite aplicar la seleccin "Fltiple. boolean isMultipleMode=>: Indica si per"ite seleccin "Fltiple. !trin-1 et!elected0tems=>: Becoge los ele"entos seleccionados.

  • 8/18/2019 ApéndiceJ2SE

    100/114

    7Eing #T$ %n 7Eing: ?a,a).s(in./ist 3ara "odicar su contenido se le asocia un concepto 2ue i"ple"ente la

    inter!az ?a,a).s(in./istModel. %: Añade un ele"ento en una posicin. ,oid addElement=Ob?ect>: Añade un ele"ento al nal. Ob?ect et=int>: Becoge un ele"ento de una posicin. int et!iWe=>: Indica el n de ele"entos. ,oid remo,e=>: %li"ina ele"ento. Beci0e o un int o un Ob?ect.

    8(todos de /ist: ,oid setModel=/istModel>: Asigna un "odelo. int et!elected0nde)=>: Indica el ele"ento seleccionado. int-1 et!elected0ndices=>: Indica los ele"entos seleccionados. int et!electionMode=>: n valor denido en /ist!electionModel.

  • 8/18/2019 ApéndiceJ2SE

    101/114

    7Eing #TI$ -o"0o 0o: Becoge un ele"ento de una posicin. int et!iWe=>: Indica el n de ele"entos. ,oid remo,eElement=Ob?ect>: %li"ina un ele"ento.

    8(todos de ComboBo): ,oid setModel=ComboBo)Model>: Asigna un "odelo. int et!elected0nde)=>: Indica el ele"ento seleccionado. int-1 et!elected0ndices=>: Indica los ele"entos seleccionados. int et!electionMode=>: n valor denido en /ist!electionModel.

  • 8/18/2019 ApéndiceJ2SE

    102/114

    7Eing #TII$ La+outs: 7e denen ciertos conceptos para

    poder organizar los co"ponentes dentro deun Container.

    Los La+outs denen la inter!az/aoutManaer + se relacionan con el-ontainer "ediante el "(todo,oid set/aout=/aoutManaer>

    %l uso del La+out se especica al añadir elco"ponente al Container "ediante lasso0recargas del "(todo add=>.

  • 8/18/2019 ApéndiceJ2SE

    103/114

    7Eing #TIII$ ?a,a.a(t.Border/aout

    3er"ite ordenar co"ponentes de un -ontainerusando los puntos cardinales:

    ;9BCHP 79CHP %A7CP b%7C + -%;C%B. %stas constantes est,n denidas en la propia clase

    orderLa+out.contenedor.add=componenteI Border/aout.NOR">

    ?a,a.a(t.8lo(/aout 9rdena los co"ponentes de un Container deiz2uierda a derecha secuencial"ente segFn elorden de inclusin usando el "(todo add=>.

  • 8/18/2019 ApéndiceJ2SE

    104/114

    7Eing #TIT$ ?a,a.a(t.^rid/aout

    3er"ite ordenar los co"ponentes de un-ontainer en !or"a de "atriz 0idi"ensional.

    La propia clase tiene "(todos para poderespecicar las di"ensiones de la "atriz.

    Los co"ponentes se van asignando

    a la "atriz de iz2uierda a derecha +de arri0a a0ao al utilizar el "(todoadd#$.

  • 8/18/2019 ApéndiceJ2SE

    105/114

    7Eing #TT$ Gestin de %ventos:

    7e utiliza el patrn o0server pero coni"ple"entaciones particulares segFn el

    co"ponente + los eventos. 7e dene una inter!az \\\/istener 2ue se

    asocia con el generador "ediante "(todos deladd\\\/istener o remo,e\\\/istener.

    3ara cada \\\/istener con ",s de un"(todoP e

  • 8/18/2019 ApéndiceJ2SE

    106/114

    7Eing #TTI$ %ventos co"unes #Inter!aces asociadas$:

    ?a,a.a(t.Component ?a,a.a(t.e,ent.Component/istener: %ventos relacionados con lo general

    en un co"ponente.

    ?a,a.a(t.e,ent.e/istener: %ventos de teclado. 7lo son activos

    cuando el co"ponente tiene el !oco. ?a,a.a(t.e,ent.Mouse/istener: %ventos de ratn. 7lo re!erentes al

    co"ponente. ?a,a.a(t.e,ent.MouseMotion/istener: %vntos de ratn en "ovi"iento +

    drag>and>drop. ?a,a.a(t.Container

    ?a,a.a(t.e,ent.Container/istener: %ventos relacionados con la erar2u5a de co"ponentes. ?a,a.a(t.Zindo(

    ?a,a.a(t.e,ent.Zindo(/istener: %ventos relacionados con una ventana.

  • 8/18/2019 ApéndiceJ2SE

    107/114

    7Eing #TTII$

    ?a,a.a(t.ButtonI ?a,a.a(t./istI ?a,a.a(t."e)t8ieldI?a,a).s(in.#bstractButtonI ?a,a).s(in.ComboBo)I ?a,a.a(t.e,ent.#ction/istener: %vento 2ue se lanza cuando

    se actFa so0re el co"ponente. ?a,a.a(t.C'ecTBo)I ?a,a.a(t./ist

    ?a,a.a(t.e,ent.0tem/istener: %vento 2ue se lanza cuando ha+un ca"0io de seleccin.

    ?a,a.a(t."e)tComponent ?a,a.a(t.e,ent."e)t/istener: %vento relacionado con el

    ca"0io del te

  • 8/18/2019 ApéndiceJ2SE

    108/114

    Ant Herra"ienta para denir tareas a realizar. %l so!tEare se puede conseguir en

    EEE.ant.apache.org  7i"ple"ente 0asta con desco"pri"ir. Ha+ 2ue añadir algunas varia0les del siste"a:

    #N"OME: %l directorio 0ase donde est, instalado

    Ant. ;o es "ala idea añadir el directorio 0in de la

    instalacin de Ant a la varia0le P#".

    http://www.antapache.org/http://www.antapache.org/

  • 8/18/2019 ApéndiceJ2SE

    109/114

    Ant %le"entos de un chero uild*ile de

    Ant:

    3ro+ecto: n conunto de o0etivos.pro?ect Atri0utos:

    name: %l no"0re del pro+ecto. ;o es o0ligatorio.

    de+ault: %l o0etivo por de!ecto 2ue se eecutar,. %so0ligatorio. basedir: La ruta so0re la 2ue tra0aar. ;o es

    o0ligatorio.

  • 8/18/2019 ApéndiceJ2SE

    110/114

    Ant 90etivo: %s un conunto de tareas. taret

    Atri0utos: name: %l no"0re del o0etivo. %s o0ligatorio. depends: 3er"ite indicar 2ue un o0etivo depende de la

    eecucin de otro#s$. Los distintos o0etivos se indicanseparados por co"as. ;o es o0ligatorio. i+: 3er"ite condicionar la eecucin de un o0etivo a la

    e

  • 8/18/2019 ApéndiceJ2SE

    111/114

    Ant Careas: tasT

    Lname attrib3,alue2< attrib3,alue3< ...$K

    %n los valores se puede hacer re!erencia a

    propiedades denidas con anterioridad. %

  • 8/18/2019 ApéndiceJ2SE

    112/114

    Ant 3ropiedades: 7e denen "ediante la tarea propert o

    !uera de Ant. 7e les asigna un no"0re con el atri0uto name. 3ara poder tener acceso a ellas se pueden usar indicando el

    no"0re entre { + }K. Ant per"ite acceso a las varia0les del siste"a. n listado de

    las "is"as se puede o0tener en la docu"entacin de la A3Ide ava en el "(todo ?a,a.lan.!stem.etProperties.

    Ade",s Ant posee otras propiedades.basedir

    ant.+ile

    ant.,ersionant.pro?ect.name

    ant.?a,a.,ersion

  • 8/18/2019 ApéndiceJ2SE

    113/114

    AntLpro?ect nameMPro?ect de+aultdist basedir.K

    LdescriptionK

    simple e)ample build +ile

    L$descriptionK

    Lpropert namesrc locationsrc$K

    Lpropert namebuild locationbuild$K

    Lpropert namedist locationdist$K

    Ltaret nameinitKLtstamp$K

    LmTdir dir{build}$K

    L$taretK

    Ltaret namecompile dependsinit descriptioncompile t'e sourceK

    L?a,ac srcdir{src} destdir{build}$K

    L$taretK

    Ltaret namedist dependscompile descriptionenerate t'e distributionK

    LmTdir dir{dist}$lib$K

    L?ar ?ar+ile{dist}$lib$MPro?ect@{D!"#MP}.?ar basedir{build}$K

    L$taretK

    Ltaret nameclean descriptionclean up K

    Ldelete dir{build}$K

    Ldelete dir{dist}$K

    L$taretK

    L$pro?ectK

  • 8/18/2019 ApéndiceJ2SE

    114/114

    Ant Las tareas LpropertKP Ltpede+K +LtasTde+K son especiales + se per"itedenirlas !uera de un o0etivo.

    -uando se añade el atri0uto description a un o0etivoP es co"o si se declarasepF0lico.