© CasadoCódigo Todos os direitos reservados e protegidos pela Lei nº9.610, de 10/02/1998. Nenhumapartedestelivropoderáserreproduzida,nemtransmitida,sem autorização prévia por escrito da editora, sejam quais forem os meios: fotográficos,eletrônicos,mecânicos,gravaçãoouquaisqueroutros. CasadoCódigo Livrosparaoprogramador RuaVergueiro,3185-8ºandar 04101-300–VilaMariana–SãoPaulo–SP–Brasil CasadoCódigo “ÀminhaesposaJordanaeaomaiorpresentequeumdiasonheireceber,nossa filhaKatherine.” –RodrigoTurini i CasadoCódigo Agradecimentos Nãoháoutramaneiradecomeçarestelivroquenãosejaagradecendoato- dosqueincentivaramecontribuíramdiretaouindiretamenteemsuaedição. VictorHarada,MaurícioAnicheeGuilhermeSilveiraforamalgunsdeles. FicaumagradecimentoespecialaoPauloSilveira,nãosópelasuadetal- hadarevisãoesuasdiversassugestõesemelhoriasparaesselivro, mastam- bémpelainfluênciadiretaquetememmeudiaadiaprofissional. Gostaria também de estender o agradecimento para toda equipe da Caelum. São profissionais exemplares que me incentivam a aprender e en- sinardiariamente. iii CasadoCódigo Sumário Sumário 1 Java 1 1.1 NossoprimeirocódigoJava . . . . . . . . . . . . . . . . . . . 1 1.2 Algumasregraseconvenções . . . . . . . . . . . . . . . . . . 3 1.3 Entendendoométodomain . . . . . . . . . . . . . . . . . . . 4 1.4 TrabalhandocomumaIDE . . . . . . . . . . . . . . . . . . . . 6 1.5 Acesseocódigodesselivroeentreemcontatoconosco . . . 9 2 Variáveisetiposprimitivos 11 2.1 Nossoprojeto. . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.2 Declaraçãoeatribuiçãodevariáveis . . . . . . . . . . . . . . . 11 2.3 Tiposprimitivos . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.4 Castingdevalores . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.5 Adicionandocondicionais . . . . . . . . . . . . . . . . . . . . 18 2.6 Loopingsemaisloopings . . . . . . . . . . . . . . . . . . . . . 21 3 Orientaçãoaobjetos 29 3.1 Criandoummoldedelivros . . . . . . . . . . . . . . . . . . . 30 3.2 Criandoumnovométodo . . . . . . . . . . . . . . . . . . . . 34 3.3 Objetosparatodososlados! . . . . . . . . . . . . . . . . . . . 38 3.4 Entendendoaconstruçãodeumobjeto. . . . . . . . . . . . . 51 3.5 Vantagensdaorientaçãoaobjetos . . . . . . . . . . . . . . . . 53 v Sumário CasadoCódigo 4 Encapsulamento 55 4.1 LimitandodescontodoLivro. . . . . . . . . . . . . . . . . . . 55 4.2 Isolandocomportamentos . . . . . . . . . . . . . . . . . . . . 59 4.3 Códigoencapsulado . . . . . . . . . . . . . . . . . . . . . . . . 61 4.4 GetterseSetters . . . . . . . . . . . . . . . . . . . . . . . . . . 62 4.5 Definindodependênciaspeloconstrutor . . . . . . . . . . . . 67 5 Herançaepolimorfismo 75 5.1 Trabalhandocomlivrosdigitais . . . . . . . . . . . . . . . . . 75 5.2 Reescrevendométodosdasuperclasse . . . . . . . . . . . . . 80 5.3 RegrasprópriasdeumLivroFisico . . . . . . . . . . . . . . . 85 5.4 VendendodiferentestiposdeLivro . . . . . . . . . . . . . . . 87 5.5 Acumulandototaldecompras . . . . . . . . . . . . . . . . . . 91 5.6 Herançaoucomposição? . . . . . . . . . . . . . . . . . . . . . 94 6 Classeabstrata 95 6.1 QualotipodecadaLivro? . . . . . . . . . . . . . . . . . . . . 95 6.2 Minilivronãotemdesconto! . . . . . . . . . . . . . . . . . . . 98 6.3 Métodoabstrato . . . . . . . . . . . . . . . . . . . . . . . . . . 102 6.4 Relembrandoalgumasregras . . . . . . . . . . . . . . . . . . . 104 7 Interface 105 7.1 OcontratoProduto . . . . . . . . . . . . . . . . . . . . . . . . 108 7.2 DiminuindoacoplamentocomInterfaces . . . . . . . . . . . 112 7.3 NovasregrasdainterfacenoJava8 . . . . . . . . . . . . . . . 114 8 Pacotes 119 8.1 Organizandonossasclasses . . . . . . . . . . . . . . . . . . . . 119 8.2 Modificadoresdeacesso . . . . . . . . . . . . . . . . . . . . . 126 9 Arrayseexception 129 9.1 Trabalhandocommultiplicidade . . . . . . . . . . . . . . . . 129 9.2 Asdiferentesexceçõesecomolidarcomelas . . . . . . . . . 136 9.3 MuitasemuitasException . . . . . . . . . . . . . . . . . . . . 142 9.4 Tambémpodemoslançarexceções! . . . . . . . . . . . . . . . 147 vi CasadoCódigo Sumário 10 ConhecendoaAPI 151 10.1 Todoobjetotemumtipoemcomum . . . . . . . . . . . . . . 151 10.2 Wrappersdostiposprimitivos . . . . . . . . . . . . . . . . . . 161 10.3 Opacotejava.lang . . . . . . . . . . . . . . . . . . . . . . . . . 163 11 CollectionFramework 169 11.1 Otrabalhodemanipulararrays . . . . . . . . . . . . . . . . . 169 11.2 OrdenandonossaListdeprodutos . . . . . . . . . . . . . . . 178 11.3 Gerenciandocuponsdedesconto . . . . . . . . . . . . . . . . 182 11.4 java.util.Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 12 StreamsenovidadesdoJava8 193 12.1 OrdenandocomJava8 . . . . . . . . . . . . . . . . . . . . . . 193 12.2 forEachdoJava8. . . . . . . . . . . . . . . . . . . . . . . . . . 198 12.3 Filtrandolivrospeloautor . . . . . . . . . . . . . . . . . . . . 198 13 UmpoucodahistóriadoJava 203 13.1 Origemdalinguagem . . . . . . . . . . . . . . . . . . . . . . . 203 13.2 Escrevaumavez,rodeemqualquerlugar! . . . . . . . . . . . 204 13.3 Linhadotempo . . . . . . . . . . . . . . . . . . . . . . . . . . 205 14 Continuandoseusestudos 211 14.1 Entreemcontatoconosco . . . . . . . . . . . . . . . . . . . . 212 vii
Description: