Escolar Documentos
Profissional Documentos
Cultura Documentos
Neste mtodo! vamos criar um ob)eto do tipo Livro e outro do tipo Pessoa! assim&
Como estamos lidando com um treinamento aqui! e considerando que comparar ob)etos em 1ava um tanto mais complicado$ 2o invs de veri,icar se o ob)eto Pessoa retornado pelo mtodo .getPessoa. igual ao ob)eto p3 de,inido anteriormente! vamos comparar apenas os nomes! assumindo que cada Pessoa tem um nome 4nico$
/eparem que o Eclipse alerta de que o campo .pessoa. n0o est* de,inido na Classe Livro$ :ais uma ve+! vamos usar o .5uic6 7i%. do Eclipse para corrigir isso! selecionando a op-0o .Create ,ield.! obtendo o seguinte&
public > o ob)eto acessado de qualquer Classe ou Subclasse private > o ob)eto acessado apenas na Classe em que ,oi criado sem modi,icador > o ob)eto acessado apenas por Classes dentro do .pacote. em que ,oi criado protected > o ob)eto acessado de qualquer Classe ou Subclasse dentro do .pacote. em que ,oi criado
amos agora completar o mtodo get! retornando o ob)eto do tipo Pessoa )* de,inido para a Classe Livro&
Refatorao
amos aproveitar para ,alar um pouco sobre .re,actoring.$ Pois n0o podemos esquecer ele! um dos passos da metodologia "## que estamos aplicando aqui$
B comum a todo artista durante o desenvolvimento da sua obra! tentar mel8orar o resultado ,inal$ /eescrever um cdigo que )* ,unciona com o intuito de mel8or*>lo ,a+ parte da .arte de programar.$ #esculpem>me alguns gerentes de pro)eto! mas pre,iro tratar os bons desenvolvedores como .artistas. do que como .oper*rios.$
Refatorao
Podemos dar aqui um e%emplo bem simples de re,atora-0o$ oltando C nossa Classe Livro"est! reparem no seguinte trec8o de cdigo&
Ele possui algumas de,ici<ncias tais como& ?so de vari*veis desnecess*rias e nomes n0o representativos 'quem est* com o livro n0o necessariamente o seu dono($
Refatorao
amos re,a+er este trec8o da seguinte ,orma&
Refatorao
Salvando tudo e e%ecutando os testes novamente! devemos ter o mesmo resultado de sucesso de antes$ E assim sendo! podemos remover o cdigo anterior que ,oi comentado! ,icando assim&
Refatorao
amos entender um pouco mais sobre a lin8a de cdigo que acabamos de implementar& String quemPegouLivro = l2.getPessoa().getNome(); Nela! estamos atribuindo C vari*vel do tipo String .quemPegouLivro.! o nome da Pessoa$ :as comoD
Primeiro! usamos o mtodo .getPessoa. para obter uma instEncia do ob)eto do tipo Pessoa a qual o livro est* vinculado$ #epois! sobre a pessoa recuperada! aplicamos o mtodo .getNome.! para obter o nome da pessoa Neste momento! ns temos duas Classes de teste& Pessoa"est e Livro"est! e vamos criar mais$ Seria conveniente ter uma ,orma de e%ecutar todos os testes de uma s ve+$ Podemos obter isso criando uma nova Classe de teste que agregue as demais$
Suite de Testes
Podemos agregar v*rias Classes de teste! criando uma .Suite. de testes! da seguinte ,orma
Suite de Testes
E na )anela que se abre! vamos selecionar agora .1?nit "est Suite.&
Suite de Testes
2 pr%ima )anela! nos permite especi,icar as caracter;sticas da nossa Suite de testes$ 1* s0o e%ibidos valores de,ault! e entre eles podemos ver que as Classes de teste )* e%istentes! est0o selecionadas$ amos aceitar estes valores de,ault e ,inali+ar&
Suite de Testes
9btendo o seguinte&
Suite de Testes
Sem entrar em maiores detal8es aqui! ,ica claro que C medida que novas Classes de teste ,orem criadas! basta incluir novas lin8as relativas a elas na nossa Suite de teste$ :ais uma ve+! estando com a Classe da nossa Suite de testes selecionada no .Pac6age E%plorer.! vamos usar a combina-0o de teclas& 2lt @ S8i,t @ A! "$
Suite de Testes
/eparem que agora! e%ecutando os testes a partir da nossa Suite de testes! todos os mtodos de teste de todas as nossas Classes de teste s0o e%ecutados de uma s ve+$
Listas
9 que temos at agoraD
Ns criamos a Classe Pessoa Ns criamos a Classe Livro Ns estabelecemos uma liga-0o entre estas Classes criando um campo pessoa na Classe Livro 2gora vamos )untar tudo isso e come-ar a pensar na nossa Classe Fiblioteca$ :as o que gostar;amos que a Classe Fiblioteca ,i+esseD
Listar os livros que possu;mos Listar as pessoas que pegaram nossos livros emprestados Listar quantos livros e pessoas e%istem no nosso grupoD
Listas
Num primeiro momento podemos estimar a nossa Fiblioteca comunit*ria em cerca de GH pessoas e IHH livros$ :as di,;cil de garantir$ amos supor que um amigo entre no grupo e que apenas ele dispon8a de 3HH livros$ L* se vai a nossa mdia por *gua a bai%o$ 9 ideal portanto! que o nosso programa possa lidar com um n4mero ilimitado de livros e pessoas$ N0o por acaso! a linguagem 1ava possui algumas Classes criadas para lidar com listas$ Ns vamos usar uma delas c8amada& 2rrayList$
Listas
Num primeiro momento podemos estimar a nossa Fiblioteca comunit*ria em cerca de GH pessoas e IHH livros$ :as di,;cil de garantir$ amos supor que um amigo entre no grupo e que apenas ele dispon8a de 3HH livros$ L* se vai a nossa mdia por *gua a bai%o$ 9 ideal portanto! que o nosso programa possa lidar com um n4mero ilimitado de livros e pessoas$ N0o por acaso! a linguagem 1ava possui algumas Classes criadas para lidar com listas$ Ns vamos usar uma delas c8amada& 2rrayList$
ArrayList
Caracter;sticas de um 2rrayList Pode lidar com um n4mero qualquer de 9b)etos numa lista Possui mtodos )* constru;dos para gerenciar a lista
amos voltar a usar o Scrapboo6 para nos ,amiliari+ar com a Classe 2rrayList$
ArrayList
2brindo o Scrapboo6! se e%istir algum cdigo anterior! podemos e%clu;> lo&
2 Classe 2rrayList est* no pacote .)ava$util.$ Portanto! a primeira coisa a ,a+er & importar este pacote para o Scrapboo6&
ArrayList
Na )anela que se abre$$
ArrayList
Em seguida&
ArrayList
E na sequ<ncia&
ArrayList
9 ,ato de importar o pacote .)ava$util.! signi,ica que podemos digitar simplesmente .2rrayList. em ve+ de .)ava$util$2rrayList. no nosso cdigo$ 9 nosso pr%imo passo! vai ser criar um 2rrayList$ 7a+emos isso usando o comando .neJ. que a essa altura )* con8ecemos$ sempre usando os ,acilitadores do Eclipse$ Sobre este assunto! cabe aqui uma dica$ 2parentemente! nas versKes mais recentes do Eclipse! o assistente de cdigo n0o est* ,uncionando para o comando .neJ. no Scrapboo6$ Para solucionar este problema! siga os seguintes passos& WindoJ L Pre,erences L 1ava L Editor L "emplates$ Locali+e o item .neJ.! assim&
ArrayList
ArrayList
Edite este template e altere o conte%to de .1ava statements. para .)ava.$
ArrayList
Isso deve ,a+er ,uncionar o .code complete. para o comando neJ no Scrapboo6$
ArrayList
9nde o construtor .MStringN.! de,ine para o compilador que a nossa lista s vai poder conter 9b)etos do ipo String$ Se tentarmos colocar qualquer outro tipo de 9b)eto na lista! vamos receber um erro de compila-0o$ Caso n0o especi,icado este construtor! a lista dar* suporte a qualquer tipo de 9b)eto 1ava$ :as esta n0o a ,orma mais comum de uso$ amos agora adicionar elementos na nossa lista usando o mtodo .add.! assim&
ArrayList
E veri,icar o resultado com o .Inspect.! assim&
ArrayList
Convm ressaltar que os ;ndices das listas em 1ava come-am com H '+ero($ 2 t;tulo de aprendi+ado! vamos tentar adicionar um 9b)eto do tipo inteiro C nossa lista$
ArrayList
/esultando em um erro! assim&