Apostila de JAVAApostila de Java Grupo PET

Embed Size (px)

Citation preview

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    1/61

    Apostila de JAVAApostila de Java Grupo PET - Informtica

    Sumrio

    1. Introduo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! "#

    1.1. $ %ue & JAVA' !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! "#

    1.(. $ %ue & uma Applet !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! "#

    1.#. $ %ue & uma Aplicao !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! "#

    1.). $ %ue & o Appletvie*er !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! "#

    1.+. $ %ue & Applet no ,,, !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! "#

    1.. riando uma Aplicao !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ")

    1./. riando uma Applet !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ")

    (. $ 0sico !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! "

    (.1 Variveis e tipos de dados !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! "

    (.(. omentrios !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! "

    (.#. aracteres Especiais !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! "/

    (.). Epress2es e $peradores !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! "/

    (.+. ompara2es !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! "3

    #. Arra4s5 6oops e ondicionais !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1"

    #.1. Arra4s !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1"

    #.(. ondicionais !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 11

    #.#. $perador ondicional !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1(

    #.). S*itc7 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1(

    #.+. 6oop 8or !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1#

    #.. 6oop ,7ile !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1#

    #./. 6oop 9o !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1#

    ). riando lasses e Aplica2es em Java !!!!!!!!!!!!!!!!!!!!!!!!!!! 1)

    ).1. 9e:nindo lasses !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1)

    ).(. 9e:nindo Variveis de Inst;ncia !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1)

    ).#. onstantes !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1)

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    2/61

    ).). Variveis de lasse !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1)

    ).+. 9e:nio de Hetos desenvolvidapela Sun

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    3/61

    Esta porta>ilidade & o>tida pelo fato da lin=ua=em ser interpretada5 ou seHa5o compilador =era um

    cdi=o independente de m%uina c7amado >4te-code. Do momento daeecuo este >4te-code &

    interpretado por uma m%uina virtual instalado na m%uina. Para portarJava para uma ar%uitetura

    7ad*areKs especL:ca5 >asta instalar a m%uina virtual MinterpretadorN. Al&mde ser inte=rada O

    Internet5 Java tam>&m & uma ecelente lin=ua=em para desenvolvimento deaplica2es em =eral. 9

    suporte ao desenvolvimento de soft*are em lar=a escala.

    1.(. $ %ue & uma APP6ET'

    Applet & um pro=rama especial escrito em Java adaptado para instalao eeecuo dentro

    de p=inas Tro*ser.

    1.#. $ %ue & uma AP6IAF$'

    Aplicao & um pro=rama mais =eral escrito na lin=ua=em Java. Do re%uerum >ro*ser

    para sua eecuo. 9e fato5 Java pode ser usada para criar todo tipo deaplica2es %ue usualmente

    vocC implementa com outras lin=ua=ens mais convencionais.

    1.). $ %ue & o APP6ETVIE,EB'

    Quem criou o Java espera %ue todos os >ro*sers al=um dia suportem asapplets5 o %ue no

    acontece ainda. Para facilitar o desenvolvimento de aplica2es5 foi criado o

    Appletvie*er %ue

    mostra apenas a rea onde & eecutada applet. 9epois de testar >em seucdi=o com o

    Appletvie*er5 vocC deve ento test-lo com al=uns >ro*sers %ue suportemJava para ver o efeito

    :nal.

    1.+. $ %ue & APP6ET no ,,,

    As applets so disparadas %uando se carre=a uma p=ina T

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    4/61

    de cdi=o Tasta di=itar o comandoWHavac ello,orld.Hava

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    5/61

    Este comando vai =erar o ar%uivo ello,orld.class5 %ue & o >4te-code daaplicao. Para

    eecutar o >4te-code >asta di=itar o comandoW

    Hava ello,orld

    1./. riando uma APP6ET

    riar uma applet & diferente de criar uma simples aplicao por%ue umaapplet & eecutada

    e visualiada dentro de uma p=ina Tlic class ello,orldApplet etends Hava.applet.Applet Z

    pu>lic void paint MGrap7ics =N Z

    =.dra*Strin= MXello ,orldY5+5(+N]

    ^

    ^Apostila de Java Grupo PET - Informtica

    P=ina +

    1./.(. ompilando a applet

    Para compilar a applet5 >asta di=itar o comandoW

    Havac ello,orldApplet.Hava

    Este comando vai =erar o ar%uivo ello,orldApplet.class5 %ue & o >4te-code da applet.

    Para eecutar o >4te-code & necessrio 7aver uma p=ina T

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    6/61

    RKEA9

    R0$9

    RAPP6ET $9EUello,orldApplet.class ,I9TU#"" EIGTU1""

    RKAPP6ET

    RK0$9

    RKTro*ser

    %ue suporte Hava ou do appletvie*er utiliando-se do comando a se=uirW

    appletvie*er eemplo1.7tmlApostila de Java Grupo PET - Informtica

    P=ina

    (. $ 0_SI$

    (.1. Variveis e tipos de dados

    Variveis so aloca2es de memria nas %uais podemos =uardar dados. ElastCm um nome5

    tipo e valor. Toda ve %ue necessite usar de uma varivel vocC precisadeclar-la e s ento poder

    atri>uir valores a mesma.

    (.1.1. 9eclarando variveis

    As declara2es de variveis consistem de um tipo e um nome de varivelWcomo se=ue o

    eemploW

    int idade]

    Strin= nome]

    >oolean eiste]

    $s nomes de variveis podem comear com uma letra5 um su>lin7ado M ! N5ou um cifro

    M`N. Elas no podem comear com um nmero. 9epois do primeiro caracterpode-se colocar

    %ual%uer letra ou nmero.

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    7/61

    (.1.(. Tipos de variveis

    Toda varivel deve possuir um tipo. $s tipos %ue uma varivel pode assumiruma das trCs

    Xcoisas a se=uirW

    b ma das oito primitivas >sicas de tipos de dados

    b $ nome de uma classe ou interface

    b m Arra4

    Veremos mais so>re o uso de arra4s e classes mais a frente.

    $s oito tipos de dados >sicos soW inteiros5 nmeros de ponto-utuante5caracteres e >ooleanos

    Mverdadeiro ou falsoN.

    Tipos InteirosW

    Tipo Taman7o Alcance

    >4te 3 >its -1(3 at& 1(/

    s7ort 1 >its -#(./3 at& #(.//

    int #( >its -(.1)/.)3#.)3 at& (.1)/.)3#.)/

    lon= ) >its -?((##/("#3+)//+3"3 at& ?((##/("#3+)//+3"/

    Eistem dois tipos de nmeros de ponto-utuanteW oat M #( >its5 precisosimplesN e dou>le

    M) >its5 preciso duplaN.

    (.1.#. Atri>ui2es a variveis

    Aps declarada uma varivel a atri>uio & feita simplesmente usando ooperador UW

    idade U 13]

    eiste U true]

    (.(. omentrios

    Java possui trCs tipos de comentrio5 o K e K como no e . Tudo %ueestiver entre os

    dois delimitadores so i=noradosWApostila de Java Grupo PET - Informtica

    P=ina /

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    8/61

    K Este comentrio :car visLvel somente no cdi=o o compilador i=norar

    completamente este trec7o entre os delimitadores

    K

    9uas >arras MKKN tam>&m podem ser usadas para se comentar uma lin7aW

    int idade] KK este comando declara a varivel idade

    E :nalmente os comentrios podem comear tam>&m com K e terminarcom K. Este

    comentrio & especial e & usado pelo Havadoc e para =erar umadocumentao API do cdi=o. Para

    aprender mais so>re o Havadoc acesse a 7ome pa=e

    M7ttpWKK***.Havasoft.comN.(.#. aracteres especiais

    aracter Si=ni:cado

    gn Dova 6in7a

    gt Ta>

    g> 0ac@space

    gr Betorno do arrogf X8ormfeed Mavana p=ina na impressoraN

    gg 0arra invertida

    g Apstrofe

    g Aspas

    gddd $ctal

    gdd eadecimal(.). Epress2es e operadores

    (.).1. $peradores Aritm&ticos

    $perador Si=ni:cado Eemplo

    soma # )

    - su>trao + - /

    multiplicao + +K diviso 1) K /

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    9/61

    h mdulo (" h /

    Eemplo Aritm&ticoW

    class Arit7meticTest Z

    pu>lic static void main M Strin=s ar=s[\ N Z

    s7ort U ]

    int 4 U )]

    oat a U 1(.+f]

    oat > U /f]

    S4stem.out.println M X & X X5 4 & X 4 N]

    S4stem.out.println M X 4 U X M 4N N]

    S4stem.out.println M X - 4 U X M - 4N N]

    S4stem.out.println M X K 4 U X M K 4N N]

    S4stem.out.println M X h 4 U X M h 4 N N]Apostila de Java Grupo PET -Informtica

    P=ina 3

    S4stem.out.println M Xa & X a X5 > & X > N]

    S4stem.out.println M X a K > U X M a K > N N]

    ^

    ^Apostila de Java Grupo PET - Informtica

    P=ina ?

    A saLda do pro=rama acima & W

    & 5 4 & )

    4 U 1"

    - 4 U (

    K 4 U 1

    h 4 U (

    a & 1(.+5 > & /

    a K > U 1./3+/1

    (.).(. re atri>ui2es

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    10/61

    Variveis podem atri>uidas em forma de epress2es comoW

    int 5 45 ]

    U 4 U U "]

    Do eemplo as trCs variveis rece>em o valor "]

    $peradores de Atri>uioW

    Epresso Si=ni:cado

    U 4 U 4

    -U 4 U - 4

    U 4 U 4

    KU 4 U K 4

    (.).#. Incrementos e decrementos

    omo no e no o Java tam>&m possui incrementadores edecrementadores W

    4 U ]

    4 U --]

    As duas epress2es do resultados diferentes5 pois eiste uma diferenaentre pre:o e

    su:o. Quando se usa os operadores M ou - - N5 4 rece>e o valor de antes de ser

    incrementado5 e usando o pre:o M ou N acontece o contrario5 4rece>e o valor incrementado

    de .

    (.+. ompara2es

    Java possui vrias epress2es para testar i=ualdade e ma=nitude. Todas asepress2es

    retornam um valor >ooleano Mtrue ou falseN.

    (.+.1. $peradores de comparao

    $perador Si=ni:cado Eemplo

    UU I=ual UU #

    YU 9iferente M Do i=ualN YU #

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    11/61

    R

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    12/61

    Java so o>Hetos %ue podem ser passados e acoplados a outros o>Hetos.

    Arra4s podem conter %ual%uer tipo de elemento valoradoMtipos primitivos ou

    o>HetosN5 mas vocC no pode armaenar diferente tipos em um simplesarra4.

    $u seHa5 vocC pode ter um arra4 de inteiros5 ou um arra4 de strin=s5 ou umarra4

    de arra45 mas vocC no pode ter um arra4 %ue conten7a am>os os o>Hetosstrin=s e

    inteiros.

    A restrio acima descrita si=ni:ca %ue os arra4s implementados em Java

    so =en&ricos 7omo=Cneos5 ou seHa5 um nico arra4 pode armaenar%ual%uer tipo

    de o>Heto com a restrio %ue todos seHam do mesma classe.

    #.1.1. 9eclarando um Arra4W

    Strin= dicult[\]

    Point 7its[\]

    int temp[\]

    $utra alternativa de declaraoW

    Strin=[\ dicult]

    Point[\ 7its]

    int[\ temp]

    #.1.(. riando $>Hetos Arra4sW

    m dos camin7os & usar o operador ne* para criar uma nova inst;ncia de

    um arra45 por

    eemploW

    int[\ temps U ne* int[??\]

    Quando voce cria um o>Heto arra4 usando o operador ne*5 todos os Lndicesso

    inicialiados para vocC M " para arra4s num&ricos5 falso para >oolean5 g"para caracteres5 e D66

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    13/61

    para o>HetosN. VocC tam>&m pode criar e inicialiar um arra4 ao mesmotempo.

    Strin=[\ c7iles U Z XHalapeno5 Xana7eim5 Xserrano 5 XHum>ou5

    Xt7ai^]

    ada um dos elementos internos deve ser do mesmo tipo e deve sertam>&m do mesmo tipo

    %ue a varivel %ue armaena o arra4. $ eemplo acima cria um arra4 deStrin=s c7amado c7iles

    %ue cont&m + elementos.Apostila de Java Grupo PET - Informtica

    P=ina 1(

    #.1.#. Acessando os Elementos do Arra4ma ve %ue vocC tCm um arra4 com valores iniciais5 vocC pode testar emudar os valores

    em cada Lndice de cada arra4.

    $s arra4s em Java sempre iniciam-se na posio " como no . PoreemploW

    Strin=[\ arrU ne* Strin=[1"\]

    arr[1"\Uout]

    Isto provoca um erro de compilao pois o Lndice 1" no eiste5 pois istoest fora das

    >ordas do arra4.

    arr[?\ U Xinside]

    Esta operao de atri>uio & vlida e insere na posio ? do arra45 a strin=Xinside.

    #.1.). Arra4s

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    14/61

    $ condicional cont&m a palavra c7ave if5 se=uido por um teste >ooleano.m opcional else

    como palavra c7ave pode ser eecutado na caso do teste ser falso5EemploW

    if M R 4N

    S4stem.out.printlnMX e menor do %ue 4N]

    else

    S4stem.out.printlnMX 4 e maiorN]

    Dota t&cnicaW A diferena entre o if em Java e ou & %ue o teste deveretornar um

    valor >ooleanoMtrue ou falseN.#.(.1. 0loco

    m >loco & de:nido por MZ^N e cont&m um =rupo de outros >locos. Quandoum novo >loco

    & criado um novo escopo local & a>erto e permite a de:nio de variveislocais. As variveis

    de:nidas dentro de um >loco s podem ser vistas internamente a este5 eso terminadas ou etintas

    no :nal da eecuo desteM^N.Apostila de Java Grupo PET - Informtica

    P=ina 1#

    void test>loc@MNZ

    int U 1"5 *U1]

    if M *N

    Z KK inicio do >loco

    int 4U+"]

    S4stem.out.printlnMXdentro do >locoN]

    S4stem.out.printlnMXW N]

    S4stem.out.printlnMX4W 4N]

    ^ KK :nal do >loco

    S4stem.out.printlnMX*W *N]

    S4stem.out.printlnMX4W 4N] KK erro varivel no con7ecida

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    15/61

    ^

    #.#. $ operador ondicional

    ma alternativa para o uso do if e else & um operador ternrio condicional.Este operador

    ternrio M'W N 5 & c7amado assim por%ue tem trCs termos como par;metro.

    EemploW

    test ' trueresult W falseresult

    int menor U R 4 ' W 4 ] KK A varivel menor rece>e o valor do menor

    entre e 4.

    #.). $ s*itc7

    m comum mecanismo para su>stituio de ifs %ue pode ser usado para um=rupo de testes

    e a2es Hunto a um simples a=rupamento5 c7ama-se s*itc7.

    s*itc7 MtesteNZ

    case valorum]

    resultum]

    >rea@]

    case valordois]

    resultdois]

    >rea@]

    case valortresW

    resulttres]

    >rea@]

    defaultW defaultresult]

    ^

    $ valor & comparado com cada um dos casos relacionados. Se acom>inao no for

    encontrada5 o >loco default eecutado. $ default & opcional5 ento casoeste no esteHa

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    16/61

    associado ao comando5 o >loco do s*ict7 sem eecutar nada.Apostila deJava Grupo PET - Informtica

    P=ina 1)

    #.+. 6oopin= 8or

    $ loop em Java tem esta sintaeW

    forMinicialiao] teste] incrementoN Z

    >loco de comandos]

    ^

    VocC tam>&m pode incluir um comando simples5 sendo assim no 7necessidade da

    utiliao de c7aves. EemploW

    Strin= strArra4[\ U ne* Strin=[1"\]

    for M iU"] iR strArra4.len=t7] iN

    strArra4[i\U]

    Inicialia um arra4 de1" elementos com X]

    #.. 6oop ,7ile

    $ *7ile & usado para repetir um comando5 ou um conHunto de comandoen%uanto a

    condio & verdadeira.

    ,7ile McondioNZ

    >loco de comandos]

    ^

    A condio & uma epresso >ooleana. EemploWint countU"]

    *7ileM count R arra41.len=t7 jj arra41[count\YU"NZ

    arra4([count\UMoatN arra41[count\]

    ^

    #./. 6oop 9o

    A principal diferena entre o *7ile e o do & %ue o teste condicional no casodo *7ile & feita

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    17/61

    antes de se eecutar o cdi=o interno ao loop. 9esta forma5 o %ue podeacontecer no *7ile & %ue

    o loop pode no ser eecutado se a condio for false. J no loop do o corpodo loop & eecutado

    pelo menos uma ve5 pois o teste de permanCncia & eecutado no :m doloop.

    doZ

    >od4$f6oop]

    ^ *7ileMconditionN]Apostila de Java Grupo PET - Informtica

    P=ina 1+

    ). riando lasses e Aplica2es em Java).1. 9e:nindo lasses

    Para de:nir uma classe use a palavra c7ave class e o nome da classe.EemploW

    class classe de outra classe5 use etends para indicar asuperclasse.

    EemploW

    class

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    18/61

    int correia]

    int pedal]

    ^

    ).#. onstantes

    Para declarar uma constante5 use a palavra c7ave :nal antes dadeclarao da varivel e

    inclua um valor inicial para esta varivel. EemploW

    :nal oat piU).1)1+?(]

    :nal >oolean de>u=Ufalse]

    :nal int masie U )""""]

    ).). Variveis de lasse

    As variveis de classe so >oas para a comunicao entre os diferenteso>Hetos da mesma

    classe5 ou para manter travamento de estados =lo>ais so>re um conHunto deo>Hetos. EemploW

    static int soma]

    static :nal int ma$>HectsU 1"]Apostila de Java Grupo PET - InformticaP=ina 1

    ).+. 9e:nio de sicasW

    b $ nome do m&todo]

    b $ tipo o>Heto ou tipo primitivo de retorno]

    b ma lista de par;metros]b $ corpo do m&todo]

    A de:nio >sica de um m&todo tem esta aparCnciaW

    tipoderetorno nomedometodoMtipo1 ar=15 tipo( ar=(5 ...NZ

    ....

    ^

    EemploWint[\ ma@eBan=eMint lo*er5 int upperN Z ... ^

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    19/61

    A Ban=elass classeW

    class Ban=elassZ

    int[\ ma@eBan=eMint lo*er5 int upperNZ

    int arr[\ U ne* int[ Mupper - lo*erN 1\]

    for Mint iU"] iRarr.len=t7]iN

    arr[i\Ulo*er]

    return arr]

    ^

    pu>lic static void mainMStrin= ar=[\NZ

    int t7eArra4[\]

    Ban=elass t7eBan=eUne* Ban=elassMN]

    t7eArra4U t7eBan=e.ma@eBan=eM151"N]

    S4stem.out.printMXT7e arra4W [ X N]

    for M int iU"] i R t7eArra4.len=t7] iN

    S4stem.out.printMt7eArra4[i\ X XN]

    S4stem.out.printlnMX\N]

    ^

    ^

    A saLda do pro=rama & W

    T7e arra4W [ 1 ( # ) + / 3 ? 1" \Apostila de Java Grupo PET - Informtica

    P=ina 1/

    ).. A palavra c7ave t7is

    Do corpo de uma de:nio de m&todo5 vocC pode %uerer referir-se ao o>Hetocorrente-o

    o>Heto %ue o m&todo foi c7amado - para referir-se Os variveis de inst;nciaou para passar o o>Heto

    corrente como um ar=umento para um outro m&todo. Para este tipo dereferCncia5 vocC pode usar a

    palavra c7ave t7is.class Pessoa Z

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    20/61

    Strin= nome]

    int idade]

    Pessoa M Strin= nome5 int idade N Z

    t7is.nome U nome]

    t7is.idade U idade]

    ^

    pu>lic void imprime9ados MN Z

    S4stem.out.print M XDomeW X t7is.nome X IdadeW X t7is.idadeN]

    ^

    ^

    )./.Passando ar=umentos para

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    21/61

    forM int iU"] i R arr.len=t7] iNZ

    S4stem.out.printMarr[i\ X XN]

    ^

    S4stem.out.printlnMX\N]

    num$nesU test.onetoeroMarrN]

    S4stem.out.printlnMXDum>er of $nes U X num$nesN]

    S4stem.out.printMXDe* values of t7e arra4W [ XN]

    forM int iU"] i R arr.len=t7] iNZ

    S4stem.out.printMarr[i\ X XN]

    ^

    S4stem.out.printlnMX\N]Apostila de Java Grupo PET - Informtica

    P=ina 13

    ^

    As saLdas deste pro=ramaW

    Values of t7e arra4W [ 1 # ) + 1 1 / \

    Dum>er of $nes U #

    De* values of t7e Arra4W [ " # ) + " " /\Apostila de Java Grupo PET -Informtica

    P=ina 1?

    +. recarre=ados5 ou seHa5 podem-se criarm&todos com o

    mesmo nome5 mas com diferentes assinaturas Mpar;metrosN e diferentesde:ni2es. Quando se

    c7ama um m&todo em um o>Heto5 o Java casa o nome do m&todo5 o nmerode ar=umentos e o tipo

    dos ar=umentos e escol7e %ual a de:nio do m&todo a eecutar.

    Para criar um m&todo so>recarre=ado5 & necessrio criar diferentes

    de:ni2es de m&todos na sua

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    22/61

    classe5 todos com o mesmo nome5 mas com diferentes par;metros Mnmerode ar=umentos ou

    tiposN.

    Do eemplo a se=uir veremos a de:nio da classe Betan=ulo5 a %ual de:neum ret;n=ulo

    plano. A classe Betan=ulo tCm %uatro variveis para instanciar5 as %uaisde:nem o canto superior

    es%uerdo e o canto inferior direito do ret;n=uloW 15 415 ( e 4(.

    class Betan=ulo Z

    int 1 U "]

    int 41 U "]int ( U "]

    int 4( U "]

    ^

    Quando uma nova inst;ncia da classe Betan=ulo for criada5 todos as suasvariveis so

    inicialiadas com ". 9e:nindo um m&todo construaBetan= MNW este m&todo

    rece>e %uatro inteiros e

    fa um Xresie do ret;n=ulo de acordo com as novas coordenadas e retornao o>Heto ret;n=ulo

    resultante M note %ue os ar=umentos possuem o mesmo nome das variveisinstanciveis5 portanto

    deve-se usar o t7is para referenci-las NW

    Betan=ulo construaBetan= M int 15 int 415 int (5 int 4( N Z

    t7is.1 U 1]

    t7is.41 U 41]

    t7is.( U (]

    t7is.4( U 4(]

    return t7is]

    ^

    Querendo-se de:nir as dimens2es do ret;n=ulo de outra forma5 por eemplopode-se usar o

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    23/61

    o>Heto Point ao inv&s de coordenadas individuais. 8aremos a so>recar=a dom&todo construaBetan=

    MN5 passando a=ora como par;metro dois o>Hetos PointW

    Betan=ulo construaBetan= MPoint superiorEs%uerdo5 Point inferior9ireitoN Z

    1 U superiorEs%uerdo.]

    41 U superiorEs%uerdo.4]

    ( U inferior9ireito.]

    4( U inferior9ireito.4]

    return t7is]

    ^Apostila de Java Grupo PET - Informtica

    P=ina ("

    Por&m %uerendo-se de:nir um ret;n=ulo usando somente o canto superiores%uerdo e uma

    lar=ura e altura do ret;n=ulo pode-se ainda de:nir mais um m&todoconstruaBetan= MNWApostila de Java Grupo PET - Informtica

    P=ina (1

    Betan=ulo construaBetan= MPoint superiorEs%uerdo5 int lar=ura5 int alturaNZ

    1 U superiorEs%uerdo.]

    41 U superiorEs%uerdo.4]

    ( U M1 lar=uraN]

    4( U M41 alturaN]

    return t7is]^

    Para :naliar o eemplo mostra-se a se=uir um m&todo para imprimir ascoordenadas do

    ret;n=ulo e um main para faer o testeW

    import Hava.a*t.Point]

    class Betan=ulo Z

    int 1 U "]

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    24/61

    int 41 U "]

    int ( U "]

    int 4( U "]

    Betan=ulo construaBetan= M int 15 int 415 int (5 int 4( N Z

    t7is.1 U 1]

    t7is.41 U 41]

    t7is.( U (]

    t7is.4( U 4(]

    return t7is]

    ^

    Betan=ulo construaBetan= MPoint superiorEs%uerdo5 Point inferior9ireitoN Z

    1 U superiorEs%uerdo.]

    41 U superiorEs%uerdo.4]

    ( U inferior9ireito.]

    4( U inferior9ireito.4]

    return t7is]

    ^

    Betan=ulo construaBetan= MPoint superiorEs%uerdo5 int lar=ura5 int alturaN

    Z

    1 U superiorEs%uerdo.]

    41 U superiorEs%uerdo.4]

    ( U M1 lar=uraN]

    4( U M41 alturaN]

    return t7is]

    ^

    void imprimaBetan=ulo MN Z

    S4stem.out.print M XBet;n=uloW R X 1 X5 X 41 N]

    S4stem.out.println M X5 X ( X5 X 4( XN]

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    25/61

    ^

    pu>lic static void main M Strin= ar=s[\ N Z

    Betan=ulo retan= U ne* Betan=uloMN]Apostila de Java Grupo PET -Informtica

    P=ina ((

    S4stem.out.println M X7amando construaBetan= com coordenadas (+5 (+5

    +"5 +" W N]

    retan=.construaBetan= M (+5 (+5 +"5 +" N]

    retan=.imprimaBetan=ulo MN]

    S4stem.out.println M X--------------------------------------------XN]

    S4stem.out.println M X7amando construaBetan= com os pontos M1"5 1"N

    5 M("5 ("N W N]

    retan=.construaBetan= M ne* Point M1"51"N 5 ne* Point M("5 ("N N]

    retan=.imprimaBetan=ulo MN]

    S4stem.out.println M X--------------------------------------------XN]

    S4stem.out.println M X7amando construaBetan= com os pontos M1"5 1"N

    5 lar=ura M+"N e altura M+"N W N]

    retan=.construaBetan= M ne* Point M1"51"N 5 +"5 +"N]

    retan=.imprimaBetan=ulo MN]

    S4stem.out.println M X--------------------------------------------XN]

    ^

    ^

    +.(. Heto &

    inicialiado %uando ele & criado.

    9iferente dos m&todos normais um m&todo construtor no pode serc7amado diretamente]

    ao inv&s disto os m&todos construtores so c7amados automaticamentepelo Java. Do momento em

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    26/61

    %ue o o>Heto & instanciado5 ou seHa %uando se usa ne* o Java fa trCscoisasW

    b Aloca memria para o o>Heto

    b Inicialia as variveis da%uela inst;ncia do o>Heto

    b 7ama o m&todo construtor da classe

    +.(.1. onstrutores 0sicos

    $s construtores parecem muito com os m&todos normais5 com duasdiferenas >sicasW

    b onstrutores sempre tCm o mesmo nome da classe

    b onstrutores no podem ter tipo de retorno

    EemploW

    class Pessoa Z

    Strin= nome]

    int idade]

    Pessoa MStrin= n5 int iN Z

    nome U n]

    idade U i]

    ^

    void printPessoa MN Z

    S4stem.out.print MX$i meu nome & W nomeN]

    S4stem.out.println MX. Eu ten7o W Xidade X anosN]Apostila de Java GrupoPET - Informtica

    P=ina (#^

    pu>lic static void main M Strin= ar=s[\ N Z

    Pessoa p]

    p U ne* Pessoa M X

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    27/61

    +.(.(. Polimor:smo de onstrutores

    I=ual aos m&todos normais os construtores tam>&m podem ter nmerosvariveis de tipos e

    par;metros. Por eemplo os m&todos construaBetan= MN de:nidos na classeBetan=ulo seriam

    ecelentes construtores para a mesma classe5 pois eles esto Hustamenteinstanciando as variveis.

    Se=ue o eemplo a>aio com as devidas altera2es W

    import Hava.a*t.Point]

    class Betan=ulo Z

    int 1 U "]int 41 U "]

    int ( U "]

    int 4( U "]

    Betan=ulo M int 15 int 415 int (5 int 4( N Z

    t7is.1 U 1]

    t7is.41 U 41]t7is.( U (]

    t7is.4( U 4(]

    ^

    Betan=ulo MPoint superiorEs%uerdo5 Point inferior9ireitoN Z

    1 U superiorEs%uerdo.]

    41 U superiorEs%uerdo.4]( U inferior9ireito.]

    4( U inferior9ireito.4]

    ^

    Betan=ulo MPoint superiorEs%uerdo5 int lar=ura5 int alturaN Z

    1 U superiorEs%uerdo.]

    41 U superiorEs%uerdo.4]( U M1 lar=uraN]

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    28/61

    4( U M41 alturaN]

    ^

    void imprimaBetan=ulo MN Z

    S4stem.out.print M XBet;n=uloW R X 1 X5 X 41 N]

    S4stem.out.println M X5 X ( X5 X 4( XN]

    ^

    pu>lic static void main M Strin= ar=s[\ N Z

    Betan=ulo retan=]

    S4stem.out.println M XBetan=ulo com coordenadas (+5 (+5 +"5 +" W N]

    retan= U ne* Betan=ulo M(+5 (+5 +"5 +" N]

    retan=.imprimaBetan=ulo MN]

    S4stem.out.println M X--------------------------------------------XN]Apostila de JavaGrupo PET - Informtica

    P=ina ()

    S4stem.out.println M XBetan=ulo com os pontos M1"5 1"N 5 M("5 ("N W

    N]

    retan= U ne* Betan=ulo M ne* Point M1"51"N 5 ne* Point M("5 ("N N]

    retan=.imprimaBetan=ulo MN]

    S4stem.out.println M X--------------------------------------------XN]

    S4stem.out.println M XBetan=ulo com os pontos M1"5 1"N 5 lar=ura

    M+"N e altura M+"N W N]

    retan= U ne* Betan=ulo M ne* Point M1"51"N 5 +"5 +"N]

    retan=.imprimaBetan=ulo MN]

    S4stem.out.println M X--------------------------------------------XN]

    ^

    ^Apostila de Java Grupo PET - Informtica

    P=ina (+

    +.#.

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    29/61

    $s m&todos destrutores so c7amados lo=o antes do Xcoletor de liopassar e sua

    memria se li>erada. $ m&todos destrutor & c7amado de :nalieMN a classe$>Hect de:ne um

    m&todo destrutor padro5 %ue no fa nada. Para criar um m&todo destrutorpara suas prprias

    classes >asta so>repor o m&todo :nalie MN com o se=uinte ca>eal7oW

    protected void :nalie MN Z

    ...

    ^

    9entro do m&todo :nalie vocC pode colocar tudo %ue vocC precisa faerpara a limpea do

    seu o>Heto.Apostila de Java Grupo PET - Informtica

    P=ina (

    . ,ID9$, T$$6qIT

    As ferramentas de controle de Hanelas do Hava tam>&m con7ecidas por A,TMA>stract

    ,indo* Tool@itN so uns dos pontos fortes do Hava. Estas ferramentasfornecem toda a

    funcionalidade %ue se podia esperar de um sistema moderno de Hanelas. $A,T contem os mais

    usados componentes das interfaces =r:cas atuais portanto 7a>ilita aaplicao a ser eecutada em

    sistemas =r:cos completamente diferentes.

    Deste capitulo apresentaremos os se=uintes componentesW 0uttom5 anvas57ec@>o5

    ontainer5 6a>el5 6ist5 Scroll>ar e Tetomponent. omentendimento destes

    componentes & necessrio primeiro ter uma >ase so>re manuseio deeventos.

    .1. Eventos

    m evento & uma comunicao do mundo eterno para o pro=rama %ue

    al=uma coisa

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    30/61

    aconteceu. Podemos citar como eemplos o cli%ue ou ainda o movimento domouse. ma das mais

    importantes coisas a se entender so>re o A,T & como & feito omanuseioKtratamento destes

    eventos. Sem eventos sua aplicao no poderia responder as a2es dousurio.

    Eemplo 1W

    import Hava.a*t.]

    import Hava.applet.Applet]

    pu>lic class e+!1 etends Applet Z

    0utton >oto]pu>lic void initMN Z

    >oto U ne* 0uttonMli%ue A%uiYN]

    addM>otoN]

    ^

    pu>lic >oolean action MEvent evt5 $>Hect al=umN Z

    if Mevt.tar=et UU >otoN Z>oto.set6a>elM$qYYN]

    return true]

    ^

    else

    return false]

    ^^

    Quando um componente %ue tem a ele uma ao associada & manipuladopelo usurio5 o

    m&todo actionMN da%uele componente & c7amado. Deste caso nos estamosusando um >oto ao

    inv&s de usar uma su>classe de nossa autoria. $ tratador de eventos tentatratar o evento dentro da

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    31/61

    classe >oto5 mas como ele no ac7a o tratador %ue iria manusear o eventoele passa o evento para

    cima para o container %ue contem o componente e assim por diante at& %ueal=u&m trate o evento.

    Vamos dar uma ol7ada de perto no m&todo actionMNW

    pu>lic >oolean actionMEvent evt5 $>Hect al=umN ZApostila de Java Grupo PET- Informtica

    P=ina (/

    Todos tratadores de eventos tem uma forma similar a esta. Eles aceitam umpar;metro do

    tipo Event %ue prove informao detal7ada so>re o evento. Se=undo eles

    retornam um valor

    0oolean indicando True se o evento foi tratado5 ou 8alse caso contrario.

    if Mevt.tar=et UU >otoN Z

    A%ui o alvo do evento & e c7ecado para se sa>er se & ou no o >oto.Por%ue evt.tar=et e

    >oto so am>os o>Hetos5 nos podemos c7ecar se am>os so o mesmoo>Heto.

    >oto.set6a>elM$qYYN]

    J %ue o >oto foi pressionado vamos mudar o seu titulo.

    return true]

    ^

    else

    return false]

    8inalmente5 se o evento foi tratado & retornado true5 caso contrrio &retornado false.

    .1.1. Tratamento de Eventos em 9etal7e

    Em %uase todos os casos podemos usar os m&todos tratadores de eventos%ue so

    fornecidos na lin=ua=em Java. Estes esto na ta>ela a>aio. re-se%ue tudo & relativo ao

    componente. Por eemplo5 o m&todo mouse

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    32/61

    mouse & movido dentro da%uele componente.

    Eventos do Java

    TIP$ Hect al=umN

    0oto do mouse pressionado mouse9o*nMEvent evt5 int 5 int 4N

    0oto do mouse li>erado mousepMEvent evt5 int 5 int 4N

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    33/61

    pu>lic >oolean mouseEnterMEvent evt5 int 5 int 4N Z

    >oto.set6a>elMVa Em>ora YYN]

    return true]

    ^

    pu>lic >oolean mouseEitMEvent evt5 int 5 int 4N Z

    >oto.set6a>elM8i%ue 6on=e YYN]

    return true]

    ^

    pu>lic >oolean action MEvent evt5 $>Hect al=umN Z

    if Mevt.tar=et UU >otoN Z

    >oto.set6a>elM$qN]

    return true]

    ^

    else

    return false]

    ^

    ^

    A=ora por aonde %ue o usurio mova o mouse na applet5 o mesmo &insti=ado a no clicar

    no >oto. Antes5 o >oto era usado de uma maneira completamente normal5a=ora nos mudamos

    seu comportamentoKfuncionalidade.

    .1.(. 7andleEventMN ou actionMN

    Geralmente5 uma com>inao do m&todo actionMN com outros pr&-construidos tratadores de

    eventos tra>al7aro >em. Para a%uelas vees %ue vocC necessita tomar umcontrole completo

    7andleEventMN & usado.

    $ m&todo 7andleEventMN tem vanta=ens e desvanta=ens. Do lado positivo5

    vocC & %uem tem

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    34/61

    o completo controle. E no lado ne=ativo5 vocC & %uem tem o completocontrole. Isto si=ni:ca %ue

    vocC deve ter muito cuidado %uando esta montando um 7andleEventMN ousua aplicao pode

    comear :car confusa e c7eia de

    >u=s muito rapidamente. Eemplo #W

    W

    pu>lic >oolean mouseEnter MEvent evt5 int 5 int 4N Z

    setTetMSai foraYYN]

    ^

    pu>lic >oolean 7andleEvent MEvent evtN Z

    if Mevt.id UU qE!PBESSN Z

    setTetMPressionadoN]

    return true]

    ^

    else

    return false]

    ^

    W

    Eventos do A,TApostila de Java Grupo PET - Informtica

    P=ina (?

    TIP$

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    35/61

    Tecla pressionada qE!PBESS

    Tecla li>erada qE!BE6EASE

    .1.#. riando Eventos

    $casionalmente o pro=rama tem %ue criar seus prprios eventos. Pode at&parecer

    estran7o5 mas as vees o pro=rama :ca muito mais simples.

    m simples evento pode ser criado assimW

    Event evt U ne* EventMo>H!alvo5 id5 ar=N]

    Aonde o>H!alvo & o o>Heto para o %ual o evento deve ser mandado5 id & uminteiro %ue

    representa o tipo do evento Mpode-se usar as constantes acimaN e ar= & umar=umento para ser

    incluLdo no evento se 7a al=uma informao etra %ue vocC =ostaria %ue otratador de eventos

    rece>esse. Dormalmente a de:nio de um evento & feita como o eemploa>aioW

    Eemplo )W

    W

    W

    pu>lic >oolean @e49o*nMEvent evt5 int @e4N Z

    if M@e4 UU )?N Z

    deliverEventMne* EventMoneqe45 Event.

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    36/61

    Quando um tet :eld & selecionado5 o usurio pode di=itar no campo deteto.

    Quando um componente rece>e o foco5 o m&todo =et8ocusMN docomponente & c7amadoW

    pu>lic >oolean =et8ocusMEvent evt5 $>Hect *7atN Z

    ...

    ^

    Quando um componente perde o foco5 o m&todo lost8ocusMN do componente& c7amadoW

    pu>lic >oolean lost8ocusMEvent evt5 $>Hect *7atN Z

    ...^

    comum em um pro=rama a necessidade de manter o foco emdeterminado componente.

    Por eemplo se um tet :eld para mostrar dados e no para rece>er dados5vocC provavelmente Apostila de Java Grupo PET - Informtica

    P=ina #"

    no %uer %ue o tet :eld esteHa apto a rece>er o foco. Para este caso eisteo m&todo

    re%uest8ocusMNW

    pu>lic void re%uest8ocusMN Z

    ...

    ^

    Isto pode ser colocado em um componente %ue contem o tet :eld para %ueeste

    componente :%ue com o foco.Apostila de Java Grupo PET - Informtica

    P=ina #1

    .(. omponentes A,T

    Antes de comearmos & >om sa>ermos %ueW

    1. Todos os componentes tem uma posio e taman7o

    (. Todos os componentes tem uma cor e uma cor de fundo

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    37/61

    #. omponentes podem ser 7a>ilitados ou desa>ilitados

    ). Eiste uma interface standard para os componentes tratarem eventos

    omponentes A,T podem ser divididos em trCs partesW

    b omponentes da Interface

    omponentes da Interface a>ran=em todos os *id=ets e controlesassociados a uma

    interface =r:ca. Eemplos destes componentes soW >uttons5 tet la>els5scroll>ars5 pic@

    list e campos tet-entr4.

    b ontainers

    ontainers a>ran=em reas nas %uais os componentes da interface podemser postos. Isto

    7a>ilita os componentes a serem a=rupados e formarem um o>Heto maiscoeso e fcil de

    ser manipulado. m Panel & um eemplo deste tipo de componente.

    b ,indo*s

    ,indo*s so um tipo muito especial da classe omponent. Todos os outros

    componentes

    so adicionados dentro de uma *indo*. Dormalmente %uando se pro=ramaapplets5

    *indo*s no so usadas.

    .(.1. omponentes da Interface

    0TT$D

    0oto. Pode ser customiado para ter um teto ou ainda ser >ranco.

    onstrutoresW

    0uttonMN cria um >oto sem la>el

    0uttonMStrin= eti%N ria um 0utton com la>el i=ual ao contedo de eti%

    elMN retorna o la>elMeti%uetaN do >oto

    void set6a>elMStrin= eti%N aHusta la>el do >oto para o contedo de eti%

    AoW

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    38/61

    ria um evento %uando pressionado.

    EemploW

    0utton >oto U ne* 0uttonM$qN]

    ADVAS

    anvas & um componente completamente =en&rico. Ele eiste comofundao para outras

    su>classes. Este componente no & muito til para usurios iniciantes ouintermedirios5 mas &

    etremamente til para criar seus prprios componentes.

    onstrutoresW

    anvasMN cria um canvas

    o & uma caia pe%uena com um la>el ao lado. $ usurio pode clicaron ou o. Isto

    & til %uando vocC tem uma variedade de atri>utos %ue podem ser li=adosou no. Alem disto5 mais

    de uma c7ec@>o podem ser a=rupadas com um 7ec@>oGroup parapossi>ilitar %ue apenas um

    dos itens seHa selecionado ao mesmo tempo.

    onstrutoresW

    7ec@>oMN cria uma c7ec@>o >ranca com opo false

    7ec@>oMStrin= l>lN cria uma c7ec@>o com la>el l>l com opo false

    7ec@>oMStrin= l>l5 7ec@>oGroup =roup5 >oolean stateN cria umac7ec@>o com a opo

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    39/61

    l>l em true contida no =rupo 7ec@Group.

    elMN retorna o la>el da c7ec@>o

    Strin= set6a>elMStrin= l>lN aHusta o la>el da c7ec@>o para l>l

    >oolean =etStateMN retorna o estado da c7ec@>o

    void setStateM>oolean estN aHusta o estado da c7ec@>o para est

    7ec@>oGroup =et7ec@>oGroupMN retorna o =rupo %ue a c7ec@>opertence

    void set7ec@>oGroupM7ec@>oGroup =N aHusta nova7ec@>oGroupM=rupoN %ue pertence

    a c7ec@>o

    AoW

    ria um evento %uando o estado muda

    EemploW

    7ec@>o a0o U ne* 7ec@>oMS$,N]

    6A0E6

    m la>el & simplesmente um teto %ue pode ser colocado em umcomponente.

    onstrutoresW

    6a>elMN cria um la>el vaio

    6a>elMStrin= l>l5 int alinN cria um la>el com o teto contido em l>l e com oalin7amento

    especi:cado em alin5 podendo serW

    6a>el.6E8T alin7amento a es%uerda

    6a>el.EDTEB centralia teto

    6a>el.BIGT alin7amento a direita

    el

    void setAli=nmentMint alin7aN aHusta o alin7amento do la>el para alin7a.

    Strin= =etTetMN retorna o teto do la>el

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    40/61

    void setTetMStrin= l>lN aHusta o teto do la>el para l>l

    AoW

    Den7uma5 por default

    EemploWApostila de Java Grupo PET - Informtica

    P=ina ##

    6a>el a6a>el U ne* 6a>elMelloYN]Apostila de Java Grupo PET -Informtica

    P=ina #)

    6IST

    6ist & uma lista de itens aonde o usurio pode escol7er um item ou mais.

    onstrutoresW

    6istMN cria uma lista nova sem lin7as visLveis5 desa>ilitando mltiplassele2es

    6istMint nlin5 >oolean scrN cria uma lista nova com um numero visLvel delin7as nlin e com

    mltiplas sele2es se scr for True

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    41/61

    7oice & um menu de escol7a. Por default o primeiro item adicionado a ummenu c7oice & o

    item default.

    onstrutoresW

    pu>lic 7oiceMN cria menu de escol7a5 inicialmente vaio.

    ar & uma >arra desliante. =eralmente usada %uando o usurioprecisa se locomover

    rapidamente numa =rande rea. Pode ser orientada verticalmente ou7oriontalmente.

    onstrutoresW

    Scroll>arMN ria scroll>ar orientada verticalmente

    Scroll>arMint oriN ria scroll>ar orientada por ori5 sendo %ue ori pode serW

    Scroll>ar.$BI$DTA6

    Scroll>ar.VEBTIA6 Scroll>arMint ori5 int val5 int vis5 int min5 int maN ria uma scroll>ar comorientao ori5 item

    default val5 taman7o da pa=ina vis5 mLnimo min e mimo ma.

    arApostila de JavaGrupo PET - Informtica

    P=ina #+

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    42/61

    void setValueMint valN aHusta o valor da scroll>ar para item na posio val

    int =etar

    int =etar

    EemploW

    Scroll0ar U ne* Scroll>arMScroll>ar.$BI$DTA6N]

    TET8IE69

    Tet8ield & um componente %ue 7a>ilita o usurio entrar com uma lin7a deteto. Isto & o

    su:ciente para %uase todas as entradas de dados. &m.

    onstrutoresW

    pu>lic Tet8ieldMN cria um campo de teto

    pu>lic Tet8ieldMint tamN cria um campo de teto com taman7o tam

    pu>lic Tet8ieldMStrin= ttN cria um campo de teto aHustado com a strin=tt

    pu>lic Tet8ieldMStrin= tt5 int tamN cria um campo de teto aHustado coma strin= tt e com o

    taman7o tam

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    43/61

    TetAreaMN ria um campo de teto

    TetAreaMint lin5 int colN ria um campo de teto com lin lin7as e colcolunas

    TetAreaMStrin= tt5int lin5 int colN ria um campo de teto com ocontedo tt5 lin lin7as e col

    colunas

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    44/61

    lista U ne* 6istMN]

    >arra!rola=em U ne* Scroll>arMScroll>ar.$BI$DTA6N]

    campo!teto U ne* Tet8ieldM#/5+N]

    area!teto U ne* TetAreaM$@5+5)"N]

    lista.addItemMPrimeiroN]

    lista.addItemMSe=undoN]

    addM>otoN]

    addMc>oN]

    addMtetoN]

    addMlistaN]

    addM>arra!rola=emN]

    addMcampo!tetoN]

    addMarea!tetoN]

    ^

    ^

    $DTAIDEBS

    ontainers so simplesmente componentes %ue podem conter outroscomponentes. Pense

    como uma maneira de su>dividir uma rea para construir a interface com ousurio5 aonde os

    componentes podem ser colocados.

    Eistem dois tipos de containersW Panels e ,indo*s. A maior diferena entre

    eles & %ue umPanel & de:nido como uma rea em uma Hanela H eistente e ,indo* &uma Hanela completamente

    nova. Quando a aplicao & uma Applet o nico container %ue pode seraplicado & o Panel.

    EemploW

    import Hava.a*t.]

    import Hava.applet.Applet]

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    45/61

    pu>lic class e+! etends Applet Z

    8rame aframe]

    pu>lic void initMN Z

    aframe U ne* 8rameMEemplo de 8rameN]

    aframe.s7o*MN]

    ^

    ^Apostila de Java Grupo PET - Informtica

    P=ina #/

    6A$TS

    6a4out pode ser de:nido como uma mascara %ue & colocada so>re umcontainer para

    de:nir como os seus componentes sero adicionados. Dormalmente & usadoo la4out

    0order6a4outMN5 >aseado nos pontos cardeais.

    EemploW

    import Hava.a*t.]

    import Hava.applet.Applet]

    pu>lic class e+!/ etends Applet Z

    0utton >oto15 >oto(5 >oto#5 >oto)5 >oto+]

    pu>lic void initMN Z

    set6a4outMne* 0order6a4outMNN]

    >oto1 U ne* 0uttonMDorteN]

    >oto( U ne* 0uttonMSulN]

    >oto# U ne* 0uttonM6esteN]

    >oto) U ne* 0uttonM$esteN]

    >oto+ U ne* 0uttonMentroN]

    addMDort75>oto1N]

    addMSout75>oto(N]

    addMEast5>oto#N]

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    46/61

    addM,est5>oto)N]

    addMenter5>oto+N]

    ^

    ^

    ilitando componente

    VABI_VEIS 9E $B 9E8IDI9AS D$ JAVA

    >lac@ >lue c4an dar@Gra4

    =ra4 =reen li=7tGra4 ma=enta

    oran=e pin@ red *7ite

    4ello*Apostila de Java Grupo PET - Informtica

    P=ina #3

    Eemplo de Interface de uma calculadoraW

    import Hava.a*t.]

    import Hava.applet.Applet]

    pu>lic class e+!/ etends Applet Z

    6a>el displa4]

    Panel >ottom]

    Panel num!panel]

    Panel func!panel]

    0utton num>er[\ U ne* 0utton[1"\]

    0utton function[\ U ne* 0utton[\]

    pu>lic void initMN Z

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    47/61

    set6a4outMne* 0order6a4outMNN]

    displa4 U ne* 6a>elM"5 6a>el.BIGTN]

    addMDort75 displa4N]

    >ottom U ne* PanelMN]

    >ottom.set6a4outMne* 0order6a4outMNN]

    num!panel U ne* PanelMN]

    num!panel.set6a4outMne* Grid6a4outM)5#NN]

    for Mint U?] U"] --N Z

    num>er[\ U ne* 0uttonMMne* Strin=MNN.value$fMNN]

    num!panel.addMnum>er[\N]

    ^

    function[)\ U ne* 0uttonM.N]

    num!panel.addMfunction[)\N]

    function[+\ U ne* 0uttonMUN]

    num!panel.addMfunction[+\N]

    >ottom.addMenter5 num!panelN]

    func!panel U ne* PanelMN]

    func!panel.set6a4outMne* Grid6a4outM)51NN]

    function["\ U ne* 0uttonMN]

    function[1\ U ne* 0uttonM-N]

    function[(\ U ne* 0uttonMN]

    function[#\ U ne* 0uttonMKN]

    for Mint U"] R)] N

    func!panel.addMfunction[\N]

    >ottom.addMEast5 func!panelN]

    addMenter5>ottomN]

    ^

    ^Apostila de Java Grupo PET - Informtica

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    48/61

    P=ina #?

    .#. Gr:cos

    A lin=ua=em Java contem um numero =rande de primitivas =r:cas %uepossi>ilitam ao

    usurio criar =r:cos facilmente e rapidamente. A>aio uma pe%uenarelao dos m&todos mais teis

    da classe Grap7icsW

    disposeMN

    limpa conteto corrente do o>Heto

    clearBectMint 5 int 45 int *idt75 int 7ei=7tN

    limpa a rea do ret;n=ulo especi:cado com a cor atual

    int coordenada inicial

    int 4 coordenada 4 inicial

    int *idt7 lar=ura

    int 7ei=7t altura

    dra*6ineMint 15 int 415 int (5 int 4(N

    desen7a uma lin7a

    int 1 coordenada inicial

    int 41 coordenada 4 inicial

    int ( coordenada :nal

    int 4( coordenada 4 :nal

    dra*BectMint 5 int 45 int *idt75 int 7ei=7tN

    desen7a um ret;n=ulo

    int coordenada inicial

    int 4 coordenada 4 inicial

    int *idt7 lar=ura

    int 7ei=7t alturaApostila de Java Grupo PET - Informtica

    P=ina )"

    dra*BoundBectMint 5 int 45 int *idt75 int 7ei=7t5 int arc,idt75 int arcei=7tN

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    49/61

    desen7a um ret;n=ulo com as >ordas arredondadas

    int coordenada inicial

    int 4 coordenada 4 inicial

    int *idt7 lar=ura

    int 7ei=7t altura

    int arc,idt7 di;metro 7oriontal do arco nos ) cantos

    int arcei=7t di;metro vertical do arco nos ) cantos

    dra*$valMint 5 int 45 int *idt75 int 7ei=7tN

    desen7a um circulo

    int coordenada inicial

    int 4 coordenada 4 inicial

    int *idt7 lar=ura

    int 7ei=7t altura

    dra*#9BectMint 5 int 45 int *idt75 int 7ei=7t5 >oolean raisedN

    desen7a um ret;n=ulo em # dimens2es

    int coordenada inicial

    int 4 coordenada 4 inicial

    int *idt7 lar=ura

    int 7ei=7t altura

    >oolean raised se True ret;n=ulo aparece aumentado5 seno diminuLdo

    dra*Pol4=onMint Points[\5 int 4Points[\5 int nPointsN

    desen7a um polL=ono. Qual%uer polL=ono criado tem %ue conter um ponto%ue o fec7a. Java no

    cria polL=onos fec7ados automaticamente5 ento ten7a sempre certea %ueos pontos inicial e :nal

    so i=uais.

    int Points[\ arra4 de coordenadas

    int 4Points[\ arra4 de coordenadas 4

    int nPoints[\ numero de pontos

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    50/61

    dra*Strin=MStrin= str5 int 5 int 4N

    desen7a strin= com a fonte e taman7o correntes

    Strin= str strin= a ser desen7ada

    int coordenada

    int 4 coordenada 4

    :llBectMint 5 int 45 int *idt75 int 7ei=7tN

    preenc7e um ret;n=ulo com a cor corrente

    int coordenada inicial

    int 4 coordenada 4 inicial

    int *idt7 lar=ura

    int 7ei=7t alturaApostila de Java Grupo PET - Informtica

    P=ina )1Apostila de Java Grupo PET - Informtica

    P=ina )(

    :llBoundBectMint 5 int 45 int *idt75 int 7ei=7t5 int arc,idt75 int arcei=7tN

    preenc7e um ret;n=ulo com >ordas arredondadas com a cor corrente

    int coordenada inicial

    int 4 coordenada 4 inicial

    int *idt7 lar=ura

    int 7ei=7t altura

    int arc,idt7 di;metro 7oriontal do arco nos ) cantos

    int arcei=7t di;metro vertical do arco nos ) cantos

    :ll#9BectMint 5 int 45 int *idt75 int 7ei=7t5 >oolean raisedN

    preenc7e um ret;n=ulo #9 com a cor corrente

    int coordenada inicial

    int 4 coordenada 4 inicial

    int *idt7 lar=ura

    int 7ei=7t altura

    >oolean raised se True ret;n=ulo aparece aumentado5 seno diminuLdo

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    51/61

    :ll$valMint 5 int 45 int *idt75 int 7ei=7tN

    preenc7e um circulo com a cor corrente

    int coordenada inicial

    int 4 coordenada 4 inicial

    int *idt7 lar=ura

    int 7ei=7t altura

    :llPol4=onMint Points[\5 int 4Points[\5 int nPointsN

    preenc7e um polL=ono com a cor corrente

    int Points[\ arra4 de coordenadas

    int 4Points[\ arra4 de coordenadas 4

    int nPoints[\ numero de pontos

    olor =etolorMN

    retorna a cor corrente

    setolorMolor cN

    aHusta a cor corrente

    olor c nova cor corrente

    8ont =et8ontMN

    retorna a fonte corrente

    set8ontM8ont fN

    aHusta a fonte corrente

    8ont f nova fonte corrente

    astante relevante da lin=ua=emJava. A incorporao

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    52/61

    dos conceitos de sincroniao e variveis de condio dentro da prprialin=ua=em permite %ue

    pro=ramadores m&dios consi=am utiliar conceitos de computaoconcorrente de forma >em

    facilitada5 o %ue possi>ilita uma mel7oria de performance dos pro=ramas.Deste capLtulo veremos o

    %ue so t7reads5 analisaremos seus estados e m&todos >sicos eaprenderemos a inserir t7reads em

    applets.

    /.1. $ %ue so t7reads'

    ma t7read pode ser de:nido como Xum uo de controle se%encial

    isolado dentro de um

    pro=rama. omo um pro=rama se%encial %ual%uer5 uma t7read tem umcomeo5 um :m e uma

    se%Cncia de comandos. Entretanto5 uma t7read em Java no & umpro=rama5 no eecuta soin7o5

    eecuta dentro de um pro=rama.

    T7reads permitem %ue um pro=rama simples possa eecutar vrias tarefas

    diferentes aomesmo tempo5 independentemente umas das outras.

    Pro=ramas multit7readed so pro=ramas %ue cont&m vrias t7reads5eecutando tarefas

    distintas5 simultaneamente. $ >ro*ser otJava5 implementado em Java5 &um eemplo. 9a mesma

    forma %ue o Detscape5 com o otJava vocC pode faer um scroll em umap=ina en%uanto carre=a

    uma ima=em ou eecuta vrios applets ao mesmo tempo.

    Em Java5 t7reads so cidados de primeira ordem5 se constituindo deinst;ncias da classe

    T7read %ue fornecem suporte a comunicao concorrente. A classe T7readprovC os m&todos

    necessrios para criar e controlar t7reads Mindependentemente daplataforma usadaN e eecut-los

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    53/61

    concorrentemente. A real implementao de t7reads & feita pelo sistemaoperacional.

    $ corpo de uma t7read & o seu m&todo runMN5 e & nele %ue so eecutadasas tarefas Os

    %uais t7read se destina. Podemos implementar t7reads de duas maneirasMam>as suportadas pelos

    construtores da classe T7readNW

    b riando uma su>classe da classe T7read e de:nindo o seu m&todo runMN demaneira ade%uada O

    realiao da tarefa do t7read.

    b riando uma inst;ncia de T7read %ue rece>e como par;metro um o>Heto

    %ue implemente a

    interface Bunna>le - esse o>Heto providenciar o m&todo runMN para at7read.

    A lin=ua=em Java fornece meios para criarmos t7reads como daemons5a=ruparmos t7reads5

    sincroni-los e controlar suas prioridades.

    /.(. $s estados de uma t7readApostila de Java Grupo PET - Informtica

    P=ina )+

    b De* T7read

    Inicialiao da t7read - feita atrav&s do construtor T7readMN.

    class

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    54/61

    b Bunna>le

    Este & o estado em %ue o t7read est pronto para rodar. $ m&todo startMNre%uisita os

    recursos do sistema necessrios para rodar a t7read e c7ama o seu m&todorunMN. $ m&todo runMN &

    a Xalma de um t7read] & neste m&todo %ue de:nimos o %ue a t7read vaieecutar.

    T7read m4T7read U ne* le5 ao inv&s de Bunnin=5 por%ue a t7read pode no estarrealmente

    sendo eecutada. Ima=ine um computador com um nico processador -seria impossLvel eecutar

    todas as t7reads ao mesmo tempo. $ %ue ocorre & %ue a P deve serescalonada entre as vrias

    t7reads. Quando uma t7read est Bunnin=5 ela est tam>&m Bunna>le5 asinstru2es do seu m&todo

    runMN & %ue esto sendo eecutadas pela P.

    b Dot Bunna>le

    $ estado Dot Bunna>le si=ni:ca %ue a t7read est impedida de eecutar poral=uma rao.

    Eistem ) maneiras de uma t7read ir para o estado Dot Bunna>le.

    1. rece>er a mensa=em suspendMN]

    (. rece>er a mensa=em sleepMN]

    #. a t7read >lo%ueia5 esperando IK$]Apostila de Java Grupo PET - InformticaP=ina )

    ). a t7read usa seu m&todo *aitMN para esperar por uma varivel decondio.Apostila de Java Grupo PET - Informtica

    P=ina )/

    $ eemplo a>aio coloca o applet m4T7read para dormir por 1" se=undosW

    T7read m4T7read U ne*

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    55/61

    tr4 Z

    m4T7read.sleepM1""""N]

    ^ catc7 MInterruptedEception eN Z ^

    ada uma destas maneiras tem a sua forma especL:ca de sair do estado DotBunna>le.

    1. se a t7read foi suspensa5 al=u&m precisa mandar-l7e a mensa=emresumeMN]

    (. se a t7read foi posta para dormir5 ela voltar a ser Bunna>le %uando onmero de

    milise=undos determinado passar]

    #. se a t7read est >lo%ueada5 esperando por IK$5 a operao precisa sercompletada]

    ). se a t7read est esperando por uma varivel de condio5 o o>Heto %ue aret&m precisa li>er-

    la5 atrav&s de um notif4MN ou de um notif4AllMN

    b 9ead

    ma t7read pode morrer de Xcausas naturais M%uando o seu m&todo runMNaca>a

    normalmenteN ou pode ser morto pelo m&todo stopMN.

    possLvel controlar a ordem de eecuo de vrias t7reads de:nindoprioridades para eles.

    $ escalonador de t7reads do Java se=ue a se=uinte re=raW a %ual%uerinstante5 a t7read corrente & a

    de maior prioridade. Para %ue a t7read de maior prioridade ceda P aoutra t7read5 ele precisa

    enviar para si o m&todo 4ieldMN5 ou5 entrar no estado Dot Bunna>le. asocontrrio5 ele ir eecutar

    at& %ue termine seu m&todo runMN.

    Para desco>rir a prioridade de uma t7read5 podemos usar o m&todo=etPriorit4MN e5 para

    de:ni-la setPriorit4MnN5 onde n & um inteiro de 1 a 1" M1" representando aprioridade mimaN.

    /.#. T7reads em Applets

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    56/61

    At& a=ora ns vimos como tra>al7ar com t7reads criadas a partir da classeT7read ou de

    uma classe %ue 7erde da classe T7read. Sa>emos %ue esta classe provC osm&todos >sicos para se

    lidar com t7reads MrunMN5 startMN5 stopMN5 sleepMN5 etc.N.

    Supon7a %ue vocC %ueira5 a=ora5 implementar uma t7read dentro de umaapplet. Por

    eemplo5 supon7a %ue vocC %uer faer uma applet rel=io5 %ue atualia oseu displa4 a cada

    se=undo. A classe %ue vai implementar o seu rel=io precisa ser umasu>classe da classe Applet

    para 7erdar todas as facilidades oferecidas por ela. omo faC-la5 ento57erdar tam>&m da classe

    T7read' A interface Bunna>le & a soluoY

    Qual%uer o>Heto %ue implemente a interface Bunna>le pode utiliar o seum&todo runMN para

    ser eecutado como uma t7read.

    class loc@ etends Applet implements Bunna>le Z

    ....

    ^

    A applet loc@ precisa5 a=ora5 criar a sua prpria t7read. Isto &

    feito no seu m&todo startMN

    pu>lic void startMN Z

    if M cloc@T7read UU nullN ZApostila de Java Grupo PET - Informtica

    P=ina )3

    cloc@T7read U ne* T7readMt7is5 Xloc@N]

    [email protected]]

    ^

    ^

    $>serve a c7amada ao construtor T7readMt7is5 Xloc@N. $ construtor

    precisa rece>er

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    57/61

    como primeiro ar=umento um o>Heto %ue implemente a interface Bunna>le5este o>Heto & %ue vai

    fornecer o m&todo runMN da t7read cloc@T7read.

    pu>lic void runMN Z

    *7ile Mcloc@T7read YU nullN Z

    repaintMN]

    tr4 Z

    [email protected]"""N]

    ^ catc7 MInterruptedEception eN Z ^

    ^

    ^

    Do m&todo stopMN do applet loc@5 temos %ue c7amar tam>&m o m&todostopMN da t7read

    cloc@T7read5 caso contrrio5 a t7read vai continuar eecutando econsumindo recursos mesmo

    depois %ue sairmos da p=ina da applet.

    pu>lic void stopMN [email protected]]

    cloc@T7read U null]

    ^

    Se vocC revisitar a p=ina5 o startMN da applet loc@ & c7amado novamente euma nova

    t7read & inicialiada.

    /.). erdando de T7read Implementando Bunna>le

    Eistem duas maneiras de implementar t7readsW

    1. erdando da classe T7read ou de su>classes da classe T7read.

    (. Implementando a interface Bunna>le e criando uma t7read Mpassando oo>Heto %ue implementa

    Bunna>le como ar=umentoN.

    Qual opo utiliar'

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    58/61

    Se vocC precisa estender outra classe Mo eemplo mais comum & a classeAppletN5 use

    Bunna>le. Entretanto5 se vocC est planeHando apenas so>repor o m&todorunMN5 e mais nen7um

    outro m&todo de T7read5 use Bunna>le. lasses no devem 7erdar de outrasclasses5 a menos %ue o

    pro=ramador pretenda modi:car ou aprimorar o comportamentofundamental da classe.Apostila de Java Grupo PET - Informtica

    P=ina )?

    A>aio o cdi=o completo da applet loc@W

    K

    op4ri=7t McN 1??+5 1?? Sun ute t7is soft*are

    and its documentation for D$D-$

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    59/61

    T7read cloc@T7read U null]

    pu>lic void startMN Z

    if Mcloc@T7read UU nullN Z

    cloc@T7read U ne* T7readMt7is5 loc@N]

    [email protected]]

    ^

    ^

    pu>lic void runMN Z

    KK loop terminates *7en cloc@T7read is set to null in stopMN

    *7ile MT7read.currentT7readMN UU cloc@T7readN Z

    repaintMN]

    tr4 Z

    [email protected]"""N]

    ^ catc7 MInterruptedEception eNZ

    ^

    ^

    ^

    pu>lic void paintMGrap7ics =N Z

    9ate no* U ne* 9ateMN]

    =.dra*Strin=Mno*.=etoursMN W no*.=eter re

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    60/61

    3.1. B6

    Para a%ueles %ue =ostariam de interli=ar suas Applets com outros recursosda Internet5 o

    Java cont&m classes especi:cas para isto.

    3.(. 8ila5 Pil7a5 Ta>ela as7

    A maioria das estruturas a>stratas de dados H esto implementadas noJava5 veHa as

    >i>liotecas contidas em Hava.util.

    3.#. Javadoc

    8aer a documentao de um sistema sempre foi um pro>lema. Da

    lin=ua=em Java eiste um=erador de documentao em Tientes de Pro=ramaoK9e>u=ao

    Al&m do J9q5 eistem vrios outros am>ientes de pro=ramao e depuraopara Java5

    a>aio relacionamos os mais con7ecidosW

    S4mantec EspressoW

    Am>iente completo de desenvolvimento para ,indo*s ?+5 al&m de um=erenciador de

    proHeto5 cont&m um poderoso.

    0orland 6atteW

    $ 6atte est ainda em desenvolvimento pela 0orland. Este am>iente estsendo

    desenvolvido totalmente em Java5 isto vai possi>ilitar a 0orland vender o6atte para todas as

    plataformas.

    Javare ,indo*s ?+ e DT. muitosimples5 pe%ueno

    e fcil de utiliar.

  • 7/23/2019 Apostila de JAVAApostila de Java Grupo PET

    61/61

    JW

    Am>iente de desenvolvimento ainda em fase de desenvolvimento pelaientes H montados5 fa parte do osmo ,e>s4stem.

    osmo ode & avaliavel para esta2es Silicon Grap7ics.Apostila de JavaGrupo PET - Informtica

    P=ina +1

    BeferCncias 0i>lio=r:cas

    A6ADTABA5 Andreia Almeida. Anais da V JAI -