7/28/2019 Informatica Programacao Orientada a Objeto1
1/155
Escola Estadual deEducao Profissional - EEEPEnsino Mdio Integrado Educao Profissional
Curso Tcnico em Informtica
ProgramaoOrientada a Objeto I
7/28/2019 Informatica Programacao Orientada a Objeto1
2/155
7/28/2019 Informatica Programacao Orientada a Objeto1
3/155
7/28/2019 Informatica Programacao Orientada a Objeto1
4/155
7/28/2019 Informatica Programacao Orientada a Objeto1
5/155
Escola Estadual de Educao Profissional [EEEP] Ensino Mdio Integrado Educao Profissional
ndiceApresentao...............................................................................................................................6Lio 1.........................................................................................................................................9
1. Objetivos.................................................................................................................................9
2. Explorando o Java...................................................................................................................92.1. Um pouco da histria...........................................................................................................92.2. O que uma tecnologia JAVA?............................................................................................9
2.2.1. Uma linguagem de programao......................................................................................92.2.2. Um ambiente de desenvolvimento..................................................................................102.2.3. Um ambiente de aplicao..............................................................................................102.2.4. Um ambiente de distribuio..........................................................................................10
2.3. Algumas Caractersticas do JAVA......................................................................................102.3.1. Mquina Virtual Java......................................................................................................102.3.2. Garbage Collection..........................................................................................................112.3.3. Segurana de cdigo.......................................................................................................11
2.4. Fases do Java programa.....................................................................................................113. Primeiro Programa Java........................................................................................................12
3.1. Utilizando a Console e um editor de texto.........................................................................123.2. Erros...................................................................................................................................15
3.2.1 Erros de Sintaxe...............................................................................................................153.2.2 Erros em tempo de execuo (Erros de run-time)............................................................16
4. Usando NetBeans..................................................................................................................165. Exerccios..............................................................................................................................24
5.1 Melhorando o Hello World!................................................................................................245.2. A rvore.............................................................................................................................24
Lio 2.......................................................................................................................................261. Objetivos...............................................................................................................................262. Entendendo meu primeiro programa em Java.......................................................................263. Comentrios em Java............................................................................................................27
3.1. Comentrio de linha...........................................................................................................273.2. Comentrio de bloco..........................................................................................................283.3. Comentrio estilo Javadoc.................................................................................................28
4. Instrues e Bloco em Java...................................................................................................285. Identificadores em Java.........................................................................................................306. Palavras-chave em Java........................................................................................................307. Tipos de Dados em Java........................................................................................................31
7.1. Boolean..............................................................................................................................317.2. Character............................................................................................................................317.3. Integer................................................................................................................................317.4. Float-Point..........................................................................................................................31
8. Tipos de Dados Primitivos....................................................................................................328.1. Lgico................................................................................................................................328.2. Inteiro.................................................................................................................................328.3. Inteiro Longo......................................................................................................................338.4. Nmero Fracionrio...........................................................................................................33
9. Variveis................................................................................................................................349.1. Declarando e inicializando Variveis.................................................................................34
9.1. Declarando e inicializando Variveis.................................................................................349.2. Exibindo o valor de uma Varivel......................................................................................35
Informtica - Programao Orientada a Objetos I 1
7/28/2019 Informatica Programacao Orientada a Objeto1
6/155
Escola Estadual de Educao Profissional [EEEP] Ensino Mdio Integrado Educao Profissional
9.3. System.out.println( ) e System.out.print( ).........................................................................359.4. Referncia de Variveis e Valor das Variveis...................................................................36
10. Operadores..........................................................................................................................3611. Operadores de Incremento e Decremento...........................................................................3912. Operadores Relacionais.......................................................................................................40
13. Operadores Lgicos............................................................................................................4213.1. && (e lgico) e & (e binrio)..........................................................................................4213.2. || ( ou lgico) e | ( ou binrio)...........................................................................................4313.3. (ou exclusivo binrio)...................................................................................................4513.4. ! (negao)........................................................................................................................46
14. Operador Condicional ( ?: )................................................................................................4615. Precedncia de Operadores.................................................................................................4716. Exerccios............................................................................................................................48
16.1. Declarar e mostrar variveis............................................................................................4916.2. Obter a mdia entre trs nmeros....................................................................................4916.3. Exibir o maior valor.........................................................................................................49
16.4. Precedncia de operadores...............................................................................................49Lio 3.......................................................................................................................................511. Objetivos...............................................................................................................................512. BufferedReader para capturar dados.....................................................................................513. Classe Scanner para capturar dados......................................................................................534. Utilizando a JOptionPane para receber dados.......................................................................545. Exerccios..............................................................................................................................55
5.1. As 3 palavras (verso Console)..........................................................................................555.2. As 3 palavras (verso Interface Grfica)............................................................................55
1. Objetivos...............................................................................................................................572. Estruturas de controle de deciso..........................................................................................57
2.1. Declarao if......................................................................................................................572.2. Declarao if-else...............................................................................................................582.3. Declarao if-else-if...........................................................................................................602.4. Erros comuns na utilizao da declarao if......................................................................612.6. Exemplo para switch..........................................................................................................64
3. Estruturas de controle de repetio.......................................................................................643.1. Declarao while................................................................................................................643.2. Declarao do-while..........................................................................................................663.3. Declarao for....................................................................................................................67
4. Declaraes de Interrupo...................................................................................................684.1. Declarao break................................................................................................................69
4.1.1. Declarao unlabeled break............................................................................................694.1.2. Declarao labeled break................................................................................................69
4.2. Declarao continue...........................................................................................................704.2.1. Declarao unlabeled continue.......................................................................................704.2.2. Declarao labeled continue...........................................................................................70
4.3. Declarao return...............................................................................................................715. Exerccios..............................................................................................................................71
5.1. Notas..................................................................................................................................715.2. Nmero por Extenso..........................................................................................................725.3. Cem vezes..........................................................................................................................72
5.4. Potncias............................................................................................................................72Lio 5.......................................................................................................................................73
Informtica - Programao Orientada a Objetos I 2
7/28/2019 Informatica Programacao Orientada a Objeto1
7/155
Escola Estadual de Educao Profissional [EEEP] Ensino Mdio Integrado Educao Profissional
1. Objetivos...............................................................................................................................732. Introduo a Array................................................................................................................733. Declarando Array..................................................................................................................734. Acessando um elemento do Array.........................................................................................745. Tamanho do Array.................................................................................................................76
6. Arrays Multidimensionais.....................................................................................................767. Exerccios..............................................................................................................................777.1. Dias da semana...................................................................................................................777.2. Maior nmero.....................................................................................................................777.3. Entradas de agenda telefnica............................................................................................77
Lio 6.......................................................................................................................................791. Objetivos...............................................................................................................................792. Argumentos de linha de comando.........................................................................................79
2. Argumentos de linha de comando.........................................................................................793. Argumentos de linha de comando no NetBeans...................................................................804. Exerccios..............................................................................................................................85
4.1. Argumentos de Exibio....................................................................................................854.2. Operaes aritmticas........................................................................................................85Lio 7.......................................................................................................................................86
1. Objetivos...............................................................................................................................862. Introduo Programao Orientada a Objeto.....................................................................863. Classes e Objetos..................................................................................................................87
3.1. Diferenas entre Classes e Objetos....................................................................................873.2. Encapsulamento.................................................................................................................873.3. Atributos e Mtodos de Classe...........................................................................................883.4 Instncia de Classe..............................................................................................................88
4. Mtodos.................................................................................................................................89
4.1. O que so mtodos e porque usar mtodos?......................................................................894.2. Chamando Mtodos de Objeto e Enviando Argumentos...................................................894.3. Envio de Argumentos para Mtodos..................................................................................90
4.3.1. Envio por valor................................................................................................................904.3.2. Envio por referncia........................................................................................................91
4.4. Chamando mtodos estticos.............................................................................................924.5. Escopo de um atributo........................................................................................................93
5. Casting, Converso e Comparao de Objetos.....................................................................955.1. Casting de Tipos Primitivos...............................................................................................955.2. Casting de Objetos.............................................................................................................965.3. Convertendo Tipos Primitivos para Objetos e Vice-Versa.................................................975.4. Comparando Objetos..........................................................................................................985.5. Determinando a Classe de um Objeto..............................................................................100
6. Exerccios............................................................................................................................1016.1. Definindo termos..............................................................................................................1016.2. Java Scavenger Hunt........................................................................................................101
Lio 8.....................................................................................................................................1031. Objetivos.............................................................................................................................1032. Definindo nossas classes.....................................................................................................1033. Declarando Atributos..........................................................................................................104
3.1. Atributos de Objeto..........................................................................................................105
3.2. Atributos de Classe ou Atributos Estticos......................................................................1064. Declarando Mtodos...........................................................................................................106
Informtica - Programao Orientada a Objetos I 3
7/28/2019 Informatica Programacao Orientada a Objeto1
8/155
Escola Estadual de Educao Profissional [EEEP] Ensino Mdio Integrado Educao Profissional
4.1. Mtodos assessores..........................................................................................................1074.2 Mtodos Modificadores....................................................................................................1084.3. Mltiplos comandos return..............................................................................................1084.4. Mtodos estticos.............................................................................................................1094.5. Exemplo de Cdigo Fonte para a classe StudentRecord..................................................109
5. this.......................................................................................................................................1116. Overloading de Mtodos.....................................................................................................1117. Declarando Construtores.....................................................................................................113
7.1. Construtor Padro (default)..............................................................................................1137.2. Overloading de Construtores............................................................................................1137.3. Usando Construtores........................................................................................................1147.4. Utilizando o this()............................................................................................................115
8. Pacotes.................................................................................................................................1168.1. Importando Pacotes..........................................................................................................1168.2. Criando pacotes................................................................................................................1168.3. Definindo a varivel de ambiente CLASSPATH.............................................................117
9. Modificadores de Acesso....................................................................................................1189.1. Acesso padro...................................................................................................................1189.2. Acesso pblico.................................................................................................................1189.3. Acesso protegido..............................................................................................................1199.4. Acesso particular..............................................................................................................119
10. Exerccios..........................................................................................................................11910.1. Registro de Agenda........................................................................................................11910.2. Agenda...........................................................................................................................120
Lio 9.....................................................................................................................................1211. Objetivos.............................................................................................................................1212. Herana...............................................................................................................................121
2.1. Definindo Superclasses e Subclasses...............................................................................1212.2. super.................................................................................................................................1232.3. Override de Mtodos........................................................................................................1242.4. Mtodos final e Classes final...........................................................................................125
4. Mtodos...............................................................................................................................1253. Polimorfismo.......................................................................................................................1254. Classes Abstratas.................................................................................................................1275. Interfaces.............................................................................................................................129
5.1. Porque utilizar Interfaces?...............................................................................................1295.2. Interface vs. Classe Abstrata............................................................................................1295.3. Interface vs. Classe..........................................................................................................1295.4. Criando Interfaces............................................................................................................1305.5. Relacionamento de uma Interface para uma Classe.........................................................1315.6. Herana entre Interfaces...................................................................................................132
6. Exerccios............................................................................................................................1326.1. Estendendo StudentRecord..............................................................................................1326.2. A classe abstrata Shape....................................................................................................132
Lio 10...................................................................................................................................1331. Objetivos.............................................................................................................................1332. O que so Excees (Exception)?.......................................................................................1333. Tratando Excees..............................................................................................................133
4. Exerccios............................................................................................................................1354.1. Capturando Excees 1....................................................................................................135
Informtica - Programao Orientada a Objetos I 4
7/28/2019 Informatica Programacao Orientada a Objeto1
9/155
Escola Estadual de Educao Profissional [EEEP] Ensino Mdio Integrado Educao Profissional
4.2. Capturando Excees 2....................................................................................................136Apndice A..............................................................................................................................137
1. Objetivos.............................................................................................................................1372. Instalando Java no Ubuntu Dapper.....................................................................................1373. Instalando Java no Windows...............................................................................................138
4. Instalando NetBeans no Ubuntu Dapper.............................................................................1395. Instalando NetBeans no Windows......................................................................................139
Informtica - Programao Orientada a Objetos I 5
7/28/2019 Informatica Programacao Orientada a Objeto1
10/155
7/28/2019 Informatica Programacao Orientada a Objeto1
11/155
Solaris 8 OS (SPARC e x86/x64 Platform Edition) e Solaris 9 OS (SPARC e x86/x64 Pla-tform Edition)
Vrias outras distribuies LinuxConfigurao Mnima de Hardware
Nota: IDE NetBeans com resoluo de tela em 1024x768 pixel
Sistema Operacional Processador Memria HD Livre
Microsoft Windows 500 MHz Intel Pentium IIIworkstation ou equivalente512 MB 850 MBLinux 500 MHz Intel Pentium IIIworkstation ou equivalente512 MB 450 MBSolaris OS (SPARC) UltraSPARC II 450 MHz 512 MB 450 MBSolaris OS (x86/x64Platform Edition)AMD Opteron 100 Srie 1.8 GHz 512 MB 450 MBMac OS X PowerPC G4 512 MB 450 MB
Configurao Recomendada de Hardware
Sistema Operacional Processador Memria HD Livre
Microsoft Windows 1.4 GHz Intel Pentium IIIworkstation ou equivalente1 GB 1 GBLinux 1.4 GHz Intel Pentium IIIworkstation ou equivalente1 GB 850 MB
Solaris OS (SPARC) UltraSPARC IIIi 1 GHz 1 GB 850 MBSolaris OS (x86/x64Platform Edition)AMD Opteron 100 Series 1.8 GHz 1 GB 850 MBMac OS X PowerPC G5 1 GB 850 MB
Requerimentos de Software
NetBeans Enterprise Pack 5.5 executando sobre Java 2 Platform Standard Edition Development Kit 5.0 ou superior (JDK 5.0,verso 1.5.0_01 ou superior), contemplando a Java Runtime Environment, ferramentas de desenvolvimento para compilar,depurar, e executar aplicaes escritas em linguagem Java. Sun Java System Application Server Platform Edition 9. Para Solaris, Windows, e Linux, os arquivos da JDK podem ser obtidos para sua plataforma emhttp://java.sun.com/j2se/1.5.0/download.html Para Mac OS X, Java 2 Plataform Standard Edition (J2SE) 5.0 Release 4, pode ser obtida diretamente da Apple's DeveloperConnection, no endereo:
http://developer.apple.com/java ( necessrio registrar o download da JDK).Para mais informaes:http://www.netbeans.org/community/releases/55/relnotes.html
Colaboradores que auxiliaram no processo de traduo e reviso
Alexandre MoriAlexis da Rocha SilvaAline Sabbatini da Silva AlvesAllan Wojcik da SilvaAndr Luiz MoreiraAndro Mrcio Correa LouredoAntoniele de Assis Lima
Hugo Leonardo Malheiros FerreiraIvan Nascimento FonsecaJacqueline Susann BarbosaJader de Carvalho BelarminoJoo Aurlio Telles da RochaJoo Paulo Cirino Silva de NovaisJoo Vianney Barrozo Costa
Mauro Regis de Sousa LimaNamor de S e SilvaNres Chaves RebouasPedro Antonio Pereira MirandaPedro Henrique Pereira de AndradeRenato Alves FlixRenato Barbosa da Silva
7/28/2019 Informatica Programacao Orientada a Objeto1
12/155
Antonio Jose R. Alves RamosAurlio Soares Neto
Bruno da Silva BonfimBruno dos Santos MirandaBruno Ferreira RodriguesCarlos Alberto Vitorino de AlmeidaCarlos Alexandre de SeneCarlos Andr Noronha de SousaCarlos Eduardo Veras NevesCleber Ferreira de SousaCleyton Artur Soares UraniCristiano Borges FerreiraCristiano de Siqueira PiresDerlon Vandri AliendresFabiano Eduardo de OliveiraFbio BombonatoFernando Antonio Mota TrintaFlvio Alves GomesFrancisco das ChagasFrancisco Marcio da SilvaGilson Moreno CostaGivailson de Souza NevesGustavo Henrique CastellanoHebert Julio Gonalves de PaulaHeraldo Conceio Domingues
Jos Augusto Martins NieviadonskiJos Leonardo Borges de Melo
Jos Ricardo CarneiroKleberth Bezerra G. dos SantosLafaiete de S GuimaresLeandro Silva de MoraisLeonardo Leopoldo do NascimentoLeonardo Pereira dos SantosLeonardo Rangel de Melo FilardiLucas Mauricio Castro e MartinsLuciana Rocha de OliveiraLus Carlos AndrLus Octvio Jorge V. LimaLuiz Fernandes de Oliveira JuniorLuiz Victor de Andrade LimaManoel Cotts de QueirozMarcello Sandi PinheiroMarcelo Ortolan PazzettoMarco Aurlio Martins BessaMarcos Vinicius de ToledoMaria Carolina Ferreira da SilvaMassimiliano GiroldiMauricio Azevedo GamarraMauricio da Silva MarinhoMauro Cardoso Mortoni
Reyderson Magela dos ReisRicardo Ferreira Rodrigues
Ricardo Ulrich BomfimRobson de Oliveira CunhaRodrigo Pereira MachadoRodrigo Rosa Miranda CorraRodrigo VaezRonie DotzlawRosely Moreira de JesusSeire ParejaSergio PomerancblumSilvio SzniferSuzana da Costa OliveiraTsio Vasconcelos da SilveiraThiago Magela Rodrigues DiasTiago Gimenez RibeiroVanderlei Carvalho Rodrigues PintoVanessa dos Santos AlmeidaVast Mendes da Silva RochaWagner Eliezer RoncolettaNolyanne Peixoto Brasil VieiraPaulo Afonso CorraPaulo Jos Lemos CostaPaulo Oliveira Sampaio Reis
Auxiliadores especiais
Reviso Geral do texto para os seguintes Pases:
Brasil Tiago Flach
Guin Bissau Alfredo C, Bunene Sisse e Buon Olossato Quebi ONG Asas de Socorro
Coordenao do DFJUG
Daniel de Oliveira JU GLeader responsvel pelos acordos de parcerias
Luci Campos - Idealizadora do DFJUG responsvel pelo apoio social
Fernando Anselmo - Coordenador responsvel pelo processo de traduo e reviso,
disponibilizao dos materiais e insero de novos mdulos
Regina Mariani - Coordenadora responsvel pela parte jurdica
Rodrigo Nunes - Coordenador responsvel pela parte multimdia
Srgio Gomes Veloso - Coordenador responsvel pelo ambiente (Moodle)
Agradecimento Especial
7/28/2019 Informatica Programacao Orientada a Objeto1
13/155
John Paul Petines Criador da Iniciativa
Rommel Feria Criador da Iniciativa
7/28/2019 Informatica Programacao Orientada a Objeto1
14/155
Lio 1
1. ObjetivosNesta seo, vamos discutir os componentes bsicos de um computador, tanto em relao a hardwa-re como a software. Tambm veremos uma pequena introduo sobre linguagens de programao esobre o ciclo de vida do desenvolvimento. Por fim, mostraremos os diferentes sistemas numricos eas converses entre eles.
Ao final desta lio, o estudante ser capaz de:
Identificar os diferentes componentes de um computador.
Conhecer as linguagens de programao e suas categorias.
Entender o ciclo de vida de desenvolvimento de programas e aplic-lo na soluo de problemas.Conhecer os diferentes sistemas numricos e as converses entre eles.
2. Explorando o Java2.1. Um pouco da histria
Java foi criado em 1991 por James Gosling da Sun Microsystems. Inicialmente chamada OAK(Carva-lho), em homenagem uma rvore de janela do Gosling, seu nome foi mudado para Javadevido aexistncia de uma linguagem com o nome OAK.
Figura 1: James Gosling criador do Java
A motivao original do Java era a necessidade de uma linguagem indepen-dente de plataformaque podia ser utilizada em vrios produtos eletrnicos,tais como torradeiras e refrigeradores. Um dos primeiros projetos desenvo-lvidos utilizando Java era um controle remoto pessoal chamado *7 (StarSeven).
Ao mesmo tempo, a World Wide Web e a Internet foram ganhando popula-ridade. Gosling achava que a linguagem Java poderia ser usada para pro-gramao da Internet.
2.2. O que uma tecnologia JAVA?
2.2.1. Uma linguagem de programao
Como linguagem de programao, Java pode ser utilizado para criar to-dos os tipos de aplicaes existentes, de programas de Inteligncia Arti-ficial para Robs at programas para aparelhos celulares.
7/28/2019 Informatica Programacao Orientada a Objeto1
15/155
2.2.2. Um ambiente de desenvolvimento
Como ambiente de desenvolvimento, a tecnologia Java fornece um grande conjunto deferramentas:um compilador, um interpretador, um gerador de documentao, ferramenta de empacotamento declasses de arquivos e outros.
2.2.3. Um ambiente de aplicao
Aplicaes de tecnologia Java so tipicamente programas de propsito geral que executam sobreu-ma mquina onde o Java Runtime Environment instalado.
2.2.4. Um ambiente de distribuio
H dois ambientes de distribuio principais: Primeiro, oJRE, fornecido atravs do Java 2 SoftwareDevelopment Kit (SDK), contm um conjunto completo de arquivos de classes para todos pacotes detecnologia Java. Outro ambiente de distribuio o navegador web, ou seja, o browser. Os navega-dores web atuais fornecem interpretao tecnologia e ambiente Java em tempo de execuo.
Figura 3: JDK e JRE
2.3. Algumas Caractersticas do JAVA
2.3.1. Mquina Virtual Java
A Mquina Virtual Java uma mquina imaginria que implementada atravs de um softwaree-mulador em uma mquina real. A JVM prov especificaes de plataforma de hardware na qual com-pila-se todo cdigo de tecnologia Java. Essas especificaes permitem que o software Javaseja umaplataforma independente pois a compilao feita por uma mquina genricaconhecida como JVM.
7/28/2019 Informatica Programacao Orientada a Objeto1
16/155
O bytecode uma linguagem de mquina especial que pode ser entendida pela Mquina VirtualJava (JVM). O bytecode independente de qualquer hardware de computador particular. Assim,
qualquer computador com o interpretador Java pode executar um programa Java compilado, no im-portando em que tipo de computador o programa foi compilado.
2.3.2. Garbage Collection
Muitas linguagens de programao permitem ao programador alocar memria durante o tempo deexecuo. Entretanto, aps utilizar a memria alocada, deve existir uma maneira para desalocar obloco de memria de forma que os demais programas a utilizem novamente. Em C, C++ e outraslinguagens o programador o responsvel por isso. Isso, s vezes, pode ser difcil j que instnciaspodem ser esquecidas de serem desalocadas da memria pelos programadores e resultar no quechamamos de escapes da memria.
Em Java, o programador no possui a obrigao da retirar uma varivel criada das reas de mem-ria, isto feito por uma parte da JVM especfica que chamamos de Garbage Collection. O GarbageCollection o grande responsvel pela liberao automtica do espao em memria.
Isso acontece automaticamente durante o tempo de vida do programa Java.
2.3.3. Segurana de cdigo
Segurana do Cdigo alcanada em Java atravs da implementao daJava Runtime Environment(JRE). A JRE roda cdigos compilados para a JVM e executa o carregamento de classes (atravs doClass Loader), verificao de cdigo (atravs do verificador de bytecode) e finalmente o cdigo exe-
cutvel.
O Class Loader responsvel por carregar todas as classes necessrias ao programa Java. Isso adi-ciona segurana atravs da separao do namespace entre as classes do sistema de arquivos local eaquelas que so importadas pela rede. Isso limita qualquer ao de programas que podem causardanos, pois as classes locais so carregadas primeiro. Depois de carregar todas as classes, a quanti-dade de memria que o executvel ir ocupar determinada. Isto acrescenta,
novamente, uma proteo ao acesso no autorizado de reas restritas ao cdigo pois a quantidadede memria ocupada determinada em tempo de execuo.
Aps carregar as classes e definir a quantidade de memria, o verificador de bytecode verifica o for-
mato dos fragmentos de cdigo e pesquisa nestes fragmentos por cdigos ilegais que possam violaro direito de acesso aos objetos.
Depois que tudo isso tiver sido feito, o cdigo finalmente executado.
2.4. Fases do Java programa
A figura seguinte descreve o processo de compilao e execuo de um programa Java. O primeiropasso para a criao de um programa Java escrever os programas em um editor de texto. Exem-
7/28/2019 Informatica Programacao Orientada a Objeto1
17/155
plos de editores de texto que podem ser utilizados: bloco de notas, vi, emacs, etc.Esses arquivosso armazenados no disco rgido com a extenso .java.
Figura 1: Fases de um Programa Java.
Aps o programa Java ter sido criado e salvo, compile o programa utilizando o Compilador Java. Asada desse processo um arquivo de bytecode com extenso .class. O arquivo .class ento lidopelo Interpretador Java que converte os bytecodes em linguagem de mquina do computador que seest usando.
Tarefa Ferramenta utilizada Sada
Escrever o programa Qualquer editor de texto Arquivo com extenso .java Compilar o programaCompilador Java Arquivo com extenso .class (Java bytecode). Executar o programa InterpretadorJava Sada do programa
Tabela 1: Resumo das fases de um programa Java.
3. Primeiro Programa Java
Antes de explicar o que o programa significa, vamos escrev-lo e execut-lo.
3.1. Utilizando a Console e um editor de texto
7/28/2019 Informatica Programacao Orientada a Objeto1
18/155
Neste exemplo utilizaremos um simples editor de texto, que pode ser o gedit do Linux ou o notepaddo Windows, para editar o cdigo fonte. Em seguida ser necessrio abrir uma janela terminal para
compilar e executar os programas.
Passo 1: executar um editor de texto
Para iniciar um editor de texto no Linux selecione Applications Accessories Text Editor. Para
iniciar um editor de texto no Windows selecione Start Programs Accessories Notepad.
Passo 2: Abrir a janela de console
Para abrir o terminal no Linux, selecione Applications Accessories Terminal. Para abrir o ter-
minal no Windows, selecione Start Run... e na janela que se apresenta, digite cmd e pressione oboto OK.
Passo 3: Escrever as instrues utilizando o Editor de Texto
Digite as seguintes instrues no editor de textos:
public class Hello{
/*** Meu primeiro programa Java*/public static void main(String[] args) {// Mostra na tela o texto "Hello world"System.out.println("Hello world!");}
}
Passo 4: Salvar o programa Java
Chamaremos o programa de "Hello.java" e o colocaremos em uma pasta denominada "myJavaPro-grams". Caso esta pasta no tenha sido criada, retorne janela de terminal aberta e insira as se-guintes instrues:
Para o Linux:
$ md myJavaPrograms
Para o Windows:
C:\> md myJavaPrograms
Retorne ao Editor de textos e salve o programa. Para abrir a caixa de dilogo salvar selecione aop-o "File" localizada na barra de menus e depois clique na opo "Save". Selecione a nova pasta cria-
7/28/2019 Informatica Programacao Orientada a Objeto1
19/155
da como myJavaPrograms para entrar nela. A pasta deve estar vazia porque ainda no salvamosnada dentro dela.
Na caixa de texto "Name", digite o nome do programa (Hello.java), e depois clique no boto salvar.
ATENO: Para o Notepad no Windows, mude o Tipo para "All Files" (em Save as Type).
Aps salvar o arquivo observe que o ttulo da janela mudou de "Untitled" para "Hello.java", caso de-seje alterar novamente o arquivo basta edit-lo e depois salv-lo novamente clicando em File
Save.
Passo 5: Entrar na pasta que contm o programa
O prximo passo deve ser o de compilar o programa. Inicialmente, precisamos entrar na pasta que ocontm. Retorne janela do terminal.
Em Linux:
Normalmente, quando abrimos uma janela terminal, ela vai diretamente para sua pasta home (iden-tificada por $). Para ver o que tem dentro do diretrio digite ls (LS em minscula, significando "ListSources") e pressione ENTER. Isso far com que sejam listados os arquivos e pastas da pasta home.Verifique a existncia de uma pasta chamada "myJavaPrograms", criada a pouco, sendo esta olocalem que foi salvo o programa "Hello.java". Mudaremos o contexto para esta pasta.
Para entrar nesta pasta devemos utilizar o comando: cd [nome da pasta]. O comando "cd" significa"Change Directory". Digitaremos:
$ cd myJavaPrograms
Agora que estamos dentro da pasta onde o arquivo do programa est, poderemos ento compil-lo.Certifique-se de que o arquivo est realmente dentro desta, executando o comando ls (LS em mi-nscula) novamente.
Em Windows:
Normalmente, quando abrimos uma janela terminal ela vai diretamente para sua pasta raiz
(identificada por C:\). Para conhecer o contedo do diretrio digite dir (significando "directory") epressione ENTER. Isso far com que sejam listados os arquivos e pastas da pasta principal. Verifiquea existncia de uma pasta chamada "myJavaPrograms", criada a pouco, sendo esta o local em quefoi salvo o programa "Hello.java". Mudaremos o contexto para esta pasta.
Para entrar nesta pasta devemos utilizar o comando: cd [nome da pasta]. O comando "cd" significa"Change Directory". Digitaremos:
C:\>cd myJavaPrograms
7/28/2019 Informatica Programacao Orientada a Objeto1
20/155
Agora que estamos dentro da pasta onde o arquivo do programa est, poderemos ento compil-lo.Certifique-se de que o arquivo est realmente dentro desta, executando o comando dir novamente.
Passo 6: Compilar o programa
Para compilar o programa, utilizamos o comando:javac [Nome do Arquivo]. Ou seja:
javac Hello.java
Durante a compilao, criado o arquivo: [Nome do Arquivo].class, neste caso, Hello.class, quecontm o cdigo em linguagem de mquina (chamado de bytecode).
Passo 7: Executar o programa
Assumindo que no ocorreu problemas na compilao (caso tenha ocorrido qualquer problema refa-a os passos realizados), estamos prontos para executar o programa.
Para executar o programa, utilizamos o comando:java [nome do arquivo sem a extenso].
No caso do exemplo, digite:
java Hello
Veremos na mesma tela, em que foi executado o comando, a seguinte mensagem:
Hello world!
3.2. Erros
Vimos um pequeno programa Java, geralmente no encontraremos qualquer problema para compilare executar esses programas, entretanto nem sempre este o caso, como mencionamos na primeiraparte deste curso, ocasionalmente encontramos erros durante esse processo.
Como mencionamos antes, h dois tipos de erros: o primeiro pode ocorrer durante a compilao,chamado de erro de sintaxe, o segundo pode ocorrer durante a execuo, chamado runtime error.
3.2.1 Erros de Sintaxe
Os erros de sintaxe normalmente so erros de digitao, ocasionados pelo programador que podeterse equivocado e digitar uma instruo errada, ou por esquecimento de alguma parte da instruo,por exemplo, um ponto e vrgula. O Compilador tenta isolar o erro exibindo a linha de instruo emostrando o primeiro caractere incorreto naquela linha, entretanto, um erro pode no estar exata-mente neste ponto. Outros erros comuns so a troca de letras, troca de letras maiscula por mins-cula (a linguagem Java completamente case- sensitive, ou seja, o caractere "a" completamentediferente do caractere "A", e o uso incorreto da pontuao.
7/28/2019 Informatica Programacao Orientada a Objeto1
21/155
Vamos retornar ao exemplo, o programa Hello.java. Intencionalmente, escreveremos a palavrachave"static" de forma errada e omitiremos o ponto-e-vrgula em uma instruo e a deixaremos errada.
public class Hello{
/*** Meu primeiro programa Java*/public statict void main(String[] args) {
// A linha abaixo foi retirado o ;System.out.println("Hello world!")
}}
Salve o programa e execute os passos necessrios para compil-lo. Observe a mensagem de errogerada ao se tentar compilar novamente o programa:
Hello.java:6: expectedpublic statict void main(String[] args) {
^Hello.java:10: ';' expected
}^1 error
A primeira mensagem de erro sugere que existe um erro na linha 6 do programa apontado paraapalavra void, entretanto esta palavra est correta. O erro na palavra anterior statict que deveserdigitada como static.
A segunda mensagem de erro sugere que faltou um ponto-e-vrgula na linha 10, entretanto, estacontm simplesmente o comando de fechar o bloco do mtodo main. O erro est exatamente na li-nha anterior. Como regra, ao encontrar muitas mensagens de erros devemos corrigir o primeiro erroda lista e tente novamente compilar o programa. Deste modo reduziremos o nmero total de men-sagens de erro dramaticamente, pois podem existir o que chamamos de erros derivados, ou seja,um erro que tem por causa a instruo anterior.
3.2.2 Erros em tempo de execuo (Erros de run- time)
Os erros em tempo de execuo so erros que no aparecero at que tentemos executar o progra-ma. Os programas so compilados com sucesso, mas apresentaro respostas erradas, quepodem tercomo causa se o programador no obedeceu uma lgica coerente ou no caso em erro de estruturas
do programa.
4. Usando NetBeans
Construmos o programa sem utilizar nenhum recurso sofisticado, iremos aprender como fazertodo oprocesso da seo anterior utilizando uma IDE. Nesta parte da lio utilizaremos o NetBeans que um Ambiente de Desenvolvimento Integrado (IDE - Integrated Development Environment).
7/28/2019 Informatica Programacao Orientada a Objeto1
22/155
Um ambiente de desenvolvimento integrado um software aplicativo que possui uma interface cons-trutora, um editor de texto, um editor de cdigo, um compilador e/ou interpretador e umdepurador.
Passo 1 : executar o NetBeans
Existem duas formas de executar o NetBeans: a primeira utilizando a linha de comandos de umajanela terminal e segunda selecionar o cone de atalho encontrado na janela da rea de trabalho.
Para executar o NetBeans por intermdio da linha de comando, abra uma janela terminal (Os passospara abrir a janela terminal foram discutidos anteriormente) e digite:
Figura 1: Executando o NetBeans pela linha de comandos
Para o Windows, este comando deve ser executado na pasta em que o NetBeans foi instalado, porexemplo:
C:\Program Files\netbeans-5.5\bin>netbeans
A segunda maneira de executar o NetBeans clicando no cone de atalho encontrado na rea de tra-balho do computador.
Depois de abrir a IDE NetBeans ser mostrada a interface grfica GUI, conforme Figura 3:
Passo 2: construir o projeto
7/28/2019 Informatica Programacao Orientada a Objeto1
23/155
Clique em File New Project, depois de fazer isso, uma janela de dilogo aparecer. Neste momen-to deve-se clicar em "Java Application" e em seguida clicar no boto "Next >".
Figura 3: Janela de Welcome do NetBeans
Ser mostrada uma nova janela de dilogo, conforme a figura 5.
Troque o local da aplicao clicando no boto "Browse...". Aparecer uma janela de dilogo para lo-calizao do diretrio. D um clique duplo no seu diretrio home.
7/28/2019 Informatica Programacao Orientada a Objeto1
24/155
Figura 5: Inserindo as informaes do projeto
Figura 6: Acertando a Localizao do Projeto
O contedo da raiz do diretrio ser apresentado. D um clique duplo no diretrio MYJAVAPRO-GRAMS e depois d um clique no boto "Open".
7/28/2019 Informatica Programacao Orientada a Objeto1
25/155
Veja que a localizao do projeto mudou para /home/florence/MYJAVAPROGRAMS. Finalmente, nocampo "Create Main Class", digite "Hello", que ser o nome da classe principal, e em seguida cliqueno boto "Finish".
Figura 7: Definindo o Nome da Classe Principal
Passo 3: escrever os detalhes do programa
Antes de escrever o programa descreveremos a janela principal. Como mostrado na figura 8, auto-maticamente, o NetBeans cria um cdigo bsico para o programa Java. Poderemos adicionar as de-claraes neste cdigo gerado. No lado esquerdo da janela visualizamos uma lista de pastas e arqui-vos que o NetBeans gerou antes de criar o projeto. Tudo se encontra dentro da sua pasta MYJAVA-PROGRAMS, onde foi configurado o local do projeto. No lado direito, visualizamos o cdigo gerado.
7/28/2019 Informatica Programacao Orientada a Objeto1
26/155
Modifique o cdigo gerado pelo NetBeans, por hora ignoraremos as outras partes das instrues dis-cutindo os detalhes destas posteriormente. Insira a seguinte instruo:
System.out.println("Hello world!");
Isto significa que voc deseja que seja mostrada a mensagem "Hello world!" na sada padro docomputador, em seguida seja feito um salto de linha. Poderamos substituir esta instruo por duas
equivalentes:System.out.print("Hello");System.out.println(" world!");
O mtodo print() faz com que no seja provocado o salto de linha, utilizaremos para este exemplo aprimeira instruo. Insira esta instruo aps a linha de comentrio (que ser desprezada pelo com-pilador):
//TODO code application logic here.
7/28/2019 Informatica Programacao Orientada a Objeto1
27/155
Figura 8: Viso do projeto criado
Passo 4 : compilar o projeto
Para compilar o programa, a partir do Menu Principal selecione Build Build Main Project, ou utilizea tecla de atalho F11, ou utilize o boto de atalho para compilar o cdigo.
7/28/2019 Informatica Programacao Orientada a Objeto1
28/155
Figura 10: Boto de Atalho para executar o Projeto
Figura 9: Inserindo sua instruo
Se no existir erros no programa, veremos a mensagem de sucesso na janela de sada.
7/28/2019 Informatica Programacao Orientada a Objeto1
29/155
Passo 5: Executar o projeto
Para executar o programa, clique em Run Run Main Project, ou utilize a tecla de atalho F6, ouuti-lize o boto de atalho para executar o programa.
Figura 11: Verificando o Sucesso da Compilao
7/28/2019 Informatica Programacao Orientada a Objeto1
30/155
Figura 12: Executando o projeto
O resultado final do programa, ser mostrado na janela de sada.
7/28/2019 Informatica Programacao Orientada a Objeto1
31/155
Figura 13: Resultado final da execuo do projeto
5. Exerccios
5.1 Melhorando o Hello World!
Utilizando o NetBeans crie uma classe chamada [SeuNome], o programa dever mostrar comoresul-tado a mensagem:
Welcome to Java Programming [SeuNome]!!!
5.2. A rvore
Utilizando o NetBeans, crie uma classe chamada TheTree. O programa dever mostrar asseguinteslinhas na sada:
I think that I shall never see,[Eu acho que nunca verei,]a poem as lovely as a tree.[um poema to adorvel quanto uma rvore.]A tree whose hungry mouth is pressed[Uma rvore cuja boca faminta pressionada]Against the Earths sweet flowing breast.[Contra a Terra fluindo em seu seio docemente.]
7/28/2019 Informatica Programacao Orientada a Objeto1
32/155
Lio 2
1. ObjetivosNesta lio iremos discutir um pouco da histria de Java e o que a tecnologia Java. Tambm ire-mos discutir as fases de um programa Java.
Ao final desta lio, o estudante ser capaz de:Descrever as caractersticas da tecnologia Java como a JVM - Mquina Virtual Java, Garbage Collec-tion e segurana do cdigo;Descrever as diferentes fases de um programa Java.
2. Entendendo meu primeiro programa em JavaTentaremos compreender este primeiro programa.
public class Hello{/*** Meu primeiro programa em Java*/
public static void main(String[] args) {// Exibir a mensagem "Hello world" na tela
System.out.println("Hello world!");}
}
Esta primeira linha do cdigo:
public class Hello
Indica o nome da classe, que neste caso Hello. Em Java, todo e qualquer cdigo dever serescritodentro da declarao de uma classe. Fazemos isso usando a palavra-chave class. Alm disso, a clas-se usa um identificador de acesso public, indicando que a classe acessvel para outras classes dediferentes pacotes (pacotes so colees de classes). Trataremos de pacotes e identificadores deacesso mais tarde, ainda neste mdulo.
A prxima linha contm uma chave {. Indica o incio de um bloco de instrues. Neste programa po-sicionamos a chave na linha aps a declarao da classe, entretanto, poderamos tambm coloc-lana mesma linha em que a declarao foi feita. Ento, o cdigo seria escrito da seguinte forma:
public class Hello{
ou
public class Hello {
7/28/2019 Informatica Programacao Orientada a Objeto1
33/155
As prximas 3 linhas indicam um comentrio em Java. Um comentrio uma explicao do progra-mador usada na documentao de uma parte do cdigo. Este comentrio no propriamente uma
parte do cdigo, usado apenas para fins de documentao do programa.
uma boa prtica de programao adicionar comentrios relevantes ao cdigo.
/*** Meu primeiro programa em Java*/
Um comentrio pode ser indicado pelos delimitadores /* e */. Qualquer coisa entre estes
delimitadores ignorado pelo compilador Java e tratado como comentrio. A prxima linha,
public static void main(String[] args) {
que tambm pode ser escrita da seguinte forma:
public static void main(String[] args){
indica o nome de um mtodo no programa que o mtodo principal main. O mtodo main o pontode partida para qualquer programa feito em Java. Todo e qualquer programa escrito em Java, comexceo de Applets, inicia com o mtodo main. Certifique-se de que a assinatura do mtodo (confor-me descrita acima) est correta.
A linha seguinte tambm um comentrio em Java,
// exibe a mensagem "Hello world" na tela
At agora, j aprendemos duas maneiras de fazer comentrios em Java. Uma posicionar o comen-trio entre /* e */, e a outra colocar // antes do comentrio. A linha de instruo abaixo,
System.out.println("Hello world!");
escreve o texto "Hello World!" na tela. O comando System.out.println( ), escreve na sadapadro docomputador o texto situado entre aspas duplas. As ltimas duas linhas, que contm somente umachave em cada, simbolizam, respectivamente, o fechamento do mtodo main e da classe.
Dicas de programao :
1. Os programas em Java devem sempre conter a terminao .java no nome do arquivo.2. O nome do arquivo deve sempre ser idntico ao nome da classe pblica. Ento, por exemplo,
se o nome da classe pblica Hello o arquivo dever ser salvo com o nome: Hello.java.3. Inserir comentrios sobre o que a classe ou mtodo realiza, isso facilitar o entendimento dequem posteriormente ler o programa, incluindo o prprio autor.
3. Comentrios em Java
Comentrios so notas escritas pelo programador para fins de documentao. Estas notas no fazemparte do programa e no afetam o fluxo de controle. Java suporta trs tipos de comentrios: comen-
7/28/2019 Informatica Programacao Orientada a Objeto1
34/155
trio de linha estilo C++, comentrio de bloco estilo C e um comentrio estilo Javadoc (utilizadocompor a documentao do programa).
3.1. Comentrio de linha
Comentrios com estilo em C++ se iniciam por "//". Todo e qualquer texto colocado aps as / / ig-norado pelo compilador e tratado como comentrio. Por exemplo:
// Este um comentrio estilo C++ ou comentrio de linha
3.2. Comentrio de bloco
Comentrios com estilo em C, tambm chamados de comentrios multi-linhas, se iniciam com / * e
terminam com */ . Todo o texto posto entre os dois delimitadores tratado como comentrio. Dife-rente do comentrio estilo C++, este pode se expandir para vrias linhas. Por exemplo:
/** Este um exemplo de comentrio* estilo C ou um comentrio de bloco**/
3.3. Comentrio estilo Javadoc
Este comentrio utilizado na gerao da documentao em HTML dos programas escritos emJava. Para se criar um comentrio em estiloJavadoc deve se iniciar o comentrio com / ** etermin-lo com */ . Assim como os comentrios estilo C, este tambm pode conter vriaslinhas. Este comentrio tambm pode conter certas tags que do mais informaes documentao. Por exemplo:
/**Este um exemplo de um comentrio especial usado para \ngerar uma documentao em HTML. Este utiliza tags como:@author Florence Balagtas@version 1.2*/
Este tipo de comentrio deve ser utilizado antes da assinatura da classe:
public class Hello {
Para documentar o objetivo do programa ou antes da assinatura de mtodos:
public static void main(String[] args) {
Para documentar a utilidade de um determinado mtodo.
4. Instrues e Bloco em Java
Uma instruo composta de uma ou mais linhas terminadas por ponto-e-vrgula. Um exemplo deuma simples instruo pode ser:
7/28/2019 Informatica Programacao Orientada a Objeto1
35/155
System.out.println("Hello world");
Um bloco formado por uma ou mais instrues agrupadas entre chaves indicando que formamuma s unidade. Blocos podem ser organizados em estruturas aninhadas indefinidamente. Qualquerquantidade de espaos em branco permitida. Um exemplo de bloco pode ser:
public static void main(String[] args) {System.out.print("Hello ");System.out.println("world");
Dicas de programao:1. Na criao de blocos, a chave que indica o incio pode ser colocada ao final da linha anterior aobloco, como no exemplo:
public static void main(String [] args) {ou na prxima linha, como em:
public static void main(String [] args)
{2. uma boa prtica de programao organizar as instrues que sero colocadas apso incio deum bloco, como por exemplo:
public static void main(String [] args) {System.out.print("Hello ");System.out.println("world");}
7/28/2019 Informatica Programacao Orientada a Objeto1
36/155
5. Identificadores em Java
Identificadores so representaes de nomes de variveis, mtodos, classes, etc. Exemplos de iden-tificadores podem ser: Hello, main, System, out. O compilador Java difere as letras maisculas deminsculas (case-sensitive). Isto significa que o identificador Hello no o mesmo que hello. Osidentificadores em Java devem comear com uma letra, um underscore _, ou um sinal de cifro
$. As letras podem estar tanto em maisculo quanto em minsculo. Os caracteres subseqentespodem usar nmeros de 0 a 9. Os identificadores no podem ter nomes iguais s palavras-chave oupalavras reservadas do Java, como: class, public, void, int, etc. Discutiremos mais sobre estas pala-vras mais tarde.
Dicas de programao:1. Para nomes de classes, a primeira letra deve ser maiscula. Nomes de mtodos ou variveis de-
vem comear com letra minscula. Por exemplo:ExemploDeNomeDeUmaClasseexemploDeNomeDeUmMetodo2. No caso de identificadores com mais de uma palavra, a primeira letra de cada palavra, com ex-ceo da primeira, deve vir em maisculo. Por exemplo:
charArray fileNumber - className
3. Evite o uso de undescores no incio de um identificador. Por exemplo:_NomeDeClasse.
6. Palavras- chave em Java
Palavras-chave so identificadores que, em Java, foram pr-definidas para propsitos especficos.
No se pode usar esses identificadores como nomes de variveis, mtodos, classes, etc. A seguir, te-mos a lista com as palavras-chave em Java.
7/28/2019 Informatica Programacao Orientada a Objeto1
37/155
Figura 1: Palavras-Chave em Java
Ao longo dos tpicos seguintes, iremos abordar os significados destas palavras-chave e comosousadas nos programas em Java.
Nota:true, false e null no so palavras-chave, porm, so palavras-reservadas, e, da mesma ma-neira, no permitido seu uso na atribuio a nomes de variveis, mtodos ou classes.
7. Tipos de Dados em Java
Java possui 4 tipos de dados. Estes tipos de dados so divididos em: boolean, character, integer efloat- point.
7.1. Boolean
Um dado boolean poder assumir somente dois valores: true ou false.
7.2. Character
Os characters so representaes da tabela Unicode. Um smbolo da tabela Unicode um valor de16 bits que pode substituir os smbolos da tabela ASCII (que possuem 8 bits). A tabela Unicode per-mite a insero de smbolos especiais ou de outros idiomas. Para representar um caractere usam-seaspas simples. Por exemplo, a letra "a" ser representada como 'a'. Para representar caracteres es-peciais, usa-se a "\" seguido pelo cdigo do caractere especial. Por exemplo, '\n' para o caractere de
nova linha, '\'' representar o character ' (aspas simples) e '\u0061' representao Unicode do smbo-lo 'a'.
7.3. Integer
Os dados do tipo integer vm em diferentes formatos: decimal (base 10), hexadecimal (base 16), eoctal (base 8). Ao usar estes diferentes tipos de dados Integer nos programas necessrio seguiralgumas notaes preestabelecidas. Para dados decimais no existe notao, basta escrever o n-mero. Os nmeros hexadecimais devero ser precedidos por "0x" ou "0X". E os octais devero serprecedidos por "0".
Por exemplo, considere o nmero 12. Sua representao em decimal apenas o nmero 12, sem
nenhuma notao adicional, enquanto que sua representao em hexadecimal 0xC (pois o nmero12 em hexadecimal representado pela letra C), e em octal ele representado por 014. O valor pa-dro para tipos de dados Integer o tipo int. Um int um valor, com sinal, de 32 bits.
Em alguns casos pode ser necessrio forar o dado Integer a ser do tipo long, para fazer isso bastacolocar a letra "l" (L minscula) ou "L" aps o nmero. Um dado do tipo long um valor com sinalde 64 bits. Falaremos mais sobre os tipos de dados mais tarde.
7.4. Float- Point
7/28/2019 Informatica Programacao Orientada a Objeto1
38/155
Os tipos de float-point representam dados Integer com parte fracionria. Um exemplo o nmero3.1415 (lembrando que o padro ingls utiliza o "." como divisor da parte fracionria).
Esses tipos podem ser expressos em notao cientfica ou padro. Um exemplo de notao padro o nmero 583.45 enquanto que em notao cientfica ele seria representado por 5.8345e2. O valorpadro para um dado ponto-flutuante o double, que um valor de 64 bits.
Se for necessrio usar um nmero com uma preciso menor (32 bits) usa-se o float, que finaliza-do pela letra "f" ou "F" acrescida ao nmero em questo, por exemplo, 583.45f.
8. Tipos de Dados Primitivos
A linguagem Java possui 8 tipos de dados primitivos. Eles so divididos nas seguintes representa-
es:
Tabela 1: Representaes dos dados primitivos
8.1. Lgico
O tipo boolean pode representar dois estados: true(verdadeiro) ou false(falso). Um exemplo :
boolean resultado = true;
No exemplo demonstrado acima, declarado um atributo chamado resultado do tipo boolean e atri-budo a este o valor verdadeiro.
8.2. Inteiro
Os inteiros em Java podem ser representados em 5 formas, como j foi visto, e estas so: decimal,octal, hexadecimal, ASCII e Unicode. Como por exemplo:
2 // valor 2 em decimal077 // 0 indica que ele est representado em octal.0xBACC // 0x indica que ele est representado em hexadecimal.'a' // representao ASCII'\u0061' // representao Unicode
7/28/2019 Informatica Programacao Orientada a Objeto1
39/155
O dado do tipo char um inteiro especial, sendo exclusivamente positivo e representa um nicoUnicode. Ele deve ser, obrigatoriamente, colocado entre aspas simples (''). Sua representao como
inteiro pode ser confusa para o iniciante, entretanto, o tempo e a prtica faro com que se acostumecom este tipo. Por exemplo:
char c = 97; // representa o smbolo 'a'byte b = 'a'; // em inteiro representa o nmero 97
possvel definir para qualquer inteiro nas formas mostradas. O que difere o tipo char dosdemais in-teiros que a sua sada sempre ser mostrada como um valor ASCII. Enquanto que os inteiros se-ro sempre mostrados por nmeros decimais. Por exemplo:
char c = 97;byte b = 'a';System.out.println("char = " + c + " - byte = " + b);Resultar:
char = a - byte = 97
Um cuidado deve ser tomado quanto aos inteiros: qualquer operao efetuada entre eles ter sem-pre como resultado um tipo int. Por exemplo:
byte b1 = 1;byte b2 = 2;
byte resultado = b1 + b2;
Esta instruo final causar um erro de compilao, devendo ser modificada para:
int resultado = b1 + b2;
8.3. Inteiro Longo
Os inteiros tm por padro o valor representado pelo tipo primitivo int. Pode-se represent-loscomolong adicionando, ao final do nmero, um "l" ou "L". Os tipos de dados inteiros assumem valores nasseguintes faixas:
Tabela 2: Tipos e faixa de valores dos Inteiros e Inteiro Longo
7/28/2019 Informatica Programacao Orientada a Objeto1
40/155
Dicas de programao:
1. Para declarar um nmero como sendo um long prefervel usar L maisculo, pois, se este es-tiver em minsculo, pode ser difcil distingu-lo do dgito 1.
8.4. Nmero Fracionrio
Os dados do tipo ponto-flutuante possuem o valor double como padro. Os nmeros flutuantes pos-suem um ponto decimal ou um dos seguintes caracteres:
E ou e // expoenteF ou f // floatD ou d // double
So exemplos,3.14 // tipo double6.02E23 // double com expoente2.718F // float123.4E+306D // double
No exemplo acima, o nmero 23 aps o E implicitamente positivo. equivalente a 6.02E+23. Osdados de tipo ponto-flutuante podem assumir valores dentro das seguintes faixas:
Tabela 3: Tipos e faixa de valores dos Nmero Fracionrios
9. Variveis
Uma varivel um espao na memria usado para armazenar o estado de um objeto.Uma variveldeve ter um nome e um tipo. O tipo da varivel indica o tipo de dado que ela pode conter. O nomedas variveis deve seguir as mesmas regras de nomenclatura que os identificadores.
9.1. Declarando e inicializando Variveis
A seguir, vemos como feita a declarao de uma varivel:
[= valor inicial];
7/28/2019 Informatica Programacao Orientada a Objeto1
41/155
nota:os valores colocados entre < > so obrigatrios, enquanto que os valores contidos entre [ ]so opcionais.
Aqui vemos um exemplo de programa que declara e inicializa algumas variveis:
public class VariableSamples {public static void main( String[] args ){
// declara uma varivel com nome result e tipo booleanboolean result;
// declara uma varivel com nome option e tipo charchar option;// atribui o smbolo C para a variveloption = 'C';
// declara uma varivel com nome grade e tipo double// e a inicializa com o valor 0.0double grade = 0.0;
}}
Dicas de programao:1. sempre prefervel que se inicialize uma varivel assim que ela for declarada.2. Use nomes com significado para suas variveis. Se usar uma varivel para armazenar a nota deum aluno, declare-a com o nome 'nota' e no simplesmente com uma letra aleatria 'x'.3. prefervel declarar uma varivel por linha, do que vrias na mesma linha. Por exemplo:int variavel1;int variavel2;
E no:int variavel1, variavel2;
9.2. Exibindo o valor de uma Varivel
Para exibirmos em qualquer dispositivo de sada o valor de uma varivel, fazemos uso dos seguintescomandos:
System.out.println()System.out.print()
Aqui est um simples programa como exemplo:public class OutputVariable {
public static void main( String[] args ){int value = 10;char x;x = 'A';System.out.println(value);System.out.println("The value of x = " + x );
}}
7/28/2019 Informatica Programacao Orientada a Objeto1
42/155
A sada deste programa ser a seguinte:
10The value of x = A
9.3. System.out.println( ) e System.out.print( )
Qual a diferena entre os comandos System.out.println( ) e o System.out.print( )? O primeiro faziniciar uma nova linha aps ser exibido seu contedo, enquanto que o segundo no.
Considere as seguintes instrues:
System.out.print("Hello ");
System.out.print("world!");
Essas instrues apresentaro a seguinte sada:
Hello world!
Considere as seguintes:
System.out.println("Hello ");System.out.println("world!");
Estas apresentaro a seguinte sada:
Helloworld!
9.4. Referncia de Variveis e Valor das Variveis
Iremos diferenciar os dois tipos de variveis suportados pelo Java. Estes podem ser de referncia oude valor. As variveis de valor, ou primitivas, so aquelas que armazenam dados no exato espa-ode memria onde a varivel est. As variveis de referncia so aquelas que armazenam o ende-reo de memria onde o dado est armazenado. Ao declarar uma varivel de certa classe (varivelde classe), se declara uma varivel de referncia a um objeto daquela classe. Por exemplo, vamossupor que se tenha estas duas variveis do tipo int e da classe String.
int num = 10;String nome = Hello;
Suponha que o quadro abaixo represente a memria do computador, com seus endereos de mem-ria, o nome das variveis e os tipos de dados que ele pode suportar.
Endereo de memria Nome da varivel Dado
1001 num 10: :1563 nome Endereo (2000):::2000 "Hello"
7/28/2019 Informatica Programacao Orientada a Objeto1
43/155
A varivel (do tipo int) num o dado o atual valor contido por ela e, a referncia da varivel (do tipostring) nome somente armazenado o endereo de memria que contm o valor da varivel.
10. Operadores
Em Java temos diferentes tipos de operadores. Existem operadores aritmticos, operadores rela-cionais, operadores lgicos e operadores condicionais. Estes operadores obedecem a uma ordemde precedncia para que o compilador saiba qual operao executar primeiro, no caso de uma sen-tena possuir grande variedade destes.
10.1. Operadores Aritmticos
Aqui temos a lista dos operadores aritmticos que podem ser utilizados na criao de expressesmatemticas:
Tabela 4: Operadores aritmticos e suas funes
Aqui temos um programa que exemplifica o uso destes operadores:
public class ArithmeticDemo {public static void main(String[] args) {
// alguns nmerosint i = 37;int j = 42;double x = 27.475;double y = 7.22;System.out.println("Variables values...");System.out.println(" i = " + i);System.out.println(" j = " + j);System.out.println(" x = " + x);
7/28/2019 Informatica Programacao Orientada a Objeto1
44/155
System.out.println(" y = " + y);
// adio dos nmerosSystem.out.println("Adding...");System.out.println(" i + j = " + (i + j));System.out.println(" x + y = " + (x + y));
// subtrao dos nmerosSystem.out.println("Subtracting...");System.out.println(" i - j = " + (i - j));System.out.println(" x - y = " + (x - y));
// multiplicao dos nmerosSystem.out.println("Multiplying...");System.out.println(" i * j = " + (i * j));System.out.println(" x * y = " + (x * y));
// diviso dos nmerosSystem.out.println("Dividing...");System.out.println(" i / j = " + (i / j));System.out.println(" x / y = " + (x / y));
// resto da divisoSystem.out.println("Comuting the remainder...");System.out.println(" i % j = " + (i % j));System.out.println(" x % y = " + (x % y));
// misturando operaesSystem.out.println("Mixing types...");System.out.println(" j + y = " + (j + y));System.out.println(" i * x = " + (i * x));
}}
e como sada, temos:
Variables values...
i = 37j = 42x = 27.475y = 7.22
Adding...i + j = 79x + y = 34.695
7/28/2019 Informatica Programacao Orientada a Objeto1
45/155
Subtracting...i - j = -5x - y = 20.255Multiplying...i * j = 1554x * y = 198.37Dividing...i / j = 0x / y = 3.8054Comuting the remainder...i % j = 37x % y = 5.815Mixing types...j + y = 49.22i * x = 1016.58
Nota:Quando um nmero de tipo inteiro e um outro de nmero fracionrio so usados numa nicaoperao, o resultado ser dado pela varivel de maior tipo, no caso, valor de nmero fracionrio. Onmero inteiro implicitamente convertido para o nmero fracionrio antes da operao ter incio.
11. Operadores de Incremento e Decremento
Alm dos operadores aritmticos bsicos, Java d suporte ao operador unrio de incremento (++) eao operador unrio de decremento (--). Operadores de incremento ou decremento aumentam ou di-
minuem em 1 o valor da varivel. Por exemplo, a expresso,count = count + 1; // incrementa o valor de count em 1
equivalente a,
count++;
7/28/2019 Informatica Programacao Orientada a Objeto1
46/155
Tabela 5: Operadores de incremento e decremento
Como visto na tabela acima, os operadores de incremento e decremento podem ser usadostanto an-tes como aps o operando. E sua utilizao depender disso. Quando usado antes do operando, pro-voca acrscimo ou decrscimo de seu valor antes da avaliao da expresso em que ele aparece. Porexemplo:
int i = 10,int j = 3;int k = 0;k = ++j + i; //resultar em k = 4+10 = 14
Quando utilizado depois do operando, provoca, na varivel, acrscimo ou decrscimo do seuvaloraps a avaliao da expresso na qual ele aparece. Por exemplo:
int i = 10,int j = 3;int k = 0;k = j++ + i; //resultar em k = 3+10 = 13
Dicas de programao:
1. Mantenha sempre as operaes incluindo operadores de incremento ou decremento de formasimples e de fcil compreenso.
12. Operadores Relacionais
Os operadores relacionais so usados para comparar dois valores e determinar orelacionamento en-tre eles. A sada desta avaliao ser fornecida com um valor lgico: true ou false.
Tabela 6: Operadores relacionais
O programa a seguir, mostra a utilizao destes operadores:
7/28/2019 Informatica Programacao Orientada a Objeto1
47/155
public class RelationalDemo {public static void main(String[] args) {
// alguns nmerosint i = 37;int j = 42;int k = 42;System.out.println("Variables values...");System.out.println(" i = " + i);System.out.println(" j = " + j);System.out.println(" k = " + k);
// maior queSystem.out.println("Greater than...");System.out.println(" i > j = " + (i > j)); //falseSystem.out.println(" j > i = " + (j > i)); //trueSystem.out.println(" k > j = " + (k > j)); //false
// maior ou igual aSystem.out.println("Greater than or equal to...");System.out.println(" i >= j = " + (i >= j)); //falseSystem.out.println(" j >= i = " + (j >= i)); //trueSystem.out.println(" k >= j = " + (k >= j)); //true
// menor queSystem.out.println("Less than...");System.out.println(" i < j = " + (i < j)); //trueSystem.out.println(" j < i = " + (j < i)); //falseSystem.out.println(" k < j = " + (k < j)); //false
// menor ou igual aSystem.out.println("Less than or equal to...");System.out.println(" i
7/28/2019 Informatica Programacao Orientada a Objeto1
48/155
}}
A seguir temos a sada deste programa:
Variables values...
i = 37j = 42k = 42
Greater than...
i > j = falsej > i = true
k > j = false
Greater than or equal to...
i >= j = falsej >= i = truek >= j = true
Less than...
i < j = truej < i = falsek < j = false
Less than or equal to...
i
7/28/2019 Informatica Programacao Orientada a Objeto1
49/155
x1 op x2
Onde x1 e x2 podem ser expresses, variveis ou constantes lgicas, e op pode tanto ser &&, &, ||,| ou ^.
13.1. && (e lgico) e & (e binrio)
Tabela 7: Tabela para && e &
A diferena bsica do operador && para & que o && suporta uma avaliao de curto-circuito (ouavaliao parcial), enquanto que o & no. O que isso significa?
Dado o exemplo:
exp1 && exp2
o operador e lgico ir avaliar a expresso exp1, e, imediatamente, retornar um valor false se aoperao exp1 for falsa. Se a expresso exp1 resultar em um valor false o operador nunca avaliara expresso exp2, pois o valor de toda a expresso ser falsa mesmo que o resultado isolado de
exp2 seja verdadeiro. J o operador & sempre avalia as duas partes da expresso, mesmo que a pri-meira tenha o valor false.
O programa a seguir, mostra a utilizao destes operadores:
public class TestAND {public static void main( String[] args ) {
int i = 0;int j = 10;boolean test = false;
// demonstrao do operador &&
test = (i > 10) && (j++ > 9);System.out.println(i);System.out.println(j);System.out.println(test);
// demonstrao do operador &test = (i > 10) & (j++ > 9);System.out.println(i);System.out.println(j);
7/28/2019 Informatica Programacao Orientada a Objeto1
50/155
System.out.println(test);}
}
Como resultado, o programa produzir a seguinte sada:
010false011false
Note que o comando j++, na linha contendo &&, nunca ser executado, pois o operador no o ava-
lia, visto que a primeira parte da expresso (i>10) retorna um valor booleano false.
13.2. || ( ou lgico) e | ( ou binrio)
Tabela 8: Tabela para || e |
A diferena bsica entre os operadores || e |, que, semelhante ao operador &&, o || tambm su-porta a avaliao parcial. O que isso significa?
Dada a expresso,
exp1 || exp2
o operador ou lgico ir avaliar a expresso exp1, e, imediatamente, retornar um valorlgico truepara toda a expresso se a primeira parte for avaliada como verdadeira. Se a expresso exp1 resul-tar em verdadeira a segunda parte exp2 nunca ser avaliada, pois o valor final da expresso sertrue independentemente do resultado da segunda expresso.
O programa a seguir, mostra a utilizao destes operadores:
public class TestOR {public static void main( String[] args ){
int i = 0;int j = 10;boolean test = false;
// demonstrao do operador ||
7/28/2019 Informatica Programacao Orientada a Objeto1
51/155
test = (i < 10) || (j++ > 9);System.out.println(i);System.out.println(j);System.out.println(test);
// demonstrao do operador |test = (i < 10) | (j++ > 9);System.out.println(i);System.out.println(j);System.out.println(test);
}}
Como resultado, o programa produzir a seguinte sada:010true011true
Note que a expresso j++ nunca ser avaliada na instruo que usa o operador ||, pois a
primeira parte da expresso (i
7/28/2019 Informatica Programacao Orientada a Objeto1
52/155
System.out.println(val1 val2);val1 = false;val2 = true;System.out.println(val1 val2);
val1 = false;val2 = false;System.out.println(val1 val2);
val1 = true;val2 = false;System.out.println(val1 val2);
}}
Como resultado, o programa produzir a seguinte sada:falsetruefalsetrue
13.4. ! (negao)
Tabela 10: Tabela para o operador !
O operador de negao inverte o resultado lgico de uma expresso, varivel ou constante, ou seja,o que era verdadeiro ser falso e vice-versa. O programa a seguir, mostra a utilizao deste opera-dor:
public class TestNOT {public static void main( String[] args ){boolean val1 = true;boolean val2 = false;System.out.println(!val1);System.out.println(!val2);
}}
Como resultado, o programa produzir a seguinte sada:
7/28/2019 Informatica Programacao Orientada a Objeto1
53/155
falsetrue
14. Operador Condicional ( ?: )
O operador condicional tambm chamado de operador ternrio. Isto significa que ele tem 3 argu-mentos que juntos formam uma nica expresso condicional. A estrutura de uma expresso utilizan-do um operador condicional a seguinte:
exp1?exp2:exp3
Onde exp1 uma expresso lgica que deve retornar true ou false. Se o valor de exp1 for verdadei-ro, ento, o resultado ser a expresso exp2, caso contrrio, o resultado ser exp3. O programa aseguir, mostra a utilizao deste operador:
public class ConditionalOperator {public static void main( String[] args ){
String status = "";int grade = 80;
//status do alunostatus = (grade >= 60)?"Passed":"Fail";
//print statusSystem.out.println( status );
}}
Como resultado, o programa produzir a seguinte sada:
Passed
Veremos na Figura 2 um fluxograma que demonstra como o operador condicional funciona.
7/28/2019 Informatica Programacao Orientada a Objeto1
54/155
Figura 2: Fluxograma utilizando o operador condicional
Veremos outro programa que tambm utiliza o operador condicional:
public class ConditionalOperator {public static void main( String[] args ){
int score = 0;char answer = 'a';score = (answer == 'a') ? 10 : 0;System.out.println("Score = " + score );
}}
Como resultado, o programa produzir a seguinte sada:
Score = 10
15. Precedncia de Operadores
A precedncia serve para indicar a ordem na qual o compilador interpretar os diferentes tiposdeoperadores, para que ele sempre tenha como sada um resultado coerente e no ambguo.
7/28/2019 Informatica Programacao Orientada a Objeto1
55/155
Ta-belTabela 11: Precedncia de operadores
No caso de dois operadores com mesmo nvel de precedncia, ter prioridade o que estivermais esquerda da expresso. Dada uma expresso complexa como:
6%2*5+4/2+88-10
O ideal seria fazer uso de parnteses para reescrev-la de maneira mais clara:
((6%2)*5)+(4/2)+88-10
Dicas de programao:1. Para evitar confuso na avaliao de suas expresses matemticas, deixe-as omais simples possvel e use parnteses.
16. Exerccios
16.1. Declarar e mostrar variveis
7/28/2019 Informatica Programacao Orientada a Objeto1
56/155
Dada a tabela abaixo, declare as variveis que se seguem de acordo com seus tipos correspondentese valores iniciais. Exiba o nomes e valor das variveis.
O resultado esperado do exerccio :
number = 10
letter = aresult = truestr = hello
16.2. Obter a mdia entre trs nmeros
Crie um programa que obtenha a mdia de 3 nmeros. Considere o valor para os trs nmeroscomosendo 10, 20 e 45. O resultado esperado do exerccio :
nmero 1 com o valor 10nmero 2 com o valor 20nmero 3 com o valor 45
A mdia 25
16.3. Exibir o maior valor
Dados trs nmeros, crie um programa que exiba na tela o maior dentre os nmeros informados.Use o operador ?: que j foi estudado nesta sesso (dica: ser necessrio utilizar dois operadores ?:para se chegar ao resultado). Por exemplo, dados os nmeros 10, 23 e 5, o resultado esperado doexerccio deve ser:
nmero 1 com o valor 10nmero 2 com o valor 23nmero 3 com o valor 5
O maior nmero 23
16.4. Precedncia de operadores
Dadas as expresses abaixo, reescreva-as utilizando parnteses de acordo com a forma comoelasso interpretadas pelo compilador.
1. a / b ^ c ^ d e + f g * h + i2. 3 * 10 *2 / 15 2 + 4 ^ 2 ^ 2
7/28/2019 Informatica Programacao Orientada a Objeto1
57/155
3. r ^ s * t / u v + w ^ x y++
7/28/2019 Informatica Programacao Orientada a Objeto1
58/155
Lio 3
1. ObjetivosAgora que j estudamos alguns conceitos bsicos e escrevemos alguns cdigos simples, vamos fazeras aplicaes ficarem mais interativas comeando com a captura de dados digitados pelo usurio.Nesta lio, discutiremos trs modos de obter dados de entrada (input). O primeiro atravs do usoda classe BufferedReader do pacote java.util; o segundo, atravs do uso da nova classe Scanner nomesmo pacote; e, por fim, envolveremos a utilizao da interface grfica utilizando JOptionPane.
Ao final desta lio, o estudante ser capaz de:
Criar cdigos para a captura de dados pelo teclado.
Usar a classe BufferedReader para captura, atravs de uma janela de console, dos dados digitadosno teclado.Utilizar a classe Scanner para captura, atravs de uma janela de console, dos dados digitados noteclado.Utilizar a classe JOptionPane para captura, atravs da uma interface grfica, dos dados digitados noteclado.
2. BufferedReader para capturar dadosPrimeiramente, utilizaremos a classe BufferedReader do pacote java.io para capturar dados de en-trada atravs do teclado. Passos para capturar os dados digitados, tomemos por base o programavisto na lio anterior:
1. Digite a seguinte instruo no incio do programa:import java.io.*;
2. Adicione as seguintes instrues no corpo do mtodo main:BufferedReader dataIn = new BufferedReader(new InputStreamReader(System.in));
3. Declare uma varivel temporria do tipo String para gravar os dados digitados pelo usurio e cha-me o mtodo readLine() que vai capturar linha por linha do que o usurio digitar.Isso dever ser escrito dentro de um bloco try- catch para tratar possveis excees.
try {String temp = dataIn.readLine();
} catch (IOException e) {System.out.println("Error in getting input");
}Abaixo, segue o programa completo:
import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.IOException;public class GetInputFromKeyboard {
public static void main(String[] args) {
BufferedReader dataIn = new BufferedReader(new InputStreamReader(System.in));String name = "";System.out.print("Please Enter Your Name:");
7/28/2019 Informatica Programacao Orientada a Objeto1
59/155
try {
name = dataIn.readLine();
} catch (IOException e) {System.out.println("Error!");
}System.out.println("Hello " + name +"!");
}}
Faremos uma anlise deste programa linha por linha:
im