informatica programacao orientada a objeto1

Upload: wevertonsouzab

Post on 03-Apr-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

  • 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