0% acharam este documento útil (0 voto)
31 visualizações35 páginas

Curso Java

Enviado por

jaupventur
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
0% acharam este documento útil (0 voto)
31 visualizações35 páginas

Curso Java

Enviado por

jaupventur
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
Você está na página 1/ 35
Curso de Java Basico Fabio Mengue~fbio@unicarp br Centro de Compatagio-Unicamp Historia Répida da Linguagem Em 1991, um grupo de engenheiros da Sun Microsystems foi encarregado de criar uma nova linguagem que pudesse ser utilizada em pequenos equipamentos como controles de TV, telefones, fornos, geladeiras, ete. Essa linguagem deveria dar a esses aparelhos a capacidade de se comunicar entre si, para que a casa se comportasse como uma federagio, Deveria ainda ser capaz de gerar cédigos muito pequenos, que pudessem ser executados em varios aparelhos diferentes, ¢ praticamente infalivel. Os engenheiros escolheram o C++ como ponto de partida, Orientada a objetos, muito poderosa e gerando pequenos programas, parecia a escolha correta. Para solucionar o problema da execucao em varias arquiteturas, eles utilizaram 0 conceito da maquina virtual, onde cada fabricante iria suportar algumas fungdes bésicas que os programas utlizariam, Até hoje a linguagem resultante deste projeto nao ¢ utilizada em aparelhos eletrodomésticos. Ao invés disso, o Java se tornou um das linguagens de programacao mais utilizadas no planeta. Vantagens do Java (Por Que Estudar Essa Linguagem ?) Na maioria das linguagens de programagio, vocé precisa compilar ou interpretar um programa para que ele seja executado em seu computador. A linguagem Java é diferente, pois seus programas si compilados E interpretados. Com 0 compilador, voce inicialmente transforma seu programa em uma linguagem intermediiria, chamada bytecode. Esse codigo & independente de plataforma, e é mais tarde interpretado por um interpretador ava, A compilagio acontece apenas uma vez; a interpretagao acontece todas as vezes que seu programa é executado. A figura abaixo mostra como isso acontece. on rnyProgran.java yProgran class: Eas Voeé deve pensar nos byrecodes como instrugdes de maquina para a Java Virtual Machine (ou SVM). Todos os produtos que conseguem executar programas em Java (como um browser que executa applet’s) possuem uma cépia da JVM. Bytecodes Java tornam possivel a tecnologia “escreva uma vez, execute em qualquer lugar”. Vocé pode compilar seu programa Java em qualquer plataforma que possua um compilador. Os byfecodes gerados podem ser interpretados em qualquer plataforma que possta uma JVM. Veja na figura abaixo: —» (Compiler HelToforldkpp. jave (Cotorpretar5 (interpreter) Ciiorpreta) a 2 Pc — sale ‘Win32 Solaris MacOS A Plataforma Java Por plataforma, entendemos 0 conjunto de hardware e software no qual um programa executa, Alguns exemplos de plataformas muito usadas so 0 Windows, 0 Linux, o MacOS. A plataforma Java é diferente, pois nfo envolve hardware; ela utiliza a plataforma de hardware das outras. A plataforma Java tem dois componentes + Java Virtual Machine (Java VM ou JVM) + Java Application Programming Interface (Java API) A API Java é uma colegio de componentes de software prontos, que incluem desde estruturas para manipulacdo de arquivos até a construciio de aplicativos grificos. A API é organizada como um grupo de bibliotecas com classes e interfaces; essas bibliotecas so chamadas de pacotes. A figura abaixo mostra 0 esquema de funcionamento da plataforma Java: rogran Java Java API] [aris fer rasom Hardware-Based Platform Erros Comuns de Conceito Sobre Java Muita gente pensa muita coisa sobre Java, e muita coisa errada. A seguir listamos algumas idéias erradas mais comuns. Java é uma linguagem facil de aprender. ‘Nenhuma lingagem poderosa como o Java é ficil de aprender. E sempre ficil escrever programas do tipo “Alo Mundo”. Aprender a lidar com if, while e tipos do Java é uma tarefa simples; a parte complexa vem da orientagdo a objetos e das classes presentes na linguagem. ‘Temos mais de 1.500 classes e interfaces diferentes. A descrigao de cada uma cabe em um livro de 600 paginas. O ambiente Java facilita a programacao. Vocé vai aprender Java usando 0 notepad eo prompt do DOS. Nio é 0 melhor ambiente do mundo, especialmente se comparado as linguagens visuais que temos hoje, como o Visual Basic. Em um ambiente de alta produtividade, o uso do Java deve ser muito racional, levando em conta as dificuldades da codificagao, Java seré: a linguagem universal no futuro. E possivel, em teoria. Mas existem muitos sistemas com cédigos nativos que sao perfeitos da maneira que esto hoje, e por isso no devemos “mexer”. O Java nio é recomendado para solucionar todos os problemas. Java é apenas mais uma linguagem como qualquer outra. ‘A linguagem Java, apenas pelo fato de permitir que um programa seja executado em. qualquer plataforma, ja realizou revolugao suficiente. Além disso, a linguagem foi desenhada para se utilizar da rede, e os conceitos de ambiente multitarefa auxiliam 0 produto a ter poucas comparagdes no mercado hoje. Todos os programas Java tem que ser executados dentro de um navegador. ‘Um dos usos do Java é a confeccao de applets. Java também serve para programar aplicativos, servlets, JavaBeans, componentes ¢ uma grande gama de produtos. Javascript é uma versao simplifieada do Java. Javascript é uma linguagem utilizada em navegadores. Ela foi inventada pela Netscape, e sua sintaxe é semelhante da linguagem Java. Com excecao do nome, as semelhangas terminam ai. Instalando o ambiente Para o desenvolvimento de aplicativos utilizando o Java, é necessirio a instalagao do compilador Java, das API's e da IVM. A instalagdo do ambiente segue 0 mesmo esquema da instalago de qualquer produto para Windows. Devemos fazer 0 download da versio mais apropriada via fip ou http e executar 0 arquivo, para que o produto se instale As versoes para Windows, Linux e Solaris pode ser obtido em: ‘hitp-/iavasun.com Meu primeiro programa Java Como a maioria das linguagens de programagiio, o fonte de seu programa em Java deve ser criado a partir de um editor de texto que gere arquivos em formato ASCII. F possivel utilizar editores como o Word e 0 Wordpad, mas o texto deve ser salvo sem formatagao. O editor ideal & o notepad. O programa fonte em Java deve ser salvo obrigatoriamente com a extensio java. Salve xno notepad o arquivo utilizando aspas duplas, assim: ‘AloMundo av: ‘Vamos ento criar uma pasta chamada CURSO (md curso) para que possamos organizar os programas e exercicios que faremos. Execute o Notepad agora, e vamos digitar nosso primeiro programa em Java. Copie as linhas abaixo: class AloMundo { public static void main(String args[]) { System out println(““Alo Mundo !"); } 3 ‘Nao se preocupe em entender 0 cédigo; é apenas um exemplo, e explicaremos esses comandos mais tarde. Salve o arquivo como AloMundo java (letras maitisculas e miniisculas sio importantes), A seguir, vamos compilar o programa. A compilagio ira gerar os bytecodes. Do prompt do DOS, execute: javac AloMundo java Se niio houver erro, depois de alguns segundos voeé deve ter avesso ao prompt ‘novamente. Para executar o programa, java AloMundo Vocé deve ter recebido como resposta a frase “Alo Mundo !”. Isso significa que tudo esti certo com seu ambiente e vocé acabou de criar seu primeiro programa em Java. Exercicios —Altere o programa AloMundo para que ele imprima seu nome completo. ~Altere o programa AloMundo e faga com que ele imprima seu nome em duas linhas separadas. Objetos O Que Siio Objetos ? Quando temos um problema e queremos resolve-lo usando um computador, necessariamente temos que fazer um programa, Este nada mais é do que uma serie de instrugdes que indicam a0 computador como proceder em determinadas situagdes. Assim, o grande desafio do programador é estabelecer a associagio entre o modelo que o computador usa e © modelo que © problema the apresenta. Isso geralmente leva o programador a modelar o problema apresentado para © modelo utilizado em alguma linguagem, Se a linguagem escolhida for LISP, 0 problema seri traduzido como listas encadeadas, Se for Prolog, o problema sera uma cadeia de decisdes. Assim, a representagao da solugdo para o problema é caracteristica da linguagem usada, tornando a eserita dificil A orientagao a objetos tenta solucionar esse problema. A orientagao a objetos é geral 0 suficiente para ndo impor um modelo de linguagem ao programador, permitindo a ele escolher ‘uma estratégia, representando os aspectos do problema em objetos. Assim, quando se "Ié" um programa orientado a objeto, podemos ver no apenas a solug40, mas também a deseri¢ao do problema em termos do proprio problema, O programador consegue "quebrar" o grande problema em pequenas partes que juntas fornecem a solugio. Othando sua volta é possivel perceber muitos exemplos de objetos do mundo real: seu cachorro, sua mesa, sua televisio, sua bicicleta, Esses abjetos tem duas caracteristicas bisicas, que so 0 estado eo comportamento. Por exemplo, os eachorros tem nome, cor, raga (estados) e eles balangam o rabo, comem, ¢ latem (comportamento). Uma bicicleta tem 18 marchas, duas rodas, banco (estado) ¢ elas brecam, aceleram e mudam de marcha (comportamento). De maneira geral, definimos objetos como um conjunto de variiveis e métodos, que representam seus estados e comportamentos. Vanabies stemoas i> ‘som annoy { aa ‘Veja a ilustragio: Temos aqui representada (de maneira logica) a idéia que as linguagens orientadas a objeto utilizam. Tudo que um objeto sabe (estados ou varidveis) e tudo que ele podem fazer (comportamento ou métodos) esta contido no préprio objeto. No exemplo da bicicleta, poderemos representar 0 objeto como no exemplo abaixo: 10 mph ON sen Temos métodos para mudar a marcha, a cadéncia das pedaladas, e para brecar. A utilizagdo desses métodos altera os valores dos estados. Ao brecar, a velocidade diminui. Ao mudar a marcha, a cadéncia & alterada. Note que os diagramas mostram que as varidveis do objeto esto no centro do mesmo. Os métodos cercam esses valores e os “escondem” de outros abjetos. Deste modo, s6 é possivel ter acesso a essas varidveis através dos métodos. Esse tipo de construgio é chamada de encapsulamento, e é a construgao ideal para objetos. Exercicio - Imagine um exemplo de objeto diferente dos vistos até agora, Para esse objeto, relacione possiveis métodos e atributos. Mas um objeto sozinho geralmente nio é muito titil. Ao contrario, em um programa orientado a objetos temos muitos objetos se relacionando entre si. Uma bicieleta encostada na garagem nada mais é que um pedago de ferro e borracha. Por si mesma, ela nao tem capacidade de realizar nenhuma tarefa, Apenas com outro objeto (vocé) utilizando a bicicleta, ela & capaz de realizar algum trabalho. A interagdo entre objetos ¢ feita através de mensagens. Um objeto “chama” os métodos de outro, passando parametros quando necessério. Quando vocé passa a mensagem “mude de marcha” para o objeto bicicleta vocé precisa dizer qual marcha vocé deseja. A figura a seguir mostra os trés componentes que fazem parte de uma mensagem: + objeto para o qual a mensagem é dirigida (bicicleta) + nome do método a ser executado (mudamarcha) + 0s parimetros necessirios para a execugao do método. changeGears(1owerGear) Youricycle A troca de mensagens nos fornece ainda um beneficio importante. Como todas as interagdes sfo feitas através delas, nfo importa se o objeto faz parte do mesmo programa; ele pode estar até em outro computador. Existem maneiras de enviar essas mensagens através da rede, permitindo a comunicagao remota entre objetos. Assim, um programa orientado a objetos nada mais é do que um punhado de objetos dizendo um ao outro 0 que fazer. Quando vocé quer que um objeto faca alguma coisa, vocé envia a ele uma "mensagem" informando o que quer fazer, ¢ 0 objeto faz. Se ele precisar de outro objeto que o auxiliar a realizar o "trabalho", ele mesmo vai cuidar de enviar mensagem para esse outro objeto. Deste modo, um programa pode realizar atividades muito complexas baseado apenas em uma mensagem inicial, Vocé pode definir varios tipos de objetos diferentes para seu programa. Cada objeto ter stias proprias caracteristicas, e saber’ como interpretar certos pedidos. A parte interessante é que objetos de mesmo tipo se comportam de maneira semelhante, Assim, vocé pode ter fungSes genéricas que funcionam para varios tipos diferentes, economizando cédigo. ‘Vale lembrar que métodos so diferentes de procedimentos e fungdes das linguagens procedurais, e & muito facil confundir os conceitos. Para evitar a confusdo, temos que entender 0 que sio classes. Exercicios - Imagine dois objetos que se relacionam, Mostre como é possivel através de mensagens 0 relacionamento entre eles. Classes Até agora, comentamos sobre o que é um objeto e como ele se relaciona com outros objetos. Falaremos agora a respeito de classes. Sua bicicleta é apenas uma das varias que existem. A sua bicicleta especifica foi feita por ‘um fabricante, e tem certas caracteristicas que seguem uma linha ou modelo. Assim, é possivel ir em uma loja e comprar varias unidades de bicicletas essencialmente idénticas. Mas no podemos dizer que todas so © mesmo objeto, simplesmente por serem parecidas. Em orientagao a objetos, dizemos que um (ou mais) objetos pertencem a uma classe quando eles sio muito semelhantes, de acordo com certos padres. Assim, dependendo da situagao, alguém pode dizer que sua bicicleta é um veiculo, pois ele anda sobre rodas e carrega ‘uma pessoa, Se seguirmos esse padrio, uma motocieleta também é um veiculo, assim como um automével ou até um avido (ué, nfio anda sobre rodas quando decola ou pousa ? Nio carrega uma pessoa ?). Na verdade, quando programamios em linguagens orientadas a objetos, antes de tudo nds construimos as classes, os modelos, para depois usé-las na criagao de objetos daquele tipo. Voltando ao nosso exemplo das bicicletas. Quando elas sio construidas, os fabricantes tiram vantagem do fato que elas tem as mesmas caracteristicas, e podem construir varias delas a partir de uma mesma planta, Seria muito custoso fazer um novo projeto para cada bicicleta que eles fossem construir. Exercicios - Agrupe em classes os objetos abaixo: avitio elefante computador tigre calculadora motocicleta__formiga Na orientagdo a objetos, quando programamos, tentamos visualizar os objetos necessérios para resolver um problema. Se cu estou criando um programa de controle de estoque, eu vou necessitar de uma classe que represente os itens que tenho nesse estoque. Outra elasse que represente as ordens de compra. E assim por diante. Nota: A classe ¢ um modelo ou prototipo, que define as varidveis € comportamentos em comum que um certo tipo de objeto especifico contém. No nosso exemplo, depois de criada a classe bicicleta, nos é possivel criar a partir dela objetos que sero cépias idénticas da classe, mas cada uma delas tera seus proprios estados. O modelo pode fornecer dados que serio compartilhados entre todos os objetos ou permitir que estes tenham dados prépiros. Nota: Objetos “derivados” de uma classe sfio chamados instancia de classe. Para tornar o entendimento mais facil, vamos ver um exemplo mais facil e pratico, Inicialmente vamos pensar em um objeto bem simples, como uma limpada. As limpadas podem ter diversos formatos, cores e tamanhos, mas basicamente elas tem apenas uma flngao, que é iluminar o ambiente, Assim, imagine uma classe limpada, Essa classe pressupde apenas 2 estados. Um objeto derivado dessa classe pode estar ligado ou desligado. Mas a Kimpada por si s6 nao decide quando vai ligar ou destigar. Quem liga ou desliga esse objeto limpada é um interruptor, acionado normalmente por uma pessoa. Pare resolver esse problema, teremos que definir um objeto baseado na classe liimpada. Teremos ainda um objeto da classe interruptor e outro da classe pessoa. Pessoa ita enviar uma mensagem ao interruptor que por sta vez ira enviar uma mensagem para a limpada. ‘Uma coisa interessante é que no interessa para a pessoa que esti ligando a lampada como 0 interruptor funciona: importa que quando pressionado, a limpada acenda, Esta & uma das, grandes vantagens de se utilizar 0 conceito de objetos em informatica. Um objeto é como uma caixa preta: niio me importa como ele faz. as coisas, apenas o que tenho que fazer para que as coisas acontecam. Voltando ao exemplo da lampada, em Java eu poderia definir uma kimpada assim: Jampada sala_de_aula = new lampada); Se eu quiser ligar a lampada, é s6 informar a ela o meu desejo, através de uma mensagem: sala_de_aula.ligar(); Ea lampada vai acender. Nao me importa como ela fez. isso, me importa apenas que ela faga, Sintaxe ‘No basta um objeto estar definido para ser utilizado. Se eu pretendo usar um objeto, eu preciso cria-lo, e atribuir o controle desse objeto a um nome. A eriagao de objetos em Java & sempre necesséria, e é chamada de instanciagao (por isso o objeto é chamado de instancia). Quando eu crio o objeto sala_de_aula, eu digo que ele é do tipo limpada e que eu quero que ele seja instanciado nesse momento (new lampada()). A partir de agora, sala_de_aula é um objeto do tipo definido e tem como fngdes tudo que uma kimpada pode fazer. Classes, Atributos e Métodos Uma das grandes vantagens do Java e nosso propésito de estudo é a capacidade de vocé definir seus proprios objets. Como j comentado, um objeto contém atributos (dados) e métodos (fungSes para manipulacao dos dados). Esses objetos irdio ajud4-lo a resolver o problema apresentado e tornarao seu trabalho mais facil. ‘Vamos inicialmente criar um objeto simples, que contenha apenas dados. class meuObjeto t String nome; int idade; String telefone; 4 Vocé acabou de definir um objeto chamado meuObjeto. Temos nome, idade e telefone como dados deste objeto. Mas niio basta defini-lo para que ele nos seja itil, Para isso, voeé deve instancit-lo, 10 assim: meuObjeto amigo = new meuObjeto(); A partir de agora, meu objeto amigo pode ser utilizado para guardar dados. Eu posso incluir dados assim: amigo dade = 33; amigo.telefone E quando eu precisar dos valores, eu simplesmente os imprimo. Nota: para facilitar nosso aprendizado, o comando para imprimir um dado é System.out.println, ¢ pode ser utilizado assim: System.out.printin (amigo.nome); ‘Vamos agora criar um método para 0 meuObjeto. Esse método vai se chamar aniversario, e ele serve para aumentar em 1 ano a idade do objeto. Ento, meu objeto ficaria: class meuObjeto 1 String nome; int idade; String telefone; public void aniversario() { idade = idade + 1; 3 i Agora, para um teste, poderiamos fazer: meuObjeto amigo = new meuObjeto(); 33; amigo.telefone = "2223311"; System.out printin ("Idade antiga"-+amigo dade); amigo.aniversario(); System.out.printla ("Nova idade"+amigo dade); Percebam que o valor da idade foi alterado. ul Exercicio - Digitem o exemplo acima e fagam o mesmo funcionar. Nota: o esquema geral para a defini¢do de um método & tipo_do_dados_de_retorno nome_do_metodo (argumentos) { corpo_do_metodo J No caso do método aniversario definido acima, nao temos nenhum tipo de retorno, por isso ele é do tipo void. Se precisarmos algum resultado de retorno, temos que indicar qual o tipo desse resultado. ‘Vamos definir outro método, que me retorna o numero de meses baseado na idade, © método poderia ser definido assim: int idadeEmMeses() | return (idade * 12); } A instrugo return vai indicat qual o valor a ser retornado na chamada do método. Como temos um retorno, ele dever ser utilizado ow apresentado. Podemos apresenté-lo assim: System.out.printin (amigo. idadeEmMeses()); Nota: Se o valor for utilizado para outros fins, devemos definir uma variavel do mesmo tipo do retomo para conter o resultado: int idade_em_meses = amigo dadeEmMeses(); As vezes, necessitamos do envio de argumentos (também chamados parametros) para um método para que ele possa executar seu trabalho. A passagem de parimetro € feita na hora da chamada, e temos que criar © método j levando em consideragao a quantidade de parametros que iremos passar. Assim, caso eu queira alterar ao atributo idade do objeto, eu poderia criar um método assim: void alteraldade(int nova_idade) { 2 idade = nova_idade; } E a chamada ao método ficaria: amigo alteraldade(30); Exercicio - Implemente o exemplo acima. Nota: Caso eu tenha mais de um argumento, eles devem ser separados por virgulas. Nota2: Na definigdo do método com mais de um argumento, eu tenho que prever as varidveis a serem recebidas. Exemplo: void qualquerCoisa (String nome, int idade, String telefone) A chamada é amigo.qualquerCoisa ("paulo”, 24, "2221133 Construgao De Programas Em Java Vocés podem estar se perguntando qual a finalidade de criar métodos para alterar valores dentro de um objeto. Nesses exemplos fica facil perceber que é muito mais facil fazer uma atribuigo simples (amigo. idade34) do que eriar um método s6 para alterar a idade. Mas isso tem sentido de ser, em linguagens orientadas a objetos. ‘A idéia é que o objeto deve gerenciar seus proprios dados, que s6 devem ser acessiveis 20 “mundo exterior" através de seus métodos (excetuando-se aqui os métodos e varidveis estaticas). Entao, pelo menos em teoria, cada atributo do meu objeto deve ter um método para gravar dados ¢ outro para devolver o dado gravado, Isso vai permitir que esse objeto seja utilizado por qualquer um, a qualquer tempo ‘Vamos passar ent&o um pequeno cédigo de um programa completo em Java para que possamos ir comentando e esclarecendo. import java.util.*; public class Propriedades t public static void main (String{] args) System.out.printin ("Bom dia... Hoje é dia\n"); Systemout.printin(new Date()): i 1B Logo na primeira linha temos "import...". E normal nas primeiras linhas de um programa em Java a colocagio da instrugao import. Essa instrugo serve para que nosso programa possa utilizar qualquer classe externa que ele necessite. No caso, meu programa usa uma fungao que retorna a data do sistema, e essa fiungao faz parte de java.util. Assim, eu preciso importar essas funedes para que meu programa funcione. Isso sera explicado melhor quando falarmos a respeito de API's, ‘Na segunda linha, definimos 0 nome desse objeto (em Java, chamado de classe). FE. importante notar que o objeto deve ter 0 mesmo nome do arquivo no disco, caso contririo 0 programa nfo iré funcionar. ‘Notamos ainda nessa mesma linha que essa classe & do tipo publica (public). Isso quer dizer que esse objeto é acessivel por outros objetos, que ele pode ser importado e usado. ‘Na proxima linha, temos @ definigao do método main, Vemos novamente o public, e a palavra static, indicando que esse método nfo pode ser instanciado, apenas usado do jeito que esta, Vemos que 0 método main admite uma lista de Strings como argumentos (chamado de args). Esses argumentos nio sfo necessirios nesse programa, mas caso necessitissemos de passar algum tipo de informagao para o programa, essas informagdes estariam armazenadas na varidvel args, ‘Na proxima linha, temos a impressio de um texto na tela. A tinica novidade é a presenga de um sinal \n no final do texto. Ele indica ao Java para pular de linha depois de escrever o texto indicado, ‘Na ultima linha temos outra impressdio. Dessa vez, temos a instanciagdo de um objeto do tipo Date, e seu valor é imediatamente impresso. Como nao necessitamos do objeto, apenas queremos um valor impresso, no é necessério criar uma varidvel apenas para isso. Note que rem sempre isso é possivel. Métodos Construtores e Overloading Como ja apresentado, ¢ sempre necessirio instanciar um objeto para poder utilizé-lo. Existe um método especial em uma classe que fornece instrugdes 4 respeito de como devemos instanciar 0 objeto. Esse método é chamado de construtor. A fungao do construtor é garantir que o objeto associado a variavel definida seré inciada corretamente, Sempre é necessario ter um construtor, e como na maioria das vezes esse construtor nao faz nada (além de instanciar 0 objeto), nio é necessério declara-lo, O Java faz. isso automaticamente para nos, Nota: O método construtor tem exatamente o mesmo nome da classe, Assim, no exemplo: 4 class meuObjeto 1 String nome; int idade; String telefone; public void aniversario() idade = idade + 1; i } ‘Nao temos construtor definido. Mas existem casos onde teremos necessidade de um construtor que faz algo, como na definigdo de String. Eu posso definir uma String assim String nome = new String(); Ow assim: String nom new String ("Joao"); Isso quer dizer que o objeto String tem pelo menos 2 construtores; um que inicia 0 objeto sem argumentos e outro que inicia com argumentos. Esse tipo de artificio é chamado de sobrecarga (em inglés, Overloading). Se eu quiser que meuObjeto tenha o mesma tipo de funcionalidade do String, eu defino dois construtores, assim: class meuObjeto \ String nome; int idade; String telefone; meuObjeto() J/ Esse & 0 construtor sem argumentos { } meuObjeto(String _nome, int _idade, String _telefone) // Construtor com argumentos t nome =_nome; idade = “idade; telefone = _telefone; i public void aniversario() { idade ~ idade + 1; i Is i Agora meuObjeto pode ser instanciado como meuObjeto amigo = new meuObjeto(); ou meuObjeto amigo = new meuObjeto("Joao", 32, "2223311"); ‘A sobrecarga é um dos recursos mais interessantes da orientagao a objetos. E nao esta restrito aos construtores; podermos definir 0 mesmo nome de método para qualquer método. Assim, tornamos o programa mais legivel e temos menos nomes para "inventar” Nota: Como os dois (ou mais) métodos tem o mesmo nome, a diferenciagdo de qual método é executado depende da quantidade e do tipo dos argumentos enviados. Nota2: Quando nao definimos construtores, o Java eria um sem argumentos para nos. Quando eu escolho definir o construtor, tenho que definir para todos os tipos, inclusive 0 sem argumentos. Utilizagao das API's Como ja falado, existem muitos objetos prontos que a linguagem Java nos proporciona. Como todos 0s abjetos, eles podem conter dados ¢ tem varios métodos para que possamos usa- los. E importante para um programador Java conhecer 0 maximo desses objetos que puder; eles facilitam o trabalho na medida que evitam que nos tenhamos o trabalho de inventar algo que jé esti pronto. Lembre que normalmente nés nilo temos acesso aos atributos dessa classe; apenas a seus métodos Quando executamos um import ... no inicio do nosso programa, estamos informando a0 compilador Java quais as classes que desejamos usar. Assim, um import java.util; quer dizer: "eu vou utilizar alguns objetos do pacote java.util". Um programa pode ter tantos import quanto necessario. Isso permite que vocé utilize componentes de pacotes baixados da Internet, com utilizagdo mais restrita, ‘Nota: Uma lista completa das API's existentes pode ser achada na lista de links no final do documento. 16 Conceito De Pacote Um pacote pode ser entendido como uma serie de objetos agrupados por afinidade. Eles ficam "juntos" pois tem fumgdes semelhantes (como por exemplo manipula texto). Quando nés vamos eriar nossos préprios objetos para resolver um problema, normalmente esses objetos ficam todos no mesmo sub-diretorio; entre eles estabelecemos uma relagio de "amizade", e podemos considera-los como parte do mesmo pacote (default). Estando no mesmo sub-diretorio, certas restrigdes de acesso entre esses objetos mudam. Explicamos restrigdo de acesso no t6pico a seguir. Tipos De Métodos: Publicos, Privados E Protegidos As restrigdes de acesso em Java existem por dois motivos. O primeiro é nao permitir que © programador utilize meus objetos da maneira que quiser. Eu dito o que pode e 0 que no pode ser utilizado. E 0 segundo motivo é que tudo que nfo for publico (e consequentemente no permite acesso) pode ser alterado na hora que eu quiser. Contanto que os métodos de acesso (que sto piiblicos) fiquem inalterados, ninguém vai pereeber a diferenga. ‘Como exemplo, vejamos o objeto String. O String na verdade é um vetor de caracteres. Eu nfo tenho permissao para acessar os contetidos internos desses caracteres; eu tenho que fazer {sso utilizando um método. Assim, existem situagdes onde € interessante que meus objetos tenham um certo controle sobte o que o programador pode fazer com eles, para que niio ocorram problemas. Para isso, temos trés tipos de acesso a métodos e atributos. Quando utilizamos a palavra public, liberamos 0 acesso do atributo/método para ser utilizado por qualquer um que importe © pacote ou o objeto, No caso do private, ninguém pode acessar 0 método/atributo daquele objeto, nem mesmo 0s objetos daquele pacote ou objetos que herdam suas caracteristicas. Isso evita que certos métodos sejam acessados diretamente, evitando erros. Métodos/atributos protected podem ser herdados, mas nao alterados. Iremos comentar a respeito de heranga mais a frente. Exemplo: class exemplo { public metodol() { private metodo2() { Nessa classe, 0 metodo] pode ser executado por qualquer outro objeto. O método metodo? s6 pode ser executado pelo proprio objeto. 0 Composicao e Heranca Um dos conceitos mais interessantes das linguagens orientadas a objeto é a reutilizaga0 de codigo. Mas para isso realmente funcionar, vocé tem que conseguir fazer mais do que simplesmente copiar cddigo ¢ altera-lo. Vocé deve ser capaz de criar uma nova classe usando outra classe ja existente. Existem duas maneiras diferentes de fazer isso. Uma & chamada composico. A composigio é geralmente utilizada quando se deseja utilizar as caracteristicas de um objeto mas no sua interface. Quando eu tenho um objeto do tipo carro e uma outra pessoa vai utilizar um carro com as mesmas funcionalidades, é mais ficil ela construir um carro utilizando as "pecas" (que ja estio prontas). Assim, ela pode importar a classe carro e usar: carro meuCarro = new carro(): ‘A partir de agora, dentro do seu objeto, vocé tem um objeto do tipo carro. O que voce fez aqui foi compor um objeto. Seu objeto agora é do tipo composto, ja que ele possui mais do que um objeto dentro dele. Mas existe situagdes onde a composigao no basta. F quando eu desejo utilizar 0 objeto existente para criar uma versio melhor ou mais especializada dele. Isso & chamado heranga. Imagina que eu tivesse uma classe chamada Empregado. Essa classe tem como atributos © nome, segao e salirio do empregado, Existe também um método para alterar 0 salaro. class Empregado \ public Empregado (String nome, String _secao, double _salario) { ‘nome = _nome; secao =_secao; salario = _salario; } public void aumentaSalario (double percentual) { } String nome: String secao; double salario; salario *= 1 + perventual / 100; 18 ‘Vamos supor agora que temos que necessitamos de um tipo especial do objeto Empregado, que é o Gerente. O Gerente tem secretaria, e a cada aumento ele recebe a mais 0,5% a titulo de gratificagao. Mas o Gerente continua sendo um empregado; ele também tem nome, segiio e sakirio, Assim, fica mais ficil utilizar a classe Empregado jé pronta como um modelo, e aumentar as funcionalidades. Isso & chamado de heranga. Veja a classe Gerente no exemplo abaixo: class Gerente extends Empregado 4 public Gerente (String _nome, String _secao, double _salario, String _secretaria) { super (nome, secao, salario); // Aqui eu chamo a super classe do Gerente secretaria = _secretari i public void aumentaSalario (double percentagem) 1 super.aumentaSalario (percentagem+0,5); 1 public String getSecretaria () 1 } return (secretaria); public void setSecretaria (String _secretaria) { i seeretaria = _secretaria; private String secretaria; © que fizemos aqui foi literalmente nos aproveitarmos do eédigo de outro programa, especializando o objeto Empregado. Adicionamos métodos a essa classe e mesmo alteramos um. de seus métodos (aumentaSalario) para refletir uma nova condigao. ‘Uma palavra que apareceu nessa classe foi a super. Ela referencia a classe da qual essa se originou, a classe que foi estendida ou herdada, Assim, super.aumentaSalario invoca 0 método aumentaSalario da classe Empregado. A classe Gerente poderia ter substituido completamente 0 método ou fazer alteragSes, como fizemos. 19 Assim, 6 sempre uma boa idéia sempre pensar em construir objetos que possam ser genéricos o suficiente para que possam ser reaproveitados. ‘Nota: Como referencia para nos auxiliar a determinar se devemos utilizar composig&io ou heranga para construir um objeto, sempre pense € para heranga (um carro é um veiculo), COntémM para composigio (um carro contém motor, freio, etc.). ‘Nota 2: Quando nao desejamos que um método ou atributo seja redefinido, utilizamos a palavra reservada final Polimorfismo O conceito de heranga nos leva a discutir outro: o polimorfismo. Podemos traduzir essa palavra pela capacidade de um objeto em saber qual o método que deve executar. Apesar da chamada ser a mesma, objetos diferentes respondem de maneira diferente. Assim, quando chamamos aumentaSalario da chasse Gerente, é esse método que sera executado, Se a classe Gerente nao tivesse esse método, 0 método da classe Empregado seria executado, Caso a classe Empregado também nio tivesse esse método, a classe da qual ele veio seria objeto do pedido. ‘Como exemplo, imagine uma classe chamada Figura. Essa classe tem a habilidade de desenhar a si mesma na tela, Se eu definir uma classe chamada Triangulo que estenda a classe Figura, ela pode usar o método da super classe para desenhar a si mesma, sem necessidade de criar um método apenas para isso. ‘Usando ainda nosso exemplo de Funcionétio e Gerente. Se a classe Funcionaio tivesse ‘um método para mudar a seco do fiunciondio, nfo seria necessirio definir um método igual para a classe Gerente. Entretanto, quando eu invocasse o método Gerente.musaSecao(nova_secao), © objeto saberia como se comportar, pois ele herdou essa “sabedoria” de sua superclasse. Nota: Como todos os objetos definidos so subclasses de Object, todas as classes que usamos ou definimos, por mais simples que sejam, tem certas capacidades herdadas desta classe. Para maiores detalhes, veja a API. Exerciclos -Implemente 0 exemplo acima, Altere ou defina métodos usando o mesmo nome (sobrecarga), defina atributos e métodos private e public e teste sua seguranga. 20 Métodos Estaticos Um tiltimo conceito importante diz respeito a métodos especiais. Eles foram criados para resolver situagdes especiais na orientagao a objetos, e também para simplificar certas operagdes Imagine uma classe, criado por outra pessoa, que tenha apenas um método. A classe se chama validaCPF, e serve para verificar se um CPF é valido ou no. Segundo as "leis" da orientacao a objetos, eu preciso instanciar um objeto desse tipo & utilizar seu método para a verificagao do valor. Isso é um tanto quanto inedmodo, pois eu simplesmente necessito de uma funcionalidade, e ndo do objeto todo. Da mesma maneira, temos dezenas de fimngSes mateméticas, fisicas, estatisticas e outras que no nos interessam, Gostariamos apenas de enviar os pardimetros e receber resultados, como se esses métodos fossem fungdes. ‘Nesses casos (¢ em alguns outros) podemos criar esse método como estitico (static). Um método estitico presente em uma classe nio obriga a instanciar um objeto para que eu tenha acesso a seus servigos; ele serve apenas para que possamos aproveita-lo em pequenas computagdes. Assim, a definigao do validaCPF seria static boolean validaCPF(String mumero_cpf) { cédigo, i Quando eu precisasse utilizar 0 eédigo, eu faria algo do tipo: boolean cpf_valido = validaCPF(" 123123123"); Nota: Os métodos estiticos s40 utilizados em casos especificos. Um programa orientado a objetos que é feito inteiramente de métodos estiticos nio é orientado a objetos :) Exercieio - Crie uma classe que possua um método estitico chamado Soma. Esse método deve receber dois parimetros e devolver o resultado da soma destes parimetros. Use sobrecarga de métodos para que os pariimetros possam ser tanto do tipo inteiro (int) quanto do tipo fracionario (double) 2 Apéndice A — Programacio Fundamental Nessa segdio falamos sobre os conceitos biisicos do Java, como tipos de dados, loops, ¢ métodos. Como nio é trivial escrever programas que utilizam a interface grafica, iremos inicialmente aprender como criar aplicativos, ou programas que no utilizam outros recursos além do prompt do DOS. Comentarios E sempre interessante a colocacao de comentirios em programas. Os comentirios permitem que a manutengao posterior do eédigo seja mais rapida e serve para indicar 0 que o programa faz. Os comentérios em Java podem ser de dois tipos. Utiliza-se duas barras (// ) em qualquer posigio da linha. Tudo o que aparecer & direita das duas barras sera ignorado pelo compilador. Exemplo: a++; //Ineremento da variavel Existem ocasides onde varias linhas de comentario sio necessa Nesse caso, utilizamos os sinais de /* e */ para indicar inicio e fim de bloco de comentarios, como no exemplo: /* Programa de Exemplo — Esse programa nio faz nada. Criado por Fabio Mengue em Outubro de 2000 Versao 1.0 + Tipos de Dados Java 6 uma linguagem que necesita que todas as variéveis tenham um tipo declarado. Existem 8 tipos primitivos em Java, Seis deles so numéricos, um é 0 caracter e o outro & 0 booleano. Os tipos inteiros guardam valores numéricos sem parte fraciondria. Valores negativos so permitidos. Tipo Tamanho Faixa de Valores Int 4 bytes -2.147.483.648 até 2.147.483.647 Short 2 bytes -32.768 até 32.767 Byte L byte -128 até 127 Long 8 bytes -9.223.372.036.854.775.808 até 9.223.373.036.854.775.807 2 ‘Na muioria das ocasides, o tipo int é suficiente. Nao se pode esquecer que como Java portivel, esses valores so os mesmos para qualquer plataforma de hardware. Os tipos primitivos que representam valores com ponto flutuante: Tipo ‘Tamanho Faixa de Valores Float 4 bytes “4/- 3.40282347E+38F (aproximandamente 7 digitos significativos) Double 8 bytes +f 1.79769313486231570E+308 (5 digitos significativos) Normalmente utilizamos o double na maioria das situagdes onde é necesséria a representagao desse tipo de niimero, pois sua precis4o é maior. ‘Nota: Nimeros do tipo float aparecem com um sufixo F. (3.04F). Se o mimero aparecer sem o F, ele é considerado double. O tipo caracter serve para representar apenas uma letra ou mimero. ‘Tipo Tamanho a de Valores Char 2 bytes O até 65536 Esse tipo serve para representar caracteres usando a tabela Unicode. Dessa tabela faz parte a tabela ASCII e mais alguns caracteres especiais, ‘Nota: O tipo caracter é sempre representado por aspas simples (“h’). Caracteres representados or aspas duplas (“h”) na verdade so strings. 0 tipo booleano pode assumir apenas dois valores, true ou false. Esse tipo & usado apenas para testes logicos. Tipo ‘Tamanho Faixa de Valores Boolean 1 bit true ou false Declaragio de Variiveis A declaragao de varidveis em Java, como em varias outras linguagens, exige que o tipo da variavel seja declarado. Voc@ inicia a declaragao indicando 0 tipo da varidvel e o nome desejado, como no exemplo: int a; 23 byte b; char ch; Note que todas as declaracdes terminam com 0 ponto-e-virgula. Os nomes das varidveis devem ser iniciados com qualquer letra, seguidas por uma seqiiéncia de letras ou digitos. tamanho do nome da variavel ndo tem limites. E possivel declarar varias variaveis em uma linha, bem como atribuir valores a clas na declaragio, como nos exemplos abaixo: int abs int a= 10; (/ Isto é uma inicializaga0 Conversées Entre Tipos Java nfo tem problemas para atribuir um tipo int para um double ~ ele vai tratar o valor como double. Assim sempre que uma atribuigao for efetuada o tipo mais representativo sera utilizado. Entretanto, existem ocasides onde queremos representar o valor inteiro de um tipo double, por exemplo. Assim, tonna-se necessario converter o tipo, em uma operagao chamada de cast. Essa conversao nada mais é do que indicar 0 tipo desejado, como no exemplo: double x = 9.345 int z = (int)x; A varidivel z terd como valor o nimero 9. As conversdes permitidas sem cast sao: byte->short->int->long->float->double e char-> int Constantes ‘Vocé pode definir constantes em Java utilizando a palavra reservada final. Essa palavra indica que voé definiu 0 valor da uma varidvel e que esse valor nao pode ser modificado. ‘Normalmente as constantes sio definidas em caixa alta, como no exemplo: final double TEMPERATURA = 25.4; 4 Operadores Os operadores aritméticos + - * / sfo utilizados para a adigao, subtraco, multiplicagio e divisio. A divisio retorna resultado inteiro se os operadores forem inteizos, ¢ valores de ponto flutuante em caso contrario. Se for necessirio ter 0 valor do resto da divisio, utilizamos 0 % (fungdo mod). E possivel utilizar operadores na atribuigtio das varidveis, como no exemplo: intn=5; inta=2*n; //a=10 Existe também a possibilidade de utilizar atalhos para operagdes: xt=4i // equivalente ax +45 A exponenciagao é feita por uma fungao da biblioteca matematica. Essa biblioteca tem dezenas de operagdes especificas. double y = Math pow (x, b); 1x € elevado a b (x") Incremento e Decremento uso de contadores em programas é muito comum, Existem maneiras de realizar inerementos e decrementos em varidveis utilizando o sinal + € 0 --. Veja nos exemplos: int a= 12; at+ /faagora vale 13 uso do ineremento e do decremento depende da posicdo onde eles se encontram na expresso, Existem ocasides em que quero a expresso calculada ¢ o valor seja incrementado depois. Em outros casos, o valor deve ser incrementado e a expressio avaliada ao final. Acompanhe 0 exemplo: int m=7; intn=7; inta=2* ++m; ///a vale 16, m-vale 8 int b=2%n++; //bvale 14,n vale 8 25 Operadores Relacionais e Booleanos Esses operadores servem para avaliar expresses. Para verificar a igualdade entre dois, valores, usamos o sinal == (dois sinais de igual). ‘Temos ainda os sinais de maior 0 operador usado para verificar a diferenga (no igual) é 0 (@), menor (<), maior on igual (=), menor ou igual (< Existem operadores logicos AND (&&), OR (||). Strings Todos os outros valores que utilizamos em Java com exceeio dos tipos explicados acima (tos primitivos) sio objetos. Um dos objetos mais utilizados € o String (com S maiisculo); O String é uma sequencia de caracteres. String String oi 1/ String vazia. Note as aspas duplas. “Bom dia”; ‘As strings podem ser coneatenadas, utilizando o sinal de +, como no exemplo: String um = "Curso”; String dois = “Java”; String result = um + dois; Nota: Uma String nao deve ser comparada com outra usando o sinal ==, pois elas sio objetos, Existe um método especial para comparar objetos, utilizando 0 equals, Assim, a comparagao da String a coma String b seria: a.equals(b); Nota 2: O objeto String em Java tem mais de 50 métodos diferentes. Vetores e Matrizes ‘Vetores sio estruturas utilizadas para armazenar dados afins. Esses dados podem ser de qualquer tipo, desde variaveis primitivas até objetos complexos. ‘Um vetor pode ser definido assim: 26 in[] vetor = new int[100]; Aqui temos um vetor de 100 posigdes (de 0 a 99) de valores inteiros. Os elementos do vetor podem ser acessados segundo stia posigio: vetor[30] E podemos iniciar seus valores na propria inicializagio, como abaixo: int{] impares 2,3,5,7,9,11,13} E possivel definir vetores de varias dimensdes. E muito usado em matemitica 0 conceito de matriz, que em Java é definida como: int{J[] matriz = new int{S][6]; E os valores sio acessados da mesma maneira que os vetores. Controle De Fluxo Do Programa Apresentamos aqui os comandos que nos permitem controlar o fluxo do programa e expressdes condicionais em Java. Mas antes temos que aprender a delimitar blocos e conceituar 0 escopo ‘Um bloco nada mais é uma séries de linhas de codigo situadas entre um abre e fecha chaves ( { } ). Podemos criar blocos dentro de blocos. Dentro de um bloco temos um determinado escopo, que determina a visibiidade e tempo de vida de variaveis e nomes. Por exemplo: 1 int x= 10; 1/ aqui eu tenho acesso a0 x int z= 20; 1/ aqui eu tenho acesso ao xe a0 z } / aqui eu tenho acesso ao x; 0 esta fora do escopo i Assim, 6 permitido a definigao de variéveis com mesmo nome, desde que elas nfo estejam compartilhando o mesmo escopo. A definigao dos blocos ajuda a tornar o programa mais legivel ¢ a utilizar menos meméria, além de indicar quais os comandos a serem executados pelas instrugdes condicionais e os loop, que veremos a seguir: 27 if (expresso) comando ou { bloco } else J/opcional comando ou { loco} // opcional Desvia 0 fluxo de acordo com o resultado da expresstio. A expressio pode ser algo simples ou composto. O else ¢ opcional. Se for necessario mais de um comando, é necessirio colocar o bloco das instrugdes entre ¢ } return © comando return serve para 2 propésitos: mostrar qual valor deve ser retornado do método (se ele nilo for void) e para encerrar a execucio do método imediatamente. Os comandos que utilizamos para executar a mesma porgio de cédigo varias vezes so chamados de comandos de iterago, ou comandos de loop. while (expressio) comando ou { bloco } A expresso é avaliada uma vez antes do comando. Caso seja verdadeira, 0 comando & executado, Ao final do comando, a expressiio é avaliada novamente. Se for necessério mais de um comando, é necessirio colocar o bloco das instrugdes entre { } do comando ou { bloco } while (expressio); O comando é executado, e a expresso é avaliada no final. A tinica diferenga entre 0 do- while ¢ 0 while ¢ que no primeiro © comando é sempre executado pelo menos uma vez. Se for necessirio mais de um comando, é necessario colocar o bloco das instrugdes entre { } for (inicializacdo; expresso; passo) comando ou { bloco } ‘Uma variivel é iniciada na parte de inicializagao. A expressio & testada a cada execugao do comando, ¢ enquanto for verdadeira, a(s) instrugdo(es) contidas no bloco é (sao) executada(s).. Ao final, passo é executado. 28 Nota: E possivel a inicializagio de mais de uma varidvel e a execugdio de mais de uma instrugio no passo, dividindo as instrugdes com virgulas, como abaixo for (int i=0, j=1; i< 10 && j!= [sit jh) break O comando termina a execucio de um loop sem executar 0 resto dos comandos, e forga a sadia do loop. continue © comando termina a execugao de um loop sem executar o resto dos comandos, e volta para o inicio do loop para uma nova iteragao, switeh (varlivel) { case (valor): comando ou { bloco } break; case (valor2): comando2 ou { bloco2 } break; default: comando_final ow { bloco final } O comando switch serve para simplificar certas situagdes onde existem varios valores a serem testados. Assim, identificamos a varidvel a ser testada, e colocamos uma linha case para cada possivel valor que a varidvel pode assumir. No final, nos é permitido colocar uma linha default para o caso da variavel nfo assumir nenhum dos valores previstos. O break no final de cada comando serve para evitar comparagGes initeis depois de encontrado 0 valor correto. Se for necessirio mais de um comando, ¢ necessirio colocar 0 bloco das instrugdes entre { } . Outras instrugdes Ainda existem centenas de outras instrugdes que podem ser utilizadas em Java, A maioria delas faz referéneia a métodos de objetos e classes, que existem para realizar operagdes especificas Mas nao precisamos nos limitar as fungdes definidas pela linguagem. Temos a possibilidade de criar nossas proprias funedes, utilizando procedimentos simples para realizar tarefas complexas (tradicionalmente chamadas de fungdes). Além disso, podemos ainda estender a API, com classes especificas de outros fabricantes. 29 Apéndice B - Objetivos do Desenho da Linguagem Java Simples ~ A linguagem Java é na verdade uma verso mais “limpa” do C++. A idéia era que a linguagem deveria evitar consumir um grande tempo para o treinamento de programadores; entretanto, ela deveria utilizar as técnicas mais modernas de construgio de software. Orientada a Objetos ~ Hi trinta anos 0 conceito de orientagao a objetos existe na programaco. Hoje em dia, ele é sinénimo de modernidade, eficiéncia e extensibilidade, em um ‘universo cujas expectativas mudam muito rapidamente. Familiar ~ © Java se manteve 0 mais perto possivel do C-+r. Removendo suas complexidades e mantendo sua sintaxe, é possivel a uma grande gama de programadores iniciar diretamente a programaco nessa linguagem. ‘Robusta ~ Java foi criada para desenhar programas confidveis. O interpretador verifica continuamente a execugao dos programas, protegendo o sistema de erros. A linguagem também evita que vicios prejudiciais por parte dos programadores possam causar instabilidade no sistema operacional. Nao é necessaria a alocagdo de meméria, e uma série de erros de bibliotecas podem ser descobertos imediatamente, na propria compilacio. ‘Segura ~ A tecnologia do Java foi desenhada para utilizar extensivamente a rede e os ambientes distribuidos. Nessas arquiteturas, seguranga é um dos parametros principais. Um aplicativo em Java no pode ser invadido via rede, pois suas restrigdes de seguranga niio permitem acessos nfio autorizados. Neutralidade — Java foi criada para funcionar em uma grande variedade de plataformas de hardware. seus bytecodes permitem a criag3o de um programa em qualquer plataforma e sua execugdo em qualquer plataforma. Portabilidade — A neutralidade de arquitetura é apenas um dos pontos que indicam a portabilidade de um sistema. Além disso, o Java uniformiza os tipos de dados nas diferentes arquiteturas, de modo que um inteiro num PC representa a mesma quantidade de bits em uma estagdo de trabalho. Assim, um programa Java é totalmente independente de hardware e software. Alta Performance ~ A performance de um programa Java é relacionada estritamente a performance do interpretador. A. JVM Java permite que se execute o cédigo do usuario na miixima velocidade possivel; todas as outras tarefas ficam em segundo plano. Ainda assim, se for necessirio uma performance ainda maior, é possivel compilar 0 bytecode para cédigo nativo da mquina. Multi-Tarefa ~ Sistemas orientados & rede necessitam executar varias tarefas ao mesmo tempo. Java permite a construgio de um modelo onde podem ser executadas threads concorrentes. Esse modelo tem controle de concorréneia, sincronizacao e monitoramento presentes na propria linguagem. Além disso, o Java tem um sistema threadsafe que evita qualquer tipo de conflito entre as varias tarefas. 30 Apéndice C — Dicas para a Construcio de Classes Sempre mantenha seus dados como private. FE a dica principal. Se seus atributos forem todos public, vocé estar violando 0 encapsulamento. Voce vai necessitar de métodos para alterar os valores, 0 que da um poueo mais de trabalho, mas a experigncia mostra que o formato dos dados pode ser alterado, mas a forma de alterd-los muda muito pouco. Sempre inicialize seus dados. Java nfo fard a inicalizacao de varidveis locais para vocé. Nao contie nos valores padrio, sempre prefira fazé-lo vocé mesmo. Nio utilize muitos tipos basicos em uma classe. A idéia aqui 6 substituir os tipos bisicos que sfo relacionados entre si por outras classes. Como exemplo: private String rua; private String cidade; private String estado; private String cep; Nesse caso, teremos uma maior legibilidade usando uma classe chamada endereco, que contenha todos esses atributos. ‘Nem todos os atributos necessitam de métodos. Imagine uma classe que represente os empregados da sua empresa. Voeé provavelmente no necessita ter um método para alterar a data de contratagao de uma pessoa, uma vez que 0 objeto est construido. Entao isso pode ser resolvido no constructor, sem a necessidade de um método, Use definigdes padrao para suas classes. Sempre use um pad. Isso torna muito mais facil a manutengdo e entendimento de cédigo. Normalmente, o padrio usado em Java é Escopo piblico Escopo de pacote Escopo privado E em cada uma dessas segdes, 31 Constantes Métodos Estaticos Instiineias de varidveis Variiveis Estaticas Divida classes que estdo muito complexas. Essa dica é vaga, pois a complexidade depende de quem olha. Entretanto, se houver oportunidade de dividir uma grande classe em duas ou mesmo trés, devemos aproveitar a oportunidade. Mas claro que isso tem um limite: dividir sua aplicagio em 10 classes de | método cada normalmente vai fazer seu programa ser mais lento. Faga 0 nome de suas classes e métodos fazer sentido. Assim como as varidveis devem ter nomes que representam 0 dado que elas contém, classes devem seguir 0 mesmo prineipio. Uma convengao usada é que a classe deve ser um substantivo seguido de um adjetivo ou de um gerindio. A convengao dos métodos propde que eles devem ser iniciados por letras miniisculas, e cada palavra envolvida com 0 método tem sua primeira letra maiiscula (como em converteTemperatura). Quando estamos falando de métodos cuja fungdo é recuperar dados, iniciamos 0 método usando a palavra ser, e quando o método recupera os dados, usamos ger (setSalario, getSalario). 32 Apéndice D — Erros Mais Comuns e Suas Solugoes Problemas de Compilador Erro: Bad command or file name (Windows 95/98) ou The name specified is not recognized as an internal or external command, operable program or batch file (Windows NT) Caso essa mensagem de erro apareca quando da execucdo do javac ou do java, isso quer dizer que o seu sistema nao esta encontrando esses programas. O mais comum ¢ a falta da informacao no PATH do computador. Para solucionar o problema, procure ajuda no menu do sistema operacional relacionado a como alterar ou adicionar elementos no PATH, Erros de Sintaxe Se vocé nao digitou corretamente alguma instrugao do seu programa, o compilador vai indicar 0 erro. A mensagem normalmente mostra o tipo do erro, a linha onde o erro foi detectado, 0 eédigo naquela linha e a posigZo do erro na linha. Segue uma anostra: testing java:14: °y expected. System.out.printin("Input has " + count + " chars. Lerror O erro indica a falta de um “;" no final da linha, As vezes podem ocorrer erros onde 0 compilador nio consegue entender o que vocé pretendia, e mensagens de erro confusas so geradas. No exemplo abaixo, também temos a falta de um *;", mas as mensagens so um tanto quanto diferentes: ‘while (System in.read() count-+ System.out.println("Input has " + count + " chars. -l) ‘Ao processar esse codigo, teremos duas mensagens de erro: testing.java:13: Invalid type expression. count++ testing java: 14: Invalid declaration System.out.println("Input has " + count +" chars."); 2 errors 33 © compilador processa 0 count+, ¢ como niio hi o sinal , ele pensa que ainda esta avaliando uma expresso. Assim temos a primeira mensagem. A segunda acontece quando 0 compilador tenta “juntar” a primeira expresso com a segunda, e ao perceber que nao existe sentido, apresenta a outra mensagem, Quando erros sintaticos acontecem, o bytecode nao é gerado. E necessirio corrigir 0 problema e tentar novamente, Erros Semanticos Além dos erros sintaticos, existem também os erros semanticos. Por exemplo, se vooé tentou incrementar uma varivel que nao foi iniciada: testing,java:13: Variable count may not have been initialized. count testing.java:14: Variable count may not have been initialized. System.out.printin("Input has " + count + " chars."); 2 errors Erros de Execucao ‘Um erro comum ¢ tentar executar uma classe utilizando-se da extensdo. Quando quero compilar 0 programa, fago javac MeuProg.java Quando vou exeeuté-lo, fago java MeuProg ‘Nao é necessiria a extensfio. Se o usuirio a especificar, uma mensagem do tipo Can't find class MeuProg.class Outro problema comum é a criagao de uma classe sem o método main(). Toda classe dita “executavel” deve possuir esse método. A falta dele gera uma mensagem assim: In class MeuProg: void main(String argv(]) is not defined E por tiltimo, no esquecer que é necessirio recompilar programa a cada alteraglo. Se ‘vocé altera seu cédigo mas parece que isso nfo surte efeito, o problema pode estar ai 34 Bibliografia btp:/java. sun. com/does/white/langenv! Thinking In Java — Eckel, Bruce. Prendice Hall PTR. (www.phprt.com, www. bruceeckel.com) Just Java — Linden, Peter Van Der. Makron Books, SunSoft Press. Core Java 2 — Fundamentals ~ Horstmann, Cay 8, ~ Cornell, Gary. The Sun Microsystems Press. Proibida a alteragao, reprodugio e cépia de parte deste material para qualquer finalidade sem a permissao do Centro de Computagao da Unicamp, Autilizagio deste material é permitida desde que conste a autoria do mesmo. ¥ 2002 Centro de Computagao da Unicamp. 35

Você também pode gostar

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy