Abrir o menu de navegação
Fechar sugestões
Pesquisar
Pesquisar
pt
Change Language
Mudar o idioma
Carregar
Fazer login
Fazer login
Baixe e use grátis por dias
0%
(1)
0% acharam este documento útil (1 voto)
268 visualizações
369 páginas
Alura Java
Enviado por
Deejons
Título aprimorado por IA
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu,
reivindique-o aqui
.
Formatos disponíveis
Baixe no formato PDF ou leia on-line no Scribd
Baixar
Salvar
Salvar ALURA JAVA para ler mais tarde
0%
0% acharam este documento útil, undefined
100%
, undefined
Incorporar
Compartilhar
Imprimir
Relatório
0%
(1)
0% acharam este documento útil (1 voto)
268 visualizações
369 páginas
Alura Java
Enviado por
Deejons
Título aprimorado por IA
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu,
reivindique-o aqui
.
Formatos disponíveis
Baixe no formato PDF ou leia on-line no Scribd
Anterior no carrossel
Próximo no carrossel
Baixar
Salvar
Salvar ALURA JAVA para ler mais tarde
0%
0% acharam este documento útil, undefined
100%
, undefined
Incorporar
Compartilhar
Imprimir
Relatório
Fazer o download agora mesmo
Baixar
Você está na página 1
/ 369
Pesquisar
Tela inteira
JAVA E ORIENTAGAO A OBJETOS aluraSOBRE ESTA APOSTILA "Esta apostla da Caclum visa ensinar de uma manelraclegante, mostrando apenas o que & necesséro & quando € necessitio, no momento certo, poupando o leitor de assuntos que ndo costumam ser de sea Jneresse em determinadas fases do aprendizado, AA Caelum espera que voce aprovete esse material. Todos os comentiros,ecase sugestOes serdo ‘muito ber-vindos. Essa apostila€ constantemente aualizada e dispontbi site para novas versbese, ao invés de anexar 0 PDF para enviar @ um amigo, indique o site para que le possa sempre baixar as iltimas versGes. Vac pode confrito cédiga de versio da apostila logo no nal ala no site da Caelum, Sempre consulte 0 do indice, Baise sempre a versio m ova em: www.caelum,com brlapostlas FFsse_material € parte integrante do teinamento Java e Orientagio a Objetos €
, (© miolo do programa é 0 que seré executado quando chamamos a méquina vival. Por enquanto, todas as Iinhas anteriores, em que hi a decaragio de ume classe e a de um método, io nos importam esse momento. Mas deveos saber que toda aplicagdo Jave comega por um ponto de entrada, eeste 0 método main Anda no sabemos o que & método, mas veremos no capitula 4. Até I, nio se preocupe com estas declaragbes. Sempre que um exerci for feito, o eédigo que nos importa sempre estar nesse moo, No caso do nosso cigo, a linha do System. out .printin faz com que o concetido entre aspas seja
[Esse €0 erro de compllagdo mais comum: aquele em que um ponto e virgula fol esquecido, Repareque 0 compilador & explicto em dizer que a linha 4 & aquela com problemas. Outros extos de ‘compllagio podem ocomrer se voc# escreveu palavras-chaves (as que colocamos em negito) em imalisculas,esqueceu de abrir efechar as. ¢} tc Durante a execugio, outros errs padem aparece: + Se vocd declarar a clase como X, compiléla e depois tentar us-la com x mindsculo (java x), © Java o avisa xeaption 9 trea “main sav8 Lang. NeciassbetFoune ror xc wrong ane) + Se tencaracessar uma classe no ditetrio ou classpath errado, ou seo nome estiveretrado, ocorters ‘o seguinte ero: Exception in thread "main" java.tang.NocLassbetFounderror: x + Se esquecer de colocar static ovo argumento String[] args noméodo main Exception in thread "main" jeva.lang.NosuchMethoderrer: main Por exemplo: tase x ( Public votd main (string) ara) { ‘ystenvout.arincnceralton 0 stat, vente exeeutar!") > , ‘+ Sendo colocaro método main como public Main method not public. Por exempl nase x eatle vod min (String) aoe) { Syetan-cut-arineinvalese 9 pune") , > 2.16 UM POUCO MAIS.. ‘+ Procure um colega ou algum conhecido que esteja em um projeto Java, Descubra por que Java foi «scolhido como tecnologia © que & importante para esse projeto,€ 0 que acabou fazendo do Java a melhor escolha?-aditora Casa do Cédigo com livros de uma forma diferente Editoras tadicionais pouco ligam para ebooks e navas tecnologias. Nao dominam tecnicamente © assunto para revisar os livros @ fundo. N&o tm anos de ‘expericia em didatias com cursos. CConinega a Casa do Cédigo, uma editora diferente, com curadoria da Caelum & ‘obsessio por livros de qualidade a pregs justo. Casa do Cédigo, ebook com prego de ebook, 2.17 EXERCICIOS OPCIONAIS 1, Um arquivo fonte Java deve sempre tera extensio Java ou o compilador 0 rej 4 Além disso, existem algumas ouras regras na hora de dar o nome a um arquivo Java. Experimente gravar 0 digo desse capitulo com outroNone java ou algo similar. Compile e verifique o nome do arquivo gerade. Como executara sua aplicagio?Crorwo 3 VARIAVEIS PRIMITIVAS E CONTROLE DE FLUXO “Péssima idea ade que nao se pode muda" ~ Montaigne Aprenderemos a trablhar com os seguintes recursos da linguagem Java: + Declaragio, atibuigdo de valores, casting e comparagio de varvels; + Controle de flixo por meio de sf © else ; + Insugdes de lago for e while , controle de fluxa com break e canine 3.1 DECLARANDO E USANDO VARIAVEIS Dentro de um bloce, podemos declararvatvels e usilas. Em Java, coda vatvel tem um tipo que no pode ser mudado ume ver declarado: Por exemple, épossivel teruma idade que guarda um miimero intezo: (Com isso, vocé declara a variivel sade , que passa a exis a partir daquela linha. Ela do tipo Aint que guarda um miimero inteno, A partir dt, voc® pode usé-la,primeiramente, atribindo valores Alinha a seguir 6a tadugio de: " idade deve valer quinze”CometAnios es Jv ‘Com 0 objetivo de fazer um comentiio em Java, vor® pode usar 0 // para comentar até 0 final da linha ou, ent, utilizar. /* +/ para comentar que estiver entre els Além de atibuit, vocé pode utilizar esse valor. O cédigo 2 seguir declara novamente @ variével 4idade com valor 15 ¢o imprime na sada padrdo por meio da chamada system.out .printin, ‘Systensout prancing); Por fim, podemos utilizar 0 valor de uma varlvel para algum outro propdsto, como alterar ou efinir uma segunda variéve. O cédigo a seguir cria uma variivel chamada idadeWeanogueven com valor de idade mais um. tne idadonneguaon No mesmo momento em que vocd declara uma variével, também € possivel inila praticidade: por ‘oct pode usar os operadores +, -, © * para operar com miimeros, sendo eles responsivels pela adigio, subtragio, éivisio © multiplicagdo, respectivamente. Além desses operadores bisicos, hi o ‘operador 9% (ra6dulo), que 6 resto de uma divisdo inteira. Veja alguns exemplos: 20-3.) DECLARANDO E USANDO VARIAVEISComo nopan esses conicos? \Voc® deve colocar esses techos de cbdigo dentro do bloco main que vimos no capitlo anterior. Isto 6, deve ficar no miolo do programa. Use bastante Systen.out.prantin , pols, dessa forma, poderé ver alg resultado. Caso contrtio, ao executar a aplicaso, nada aparecerd [Exemplificando, pata imprimir a sdade e dadeioanoqueven , podemos escrever segulnte programa de exemplo: lass Testatdade hig ate wd mals) aH ¢ Systen-ovt-prinin( tae), susenonnogever Syaten-ou print ln(saacetcarsquavn) Representar iimeros intelrosé faci, mas como guardar valores reals, als como fragbes de aimeros Iteiras e outros? Outra ipa de variével muito uiizado € @ double , ue armazena um nimero com onto utuante(e que também pode armazenar um nimero inteizo). © tipo boolean armazena um valor verdadeiro ou falso: nada de niimeros, palavras ou enderecos ‘como em algunas outras linguagens. As palavras true © false so reservadasaoJava. E comum que um boolean ssa determinado por meio de uma expressdo booleana Isto 6, um techo de cédigo cue rtoma um boolesno, como 0 exemple: © tipo char guarda um, e apenas um, caratere. Este deve estar enue asp simples. Nao se esquega essa das caractristicas de uma varivel do tipo chat. Por exempl, ela nio pode garda um eédigo como" posavazio ni é um earacere! 24 DECLARANDO EUSANDO VARIAVEIS 24Systen-aut preatin(itea): \Varidveis do tipa har séo pouco usaéas no dia dia, Veremos, mais & frente, 0 uso das String s ‘que wsamos constantemente,Porém, estas ndo sie definidas por um tipo primitive {3 conhece os cursos online Alura? ee al UG cierto tn one nn TSS eas aes eT ee eS ee ae a a a (Conheca os cursos online Alura 3.2 TIPOS PRIMITIVOS E VALORES vos do Java: valor que elas guardam sia o real contesdo [Esse ipos de variveissio tipos primi da varivel Quando voc® ulizar 0 operador de atribuigdo = , 0 valor ser copiade, Aqui, 0 + fica como valor de 6. Mas, 3 ?Na segunda linha, 3 est valendo S. Quando 4 passa ‘avaler6, seré que também muda de valor? Néo, pos o valor de um tipo primitivo sempre € copiado. ‘Apesar dea linha 2 fazer j= i, a partir desse moment, essas varidvelsndo tm relagio nenhuma: ‘que acontece com uma nio reflete em nada na outa urns 10s primirvos ‘Vimos equi os tipos primitives que mais aparecer, © Java tem outros, que so 0 byte , short, long © float (Cada tipo tem caracterstcasespeciais que, para um programador avencado, podem fazer muita “aifereng,3.3 EXERCICIOS: VARIAVEIS E TIPOS PRIMITIVOS 1, Na empresa em que tabalhamos, hi tabelas com 0 gasto de cada més, Para fechar 0 balango do primeiro eimests, precisamos somar 0 gasto total. Sabendo que, em jancro, foram gastos 15 mil reals, em fevereiro, 23 mil reise, em margo, 17 mil reals, faga um programa que calculee imprima 1 despesa total no trimestree a méa mensal de gastos Se vocéestiverfazendo em casa e precisar de ajuda, conslteo capitulo Resolugdes de Exercicios. 3.4 DISCUSSAO EM AULA: CONVENGOES DE CODIGO E CODIGO LEGIVEL Discuta com o instrutor ¢ seus colegas sobre convengies de eSdigo Java, Por que exstem? Por que sto importantes? Discuta também as vantagens de se escrevercédigo fc de ler ese evitar comentirios em excesso (ea: procure por java code conventions) ‘Voc# pode também fazer o curse data desa apostila na Caclumn r {Querendo aprencer ainda mais sobre? Fsclarecer dividas dos exercicios? Owvir explicagdes detalhadas com um instrutor? [A Caelum oferece 0 curso data presencial nas clades de Sio Paulo, Rlo de Janeiro e Brasilia, além de turmas incompany. ‘Consult as vaniagens do curso Java e Orlentacio a Objetas 3.5 CASTING E PROMOGAO Alguas valores sia incompativels se voc tetar fazer uma atrbuigio dire, Enquanto umm mimero real costuma ser representado em uma varével do tipo double ,centar atibul-lo a uma vatlavel_ int no funciona, porque é um cédigo que diz: "i deve valer d, mas nio se sabe se 4 realmente & um mero inteto ou no, ‘A mesma coisa ocorre no seguinte trecho: SS EXERCICIOS VARIAVEISETIPOS PRIMITVOS 28(© mais interessante & que nem mesmo o seguintec6digo compila Apesar de 5 ser um bom valor para um int , 0 compilador nia tem como saber qual valor estaré dentro desse double no momento de execusio, Esse valor pode ter sido digtado pelo usuirio, e ringuém garantird que essa conversio acorre sem perda de valores, 4 no caso a seguir 6 o contri: (© cidigo acima compila sem problemas, uma ver que um double pode guardar um nimero com ‘ou sem ponto flutuante, Todos os ines representados por uma variivel do tipo int podem ser ‘guardados em uma variével double, entio ndoexistem problemas no cédigo acim As vezes, precisamos que um nimero quebrado seja arredandado e armazenado em um atimero Imeiro, Para fazer isso sem que haja 0 erro de compilacio, preciso ordenar que o mimero quebrada stja moldado (casted) como um nlimero ineiro, Esse processo recebe 6 nome de casting. ne t= (ine) a (0 casting fo feito para moldar a variével 42 como um int .Ovalorde + agoraés. (© mesmo caso ocore entre valores int © long. EE se qusermos realmente fazer iso, fazemos 0 casting’ ine't= Gre) 3 CASTING E PROMOGHO(Casas NAO tho COMES DE CASTING E ATRIRLIENG Alguns castings aparecem também: (© codigo acima nJo compila, pols todos os literals com ponto flutwante s2o considerados double pelo Java. E Float néo pode receber um double sem a perda de informacio, Para {ar8-o funciona, podemas escrever: ‘A letra f, que pode ser matisculs ou minésculs, indica que aquele literal deve ser tatado como float (Outro caso que é mals comum: fost x= f+ (feat) ‘Vocé precisa do casting porque o Java far es contas e vat armazenando sempre no maior tipo ‘que apareceu durante as operages, neste caso, 0 double FE uma observagio: no mimo, o Java armazena o resultado em um int na hora de fazer as contas {Até casting com variéveis do tipo char podem ocorrer. © nica tipo primitive que no pode seratribuido a nenhum outro tipo €0 boolean ASCASTINGE PROMOGAO 25Castives posstves [Abaixo estio relacionados todos os cass possveis na linguagem Java, mostrando a conversi0 ‘de um valor em outro. A indicasio Impl. quer dizer que aquele cast é implicitae autométien, ow seja, vocE mio precisa indiear o cast explictamente (lembrando que o tipo boolean iio pode set convertdo em nenhur outro tipo) De] oe | snore | crar | ine | tng | tat | aoubie bye | — | mot eho | imot | imps | imp | moh short te (charm) imp | mpl |i lear | oye) | eon | — [emotes me pk. ise ye) [art [Tar [| ip [ [in ing | eed | or | trar-| [| mal [imp oat | tee) | eho | tran | te) | Wana) —~ | Inu. double | Wyte) | ter) | erat | thn | tong) | Wont “Taxeao 908 1108 [Na abelaabaixo, estio os tamanhos de cada tip primitive do Java mp0 TAMANHO ‘boolean Tie lowe byte ‘short 2 bytes (chor 2 bytes int ‘4 bytes oat ‘bytes ong bytes ‘double bytes 3.6 OIF EO ELSE, No Java, asimaxe dof éa seguimte: 46 (condtcaueoteana) ¢ >‘Uma condigdo booleana € qualquer expressio que retome true ou false . Par isso, voct pode usar os operadores <, >, <=, >= e oulos, Um exemplo af (hdade © 38) ¢ {Syaten out FSNtIN(°AEO pode entra > ‘Além disso, voc8 pode usara cléusula else para indicar © comportament que deve ser executado 1 casa da expresso boolesna ser falsa iF Cidade ©39) ¢ System out rintin( ‘hic pace entre"); yawee Systen.outprintin( ‘Pose encrar > ‘Voc® pode concatenar expresses booleanas por meio dos operadares ligicos "E" e "OU", O"E" é representado pelo AR ,@0 "OU érepresentado pelo [1 ‘Urn exerplo seria verifier se ele tem menos de 18 anos e se nio & amigo do dono: iF (ange «8 Ah anigododeno = t3108) ( System out prantin(rhio pose enrat")y > tase system. out printIn( ‘Pode entra’) ) Esse igo poderiaficar ainda mais legivel, uilizando-se do operador de negacio, 0 | . Esse ‘operedor transforma o resultado de uma expressio boolesna de false em true , € vice-versa iF Cidade #38 &4 Tansgoboboe) System out printIn(shio poze entrar"); ) asec Shaten out pritin( Pose entrar) , Repare na linha 3 que 0 trecho asigobobono == false virou lanigededone . les tém o mesme valor. Para compararse ina varkivel em o mesmo valor que oura vari Jou que umn valor, wlizamos @ ‘operador == , Repare que utilizar o aperadar = dentro de um it retamaré um erro de compilagio, 6 que o operadar = 0 de atrbuigio. AP (ree =) ( Sytem. out printin("Vock deveria estar de tris) d3.7 0 WHILE, (© white € um comando usado pata fazer um lago (lop), Isto é repeti um trecho de c6digo alguimas vezes, A idela & que esse trecio de codigo se repetido enquanto uma determinada condigio ppermanecer verdadeira hae Cisace © 28) Syrten out pristn(s6aea); (© trecho dent do blaco do wnéle seri exeeutado até 0 momento em ques condigio idade < 28 passe a ser falsa, E isso ocorerd exatamente no instante em que dade == 18 , © que no o fara imprimir 18 whine (26 28) ( System out brantinctde Jao woste acima imprime de 0 29. ‘Seus livros de tecnologia parecem do século passado? Convega a Casa do Cédigo, uma nova editora, com autores de éestaque no mercado, foco em ebooks (PDF, epub, mobi), precos imbativeis e assuntos atuals, ‘Com a curadoria da Caelum e excelentes autores, é uma abordagem diferente para livos de tecnologia no Brasil, ‘Casa do Cédigo, Livins de Tecnologia. 3.80 FOR ‘Outro comando de loop extemamente utlizado €o for . Aldela éa mesma do. whixe : fazer um ‘tech de c6digo ser repetido, enquanto wa condigao continuar verdadelra. Mas, além disso, © for {sola também um espago para incializago de varliveis e o modificadordessas varivels Isso faz com {que as variveis relacionadas a0 loop fiquem mais legives for (Anietaieseao; condican; Snernanto) (Um exemplo & sete; £2424) ¢ fot prentin(' sla"); for (ane syst Repare que esse for podera ser tracado por white (1 = 20) € System su printin( els")? vel 4. serve, em especial, para controlar a Porém, © cédigo do for indica claramente que a va ‘quantidade de lagos executados. Quando usar 0 for ? Quando user 0 while ? Depende do gosto e da Pos INcResenTo + 4 = 4 + 2 pode realmente ser substitu por ++ quando isolado. Porém, em alguns casos, ‘emos essa instrugéo envolvida em, por exemplo, uma aribuio: Qual &0 valorde x 7.0 de 4 ,apos essa line, &6. © operador ++ , quando vem apés a varidvel, retoma o valor antigo e o incrementa (p65- Inceemento), fazendo x valer5. Se voc® tvesse usado 0. ++ antes da vardvel (princremento), o resultado sera 6: 3.9 CONTROLANDO LOOPS Apesar de termos condigBes booleanas nos nossos laces, em algum momento, podemos decidir parar ‘loop por algumn motivo especial sem que o resto do Lago seja executa. tor (int $2; Ley; S09 E Waxes a6 Syater.eutsprintln(*ichei an nineroeivisivel por 49 entre x © ¥") ac 2(© digo acima percorrerd os mimeros de x a y ¢Iré parar quando encontrar um ndmero divisivel ‘por 19, uma vez que fol ulizada a palavra-chave break Da mesma maneira, & possivel obrigat 0 loop a executar 9 préximo lago, Para isso, wsamos a palavre-chave continue for (int 4 ion) € is st ak to 4a) ¢ ; 7 System. outprintintiys (© eégo acima nao imprimiré alguns niimeros. (Quals exatamente?) 3.10 ESCOPO DAS VARIAVEIS NNo Java, podemos declarar varvels a qualquer momento. Porém, dependendo de onde vacd as declatou, ea vale de um determinado ponto a outo. © escopo da variével 6 9 nome dado 20 techo de eédigo em que aquela varivel existe © o lugar conde &possivel acessila, {Quando abvimos um novo bloco com as chaves, as varliveis declaradas ali dentro s6 valem até 0 fim daquele bloc. sie (conta) ( , [No bloco acima, a varvel j_para de existir quando termina 0 blaco no qual ela foi declarada, Se ‘voc tentaracessar uma varivel fora do escopa dela, acorrerd um erro de compilagio, Fscopetevariavel.javare* cannot Find synbel symbol: variable j Toeation: class Eacapodevard avel systomout.printin(j]s 1 error (© mesmo vale pare um if: {OPO OAS VARIAVEIS4 (atgagooiesne) & > fas ( ; Systen-aut-priaingsy; // cuss ‘Aqui a varivel 4 nio existe fora do if edo. else ! Se voce declarara varvel antes dos , hhaveré outro era de compilagéo: dentro do i¢ edo eise , a varivel esté sendo redeclarada, Entio, 0 <éeigo para compilar efarer sentido fice: $f (alguntooieano) se tise « > Systensouteprineancs ‘Uma situagdo parecida pode ocorer com 9 tor for (ant 4 = 8) 4 6485 S00) System out prancing ela), > Systen-out. prancing); /7 e126000) Nesse for , 9 varlivel_ 1 morte ao seu témino, nfo podendo ser acessada de fore do ror & ‘gerando um erro de compilasio, Se voce realmente quer acessar 0 contador depois do loop terminar, precisa de algo como: foe Ge 8; << 40; 0) ¢ System outsprntin( e892 > Systen-aut-prantanca ‘Agora a methor hora de aprender alge nove eet nee al UO) emmesescne pts teu ines Se oe rare ee See ee aa Conheca a Alura Cursos Online,3.11 UM BLOCO DENTRO DO OUTRO ‘Um bloco também pode ser decarado dentro de outro. Ito & um st dentro de um for , ou um for dentro deum for , algo come: ase (conetca for tire seas ae ¢ , > 3.12 PARA SABER MAIS + Vimos apenas 0s comandos mais usados para controle de fluxo, 0 Java ainda tem 0 do. while © 0 switch , Pesquse sobre ees e diga quando é interessante usar cada um, ‘+ Algumas vezes, temos vitios lagos encadeados. Podemos utlizar 0 break pars quebrar 0 lago mais ineemo, Mas, se quisermos quebrat um lago mals extemo,teremos de encadear dives0s if, € ‘seu cédigo ficaré uma bagung2. O Java tem um artficio chamado labeled loops; pesquise sobre eles + Oqueacontece se voc tetardiviir um niimerointeiro por 0? E por 0.0? ‘+ Existe um camino ene os tipos primitives que indica se hi a necessidade ou ndo de casting entre (0s tipos. Por exemplo, int -> long > double (um int pode ser tratado como um double ‘mas na 0 contri). Pesquise (ou teste) e posicione os outros tips primitvos ness fluxo. ‘+ Além dos operadores de increment, existem os de decremento, coma --1 e -- . Em aligio a esses, voc® pode usar instugées do tipo 3 © 4 -= x. O que essasinstrugies fazem? Teste- 3.13 EXERCICIOS: FIXAGAO DE SINTAXE Mais exerccios de fxagio de simaxe, Para quem jé conhece um pouco de Java, pode see muito ‘simples, mas recomendamos fortemente que voc faca os exerciios a fim de se acostumar com erros de ‘compilagdo, mensagens do javac, convengio de e6digo, et ‘Apesat de extremamente simples, precisamos praticar a sintaxe que estamos aprendendo, Para cada ‘exercicio, erie um novo arquivo com extensio java e declare aquele estranho cabegalho, dando nome a ‘uma classe ¢com um blaco sain dentro dele class ererciciok ( ubise reac void main(String} arge) & , >[io copie ecole de um exerci existent Aprovelte pare pater. Imprima todos os nimeras 150 a 300, Lmpima soma de 1 até 1000. Imprima todos os mhiplos de 3, etre 1100. Imprim os fatorias de 1 a 10, © fatorial de um nimeron én * (ot) *(0-2)* 1. Lembre-se de utiliza 0 paréntses, © fatorial de 0&1 O fatorial de 1€(01)* 1=1 0 faorial de2€ (11) *2=2 O fara de 362 *3=6 O faorial de 4 (39 *4=24 Faga um for que inicle uma variveln (nimero) como 1, fatorial (resultado) como 1 e varia n de a6 10: for (ine ® , Pn 30; 0G No eéaigo do exerefcio anterior, aumente @ quantidade de mimeros que tet os fatoras impressos até 20, 30 e 40, Em um determinado momento além de esse cilculo demorar, comecaré = mostrar respostas completamente eradas. Por qué? ‘Maude de snt_para ong a fim de ver alguma mudanca (Opeional) Imprima os primeitos nimeros da série de Fibonacci até passar de 100. A série de Fibonacci é a seguinte: 0, 1, 1, 2, 3, 5,8, 13, 21, etc. Para caculi-la, 0 primeiro elemento vale 0, © segundo vale 1, e dai por dance. © nsimo elemento vale o(0-1)-ésimo elemento somado 30 (0-2) imo elemento (ex: 8 = 5 + 3). (Opcional) Escreva um programa em que, dada uma variével_ x com algum valor ineiro,temos um ovo x deacordo com a seguiate regra © Se x épan x= 4 25 © Se x éimpar, x © Imprime x; taxes S:FHAGROOE SINTAKE 3© © programa deve parar quando x tiver o valor final de 1. Por exemplo, para x = 28 , @saida seri 40> 20-5 10-55 16->8->4->2->1 Trninybo SEM PULAR LINHA Um deta importante & que uma quebra de lisha é impressa toda vex que chamamos printin Para nfo pular uma linha, usamos o cédigo a segult Systensoutprantivaesaved): ‘8, (Opciona) Imprime a seguinte tabla usando ror s encedeados: forma diferente altora Casa do Codigo com livros de un Fditora tredicionais poucoligam para ebooks e novastecnologias. Nao dominam lecnleamente o assunto para tevisar os livis a fundo. Néo tm anos de ‘expericia em didticas com cuts, CConhega a Casa do Cédigo, uma editora diferente, com curadoria da Caelum © bsessio por livos de qualidade a precosjusos. (Casa do Céiigo, ebook com prego de ebook, 3.14 DESAFIOS: FIBONACCI 1 Facao exerccio da série de Fibonacci usando apenas das variévesCarruo 4 ORIENTAGAO A OBJETOS BASICA “Programagdo orientada a objets € uma péssima ideia que 56 poderia ter nascdo na Califia Ecdsger Dijkstra ‘Ao término deste capitulo, voce sed capae de ‘+ Dizer o que ée para que serve orientacio a objets; + Conceituar classes, aibutes e comportamentos; + Entender o significado de variéves eobjetos na meméria, 4.1 MOTIVAGAO: PROBLEMAS DO PARADIGMA PROCEDURAL. Orientagéo a objetos & uma mancira de programar que ajuda na organizagdo © resolve muitos problemas enfreatades pela programagio procedural CConsideremos 0 clissico problema da validagio de um CPF, Normalmente, temos um formalério no ‘qual recebemos essa informagio e depos temos de enviar esses caracteres uma Fungo que vai valid lo, como no pseudocddigo abaixo: welusaten?) ° Alguém o obrigh a sempre validar esse CPE? Vocd pode, inimeras vezes, esquecer dle chamar esse validador, Mas: considere que voc® tem 50 formulitios e precise valldar em todos 0 CPF. Se sus equipe tem trés programadores trabalhando nesses formulirios, quem fica responsivel por essa validagio? ‘Tadost {A situagdo pol piorar: na entrada de um novo desenvolvedor, precisariamos avisélo de que sempre devemos validar 6 CPF de um formuliio. £nesse momento que nascem aqueles guas de programacio para 0 desenvolvedor que for entrar nesse prajeto ~ as vezes, & wm documento enorme, Em outa palavras, todo desenvolvedor precisa saber de uma quantidade enorme de informagSes que, na maioria das veres, nio esti realmente relacionada 8 sua parte no sistema, mas ele precisa ler tudo 1550, resultando em um entrave muito grande! (Outra situagio na qual ficam claras os problemas da programagio procedural & quando nos ‘encontramos na necessidade de lero edigo que fol escrito por ouxv desenvolvedor e descobrir como «le funciona internamente. Um sistems bem encapsulado nio deveria gerar essa necessidade. Em um INGROAOBLETOSGASICA 36sistema grande, simplesmente nio temos tempo de ler tod o cédigo existent, CConsiderando que voc# nao erre nesse ponto e a sua equipe tenha uma comunicagio muito boa (perceba que comunicagio excessiva pode ser prejudicial eatrapalhar o andamento), ainda temos outro problema: imagine que, em todo formlio, voc também quera que a idade do cliente sea validada-0 Cliente precisa ter mais de 18 anos. Terfamos de colocer um it .. Mas onde? Espalhado por todo seu céigo e, mesma que se crie outra fungio para valider,precsariamos inclu isso nos nossos 50 formultios js existentes. Qual é a chance de esquecermos um dels? £ muito grande. [A responsabilidade de verifcar se 0 cliente tem ou néo 18 anos ficou espalhada por todo o seu ‘digo. Seria interessante poder concentrar essa responsabilidade em um lugar s6 para no ter chances de se esquecer disso Melhor ainda seria se conseguissemos mudar essa validagéo © os outros programadores nem precisessem ficarsabendo disso. Em outras palavras, eles crariamformuléros, um Gnico programador seria responsive pela valigagio: os outros nem saberiam da existéncia desse trecho de cédigo. Impossivel? Nio, 0 paradigma da orientagio a objets facilita tudo iss. © problema do paradigma procedural 6 que no existe uma forma simples de riar conexdo forte centre dados e funcionalidades. No paradigma crietado a objetos, 6 muito fcil ter essa conexio por melo dos recursos da préprialinguagem. Qos as vances? Orionsagio @ objets id judélo bastante ase organzar e escrever menos, além de concentrar as responsabilidades nos pontas certs, flexiblizando sua aplicagdo e encapsulando na logics de negicios (Outra enorme vantage, ne qual voe® realmente economizaré montanhas de cédigo, & 0 polimorfismo das referéncias, que veremos em um capitulo posterior [Nos préximos capitulos, conseguiremos enterger toda essa vantagem, Mas, primeitamente, & -necessrio conhecer um pouco mais da sinaxe ecriagBo de pose referéncas em Java, 364 MOTIAGHO: PROBLENAS DO PARADIGNAPROCEDURAL,3 conhece os cursos online Alura? es al UG ceive a atin re Ve od cher wr cur a eva Rogen, Feat cM ne ea ac a ea (Conheca os cursos online Aura 4.2. CRIANDO UM TIPO CConsidee um programa para wm bonco. & bem fc perceber que uma entidade excemamente Important a nosso sistema & a conta, Nossa dela aqu &generaizarmos alguma informagio juntamente «com as funconalidades que toda conta deve tet (© que toda conta tera que ¢ importante para nés? © Nimero da conta: 1 Nome do titular da conta © sald, (0 que tada conta fez que é importante para nds? Isto, que gastariamas de “pedir & conta"? Soca uma quantidade x; Deposita uma quantdade x; Imprime o nome do titular da conta Devolve osaldo atals “Transfere uma quantidade x para uma outra conta y; Devolve o tipo de conta ‘Com isso, temas o projeto de uma conta bancéria, Podemos pegar esse projetoe acessr Seu sald? io, © que temos ainda € © projeto. Antes, preclsamos construir uma conta pata poder acessar © que cla tem e pedir a ela que faca algo.numero: 76521 clante: 080 ‘aldo: 50520.0 limite: 1000.0 ‘umero: 98213 Especicacio cliente: José deumacanta [>] aide: 2500.0 limite: 300.0 umero: 32466 chante: Mana saldo: 530.0, unite: 200.0 Repare na figura, Apesar de o papel do lado esquerdo especificar uma Conta, essa especificagao & ‘uma Conta? Nés depositamos © sacamos dinheiro desse papel? Nio. Utilizamos a especifcasio da ‘Conta para poder crarinstincias que realmente so contas, nas quais podemos realizar as operagdes que ‘Apesar de declararmos que toda conta tem um saldo, um nlmero e uma agéncia no pedago de papel (como, & esquerda, na figura), sio nas instincias desse projeto em que realmente hi espaco para armazenar esses valores Ao projeto da conta, isto &,& definig2o da conta, damos 0 nome de classe. Av que podemos consult « partir desse projeto; is contas de verdade, damos o nome de abjetas, ‘A palavra classe vem da taxonomia da biologia. Todos os seres vivos de uma mesma classe bioldgica tém uma sétie de atributos ¢ comportamentos em comum, mas ndo sio iguals, pols podem vatiar nos valores desses atributes e como realizam esses comportamentos. Homo Sapiens define um grupo de seres que possuem caracteristicas em comum, Porém, a defini (a idea, o conceito) de um Home Sapiens é um ser humana? Néo, Tudo est especificado na lasse Homo Sapiens, mas se quisermos mandar alguém correr, comer e pular, precsaremos de uma Instincia ce Home Sapiens, ou entio de um objeto da tipo Home Sapiens,‘Um outro exemplo: ume receita de bolo. A pergunta 6 cetera: voc® come uma receta de bolo? Nao. recisamos instancié-lae fazer um objeto bolo a partir dessa especificagdo (2 classe) pare tli Podemos criar centenas de bolos com base nessa classe (2 receita, no caso). Eles podem ser bem semelhantes, alguns até idénticos, mas so objetos diferentes, Podemos fazer milhares de analogias parecidas, A planta de uma casa 6 uma casa? Definitivamente, ie, Nio podemes morar dente da planta de uma casa nem podemos abr sua porta ou plnar suas paredes, Precisamos, antes, constuirinsncias a partir dessa planta, Essas insncia, sim, podemos Pinta, decorar ou morar dentro, Pode parecer Sbvio, mas @ dificuldade inicial do paradigma da orientag3o a objets & justamente saber dstnguie classe de objeto, & comm iniciante utilizar, obviamente de forms errada, ests dias palavres como sindnimos. 4.3 UMA CLASSE EM JAVA CComesaremos apenas com o que uma conta tem, € no com o que ea faz (verem0s iso logo em segutda). ‘Um tipo desses, como o especificada de conta acima, pode ser facilmentetraduid para ava cass Canta { foun sd Stave String € uma classe em Java, Ela guarda uma cadeia de caratere, uma fase completa, Como ‘estamos ainda aprendendo o que & uma classe, entenderemos, com detalhes, a classe string apenas em capftulos postriores. Por enquanto, declaramos o que toda conta deve te. Essessio os atributos que as contas quando
ise ¢ ; : A declaragio de método mudou! © método sace nfo tem void na frente, Isso quer dizer que quando é acessado, ele devolve algum tipo de informasio —_no caso, um boolean . A palavra-chave return indice que o método terminaré al, retomando tal informacio, “brome: stag “Feeaater deube: booeaR posta(valor: awoke) Exemplo de uso: 1 (corset) Syoten-out prntln(Corcepus sacar") yout ‘Shoten cut prsntln( ho consegus sacar"): , tomaconta.s4sa(200); ‘Ou entéo, posso eliminar a varivel temporiria, se desejado: 1 (ainnacona-sseatza Syoter out print yeu ‘Syetenovt-println(?Mo consages sacar" )y > ‘Mais adiante, veremos que, algumas vezes, € mais interessante langar uma excegio (exception) ‘Meu programa pode manter na meméria uma ou mais de ums conta clase Tastapunscatas ( pubite static void main(String ara8) & Asmeronos ¢sinhaconta = new conta) Sovtcohe = ne onta(); 4.7 OBJETOS SAO ACESSADOS POR REFERENCIAS {Quando declaramos uma variével para associara um objeto, na verdade, esse varivel no guarda 0 ‘objet, mas, sim, uma maneira de acessi-lo, chamada de referéncia por esse motivo que, diferente dos tipos primitivas como int © long , precisamos dar new depois de declarada a varivel: static vod main(seriaat] eras) £ ere non conea EFS non coneavi , © corto aqui 6 dizer que 1 se rofere a um objeto. Nao € certo dizer que c2 6 um objeto, pois 1 é uma variivel referncia apesar de, depois de um tempo, os programadores Java falarem: "tenho um objeto cdo tipo Conta” como um modo para encurtar a fase: "tenho uma referéncia ca um objeto do tipo Conta’ ‘Basta lembrar que, em Java, uma variivel nunca € um objeto. Nio hi, no Java, uma maneira de ‘riarmas 0 que 6 conhecido como objeto pitha ou objeto local, pols todo objeto, nesse linguagem, sem ‘excego,éacessado por uma varivl referéncia, [Esse cBdigo nos deixa na seguint stag: ET Sao contac Benen contac Memon fete conte 2 984008 208 REFERENCHIncernamente, 4 © 2 vio guardar um némero que idemifica em que posigio da meméria aquela conta se enconta, Desst manelr, ao utllzarmos ‘encontra naquelaposicdo de memérla eno uma outa, para navegar,o Java acessard a conta que se Para quem conhece, & parecido com um ponteito. Porém, voc® nio pode manipul-lo como um -ndmero nem utlizé-o para aritmética, pois ela 6 tipada, ‘Um outro exemplo: cause Testanerarenedas { ublse seaticvoud main(String} 792) ( fants ct = nen Conta toeopostta(s0e, ezvceposttaa systen-outprineln( esa) ‘yeten ou prantln(ed salt); ? , {Qual & 0 resultado do eSdigo acim? © que aparece ao rodar? (© que acontece aqui? © perador = copia o valor de uma varivel, Mas qual é o valor da varidvel 1 2 0 objeto? Nao. Na verdade,o valor guardado éareferncia (enderega) 30 local onde o objeto se cencontra na meméria principal [Na meméria, o que acontece ness caso canta 62 © pew contatys Memoria come a @ Quando fizemos 62 = 2, 62 passa, nesse instante, a fazer referéacia ao mesmo objeto referenclado por et Endo, nesse codigo em especifico, quando utllizamos c1 ov e2 , estamos nos refeindo ‘exatamente 30 mesmo objeto! las so duas referéncia ditinras, porém apontam para o mesme abjeto ‘Compars-las com" ==" irénos reornar true , pois 0 valor que elas carregam & mesma! {LT OBIETOS Sho ACESSADOS POR REFEREN(Outra forma de perceber isso & que demos apenas um new , logo 6 pode haver um objeto conta pa menérla ‘Atencio: nio estamos discutindo aqui a ullidade de fazer uma referéncia apontar para o mesmo objeto que outra. Essa uilidade ficard mais evideste quando passarmos varvels do tipo referéncia ‘como argumento a métodos (© que exatamente faz 0 new? (© new executa uma série de tarefas que veremos mais adiante Mas a fim de melhor entender as referencias no Java, imagine que © new , depois de alocar a ‘meméria para esse objeto, devolve uma flee, Isto é, umn Valor de referéncia, Quando voe@ abut Isso uma varivel, ess varvel passa ase rferta esse mesmo objeto Poems, enti, ver outa situagdo pubic static void nain(sring) aro) ( sete Systenscut Orne "Contas Spits"): > , © operador == compara o conteido das valves, mas essas varlvels no guardam o objet, e sim ‘o enderego em que ele se enconta. Como em cada uma dessas varivels guardamas das conas cladas dliferentemente, elas esti em espacos dstintos da meméria, o que faz o teste it valer false . AS ‘contas podem ser equivalentes no nosso crisrio de igualdade, porém elas nio sio o mesmo objeto, ‘Quando se vata de objets, pode fear mals fell pensar que © == compara se os objeto (referéncas, na ‘verdade)sio o mesmo, e no se so igual 46 47 0SJETOS SkO ACESSADOS POR REFERENCIASTne ore ace] ~2a7 a Tike @ _ = = sees Tate ev Para saber se dois objetos ttm © mesmo contedde, voc® precisa comparar atributo por abut ‘Veremos ua solugio mais elegante para isso também. ‘Seus livros de tecnologia parecem do século passado? CConhesa a Casa do Cédigo, uma nova editora, com autores de destaque no mercado, foco em ebooks (PDF, epub, mobi), pregos imbativels e assuntos atuais ‘Com a curadoria da Caelum e excelentes autores, é uma abordagem diferente para livtos de tenologia no Bras (Casa do Cédigo, Livos de Tecnologia, 4.8 O METODO TRANSFEREQ) F se quisermos ter um método que wansferedinheiro entre duas conta? Podemos ficartentados a iar um método 0 qual recebe dois parimetros: conta e conta do tipo conta . Mas cuidade assim estamos p wando de maneira procedural. Adeia € que, quando chamarmos 0 método transfere , ji teremas um objeto do ipo conta. (0 this ), Portanto, 0 método recebe apenas um partmetro do tipo conta , iso &, a Conta destino (elm do vator ): cass conta ¢ oss tranefre(conta destine, dowie valor) (“Fecal: amu) Pan “Hecnea(unoe doube) seanere(ecens Cmts, ae: du) ara deixar o cédigo mais robust, podesfamos verifcarse a conta tem a quantidade a sr ransferida isponivel, Com o intulto de ficar ainda mals interessante, vocé pode chamar 0s métodos deposita ‘aca i exstentes para fazer essa tare ease canta ¢ oolean transfre(canta desting, double valor) & fF tito 3 base ¢ destino deposttatvator)s depntater dete) _feaser(dni Corn al ete Boon Quando passamos uma conta como argumento, 0 que seri que acontece na memiria? Seré que 0 objeto & clonado? [No Java, a passagem de pardmetre funciona como uma simples atribuigio tal qual na uso do” Entao, ese pardmetro copia o valor da variével do tipo conta que for passado como argumento. F qual 0 valor de uma variivel dessas? Sea valor & um endereco ou uma referencia, mas nunca um objeto. Por isso, nio hé cépia de objets aqui Esse timo cdigo poderia ser escrito com wna sintaxe muito mals sucinta, Como? TRANSFERE‘Taansorn: pana Perceha que o nome deste métoda paderia ser transferePara a0 invés de sé transtere . A ‘chamada do métod fica muito mais natural, E possivel ler frase em portugués, pols ela tem um sentido: conta transferePara(conta2, $9); A leicura dessecédigo sera: conta transfee para conta? 50 reais. 4.9 CONTINUANDO COM ATRIBUTOS As variéveis ¢o tipo abut, diferentemente das vardveis temporiras (decaradas dentro de um ‘método),recebem um valor padrio. No caso numérico, valem 0 €, no caso de boolean , valem false ‘Voc® também pode dar valores default, como segue: , [esse caso, quando voc® criar uma conta, seus atibutos jf estardo "populados" com esses valores colocadis. Imagine que iniclamos a aumentar nossa classe Conta e adicionamos none, sobrerome © CPF do titular da conta. Comegariamos a ter multos aelbutos. Ese voe8 pensar direlta, uma conta no tem one , nem sobrenore nem CPF . Quem tem esses atibutos € un Cliente . Desse modo, podemos ‘rar uma nova classe e fazer uma composi. Sus atibutos também podem ser cefertaclas As ouras classes, Supoaha a seguinte classe cliente class cliente ( , class canta {Edentzodo main da classe de este: sacs Teste { able weatac void aain(String} args) ( canta nishaconta = ew Cana) Cliente ¢ a raw elisnety ‘Aqui, simplesmente houve uma atribuigio. O valor da variével ¢ & coplado para o stibuto ticular do objeto 40 qual minhaconta. se refere. Em outta palivras, inhaconta tem uma referéncia ao mesmo Cliente aque c se refere,e este pode ser acessado por meio de minhaconta, titular ‘Voct pod realmente naveyar sobre toa esta estutura de informagio sempre usando o ponte (Ou ainda pode fazer isso de uma forma mais dreta e até mais elegante ‘Um sistema orientado a objetos & um grande conjunto de classes que se comunicaré delegendo responsabilidades a quem for mais to a realizar determinada tarefa. A classe #anco usa a classe ‘conta ; esta usa a classe Cliente que, por sua vez, usa a classe Endoreco . Dizemos que esses ‘objetas colaboram, tocando mensagens ense si. Por isso, vemos multas classes em nosso sistema, ¢ eas
‘Test-0, 0 que acontece se chamarmos 0 métoda recuperapadosPararmpresseo antes de atribuirmos uma data aessa conta ? {8 (Opcional) © que acontece se voc# tentaracessar um aributo diretamente na classe? Por exemple: Esse cio faz sent? E este ants .caleaatantinerto); Far sentido perguntar ao esquema éa Conta seu valor anual? 9. (Opcional e avangad) Crie um método na classe Data que devolva © valor formatado da data, ito & devolva uma String com “dlaimés/ano". Tudo sso para que método recuperabadosParatmpressao da classe conta possaficar assim, clase canta ¢ String recupersbadosPorazmoressat) € faape so "bea se abersurst * + this.tabeaberturstormtadat); 4.13 DESAFIOS 1, Um método pode se chamar si mesmo. Chamamos isso de recursio. Voc pode resolver a série deFibonacel usando um métoda que se chama a si mesma. O objetivo € voet eriar uma classe que ossa ser usada da segulnte manera Fibonaces tonaest = new ribonssit; for(int tea be a tee) € Ent resuttase = (bonuses calculatShosees(s}; Syeton-out-prntln(rasaitase)> , ‘Aqui imprizir a sequéncia de Fibonaec até a sexta posi, isto & 1,1, 2,3, [Esse mélodo calestarsbonacet nio pode ter nenhum lage es6 pode chamar-se asi mesmo sendo imétodo, Pease nele como uma fungio que usa a si prOpria para calcula o resultado. 2. Por que o mado acima éextremamente mais lento para calcula a série do que o modo iterativo (que se.usa um lago)? 43. Escreva 0 método recursivo novamente usando apenas uma linha, Para isso, pesquise sobre 0 operador condicional ternrio (teary operator). Editora Casa do Cédigo com livros de uma forma diferente ‘Bdltoras wadicionals pouco ligam para ebooks ¢ novas tecnologias. Nao dominam. tecnicamente © assunto pata revisar os livros @ fundo, Nao vm anos de ‘expericia em didtieas com cursos. Conuega a Casa do Codigo, uma editora diferente, com curadoria da Caelum & ‘absessio por livras de qualidade a precos justos. ‘Casa do Cédigo, chook com preco de ebook, 4.14 FIXANDO 0 CONHECIMENTO 0 objetivo dos exercicios a seguir é fixar 0 conceito de classes, objetos, métodos eatibutes. Dada a estratra de uma classe, basta traduzila pare @ linguagem Java e fazer uso de um objeto seu em um progeama simples. ‘Se voot esté com dificudade em alguma pare desse capitulo, aprovete ¢ eine tudo o que vimos ‘nos pequenos programas abaixo: © Programa 1hitedos vod *aranivaraseso() Cie uma pessoa. Coloque o nome e a Idade incia del, faga alguns aniversiios (aumencando « dade) eimprima 0 seu nome e idade. + Programa hitedors vote aor) ‘ous feens) ‘ese pines(serang =) rodean estaabertag) Cee uma porta, abra-ae feche-a Pinte-a de diversas cores, altere suas dimensies & use 0 método ‘estaaberta para verificar se ela estéabera + Programas fatedoe vats sitatsteiny ne quantaoreaseatsotbertax() Cie uma casa pinte-a Faca ts portas ¢ coloque-as na casa; abra-as e feche-as como dejar. Uulize o método quantasportasestzoabertas para imprimir © nimero de portasaberias.Carros MODIFICADORES DE ACESSO E ATRIBUTOS DE CLASSE "A marca do homem imawuro & que ele quer morrer nobremente por uma causa, enquanto @ marca do Ihomem madura é querer viver modestamente por um."=I.D. Salinger ‘Ao final deste capitulo, voct sera cape de: + Contolar 0 acesso aos seus métodos, atributos e construtoes por meio dos modificadores private © public; + Eserever métodos de acesso a atributos do tipo getters e seers; ‘+ Escrever consrutores para suas classes; ‘+ Utlizar variives e métodos esitcos. 5.1 CONTROLANDO 0 ACESSO ‘Um dos problemas mais simples que temes no nosso sistema de contas & que © métado saca permite sacar independentemente de o sal ser insuficente. A seguit, voc® page lembrar como esté a classe conta cass canta ( old saca{deable vator) ¢ , ‘A dasse a seguir mostra como & possivelultrapassro limite de saque usando o métoda aca ouret { ubize state votd main(String args) & htrnatonea-saca(saoto}, 17 saido ¢ s6 30001Poems incuir um iF dentro do nosso méodo saca() para evitar a situagdo que resultaria em ‘uma conta em estado inconsstente, com seu sald abaixo de 0. Fizemos isso no capitulo de orlentagio a objetas basic, Apesar de melhorar bastante, ainda temos um problema mais grave: ninguém garante que o ususrio da classe tlizaré sempre o método para alert o saldo da conta. © cédig a seguir faz isso dretamente slate Tastacontastoure2 & ubite static veld main(String aras) & Carta nohacanea = few tanta) ‘Como evitar isso? Uma idea simples seria testar se no estamos sacando um valor malor do que 0 saldo toda vex que formas aleré-lo clave Testacontastourea ¢ puonte static void main(String aras) & anes mish = now Ean GF Geovesates Oo) Systen-ovt-aFINEn( Ns posto MACHT aaa esse 43180"; pease , , , Esse cig ira se repetir ao longo de toda nossa eplicasio , pir, alguém pode esquecer de fazer ssa comparagio em algum momento, delxando & conta na siuagdo inconsistente. A melhor forma de resolver isso seria forgar quem usa a classe conta a invocar 0 método saea_ e nlo peritir 0 acesso direto a0 abut, f 0 mesmo caso da validagio de CPF, ara fazer isso no Java, basta declarar que os atributos no podem ser acessados de fora da classe por melo da palavrachave private tase conte ( © private é um modificador de acesso (também chamaco de medificader de visibilidade). Marcando um atibute come privade, fechamos o seu acesso em relagio a todas as outras classes @ fazemos com que o seguintecéigo no compile:act Testatcesobirate ( ible restiesoid main(String} args) ( Na orientagio a objets, € prtica quase que obrigatériaproteger seus atributos com private (Cscutiremos outros moifcadares de acesso em outros captuls). Cada clase &responsével por controlar sous atributos, portanto ela deve julgar se aquele novo valor 6 vilido ou nio, Essa vadagio ato deve ser consolada por quem esté usando a classe, e sim por ela ‘mesma, cenralizando essa responsabilidade e faciltando fururas mudangas no sistema, Muitas outs vvezes, nem mesmo queremos que ouvas classes salbam da exlst@ncla de determinado atibut, ‘escondendo-o por completo, jé que ele diz respeito ao funcionamento interno do objeto. Repare; quem invoca o métoda saca nfo faz 2 menor ideia de que existe uma veriticagdo para a valor do saque. Para quem for usar essa classe, basa sahero que 0 método faz © nfo como exatamente leo fa (0 que um método faz € sempre mals importante do que como ele fa: mudar a implementaio 6 ficl, ji mudar a assinatura de um método geraré problemas}. Apalavra-chave private também pode ser usada 2 fim de modifiar 9 acesso a um método. Tal funcionalidade ¢ uulizada em diversos cendsios, os mals comuns sto: quando existe um método que serve apenas para auxiliar a propria classe e quando hi cédigo repetido dentro de dois métodos da classe, Sempre devemos expr 0 minimo possivel de funcionalidades com o insito de criar um baixo acoplamento ence as nossa classes, ‘Da mesma mancira que temos © private , temas 0 modifcador public , que permite a todos acessarem um determinado aributo ou método aes cons ( public vod sacataoubte vatord { 1 twaior > esate) SystenccuL-DPIRUAMID fo880 S8car Un valor maler do abe 8 side!" pene ; 2 ,E qUanno who WA MoDIFIcADOR DE AcESSO? Até agora, tinhamos declarado varliveis e métodas sem nenhum modificador como. private & public . Quando isso acontece, © seu método ou atributo fica em um estado de visiilidade imermediério entre 0 private © public , que veremos mais para frente, no capitulo de pacots. muito comum e faz todo sentido que seus atrbutos selam private , e quase todos seus métades sejam public (030 & uma regral). Desa forma, toda conversa de um objeto com auto & feta por toca de mensagens, ito &, acessando seus métodos. Algo muito mais educado que mexerdiretamente ery um atibuto que ni é seu, “Melhor ainda! © dia em que precisarmes mudar como € realizado um saque na nossa classe conta , adivinhe o local onde precsarfamos modifica? Apenas no método saca , 0 que faz pleno sentido. Por ‘exemplo, imagine cobrar CPMF de cada saque: basta voc® mosificr ali «enum outro cédigo, fora a classe conta , preciseré ser recompilado, Além do mais: as classes ab quais usam esse método nem precisam ficar sabendo de tal modlificagéo, Voc8 precisa apenas recompilar aquela classe © substituir aquele arquivo class . Ganhamos muito em esconder o funclonamente do nosso método na hora de fazer manutengo e moditicagdes, 6 conhece os cursos online Alora? [A Aura oferece centenas de curses enline em sua plataforma exclusiva de al Ul) nineteen can tne enim Voc8 pode escolher um curso nas dteas de Programagio, Front-end, Mobile, Design & UX, Infra, Business, entre outras, com um plano que dé acesso a todos os cursos. Ex cestudante da Caelum tem 10% de desconto neste lnk! -Conheca os cursos online Alura, 5.2 ENCAPSULAMENTO (0 que comegamos a ver ness capitulo éa idela de encapsular, st é, ocular todos os membros de ‘uma classe (como vimos acima), além de esconder como funcionam as rotinas (no caso, méodos) do nosso sistema,-Encapsular é fundamental para seu sistema ser susctivel a mudaagas: no precisaremos mudar urna regra de negécio em vérios lugares, mas, sim, em apenas um dinico lugar, j# que essa regra esté ‘encapsulada (vejao caso do métodosaca). ‘rrace Ingeneragie timp) (nko precise me meocupar mato, Fave rosso muds a quacuer © conjuno de meétodos pblicos de uma classe é também chamado de interface da classe, pos essa 4 atinica maneira pela qual vacé se comunica com objetos dessa cass, PRocRAMANDO VOLTADO A INTEREACE, ENAO A DEFLEMENDAGAO £E sempre bom programar pensando na interface da sua clase, em como seus usuarios estario uslizando-, e ndo somente em como ela funcionard ‘A implementagdo em si, © contaddo dos métodos, alo tem tanta importinca para o usuério dessa classe, pois ele s6 precisa saber 0 que cada métode pretende fazer, ¢ nfo como ele 0 f22, porque iso pode mudar com o tempo, [ssa fase vern do livro Design Pattems, de Bric Gamma etal, que ¢ cultwado no melo da ovientagio a objecos Sempre que acessamos um objefo, utllizamos sua interface. Existem diversas analoglas fcels no ‘mundo real: + Quando voc# dirige um caro, o gue Ihe importa sio os pedals e o Volante (interfce), eno 0 motor 0 qual voce esti usando (implementagdo), & claro: um motor diferente pode Ihe dar melhores resultados, mas o que ele faz é 0 mesmo que um motor menos potent, a diferenga esté em coma le faz, Pace wocar um catro a leool por um a gesolina, vo ‘io precisa reaprender a dirgir (ocar a implementagao dos méodos nao precisa mudar a interface, fezendo com que a5 outasclasses continuem usando-s da mesma manera), ‘+ Todas os celulares fazem a mesma coisa (imerface). les tm maneiras (métodes) de discar,lgar, esligar, tender, ete. © que muda & como eles o fazem (implemestagia), Mas repare que, para eferuar uma ligagio, pouco importa se o celular € iPhone on Android, visto que isso fica ‘encapsulado na implementasio (aqui si os circuits). ‘Hi temos contecimeatos sufllentes para resolver aguele problems da validagéo de CPF: chase caionte ¢ pubise vod muchr(steing ef) { vabiaac (ot) ) private vous vatiancre(striog opf) , Se alguém lentar eriar um cliente e no usar © mudacer para allerar um CPF direlamente receberd um erro de compilagio, if que a aibule cPr & privado, E quando vac nio preisarverficar ‘0 CPF de quer tem mals de 60 anos? Seu méode fle 9 seguate: ubade vous mudache(stesna et) ¢ 6 (thee dade ‘anscach(e) , ; sot (© conaole sobre o CPF est centralizado: ninguém consegue acessi-lo sem passar por af, A classe Cchiente €e inicaresponsivel pelos seus proprio atibuts! 5.3 GETTERS E SETTERS (© modificador private faz com que ninguém consign modificar ¢ tampouco ero atibuto em ‘questo, Com isso, temos um probleme: como fazer para mostrar 0 saldo de wa conta , uma ver ‘que nem mesmo podemos acessé-lo para letura? Precisames, entio, arranjar uma maneira de fazer esse acesso, Sempre que precisamos arrumar ‘uma forma de fazer alguma coisa com um objeto, ulizamos os méodos! Assim, criemos um imétodo, digamos pegaSaldo para realizar essa simples tare
Você também pode gostar
Jornada Segurança da Informação (Antonio Muniz) (Z-Library)
PDF
100% (1)
Jornada Segurança da Informação (Antonio Muniz) (Z-Library)
481 páginas
DESENVOLVIMENTO DE APLICAÇÕES HÍBRIDAS E IoT
PDF
Ainda não há avaliações
DESENVOLVIMENTO DE APLICAÇÕES HÍBRIDAS E IoT
208 páginas
ESSPT Livro Unico
PDF
100% (3)
ESSPT Livro Unico
481 páginas
Livro Desenvolvimento Pessoal e Empregabilidade
PDF
Ainda não há avaliações
Livro Desenvolvimento Pessoal e Empregabilidade
158 páginas
Java Guia Do Programador - 4a Edição
PDF
Ainda não há avaliações
Java Guia Do Programador - 4a Edição
462 páginas
Livro Java Do Zero Daniel Abella
PDF
Ainda não há avaliações
Livro Java Do Zero Daniel Abella
138 páginas
Introdução À Lógica e À Programação Visual
PDF
Ainda não há avaliações
Introdução À Lógica e À Programação Visual
179 páginas
Programação em Python 6
PDF
Ainda não há avaliações
Programação em Python 6
62 páginas
Teste de Software
PDF
Ainda não há avaliações
Teste de Software
56 páginas
PDF - GERENCIAMENTO DE SERVIÇOS DE TI COM ITIL v3 (BrainerJr) PDF
PDF
Ainda não há avaliações
PDF - GERENCIAMENTO DE SERVIÇOS DE TI COM ITIL v3 (BrainerJr) PDF
171 páginas
Apostila Java e Orientação A Objetos - Caelum PDF
PDF
Ainda não há avaliações
Apostila Java e Orientação A Objetos - Caelum PDF
9 páginas
Metodologias Ageis de Desenvolvimento de Sistemas E1648489432
PDF
Ainda não há avaliações
Metodologias Ageis de Desenvolvimento de Sistemas E1648489432
69 páginas
Manual de Informática de Gabinete
PDF
Ainda não há avaliações
Manual de Informática de Gabinete
26 páginas
POO - Aula 02 Paradigmas de Linguagem.pdf
PDF
Ainda não há avaliações
POO - Aula 02 Paradigmas de Linguagem.pdf
40 páginas
Linguagem de Programação II
PDF
Ainda não há avaliações
Linguagem de Programação II
155 páginas
11
PDF
Ainda não há avaliações
11
20 páginas
Orientação A Objetos - Java PDF
PDF
Ainda não há avaliações
Orientação A Objetos - Java PDF
224 páginas
Aula 01 POO - Introdução Java
PDF
Ainda não há avaliações
Aula 01 POO - Introdução Java
42 páginas
Apostila - Módulo 3 - Técnico de Banco de Dados PDF
PDF
Ainda não há avaliações
Apostila - Módulo 3 - Técnico de Banco de Dados PDF
69 páginas
Agenda em Java
PDF
Ainda não há avaliações
Agenda em Java
6 páginas
Módulo1Java Apresentação
PDF
Ainda não há avaliações
Módulo1Java Apresentação
21 páginas
Portifólio Gerenciamento de Rede
PDF
Ainda não há avaliações
Portifólio Gerenciamento de Rede
14 páginas
FIAP ON - Cap4 - ETL - Adquirindo Dados para A Tomada de Decisão - RevFinal - 20210512
PDF
Ainda não há avaliações
FIAP ON - Cap4 - ETL - Adquirindo Dados para A Tomada de Decisão - RevFinal - 20210512
25 páginas
Apostila HTML
PDF
Ainda não há avaliações
Apostila HTML
81 páginas
Java FrancisoOtavio
PDF
Ainda não há avaliações
Java FrancisoOtavio
233 páginas
Blue e Red Team - Mercado de Trabalho
PDF
Ainda não há avaliações
Blue e Red Team - Mercado de Trabalho
13 páginas
TRHB 4 B 656 B
PDF
Ainda não há avaliações
TRHB 4 B 656 B
98 páginas
Aula 1 - Apresentação
PDF
Ainda não há avaliações
Aula 1 - Apresentação
16 páginas
Desaparecer Na Net (EI-Out2013)
PDF
Ainda não há avaliações
Desaparecer Na Net (EI-Out2013)
20 páginas
As 5 Maestrias Da Liderança
PDF
Ainda não há avaliações
As 5 Maestrias Da Liderança
132 páginas
Revisão Geral Do Windows
PDF
Ainda não há avaliações
Revisão Geral Do Windows
29 páginas
PDF Hardware
PDF
Ainda não há avaliações
PDF Hardware
56 páginas
APRENDIZADO DE MÁQUINA - APOSTILA - UN V - REV - Ok
PDF
Ainda não há avaliações
APRENDIZADO DE MÁQUINA - APOSTILA - UN V - REV - Ok
10 páginas
Atividade 1 - Capitulo 2 Sommerville
PDF
Ainda não há avaliações
Atividade 1 - Capitulo 2 Sommerville
4 páginas
Java 8
PDF
Ainda não há avaliações
Java 8
64 páginas
100 Questões de TI Questoes - Comentadas - II
PDF
Ainda não há avaliações
100 Questões de TI Questoes - Comentadas - II
63 páginas
introJava.ppt
PDF
Ainda não há avaliações
introJava.ppt
86 páginas
Livro Varreduras de Redes 20
PDF
100% (1)
Livro Varreduras de Redes 20
39 páginas
Apostila Da Disciplina
PDF
Ainda não há avaliações
Apostila Da Disciplina
91 páginas
Lógica de Programação
PDF
100% (1)
Lógica de Programação
32 páginas
Apostila Java
PDF
Ainda não há avaliações
Apostila Java
86 páginas
Segurança Aplicada No Desenvolvimento de Software
PDF
Ainda não há avaliações
Segurança Aplicada No Desenvolvimento de Software
157 páginas
História Da Virtualização
PDF
Ainda não há avaliações
História Da Virtualização
20 páginas
Apostila Java
PDF
Ainda não há avaliações
Apostila Java
86 páginas
Curso Java Atual 4 Pag
PDF
Ainda não há avaliações
Curso Java Atual 4 Pag
81 páginas
Curso Java
PDF
Ainda não há avaliações
Curso Java
35 páginas
Java PDF
PDF
Ainda não há avaliações
Java PDF
238 páginas
Gerenciamento de Projetos de Software
PDF
Ainda não há avaliações
Gerenciamento de Projetos de Software
147 páginas
Aula Pratica Linguagem Orientada A Objetos Unopar Bye677 3
PDF
Ainda não há avaliações
Aula Pratica Linguagem Orientada A Objetos Unopar Bye677 3
13 páginas
Sebrae e Book - Como Turbinar Suas Vendas
PDF
0% (1)
Sebrae e Book - Como Turbinar Suas Vendas
59 páginas
Analise de Sistemas - Info - 2010
PDF
Ainda não há avaliações
Analise de Sistemas - Info - 2010
153 páginas
Apostila Completa de Java
PDF
Ainda não há avaliações
Apostila Completa de Java
6 páginas
Apostila UFMG Programação de Computadores
PDF
100% (1)
Apostila UFMG Programação de Computadores
220 páginas
Introdução Ao Machine Learning
PDF
Ainda não há avaliações
Introdução Ao Machine Learning
18 páginas
Apostila - Módulo 1 - Bootcamp Analista de Ataque Cibernético
PDF
Ainda não há avaliações
Apostila - Módulo 1 - Bootcamp Analista de Ataque Cibernético
44 páginas
Apostila - Módulo 2 - TBD
PDF
Ainda não há avaliações
Apostila - Módulo 2 - TBD
131 páginas
Tutorial Instalação Java e BrModelo
PDF
0% (1)
Tutorial Instalação Java e BrModelo
6 páginas
(20211100-PT) Informatica Fácil 72
PDF
Ainda não há avaliações
(20211100-PT) Informatica Fácil 72
32 páginas
LIVRO2
PDF
Ainda não há avaliações
LIVRO2
10 páginas
Guia de Ferramentas DevOps - Jornada DevOps de Elite PDF
PDF
Ainda não há avaliações
Guia de Ferramentas DevOps - Jornada DevOps de Elite PDF
10 páginas