laboratório java oo

Upload: janerson-douglas

Post on 19-Oct-2015

214 views

Category:

Documents


0 download

TRANSCRIPT

  • Java Orientado a ObjetoLaboratrios

    www.3way.com.br

  • Lab 1 | Introduo a Linguagem Java .....................................................8

    Exerccio 1 | Instalar JDK 7 ...........................................................................................................8

    1.1 | Fazendo Download do JDK 7 .............................................................................................8

    1.2 | Instalao do JDK em ambiente Windows .......................................................................9

    1.3 | Instalao do JDK em ambiente Linux ...........................................................................13

    Exerccio 2 | Escrever, compilar e executar programa Hello World usando ferramentas de

    www.3way.com.br

    Java OO | Laboratrios

    ndice

    linha de comando ..........................................................................................................................15

    2.1 |Montar e executar o programa Java HelloWorld, usando o comando javac e java ....................15

    2.2 | Usar o compilador Java, comando javac .......................................................................................18

    2.3 | Usar o interpretador Java, comando java .......................................................................19

    Lab 2 | Java Bsico................................................................................22

    Exerccio 1 | Declarar, Inicializar, Imprimir variveis...................................................................22

    1.1 | Montando e executando o programa ImprimirVariavel usando comando javac and java .......................................................................................................................................22

    Exerccio 2 | Operador Condicional .............................................................................................24

    Exerccio 3 | Mdia numrica .......................................................................................................25

    Exerccio 4 | Encontre o maior nmero .......................................................................................26

    Lab 3 | Estruturas de Controle Java.......................................................27

    Exerccio 1 | Estrutura de controle if/else ....................................................................................27

    1.1 | Refazer programa MediaNumerica.java do Lab1 adicionando opo de entrada de usurio com JoptionPane ........................................................................................................27

    1.2 | Construir um segundo exemplo de uso de if/else ...........................................................29

    Exerccio 2 | Lao For ...................................................................................................................30

  • www.3way.com.br

    Java OO | Laboratrios

    Exerccio 3 | Lao While/Do-While ..............................................................................................31

    3.1 | Lao while e a classe java.util.Scanner. so usado neste exemplo ..................................31

    3.2 | Lao do-while ..................................................................................................................32

    Lab 4 | Vetores e Matrizes em Java .......................................................34

    Exerccio 1 | Construindo Arrays de Primitivos Inteiros .............................................................34

    1.1 | Usando arrays unidimensionais de inteiros ....................................................................34

    1.2 | Usando arrays bidimensionais de inteiros ......................................................................35

    1.3 | Busca maior valor ............................................................................................................36

    Exerccio 2 | Construindo Arrays de Objetos String 36

    1.1 | Usando arrays unidimensionais de String .......................................................................36

    Lab 5 | Usando Objetos em Java ...........................................................38

    Exerccio 1 | Criando uma instncia de objeto de uma classe usando a palavra chave new (20 minutos) .................................................................................................................................38

    1.1 | Criando objetos da classe String ......................................................................................38

    1.2 | Criando objetos da classe Integer ....................................................................................39

    Exerccio 2 | Mtodos estticos e mtodos de instncia (no - esttico) .....................................39

    Exerccio 3 | Argumentos de mtodos passado por valor e por referncia .................................42

    3.1 | Passagem de parmetros por valor .................................................................................42

    3.2 | Passagem de parmetros por referncia .........................................................................43

    Exerccio 4 | Escopo de variveis .................................................................................................43

    4.1 | Um programa que demonstra escopo de variveis .........................................................44

    4.2 | Um programa que usa trs tipos de variveis ................................................................45

    Exerccio 5 | Casting de tipos primitivos e classe Wrapper ..........................................................45

  • www.3way.com.br

    Java OO | Laboratrios

    5.1 | Casting de tipos primitivos ..............................................................................................45

    5.2 | Convertendo primitivos para classes Wrapper ...............................................................46

    Exerccio 6 | Comparando objetos ................................................................................................47

    Exerccio 7 | mtodo getClass() e o operador instanceof ............................................................48

    7.1 | Usando mtodo getClass() ...............................................................................................49

    7.2 | Usando operador instanceOf .......................................................................................... 49

    Lab 6 | Criando suas prprias classes ....................................................51

    Exerccio 1 | Definindo e usando classes ......................................................................................52

    1.1 | Definindo a nova classe Conta.java ..................................................................................52

    Exerccio 2 | Membros estticos ...................................................................................................55

    2.1 | Criando aplicativos que usam variveis estticas ...........................................................55

    2.2 | Criando aplicativos que usam mtodos estticos ...........................................................57

    Exerccio 3 | Sobrecarga ...............................................................................................................57

    3.1 | Adicionando mtodos sobrecarregados ..........................................................................57

    Exerccio 4 | Construtores ............................................................................................................61

    4.1 | Definindo mltiplos construtores numa classe ...............................................................61

    Exerccio 5 | Referncia this .....................................................................................................62

    5.1 Invoque mtodos com this ..............................................................................................62

    Lab 7 | Herana .....................................................................................67

    Exerccio 1 | Construindo programas que criam classes atravs .................................................67

    Exerccio 2 | Invocando construtores com palavra chave super .................................................69

    Exerccio 3 | Type Casting e Polimorfismo ...................................................................................69

    Exerccio 4 | Palavra chave final em classes e mtodos ..............................................................69

  • www.3way.com.br

    Java OO | Laboratrios

    Lab 8 | Interfaces e Classes Abstratas ....................................................71

    Exerccio 1 | Classes Abstratas ......................................................................................................71

    Exerccio 2 | Interface como um tipo ............................................................................................72

    Lab 9 | Excees ....................................................................................75

    Exerccio 1 | Criando excees .................................................................................................... 75

    Exerccio 2 | Usando excees ......................................................................................................76

    Lab 10 | Generics ..................................................................................77

    Exerccio 1 | Construindo uma classe Genrica ............................................................................77

    Lab 11 | Colees ...................................................................................79

    Exerccio 1 | UML e Colees ........................................................................................................79

    Exerccio 2 | Usando coleo Set ..................................................................................................82

    2.1 | Descartando elementos duplicados com HashSet ..........................................................82

    2.2 | Classificando os elementos com TreeSet ........................................................................84

    Exerccio 3 | Usando coleo List .................................................................................................85

    Exerccio 4 | Usando coleo Map ................................................................................................86

    4.1 | Usando HashMap ............................................................................................................87

    4.2 | Usando TreeMap .............................................................................................................88

    Exerccio 5 | Ordenando e Comparando Objetos nas Colees ...................................................89

    Lab 12 | Manipulando arquivos ............................................................90

    Exerccio 1 | Manipulando arquivos em java ...............................................................................90

    Lab 13 |Threads ....................................................................................92

    Exerccio 1 | Herdando a classe Thread .......................................................................................92

    1.1 | O mtodo start() sem o construtor da subclasse .............................................................92

  • www.3way.com.br

    Java OO | Laboratrios

    1.2 | O mtodo start() est no construtor da subclasse ...........................................................93

    Exerccio 2 | Implementando Interface Runnable ......................................................................94

    2.1 | Iniciando fora do construtor da classe que implementa Runnable ................................94

    2.2 | Iniciando dento do construtor da classe que implementa Runnable .............................95

    Exerccio 3 | Sincronizando threads..............................................................................................96

    3.1 | Threads no sincronizados ..............................................................................................96

    3.2 | Sincronizando threads atravs de mtodos ....................................................................98

    3.3 | Sincronizando threads atravs de sentenas ...............................................................98

    Lab 14 | Criando GUI com Swing ........................................................ 100

    Exerccio 1 | Desenvolver janela swing .......................................................................................100

    Exerccio 2 | Manipulao de eventos com Java Swing..............................................................106

    Projeto | Criando Aplicao Orientada a Objeto + Swing......................110

    1 | Descrio do Problema ...........................................................................................................110

    2 | Criao do projeto ...................................................................................................................111

    3 | Prototipao Crie as telas de acordo com os prottipos. Utilize o windowBuilder ...........112

    4 | Aes de tela ...........................................................................................................................115

    4.1. Figura 5 - Tela inicial do sistema Banco .........................................................................115

    4.2. Figura 6 - Tela Manter Clientes (JInternalFrame) ........................................................ 115

    4.3. Figura 7 - Tela Operaes Bancarias (JInternalFrame) .................................................115

    4.4. Figura 8 - Tela Abrir Conta (JDialog) ............................................................................ 116

    4.5. Figura 8 - Tela Transferncia (JDialog) .........................................................................116

    5 |Passo a Passo do cdigo fonte do sistema ...............................................................................116

    5.1. Dao Data Access Object ................................................................................................116

  • www.3way.com.br

    Java OO | Laboratrios

    5.2. Figura 5 - Tela inicial do sistema Banco .........................................................................117

    5.3. Figura 6 - Tela Manter Clientes ......................................................................................121

    5.4. Figura 7 - Tela Operaes Bancarias ..............................................................................130

    5.5. Figura 8 - Tela Abrir Conta ............................................................................................143

    5.6. Figura 9 - Tela Transferncia entre Contas ...................................................................146

    Tutorial ...............................................................................................151

    Instalando e configurando WindowBuilder Pro no Eclipse para desenvolver aplicativos Swing ...151

  • 8www.3way.com.br

    Java OO | Laboratrio

    Lab 1 | Introduo a Linguagem Java Neste laboratrio faremos Instalao do Java Development Kit, em ambiente Windows ou Linux. E escreveremos nosso primeiro programa em Java, o mais famoso programa do mundo.

    Exerccios Exerccio 1: Instalar JDK 7.0 (30 minutos)

    Exerccio 2: Escrever, compilar e rodar um programa HelloWorld em Java usando ferramentas da linha de comando (30 minutos)

    Exerccio 1 | Instalar JDK 7

    1.1 | Fazendo Download do JDK 7

    Para voc baixar o JDK(Java Development Kit), acesse o link no site da ORACLE:

    http://www.oracle.com/technetwork/java/javase/downloads/index.html

    Nesta pgina, voc tem a opo de baixar o JDK, JRE, Documentao, Cdigo Fonte e outras.

    1

  • 9www.3way.com.br

    Java OO | Laboratrio 1

    Clique em Download (Java Plataform JDK 7u25) como mostra a figura acima.

    1. Voc ser redirecionado para a pgina abaixo.

    1. Habilite o download aceitando os termos da licena. Accept License Agreement

    2. Escolha sua plataforma SO: Windows para plataforma Windows, por exemplo, e click em Download.

    3. Selecione sua plataforma SO na coluna de Download, para iniciar o download

    1.2 | Instalao do JDK em ambiente Windows

    Para instalar o JDK no Windows, primeiro baixe-o no site da Oracle, um simples arquivo executvel que contm o Wizard de instalao.

    1. D um clique duplo no arquivo jdk--windows-.exe, e espere at ele entrar no wizard de instalao.

  • 10www.3way.com.br

    Java OO | Laboratrio 1

    2. Nesta tela Clique em Next.

    3. Agora devemos selecionar quais recursos instalaremos junto com o java (Ferramentas de desenvolvimento, o cdigo fonte e o prprio java), e onde ele ser instalado (marque esse caminho porque usaremos ele mais pra frente), deixe como est e clique em Next.

    4. O processo de instalao iniciar.

  • 11www.3way.com.br

    Java OO | Laboratrio 1

    5. Este passo s ser executado caso voc ainda no tenha instalado o JRE na sua mquina. Agora ele comear a instalar o JRE(Java Runtime Environment). Assim como o JDK, ele tambm tem algumas opes. Deixe como est e clique em Next.

    6. O processo de instalao da JRE(Java Runtime Environment) iniciar.

    7. Agora seu JDK est instalado. Clique em Finish.

    8. Agora vamos criar as Variveis de Ambiente. Clique com o boto direito em cima do cone Meu Computador e selecione a opo Propriedades.

  • 12www.3way.com.br

    Java OO | Laboratrio

    9. Clique em Configuraes avanadas do sistema.

    10. Agora escolha a aba Avanado e depois clique no boto Variveis de Ambiente.

    11. Nesta tela voc ver na parte de cima, as variveis de ambiente do usurio corrente, e embaixo, as variveis de ambiente do computador, que serve para todos os usurios. Clique no boto Novo da parte de baixo.

    12. Agora em Nome da Varivel digite JAVA_HOME e em Valor da Varivel digite o Caminho que voc anotou no passo 3, ou seja, o caminho que foi instalado o JDK.

    1

  • 13www.3way.com.br

    Java OO | Laboratrio

    Provavelmente vai estar em C:\Program Files\Java\jdk1.7.0_25, ou um caminho parecido com este dependendo da verso que foi instalado. Depois clique em OK.

    13. Agora no vamos criar outra varivel e sim alterar, para isso procure a varivel PATH, ou Path, e clique no boto Editar.

    14. No altere o nome da varivel e no altere, apague os dados nela informados! Deixe como est e adicione no final do valor ;%JAVA_HOME%\bin, no esquea do ponto-e-vrgula no incio, assim voc est adicionando mais um caminho sua varivel Path.

    15. Agora abra o prompt e digite javac -version para mostrar a verso do Java Compiler e algumas opes, caso no aparea reveja os passos e confira se no esqueceu ou pulou nenhum deles e se o caminho colocado nas variveis esto corretos.

    1.3 | Instalao do JDK em ambiente Linux 1. Baixe o pacote de instalao para Linux chamado Linux self-extracting file, assim o arquivo que voc baixar ter a extenso .bin.

    1

  • 14www.3way.com.br

    Java OO | Laboratrio

    2. Abra um terminal e faa login como root (comando su).

    3. Crie um diretrio chamado /java na raiz do seu sistema (mkdir /java)

    4. Copie o arquivo que voc baixou para o diretrio /Java (cp //jdk--linux.bin /java)

    5. Execute o arquivo (sh jdk-linux.bin)

    6. Aparecer na sua tela um acordo de instalao, aperte a tecla Q para ir at o final do documento e depois escreva yes para aceitar o contrato. Feito isso ele comear a descompactar o JDK em um diretrio que ele cria, chamado jdk.

    7. Vamos agora criar as variveis de ambiente, edite o arquivo, use um editor de sua preferncia, altere seu arquivo .bashrc ou .bash_profile (depende da sua distribuio e sua preferncia) ou ainda /etc/bash.bashrc, considerando que voc no tem privilgios de super usurio, faa:> ~/bashrc

    > vi ~/bashrc

    Adicione as seguintes linhas no final do arquivo, substituindo pela verso que foi instalado do JDK: JAVA_HOME=/java/jdk

    PATH=$PATH:/$JAVA_HOME/bin

    CLASSPATH=.export JAVA_HOME PATH CLASSPATH

    8. Execute o comando source ~/.bashrc

    10. Abra um terminal e teste o Java Compiler executando o comando javac -version

    11. A sada dever ser parecida com a apresentada abaixo, se no aparecer reveja os passos e confira se foi feito tudo corretamente, inclusive o caminho dos diretrios.

    javac 1.7.0_25

    javac: no source files

    Usage: javac

    where possible options include:

    .....

    1

  • 15www.3way.com.br

    Java OO | Laboratrio

    Exerccio 2 | Escrever, compilar e executar programa Hello World usando ferramentas de linha de comando

    O objetivo de exerccio promover uma experincia completa como ciclo de desenvolvimento de programas em Java escrever, compilar e executar um programa java to simples quanto possvel usando as ferramentas de linha de comando do seu JDK. Se voc j programou em linguagens como C, C++ ou Pascal (o tradicional, no a IDE Delphi), ver que h pequenas diferenas.

    Em Java o compilador que chamado javac compila o arquivo de cdigo fonte Java em um arquivo binrio chamado de bytecode que pode ser executado em qualquer plataforma compatvel com Java, isto prov a portabilidade dos programas em Java. O bytecode so os arquivos *.java compilados para serem executados, so os arquivos com extenso *.class .

    1. Montar e executar o programa Java HelloWorld, usando o comando javac e java

    2. Usar o compilador Java, comando javac

    3. Usar o interpretador Java, comando java

    2.1 |Montar e executar o programa Java HelloWorld, usando o comando javac e java 1. Crie um diretrio onde voc vai colocar os programas em Java que voc escrever

    >mkdir c:\myjavaprograms

    >cd \myjavaprograms

    2. Escreva o cdigo de HelloWorld.java usando o editor de sua preferncia, pode textpad ou notepad no Windows; vi, gedit. Veja o gabarito do programa na Listagem-0.1 abaixo. Nestes primeiros exemplos interessante que voc digite e tenha experincia com alguns erros compilao.

    public class HelloWorld { /** *Aplicao Hello World */ public static void main( String[] args ){ // Imprime cadeia de caracteres Hello world na tela System.out.println(Hello, world); }}Listagem -0.1: HelloWorld.java

    1

  • 16www.3way.com.br

    Java OO | Laboratrio

    Anatomia do Cdigo:

    3. Compile HelloWorld.java usando o compilador javac. O compilador javac foi instalado com seu J2SE SDK. Ele est no diretrio %JAVA_HOME%\bin (Windows) ou $JAVA_HOME/bin (Linux). O resultado da compilao ser a criao do arquivo HelloWorld.class.> javac HelloWorld.java

    Problema #1: se voc receber a mensagem de erro abaixo> HelloWorld.java

    javac is not recognized as an internal or external command, operable program or batch file

    Isto significa que %JAVA_HOME%\bin para Windows ou $JAVA_HOME/bin para Linux, no est configurada corretamente. Voc pode tentar colocando C:\Program Files\Java\jdk1.7.0_25\bin\javac HelloWorld.java (para Windows) se quiser continuar sem configurar as variveis de ambiente.

    Soluo: Sugiro que voc reveja o passo 9 do item 1.2 (para windows) ou passo 7 do item 1.3 (para Linux), do exerccio 1.

    4. Certifique-se de que o arquivo HelloWorld.class foi criado. O arquivo HelloWorld.class contm a representao bytecode da classe HelloWorld.

    > dir HelloWorld.class (para windows)

    ou

    1

  • 17www.3way.com.br

    Java OO | Laboratrio

    > dir HelloWorld.class (para linux)

    6. Rode o programa HelloWorld usando o comando java. O comando java inicia a Mquina Vitual Java e executa o programa HelloWorld deste exemplo. Um programa em java pode ter mltiplas classes e um conjunto de bibliotecas de classes . Neste exemplo, o programa HelloWorld possui uma nica classe chamada HelloWorld.class. O comando java o Interpretador Java.

    >java HelloWorld

    HelloWorld world

    Problema #2: Se voc receber a mensagem de erro >java HelloWorld

    Exception in thread main java.lang.UnsupportedClassVersionError: HelloWorld

    (Unsupported major.minor version 49.0)

    possvel que voc tenha compilado seu programa com uma verso diferente da que esteja tentando execut-lo.

    Soluo: certifique que sua varivel de ambiente PATH esteja corretamente configurada para o diretrio de instalao da verso apropriada do seu JDK.

    Sugiro que voc reveja o passo 9 do item 1.2 (para windows) ou passo 7 do item 1.3 (para Linux), do exerccio 1.

    Problema #3: Se voc receber a mensagem de erro>java HelloWorld

    Exception in thread main java.lang.NoClassDefFoundError: HelloWorld

    Provavelmente sua varivel de ambiente CLASSPATH no est corretamente configurada com o diretrio corrente.

    Soluo: tente usar o comando java -classpath . HelloWorld (H um ponto . aps o -classpath). Voc ver mais sobre a classpath posteriormente.

    >java -classpath . HelloWorld

    7. Modifique HelloWorld.java como mostra a Listagem-0.2 abaixo. public class HelloWorld { /** * Comentario: * Primeiro programa em Java */ public static void main( String[] args ){ // tambem e um comentario // Imprime cadeia de caracteres Hello world na tela System.out.println(Ol Java); //modifique para imprimir mais System.out.println(Meu primeiro programa Java); }}

    Listagem-0.2: HelloWorld.java modificado

    1

  • 18www.3way.com.br

    Java OO | Laboratrio

    8. Compile e execute o programa. Observe a nova mensagem mostrada.>javac HelloWorld.java

    >java HelloWorld

    Ol Java

    Meu primeiro programa Java

    2.2 | Usar o compilador Java, comando javac

    Neste passo voc aprender como usar algumas opes do compilador javac.

    1. Mostrar as opes do compilador javac usando a opo help:> javac -help

    Usage: javac

    where possible options include: -g Generate all debugging info -g:none Generate no debugging info -g:{lines,vars,source} Generate only some debugging info -nowarn Generate no warnings -verbose Output messages about what the compiler is doing -deprecation Output source locations where deprecated APIs are used -classpath Specify where to find user class files -cp Specify where to find user class files -sourcepath Specify where to find input source files -bootclasspath Override location of bootstrap class files -extdirs Override location of installed extensions -endorseddirs Override location of endorsed standards path -d Specify where to place generated class files -encoding Specify character encoding used by source files -source Provide source compatibility with specified release -target Generate class files for specific VM version -version Version information -help Print a synopsis of standard options -X Print a synopsis of nonstandard options -J Pass directly to the runtime system

    2. Execute o comando javac com a opo -verbose>javac -verbose HelloWorld.java [parsing started HelloWorld.java] [parsing completed 516ms] [search path for source files: [.]] [search path for class files: [C:\Program Files\Java\jdk1.7.0_25\jre\lib\rt.jar,C:\Program Files\Java\jdk1.7.0_25\jre\lib\jsse.jar, C:\Program Files\Java\jdk1.7.0_25\jre\lib\jce.jar, C:\Program Files\Java\jdk1.7.0_25\jre\lib\charsets.jar,C:\Program Files\Java\jdk1.7.0_25\jre\lib\ext\dnsns.jar, C:\Program Files\Java\jdk1.7.0_25\jre\lib\ext\localedata.jar, C:\Program Files\Java\jdk1.7.0_25\jre\lib\ext\sunjce_provider.jar, C:\Program Files\Java\jdk1.7.0_25\jre\lib\ext\sunpkcs11.jar, .]] [loading C:\Program Files\Java\jdk1.7.0_25\jre\lib\rt.jar(java/lang/Object.class)] [loading C:\Program Files\Java\jdk1.7.0_25\jre\lib\rt.jar(java/lang/String.class)] [checking HelloWorld] [loading C:\Program Files\Java\jdk1.7.0_25\jre\lib\rt.jar(java/lang/System.class)]

    1

  • 19www.3way.com.br

    Java OO | Laboratrio

    [loading C:\Program Files\Java\jdk1.7.0_25\jre\lib\rt.jar(java/io/PrintStream.class)] [loading C:\Program Files\Java\jdk1.7.0_25\jre\lib\rt.jar(java/io/FilterOutputStream.class)] [loading C:\Program Files\Java\jdk1.7.0_25\jre\lib\rt.jar(java/io/OutputStream.class)] [wrote HelloWorld.class] [total 1141ms]

    3. Experincia com erros de compilao.

    Modifique o programa HelloWorld.java como mostra a Listagem-0-3 abaixo. A mudana causa um erro de sintaxe a palavra-chave static est incorretamente digitada como statict.

    public class HelloWorld { /** * Comentario: * Primeiro programa em Java */ public statict void main( String[] args ){ // tambem e um comentario // Imprime cadeia de caracteres na tela System.out.println(Meu primeiro program Java); }}Listagem -0.3: Cdigo contento erro de sintaxe

    Compile HelloWorld.java with javac.

    Observe os erros>javac HelloWorld.java HelloWorld.java:6: expected public statict void main( String[] args ){ ^ HelloWorld.java:12: ; expected } ^ 2 errors

    Remova o erro de sintaxe que voc introduziu no cdigo e recompile-o.

    2.3 | Usar o interpretador Java, comando javaNeste passo voc aprender como usar algumas opes do interpretador java. Voc pode

    pensar no comando como sua Java Virtual Machine.

    1. Mostrar o uso da informaes de ajuda do comando java com a opo -help ou -? .>java -help Usage: java [-options] class [args...] (to execute a class) or java [-options] -jar jarfile [args...] (to execute a jar file) where options include: -client to select the client VM -server to select the server VM

    1

  • 20www.3way.com.br

    Java OO | Laboratrio

    -hotspot is a synonym for the client VM [deprecated] The default VM is client. -cp -classpath A ; separated list of directories, JAR archives, and ZIP archives to search for class files. -D= set a system property -verbose[:class|gc|jni] enable verbose output -version print product version and exit -version: require the specified version to run -showversion print product version and continue -jre-restrict-search | -jre-no-restrict-search include/exclude user private JREs in the version search -? -help print this help message -X print help on non-standard options -ea[:...|:] -enableassertions[:...|:] enable assertions -da[:...|:] -disableassertions[:...|:] disable assertions -esa | -enablesystemassertions enable system assertions -dsa | -disablesystemassertions disable system assertions -agentlib:[=] load native agent library , e.g. -agentlib:hprof see also, -agentlib:jdwp=help and -agentlib:hprof=help -agentpath:[=] load native agent library by full pathname -javaagent:[=] load Java programming language agent, see java.lang.instrument

    2. Execute o comando java com a opo -verbose >java -verbose HelloWorld [Opened C:\Program Files\Java\jre1.7.0_25\lib\rt.jar] [Opened C:\Program Files\Java\jre1.7.0_25\lib\jsse.jar] [Opened C:\Program Files\Java\jre1.7.0_25\lib\jce.jar] [Opened C:\Program Files\Java\jre1.7.0_25\lib\charsets.jar] [Loaded java.lang.Object from shared objects file] [Loaded java.io.Serializable from shared objects file] [Loaded java.lang.Comparable from shared objects file] [Loaded java.lang.CharSequence from shared objects file] [Loaded java.lang.String from shared objects file] [Loaded java.lang.reflect.GenericDeclaration from shared objects file] [Loaded java.lang.reflect.Type from shared objects file] [Loaded java.lang.reflect.AnnotatedElement from shared objects file] [Loaded java.lang.Class from shared objects file] [Loaded java.lang.Cloneable from shared objects file] [Loaded java.lang.ClassLoader from shared objects file] [Loaded java.lang.System from shared objects file] [Loaded java.lang.Throwable from shared objects file]

    1

  • 21www.3way.com.br

    Java OO | Laboratrio

    [Loaded java.lang.Error from shared objects file] [Loaded java.lang.ThreadDeath from shared objects file] [Loaded java.lang.Exception from shared objects file] [Loaded java.lang.RuntimeException from shared objects file] [Loaded java.security.ProtectionDomain from shared objects file] [Loaded java.security.AccessControlContext from shared objects file] [Loaded java.lang.ClassNotFoundException from shared objects file] [Loaded java.lang.LinkageError from shared objects file] [Loaded java.lang.NoClassDefFoundError from shared objects file] [Loaded java.lang.ClassCastException from shared objects file] [Loaded java.lang.ArrayStoreException from shared objects file] [Loaded java.lang.VirtualMachineError from shared objects file] .... [Loaded sun.net.www.URLConnection from shared objects file] [Loaded sun.net.www.protocol.file.FileURLConnection from shared objects file] [Loaded java.net.ContentHandler from shared objects file] [Loaded java.net.UnknownContentHandler from shared objects file] [Loaded sun.net.www.MessageHeader from shared objects file] [Loaded java.io.FilePermission from shared objects file] [Loaded java.io.FilePermission$1 from shared objects file] [Loaded java.io.FilePermissionCollection from shared objects file] [Loaded java.security.AllPermission from shared objects file] [Loaded java.security.UnresolvedPermission from shared objects file] [Loaded java.security.BasicPermissionCollection from shared objects file] [Loaded java.security.Principal from shared objects file] [Loaded java.security.cert.Certificate from shared objects file] [Loaded HelloWorld from file:/C:/myjavaprograms/] This is my first Java program! [Loaded java.lang.Shutdown from shared objects file] [Loaded java.lang.Shutdown$Lock from shared objects file]

    3. Execute o comando java com a opo -version. Observe que o nmero da verso do JDK instalada mostrado.

    >java -version java version 1.7.0_25 Java(TM) SE Runtime Environment (build 1.7.0_25-b17) Java HotSpot(TM) 64-Bit Client VM (build 23.25-b01 , mixed mode)

    1

  • 22www.3way.com.br

    Java OO | Laboratrio 2

    Lab 2 | Java BsicoO objetivo deste laboratrio para voc se habituar com bsico da programao Java, com a

    forma de declarar e usar variveis, como usar operadores condicional.

    Durao prevista: 90 minutos

    Exerccios

    Exerccio 1: Declarar, Inicializar, Imprimir Variveis (30 minutos)

    Exerccio 2: Operador Condicional (30 minutos)

    Exerccio 3: Mdia numrica (15 minutos)

    Exerccio 4: Encontre o maior nmero (15 minutos)

    Exerccio 1 | Declarar, Inicializar, Imprimir variveisNeste exerccio voc ir aprender como declarar e inicializar uma varivel. Voc tambm vai

    aprender a modificar e imprimir o contedo da varivel.

    1.1 | Montando e executando o programa ImprimirVariavel usando comando javac and java. 1. V para seu diretrio de trabalho, onde voc est escrevendo seus programas Java.

    > cd \myjavaprograms

    2. Escreva a classe ImprimirVariavel.java, usando editor de texto, por exemplo textpad, vi, gedit ou qualquer editor, como mostrado abaixo na Listagem -1.1. public class ImprimirVariavel {

    public static void main(String[] args) {

    // Variavel valor do tipo int (primitivo), inicializado com 10 int valor = 10; // Variavel x do tipo char primitivo, inicializada com caracter A char x; x = A;

    // Mostra o valor da variavel valor na saida padrao System.out.println(valor);

    // Mostra o valor da variavel x na saida padrao System.out.println(O valor de x= + x);

    }

    }

    Listagem 1.1 : ImprimirVariavel.java

    2

  • 23www.3way.com.br

    Java OO | Laboratrio

    3. Compile o arquivo ImprimirVariavel.java usando o compilador javac. O comando javac foi instalado junto com J2SE SDK no Laboratrio 0. Est localizado no diretrio %JAVA_HOME%\bin (Windows) ou $JAVA_HOME/bin (Linux). O resultado da compilao ser a criao do arquivo ImprimirVariavel.class.

    >javac ImprimirVariavel.java

    4. Execute o progama ImprimirVariavel usando o comando java. O comando java inicia a Java VM e executa o programa. Um programa Java pode se constituir de mltiplas classes Java e de um conjunto de bibliotecas. Neste exemplo, o programa ImprimirVariavel contm apenas uma classe simples chamada de ImprimirVariavel.class. Voc deve perceber que o comando java o interpretador Java.

    >java ImprimirVariavel

    10

    O valor de x=A

    5. Modifique ImprimirVariavel.java como mostra a Listagem-1.2 abaixo. Voc adicionar uma varivel do tipo primitivo double, nomeada como media e mostrar o seu valor.

    public class ImprimirVariavel {

    public static void main(String[] args) {

    // Variavel valor do tipo int (primitivo), inicializado com 10 int valor = 10;

    // Variavel x e do tipo char primitivo, inicializada com caracter A char x; x = A;

    // Variavel media do tipo double double media = 11;

    // Mostra o valor da variavel valor na saida padrao System.out.println(valor);

    // Mostra o valor da variavel x na saida padrao System.out.println(O valor de x= + x);

    // Mostra o valor da variavel media na saida padrao System.out.println(O valor de media= + media); }

    } Listagem -1.2: ImprimirVariavel.java modificado

    2

  • 24www.3way.com.br

    Java OO | Laboratrio

    7. Compile e execute o programa. Observe que uma nova mensagem mostrada.

    >javac ImprimirVariavel.java

    >java ImprimirVariavel

    10

    O valor de x=A

    O valor de media =11.0

    Exerccio 2 | Operador Condicional Neste exerccio voc vai escrever um programa que usa o operador condicional ( ? ).

    1. Crie uma nova classe pblica nomeada como OperadorCondicional dentro do arquivo OperadorCondicional.java

    public class OperadorCondicional {

    public static void main(String[] args) {

    // Declara e inicializa duas variveies, uma varivel do tipo String // chamado estado e a outra varivel chamada grau do // tipo primitivo int String estado = ; int grau = 80;

    // pega estado do aluno. estado = ( grau >= 60 ) ? Aprovado : Reprovado;

    // Imprime estado System.out.println(estado); }

    }

    Listagem 1.3 OperadorCondicional.java

    2. Compile e execute o programa.

    3. Modifique o programa adicionando as seguintes linhas de cdigo no local apropriado, compile e rode o programa.

    int salario = 100000;

    Imprima Voc est rico! se salario maior que 50000, ou Voc pobre! caso contrrio.

    2

  • 25www.3way.com.br

    Java OO | Laboratrio

    Exerccio 3 | Mdia numrica

    1. Escreva, compile e execute o programa a baixo. Este programa deve calcular a mdia numrica entre trs nmeros inteiros e imprimi-los na tela.

    public class MediaNumerica { public static void main(String[] args) { //declara numeros inteiros int 1num = 10; int Num2 = 20; char nmero$3 = 45; //retorna a media numerica dos tres numeros // e salva-o na variavel media int mdia = (1num+num2+nmero$3)/3; //imprime na sada padro System.out.println(numero 1 = +1num) System.out.println(numero 2 = , num2); System.out.println(numero 3 = num3); System.out.println(media = + mdia); } }Listagem 1.4 MediaNumerica.java

    2. O programa contm alguns erros, voc deve identific-los com a ajuda do compilador. Ao compilar voc receber mensagens como abaixo, mostrando o nome do programa a linha onde ocorreu o erro e a mensagem de erro. Corrija o programa e execute.

    MediaNumerica.java:7: not a statement

    int 1num = 10;

    ^

    MediaNumerica.java:7: ; expected

    int 1num = 10;

    ^

    MediaNumerica.java:13: ) expected

    int mdia = (1num+num2+nmero$3)/3;

    ^

    MediaNumerica.java:16: ) expected

    System.out.println(numero 1 = +1nums)

    3. Modifique o programa para calcular a mdia entre quatro nmeros inteiros e imprima a mdia.

    2

  • 26www.3way.com.br

    Java OO | Laboratrio

    Exerccio 4 | Encontre o maior nmero 1. Crie uma nova classe no pblica nomeada como MaiorValor dentro do arquivo MaiorNumero.java.

    class MaiorValor { /** Construtor para criar uma nova instancia de MaiorValor */ public MaiorValor() { } /** * @param args argumentos de linha de comando */ public static void main(String[] args) { //declare os numeros int num1 = 10; int num2 = 23; int num3 = 5; int max = 0; //determina o maior numero max = (num1>num2)?num1:num2; max = (max>num3)?max:num3; //imprimindo System.out.println(numero 1 = +num1); System.out.println(numero 2 = +num2); System.out.println(numero 3 = +num3); System.out.println(O maior numero = +max); } }Listagem 1.5 Programa maior numero

    2. Escreva, compile e execute o programa da Listagem-1.5 com os comandos:> javac MaiorNumero.java

    > java MaiorValor

    Por que isto funcionou? Qual a diferena como os outros programas?

    3. Modifique o programa para que a classe MaiorValor seja pblica, alterando a declarao da classe e tente compilar.

    public class MaiorValor{...}

    4. Seu compilador deve ter emitido uma mensagem de erro como abaixo:MaiorNumero.java:4: class MaiorValor is public, should be declared in a file named MaiorValor.java

    public class MaiorValor {

    ^

    1 error

    Voc consegue resolver? Ento tente colocar o nome do arquivo igual ao nome classe, MaiorValor.java. E agora, resolveu, compilou?

    2

  • 27www.3way.com.br

    Java OO | Laboratrio 3

    Lab 3 | Estruturas de Controle Java

    Neste laboratrio faremos uso das estruturas de controle de Java.

    Durao prevista: 60 minutos

    Exerccios Exerccio 1: Estrutura de controle if/else (20 minutos)

    Exerccio 2: Lao for (20 minutos)

    Exerccio 3: Lao while (20 minutos)

    Exerccio 1 | Estrutura de controle if/else 1. Primeiro programa com if/else

    2. Segundo programa com if/else

    1.1 | Refazer programa MediaNumerica.java do Lab1 adicionando opo de entrada de usurio com JoptionPane.

    1. Escrever, compilar e executar a Listagem-3.1, MediaNota.java, como segue a baixo:

    import javax.swing.JOptionPane;

    public class MediaNota {

    public static void main(String[] args) {

    int notaIPD = 0; int notaIngles = 0; int notaFisica = 0; double media = 0;

    // Recebe dados do showInputDialog String snota;

    snota = JOptionPane.showInputDialog(Nota IPD entre 0 e 100!); notaIPD = Integer.parseInt(snota); snota = JOptionPane.showInputDialog(Nota Ingls entre 0 e 100!); notaIngles = Integer.parseInt(snota); snota = JOptionPane.showInputDialog(Nota Fsica entre 0 e 100); notaFisica = Integer.parseInt(snota);

    // Calcula mdia media = ( notaIPD + notaIngles + notaFisica ) / 3;

    // Realiza controle if & else

    if (media >= 60) {

  • 28www.3way.com.br

    Java OO | Laboratrio

    JOptionPane.showMessageDialog(null, Estrelinhas! Sua media e + media); } else { JOptionPane.showMessageDialog(null, Sem estrelinha! Sua media e + media); }

    }

    }Listagem 3.1 MediaNota.java

    2. Compile e rode o programa, janelas de entrada de dados aparecero para voc digitar as trs notas conforme imagens abaixo:

    Figura 3.1 Caixa Dialogo entre com nota IPD

    Figura 3.2 Caixa Dialogo entre com nota Ingls

    Figura 3.3 Caixa Dialogo entre com nota Fsica

    Figura 3.4 Caixa Dialogo Mensagem com resultado

    3

  • 29www.3way.com.br

    Java OO | Laboratrio

    3. Modifique o programa como pede abaixo:

    - se mdia maior que 90 ento mostre Estrela dourada! Sua mdia xxx.0

    - se mdia maior que 50 e menor que 90 ento mostre Estrela prateada! Sua mdia xxx.0

    - se mdia menor que 50 ento mostre No ganha estrela! Sua mdia xxx.0

    1.2 | Construir um segundo exemplo de uso de if/else

    1. Escrever, compilar e executar a Listagem-3.2, NumeroExtenso.java, como segue a baixo:

    import javax.swing.JOptionPane;

    public class NumeroExtenso {

    public static void main(String[] args) {

    String msg = ; int input = 0;

    // Pega literal numrico de entrada e converte para int input = Integer.parseInt(JOptionPane.showInputDialog(Entre numero entre 1 e 10));

    // Configura varivel msg com string equivalente a entrada if(input == 1) msg = um; else if(input == 2) msg = dois; else if(input == 3) msg = tres; else if(input == 4) msg = quatro; else if(input == 5) msg = cinco; else if(input == 6) msg = seis; else if(input == 7) msg = sete; else if(input == 8) msg = oito; else if(input == 9) msg = nove; else if(input == 10) msg = dez; else msg = Numero Invalido; // Mostra nmero por extenso

    JOptionPane.showMessageDialog(null, msg);

    }

    }

    Listagem 3.2 NumeroExtenso.java

    3

  • 30www.3way.com.br

    Java OO | Laboratrio

    2. Compile e rode o programa, surgir uma janela de entrada de dados onde voc deve digitar um nmero, veja figuras:

    Figura 3.5 Entrada de dados literal numrico

    Figura 3.6 Mensagem

    3. Modifique o programa anterior, Listagem-3.2, substituindo as estruturas if/else pela switch.

    4. Compile e execute.

    Exerccio 2 | Lao For

    1. Escrever, compilar e executar a Listagem-3.3, TestaFor.java, como segue a baixo:

    import javax.swing.JOptionPane;

    public class TestaFor {

    public static void main(String[] args) {

    // Declare e inicialize um array de String chamado nomes. String nomes[] = { Beth, Bianca, Luis, Bela, Nico, Ilza, Geronimo, Rafa}; // Esta string ser procurada dentro do array String procuraNome = JOptionPane.showInputDialog(Digite \Ilza\ ou \sem nome\!);

    // Declara e inicializa um varivel boolean acheiNome. boolean acheiNome = false;

    // Procura no array de String usando o for. // O nomes.length retorna o tamanho do array. // Este for compara cada elemento do array com o valor de procuraNome que do tipo String. // O mtodo equals(...) da classe String usado para comparar // Pense a respeito de voc no poder utilizar // nomes[i] == procuraNome como lgica de comparao aqui

    3

  • 31www.3way.com.br

    Java OO | Laboratrio

    for (int i = 0; i < nomes.length; i++) { if (nomes[i].equals(procuraNome)) { acheiNome = true; break; } }

    // Mostra o resultado if (acheiNome) JOptionPane.showMessageDialog(null, procuraNome + encontrado!); else JOptionPane.showMessageDialog(null, procuraNome + no encontrado!); }

    }

    Listagem 3.3 TestaFor.java

    2. Compile e execute o programa, surgir janela de entrada de dados onde voc deve digitar um Nome como Ilza ou sem nome, veja figuras abaixo:

    Figura 3.7 Procurar Bela

    Figura 3.8 Nome procurado foi encontrado

    Exerccio 3 | Lao While/Do-While 1. Primeiro programa com while

    2. Segundo programa com do-while

    3.1 | Lao while e a classe java.util.Scanner. so usado neste exemplo

    1. Escrever, compilar e executar a Listagem-3.4, TestaWhile.java, como segue a baixo:

    import java.text.DecimalFormat;

    3

  • 32www.3way.com.br

    Java OO | Laboratrio

    import java.util.Scanner;

    public class TestaWhile {

    public static void main(String args[]) {

    // declara variveis inteiras int contadorNota, valorNota, total;

    // declara varivel media double double media; total = 0; contadorNota = 1;

    // Classe Scanner utilizada para ler entrada de dados digitado pelo usurio Scanner leitor = new Scanner(System.in);

    System.out.println(Entre com 4 notas inteiras, ou valor negativo para sair); System.out.println(Digite nota( + contadorNota + ) :);

    // l o que o usurio digitou e converte para um int valorNota = leitor.nextInt();

    // Testa antes de entrar se valorNota que foi digitado maior que um while (( valorNota > -1 )) { total += valorNota; if (contadorNota >= 4){ break; } contadorNota++; System.out.println(Digite nota( + contadorNota + ) :); valorNota = leitor.nextInt(); }

    if (( contadorNota > 0 ) && ( valorNota > 0 )) { media = (double) total / contadorNota;

    // Usa DecimalFormat para formatar valor // double com 2 casas decimais DecimalFormat doisDigitos = new DecimalFormat(0.00); System.out.println(A mdia : + doisDigitos.format(media)); } else { System.out.println(No inseriu nota ou leitura interrompida!); } System.exit(0); }

    }

    Listagem 3.4 TestaWhile.java

    2. Neste programa a classe Scanner usada para capturar entrada de dados do teclado que for digitada na console.

    3.2 | Lao do-while 1. Escrever, compilar e executar a Listagem-3.5, TestaDoWhile.java, como segue a baixo, para implementar a mesma lgica do exemplo anterior usando lao do-while:

    3

  • 33www.3way.com.br

    Java OO | Laboratrio

    import java.text.DecimalFormat;import java.util.Scanner;

    public class TestaDoWhile {

    public static void main(String args[]) {

    // declara variveis inteiras int contadorNota, valorNota, total;

    // declara varivel media double double media; total = 0; contadorNota = 1;

    // Classe Scanner utilizada para ler entrada de dados digitado pelo usurio Scanner leitor = new Scanner(System.in); System.out.println(Entre com 4 notas inteiras, ou valor negativo para sair);

    // Testa antes de entrar se valorNota digitado maior que um do { System.out.println(Digite nota( + contadorNota + ) :);

    // l o que o usurio digitou e converte para um int valorNota = leitor.nextInt(); total = total + valorNota; contadorNota++; } while (( valorNota > -1 ) && ( contadorNota < 5 ));

    if (( contadorNota > 0 ) && ( valorNota > 0 )) { media = (double) total / --contadorNota; // Usa DecimalFormat para formatar valor double com 2 casas decimais DecimalFormat doisDigitos = new DecimalFormat(0.00); System.out.println(A mdia : + doisDigitos.format(media)); } else { System.out.println(No inseriu nota ou leitura interrompida!); } System.exit(0); }

    }

    Listagem 3.5 TestaDoWhile.java

    2. Perceba a diferena entre os controles while e do-while, o primeiro testa, forando uma leitura adiantada para depois executar o trecho de cdigo, o segundo executa primeiro as instrues e s testa ao final se deve continuar a repetir as instrues.

    3

  • 34www.3way.com.br

    Java OO | Laboratrio 4

    Lab 4 | Vetores e Matrizes em Java

    Neste laboratrio construiremos e executaremos exemplos de programas que usam arrays em Java, tambm conhecidos como matrizes e vetores.

    Durao prevista: 90 minutos

    Exerccios

    Exerccio 1: Construindo arrays de primitivos inteiros (40 minutos)

    Exerccio 2: Construindo arrays de objetos String (50 minutos)

    Exerccio 1 | Construindo Arrays de Primitivos Inteiros 1. Usando arrays unidimensionais de inteiros

    2. Usando arrays bidimensionais de inteiros

    3. Busca maior valor

    1.1 | Usando arrays unidimensionais de inteiros 1. Escreva, compile e execute a Listagem-4.1, UniArr ay.java, preste bastante ateno aos comentrios.

    public class UniArray {

    public static void main(String[] args) {

    // Declara e cria um array de int com tamanho 10 int[] idades = new int[10];

    // Imprime o valor de cada elemento do array for (int i = 0; i < idades.length; i++) { System.out.print(idades[i]); } }

    }

    Listagem 4.1 UniArray.java

    2. Compile e execute o programa, veja o resultados0000000000

    3. Antes do lao for que imprime os valores modifique o programa UniArray.java, crie outro lao for para inicializar os elementos do array idades de modo que cada entrada fique como na sequncia: idades[0]=31, idades[1]=32 ... idades[n]=N e assim por diante.

  • 35www.3way.com.br

    Java OO | Laboratrio 4

    1.2 | Usando arrays bidimensionais de inteiros 1. Escreva, compile e execute a Listagem-4.2, BiDArray.java, preste bastante ateno aos comentrios.public class BiDArray {

    public static void main(String[] args) {

    // Declara e cria um array de duas dimenses de int com tamanho 10x5 int[][] idades = new int[10][5];

    // Mostra numero de linhas e colunas System.out.println(idades.length = + idades.length); //linhas System.out.println(idades.length[1] = + idades[1].length); //colunas

    // Imprime o valor de cada elemento do array for (int i = 0; i < idades.length; i++) { System.out.println(\n Linha inicio + i);

    for (int j = 0; j < idades[i].length; j++) { idades[i][j] = i * j; System.out.print(idades[i][j] + ); } } }

    }

    Listagem 4.2 BiDArray.java

    2. Compile e execute o programa, veja o resultado:idades.length =10idades.length[1] =5

    Linha 00 0 0 0 0 Linha 10 1 2 3 4 Linha 20 2 4 6 8 Linha 30 3 6 9 12 Linha 40 4 8 12 16 Linha 50 5 10 15 20 Linha 60 6 12 18 24 Linha 70 7 14 21 28 Linha 80 8 16 24 32 Linha 90 9 18 27 36

    3. Crie um programa TriDArray.java que declara um array tridimensional de inteiros e inicialize cada clula com um nmero crescente comeando de 1000, 1001, 1002 ... N, assim por diante.

  • 36www.3way.com.br

    Java OO | Laboratrio 4

    1.3 | Busca maior valor 1. Escreva, compile e execute a Listagem-4.3, MaiorNumero.java, preste bastante ateno aos comentrios.

    import javax.swing.JOptionPane;

    public class MaiorNumero {

    public static void main(String[] args) {

    int[] num = new int[10]; int contador; int max = 0; int numerostotal = 3;

    // Pede ao usurio para digitar nmeros for (contador = 0; contador < numerostotal; contador++) {

    num[contador] = Integer.parseInt(JOptionPane.showInputDialog(Entre com nmeros at + numerostotal + no total));

    // verifica se o nmero digitado maior que max if (( contador == 0 ) || ( num[contador] > max )) max = num[contador]; }

    // Mostra o maior nmero. JOptionPane.showMessageDialog(null, O maior nmero + max); }

    }

    Listagem 4.3 MaiorNumero.java

    2. Compile e execute o programa e veja o resultado.

    3. Modifique o programa para achar o menor nmero e mostr-lo.

    Exerccio 2 | Construindo Arrays de Objetos String 1. Usando arrays unidimensionais de String

    1.1 | Usando arrays unidimensionais de String 1. Escreva, compile e execute a Listagem-4.4, DiasDaSemana.java, preste bastante ateno aos comentrios.

    public class DiasDaSemana {

    public static void main(String[] args) {

    // Declara e inicializa um array de String contendo os dias da semana String[] dias = { Domingo, Segunda, Terca, Quarta, Quinta, Sexta, Sabado };

    // Mostra dias da semana com lao forEach/Enhenced for Java 5.0 System.out.println(Mostra dias da Semana usando lao For-Each); for (String str : dias) System.out.print(str + );

  • 37www.3way.com.br

    Java OO | Laboratrio 4

    // Declara e inicializa um array de String contendo os dias da semana em Ingls // veja que para cada elemento voc cria um objeto do tipo usado pelo array String[] days = new String[7]; days[0] = new String(Sunday); days[1] = new String(Monday); days[2] = new String(Tuesday); days[3] = new String(Wednesday); days[4] = new String(Thursday); days[5] = new String(Friday); days[6] = new String(Saturday);

    // imprime a traducao de portugues-ingles dos dias da semana System.out.println(\nPORTUGUES - INGLES); for (int i = 0; i < dias.length; i++) { System.out.println(dias[i] + - + days[i]); } }}Listagem 4.4 DiasDaSemana.java

    3. Crie um programa como o anterior, que contenha um nico array bidimensional de String, onde cada linha contenha a String em Portugus e em Ingls do dia da semana, como exemplo dias[0][0]=Segunda, dias[0][1]=Monday ..., e assim por diante.

  • 38www.3way.com.br

    Java OO | Laboratrio 5

    Lab 5 | Usando Objetos em Java

    Neste laboratrio faremos uso de objetos Java, objetos de bibliotecas bsica, reforando experincia de programao em Java e outros conceitos bsicos como invocao de mtodos (de classe e de instncia), classes bsicas do pacote java.lang.

    Durao prevista: 160 minutos

    Exerccios

    Exerccio 1: Criando uma instncia de objeto de uma classe usando a palavra chave new (20 minutos)

    Exerccio 2: Mtodos estticos e mtodos de instncia (no - esttico) (20 minutos)

    Exerccio 3: Argumentos passado por valor e por referncia (20 minutos)

    Exerccio 4: Escopo de variveis (20 minutos)

    Exerccio 5: Coeso de tipos primitivos e classe Wrapper (30 minutos)

    Exerccio 6: Comparando objetos (30 minutos)

    Exerccio 7: Mtodo getClass() e o operador instanceof (20 minutos)

    Exerccio 1 | Criando uma instncia de objeto de uma classe usando a palavra chave new (20 minutos)

    1.1 | Criando objetos da classe String 1. Usando sua IDE ou editor de arquivo crie um arquivo ClasseEObjeto.java com base na Listagem-2.1 abaixo. Estude o cdigo prestando muita ateno aos comentrios.

    public class ClasseEObjeto {

    public static void main(String[] args) {

    // Para criar uma instncia de uma classe use a palavra chave new // Por exemplo, para criar uma instncia da classe String // procedemos como segue String strObjeto1 = new String(Este objeto e uma instncia da classe String); System.out.println(estado da instncia de strObjeto1 = + strObjeto1);

    // A classe String e uma classe especial que permite a criao de uma // instncia pela atribuio de um literal string. Nenhuma outra classe // em java permite este tipo de criao. Alm disso para cada literal // string e criada uma nica instncia desta string String strObjeto2 = Este objeto uma instncia da classe String; System.out.println(estado da instncia de strObjeto2 = + strObjeto2);

    }

    }

    Listagem 2.1 ClasseEObjeto.java

  • 39www.3way.com.br

    Java OO | Laboratrio

    2. Compile e execute o programa ClasseEObjeto.java, observe o resultado da execuo:estado da instncia de strObjeto1 = Este objeto uma instncia da classe String

    estado da instncia de strObjeto2 = Este objeto uma instncia da classe String

    3. Modifique o programa ClasseEObjeto.java para criar outra instncia da classe String contendo o literal string Eu sou outra instncia da classe String e imprimir seu estado usando o mtodo System.out.println(...)

    1.2 | Criando objetos da classe Integer 1. Com base no programa ClasseEObjeto.java, modifique o programa para criar um objeto da classe Integer (classe Wrapper do tipo primitivo int) cujo valor 20, veja na Listagem-2.2.

    public class ClasseEObjeto {

    public static void main(String[] args) {

    // Para criar uma instncia de uma classe use a palavra chave new // Por exemplo, para criar uma instncia da classe String // procedemos como segue String strObjeto1 = new String(Este objeto e uma instncia da classe String); System.out.println(estado da instncia de strObjeto1 = + strObjeto1);

    // A classe String e uma classe especial que permite a criao de uma // instncia pela atribuio de um literal string. Nenhuma outra classe // em java permite este tipo de criao. Alm disso para cada literal // string e criada uma nica instncia desta string String strObjeto2 = Este objeto uma instncia da classe String; System.out.println(estado da instncia de strObjeto2 = + strObjeto2);

    // cria uma instncia de objeto da classe Integer Integer intObjeto1 = new Integer(20); System.out.println(estado da instncia de intObjeto1 = + intObjeto1);

    }

    }

    Listagem 2.2 ClasseEObjeto.java criando objeto Interger

    2. Modifique o programa anterior para criar e imprimir uma instncia da classe Double e imprimir seu estado.

    Exerccio 2 | Mtodos estticos e mtodos de instncia (no - esttico) Neste exerccio, voc aprender como invocar mtodos estticos (de classe) e no-estticos (de instncia) de uma classe. Para invocar mtodos estticos usamos a seguinte forma:

    .

    5

  • 40www.3way.com.br

    Java OO | Laboratrio

    por exemplo,Integer.parseInt(25); // parseInt um mtodo esttico da classe Integer

    Um mtodo no-esttico (instncia) de uma classe s pode ser invocado a partir de uma instncia do objeto da classe usando a seguinte forma:

    .

    por exemplo,String str = new String(Brazil com z); //cria instncia do objeto

    str.charAt(0); //chama mtodo de instncia charAt()

    //da classe String atravs da instncia do objeto

    1. Crie o programa MetodosInstanciaEEstatico.java com base na Listagem-2.3 a abaixo.

    public class MetodosInstanciaEEstatico {

    public static void main(String[] args) {

    // Cria duas instncias da classe String String strInst1 = new String(Sou uma instncia de objeto da classe String); String strInst2 = Viva com paixo!;

    // Invoca o mtodo de instncia charAt() // atravs das instncias da classe String char x = strInst1.charAt(2); char y = strInst2.charAt(1); char z = strInst2.charAt(0);

    System.out.println(O 3.o caracter da strInst1 = + x); System.out.println(O 2.o caracter da strInst2 = + y); System.out.println(O 1.o caracter da strInst2 = + z);

    // Invoca o mtodo de instncia equalsIgnoreCase(...) boolean b = strInst1.equalsIgnoreCase(strInst2); String strInst3 = b ? Sim : No; System.out.println(As variveis strInst1 + e strInst2 tem o mesmo + conjunto de caracteres? + strInst3); // Invoca um mtodo esttico, valueOf (int i), da classe String int i = 23; String strInst4 = String.valueOf(i); System.out.println(valor de strInst4 = + strInst4);

    // Voc j usou o mtodo esttico parseInt() da classe // Integer no exerccio anterior // Agora cria uma instncia de objeto da classe String String strInst5 = new String(34); int ii = Integer.parseInt(strInst5); System.out.println(valor de ii = + ii);

    }

    }

    Listagem 2.3 MetodoInstanciaEEstatico.java

    2. Compile, rode o programa e observe o resultado.

    5

  • 41www.3way.com.br

    Java OO | Laboratrio

    3. Modifique o programa MetodosInstanciaEEstatico.java para que o mesmo contenha as instrues abaixo no final do mtodo main().

    // O seguinte codigo ira gerar erro de compilacao// uma vez que ele tentara invocar um metodo de instancia// atraves do nome da classe. Corrija o este erro de compilacaochar f = String.charAt(2);

    4. Compile o programa. O seguinte erro ser gerado pelo compilador:Cannot make a static reference to the non-static method charAt(int) from the type String

    5. Corrija o erro de compilao e novamente compile e execute o programa.

    6. Como vou saber se um mtodo qualquer na biblioteca de Java esttico ou de instncia? A resposta : consulte a documentao da API Java (http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#charAt(int) e veja se o mtodo em questo possui em sua assinatura a palavra chave static. Veja na figura:

    7. Acrescente o trecho de cdigo abaixo, Listagem-2.4, no programa anterior. Consulte na documentao da API se os mtodos so estticos ou de instncia e faa a correta invocao do mtodo.

    // mtodo endsWith() String str = Hello; System.out.println( str.endsWith( slo ) );

    // mtodo floor() System.out.println( Math.floor(3.14));

    // mtodo isDigit() System.out.println( 0= + Character.isDigit(0));

    System.out.println( A= +Character.isDigit(A));

    Listagem 2.4 Identifique quais mtodos so de classe ou de instncia

    5

  • 42www.3way.com.br

    Java OO | Laboratrio

    Exerccio 3 | Argumentos de mtodos passado por valor e por referncia Neste exerccio, voc ira praticar o conceito da passagem de parmetro por valor. Note que os parmetros de tipos primitivos so passados o valor, enquanto parmetros do tipo referncia so passados a referncia. Um array considerado um tipo referncia mesmo que os valores armazenados nele sejam de um tipo primitivo.

    3.1 | Passagem de parmetros por valor 1. Escreva, compile e execute a Listagem-2.5, TestaPassagemValor.java, preste bastante ateno aos comentrios.

    public class TestaPassagemValor {

    public static void main(String[] args) {

    int i = 10;

    // Imprime valor de i System.out.println(inicia mtodo main e i = + i);

    // Chama mtodo test, que est definido abaixo // e passa valor inteiro como um parmetro. Uma vez que // int um tipo primitivo, este argumento e passado // por valor. test(i);

    // imprime o valor de i, note que valor de i no muda System.out.println(termina o mtodo main e i = + i); }

    // Mtodo esttico na classe public static void test(int j) {

    System.out.println(inicia mtodo test e j = + j);

    // muda valor parmetro i j = 33; System.out.println(termina mtodo test e j = + j); }

    }

    Listagem 2.5 Passagem de parmetro por valor

    2. Modifique TestaPassagemValor.java como segue abaixo e execute a classe.

    2.1. Passe um segundo parmetro de tipo primitivo para o mtodo test, exemplo test(int j, int k) - voc pode escolher qualquer parmetro de tipo primitivo (tal como long ou boolean).

    2.2. Atribua um valor ao segundo parmetro antes de chamar o mtodo test(...). E mude o valor do parmetro passado dentro do mtodo test(...), como voc fez com o primeiro parmetro na Listagem-2.5 acima.

    2.3. Modifique os mtodos System.out.println(...) para indicar os valores do primeiro parmetro e do segundo parmetro.

    5

  • 43www.3way.com.br

    Java OO | Laboratrio

    3.2 | Passagem de parmetros por referncia 1. Escreva, compile e execute a Listagem-2.6, TestaPassagemReferencia.java, preste bastante ateno aos comentrios.

    import java.util.Arrays;

    public class TestaPassagemReferencia {

    public static void main(String[] args) {

    // criando um array de inteiros int[] i = { 10, 20, 30 };

    // Imprime valor de i System.out.println(inicia metodo main e i = + Arrays.toString(i));

    // Chama mtodo test que est definido abaixo, // e passa por referncia o array de inteiro como um parmetro. // Uma vez que um array do tipo referncia, // este argumento e passado // por referncia. test(i);

    // imprime o valor de i. Note que o valor de i no muda System.out.println(termina o mtodo main e i = + Arrays.toString(i)); }

    // Mtodo esttico na classe public static void test(int[] j) {

    System.out.println(inicia mtodo test e j = + Arrays.toString(j));

    // muda valor do parmetro i j[0] = 33; j[1] = 66;

    System.out.println(termina mtodo test e j = + Arrays.toString(j)); }

    }

    Listagem 2.6 Passagem de parmetros por referncia

    2. Observe que a classe utiliza o mtodo toString() da classe java.util.Arrays para podermos imprimir o conjunto de elementos do array, apesar de ainda no termos visto arrays em Java o exerccio demonstra bem o conceito.

    3. bom saber que a referncia tratada como um tipo primitivo, a final ele simplesmente armazena o endereo de um objeto, logo a referncia passada por valor. Pense nisso.

    Exerccio 4 | Escopo de variveis Neste exerccio, voc praticar o conceito de escopo de varivel. Voc tambm aprender como declarar trs tipos de variveis: varivel esttica, varivel de instncia e a varivel local.

    5

  • 44www.3way.com.br

    Java OO | Laboratrio

    4.1 | Um programa que demonstra escopo de variveis 1. Escreva, compile e execute a Listagem-2.7, EscopoDeVariavel.java, preste bastante ateno aos comentrios.

    public class EscopoDeVariavel {

    public static void main(String[] args) {

    int var1 = 10;

    if (var1 < 100) { int var2 = 20; } else { int var2 = 21; }

    // Acesso a var1 permitido, ento no h erro de compilao. System.out.println(valor de var1 = + var1);

    // Acesso a var2 no permitido, ento erro de compilao ser gerado System.out.println(valor de var2 = + var2); }

    }

    Listagem 2.7 Escopo de varivel

    2. Observe que haver um erro de compilao. Isto era esperado porque voc est tentando ter acesso a varivel var2 e ela foi declarada dentro das { } do bloco if/else, ento o escopo de acesso somente dentro das { } e no pode usada fora de seu escopo.

    3. Modifique EscopoDeVariavel.java, como mostra a Listagem-2.8. Observe os comentrios.

    public class EscopoDeVariavel {

    public static void main(String[] args) {

    int var1 = 10; // var2 agora esta definida em todo escopo do metodo main int var2 = 15;

    if (var1 < 100) { // int var2 = 20; var2 = 20; } else { // int var2 = 21; var2 = 21; }

    // Acesso a var1 permitido, ento no h erro de compilao. System.out.println(valor de var1 = + var1);

    // Acesso a var2 agora permitido, no h erro de compilao System.out.println(valor de var2 = + var2);

    }

    }

    Listagem 2.8 EscopoDeVariavel.java modificado

    5

  • 45www.3way.com.br

    Java OO | Laboratrio

    4. Compile e execute o programa modificado.

    4.2 | Um programa que usa trs tipos de variveis 1. Escreva, compile e execute a Listagem-2.9, TresTiposDeVariaveis.java, preste bastante ateno aos comentrios.

    public class TresTiposDeVariaveis {

    // Exemplo de varivel esttica static String staticVariable = Varivel de classe, ou esttica;

    // Exemplo de varivel de instncia String instanceVariable = varivel de instncia;

    public static void main(String[] args) {

    String localVariable = varivel local; System.out.println(Varivel esttica = + staticVariable); System.out.println(Varivel de instncia = + instanceVariable); System.out.println(Varivel local = + localVariable);

    }

    }

    Listagem 2.9 TresTiposDeVariaveis.java

    2. Observe que variveis de instncia no podem ser referenciadas dentro de um contexto esttico, o mtodo main() esttico.

    3. Comente a linha de cdigo contendo o erro, compile e execute o programa.

    4. Pense em outra forma de resolver este problema se for necessrio acessar a varivel de instncia instanceVariable.

    Exerccio 5 | Casting de tipos primitivos e classe Wrapper Neste exerccio, voc praticar a moldagem (casting) de tipos primitivos e como converter primitivos s classes de empacotamento (Wrapper) correspondentes e vice versa. Casting de tipos de referncia sero exercitados em outro laboratrio.

    1. Casting de tipos primitivos.

    2. Convertendo primitivos para classes Wrapper.

    5.1 | Casting de tipos primitivos 1. Escreva, compile e execute a Listagem-2.10, CastingPrimitivos.java, preste bastante ateno aos comentrios.

    public class CastingPrimitivos {

    public static void main(String[] args) {

    // casting implicito exemplo 1 int numInt = 10;

    5

  • 46www.3way.com.br

    Java OO | Laboratrio

    double numDouble = numInt; System.out.println(int + numInt + e implicitamente moldado para double + numDouble);

    // casting implicito exemplo 2 int numInt1 = 3; int numInt2 = 2; double numDouble2 = numInt1 / numInt2; System.out.println(numInt1/numInt2 + numInt1 / numInt2 + e implicitamente moldado para + numDouble2);

    // casting explicito exemplo 1 double valDouble = 10.12; int valInt = (int) valDouble; System.out.println(double + valDouble + e explicitamente moldado para int + valInt);

    // casting explicito exemplo 2 double x = 10.2; int y = 2; int resultado = (int) ( x / y ); System.out.println(x/y + x / y + e explicitamente moldado para int + resultado); }

    }

    Listagem 2.10 CastingPrimitivos.java

    2. Compile e execute o programa, veja o resultados:int 10 e implicitamente moldado para double 10.0numInt1/numInt2 1 e implicitamente moldado para 1.0double 10.12 e explicitamente moldado para int 10x/y 5.1 e explicitamente moldado para int 5

    Em (1) e (2) ocorre uma converso explicita dos tipos, ou seja, o Java o faz automaticamente. Em (2) ocorre uma diviso de nmeros inteiros resultado em um nmero inteiro que transformado em double. J em (3) h uma diviso de inteiro/double resultando em um double. Neste caso dizemos que est ocorrendo uma promoo numrica ou um alargamento do tipo.

    3. Modifique o programa para fazer casting dos tipos long ->byte, float->short, int-> char.

    5.2 | Convertendo primitivos para classes Wrapper 1. Escreva, compile e execute a Listagem-2.10, CastingPrimitivos.java, preste bastante ateno aos comentrios.

    public class PrimitivaParaWrapper {

    public static void main(String[] args) {

    // cria uma instncia de objeto Integer Integer intObjeto = new Integer(7801);

    // Converte de Integer para primitivo int usando mtodo intValue() int intPrimitiva = intObjeto.intValue(); System.out.println(int intPrimitiva = + intPrimitiva);

    // Usando mtodo esttico da classe empacotadora Integer // para converter uma String para o tipo primitivo int String strInt = 65000; int intConvertida = Integer.parseInt(strInt);

    5

  • 47www.3way.com.br

    Java OO | Laboratrio

    System.out.println(int intConvertida = + intConvertida);

    // Converte int primitivo para tipo Integer Integer intObjeto2 = new Integer(intConvertida); System.out.println(Integer intObjeto2 = + intObjeto2); }

    }

    Listagem 2.10 PrimitivaParaWrapper.java, converte de primitivos para empacotadora e vsv

    2. Compile e rode o programa, observe e procure entender o resultado.

    3. Modifique o programa da Listagem-2.10 para criar uma varivel do tipo Long e convert-la em seu tipo primitivo long, depois mostre seu valor.

    4. Em Java 5.0 estas converses ocorrem implicitamente, pois agora h o recurso de Autobox (empacotar) e AutoUnbox (desempacotar). Modifique a Listagem-2.10 para que fique como na Listagem-2.11. Perceba como isso torna menos burocrtico o processo de converso de primitivos para Wrapper e vice-versa.

    public class AutoBoxUnbox {

    public static void main(String[] args) {

    // cria uma instncia de objeto Integer, autobox Integer intObjeto = 7801;

    // Converte de Integer para primitivo int, auto-unbox int intPrimitiva = intObjeto; System.out.println(int intPrimitiva = + intPrimitiva); // Usando mtodo esttico da classe empacotadora Integer // para converter uma String para o tipo Integer, autobox String strInt = 65000; Integer intConvertida = Integer.parseInt(strInt); System.out.println(int intConvertida = + intConvertida);

    // Converte Integer para primitivo int, autoUnbox int intPrimitiva2 = intConvertida; System.out.println(Integer intObjeto2 = + intPrimitiva2); }

    }

    Listagem 2.11 - AutoBoxUnbox.java

    Exerccio 6 | Comparando objetos 1. Escreva, compile e execute a Listagem-2.12, TestaIgualdadeObjeto.java, preste bastante ateno aos comentrios.

    public class TestaIgualdadeObjeto {

    public static void main(String[] args) {

    // Declara duas variveis do tipo String, str1 e str2 String str1, str2;

    // Inicializando as variveis. Note que as variveis contem // ponteiros para instncia de mesmo objeto atual. str1 = Viver sem Deus...no viver!;

    5

  • 48www.3way.com.br

    Java OO | Laboratrio

    str2 = str1;

    // Mostra o valor das variveis str1 e str2 System.out.println(String1: + str1); System.out.println(String2: + str2);

    // A notao ==, quando e usada com variveis de referncia, // se retornar true significa que as variveis apontam para // mesma instncia de um objeto, e se false no, so referencias diferentes

    // Checa se str1 e str2 so o mesmo objeto para as duas variveis // apontando para mesma instncia de um objeto do tipo String System.out.println(Mesmo objeto? + ( str1 == str2 ));

    // Reinicializa varivel str2. Ela agora aponta para um nova // instncia de objeto String str2 = new String(str1);

    // Mostra valor das variveis str1 e str2 System.out.println(String1: + str1); System.out.println(String2: + str2);

    // Checa novamente se str1 e str2 so os mesmos // objetos para as duas variveis // apontando para mesma instncia de um objeto do tipo String System.out.println(Mesmo objeto? + ( str1 == str2 ));

    // Checa se str1 e str2 tem o mesmo valor System.out.println(Mesmo valor? + str1.equals(str2)); }

    }

    Listagem 2.12 TestaIgualdadeObjeto.java

    2. Compile e execute o programa.

    3. Crie um programa como da Listagem-2.12 para criar e comparar dois objetos da classe Integer.

    4. String so objetos especiais em Java, podemos criar instncias de objetos apenas atribuindo um literal a uma varivel do tipo String, exemplo:

    String str1 = Viver sem Deus...no viver!;

    String str2 = Viver sem Deus...no viver!;

    Alm disso, cada objeto String criado desta forma apontam para mesma instncia do objeto, ou seja qualquer literal String igual ao anterior apontar para o mesmo objeto.

    Modifique o programa da Listagem-2.12 para demonstrar essa propriedade

    Exerccio 7 | mtodo getClass() e o operador instanceof Neste exerccio, voc usar o mtodo do getClass() da classe Object para encontrar uma instncia de um objeto fora da classe. Voc aprender tambm como usar o operador instanceOf para testar se uma instncia de objeto qualquer de um tipo particular de classe.

    1. Usando mtodo getClass()

    2. Usando operador instanceOf

    5

  • 49www.3way.com.br

    Java OO | Laboratrio

    7.1 | Usando mtodo getClass() 1. Escreva, compile e execute a Listagem-2.13, TestaGetClass.java, preste bastante ateno aos comentrios.

    public class TesteGetClass {

    public static void main(String[] args) {

    // Cria instncia de objeto String String str1 = A vida e para ser vivida... com Deus!;

    // Encontrar informao externa de uma instncia de String // via mtodo getClass(). Note que ele retorna uma instncia // de objeto da classe Class Class str1Class = str1.getClass(); System.out.println(A classe de str1 e uma instncia de + str1Class);

    // O nome da classe da instncia de objeto Class. String str1ClassName = str1Class.getName(); System.out.println(Nome da classe e + str1ClassName);

    // Cria instncia de objeto Integer Integer int1 = new Integer(34);

    // Encontrar informao externa de uma instncia de Integer // via mtodo getClass(). Note que ele retorna uma instncia // de objeto da classe Class Class int1Class = int1.getClass(); System.out.println(A classe de int1 uma instncia de + int1Class);

    // O nome da classe da instncia de objeto Class. String int1ClassName = int1Class.getName(); System.out.println(Nome da classe + int1ClassName);

    }

    }

    Listagem 2.13 TestaGetClass.java

    2. Monte, compile e execute.

    3. Modifique o programa para criar uma instncia de objeto da classe java.util.Date e mostre informaes desta classe.

    7.2 | Usando operador instanceOf 1. Escreva, compile e execute a Listagem-2.14, TestaInstanceOf.java, preste bastante ateno aos comentrios.

    public class TestaInstanceOf {

    public static void main(String[] args) {

    // Criar objeto String String str1 = Aprenda Java em Dez anos!; Integer int1 = new Integer(40);

    5

  • 50www.3way.com.br

    Java OO | Laboratrio

    // Checa se str1 do tipo String usando operador instanceof. // Checa tambm se do tipo Object. boolean b1 = str1 instanceof String; System.out.println(str1 String: + b1); boolean b2 = str1 instanceof Object; System.out.println(str1 Object: + b2);

    // Checa se int1 do tipo Integer usando operador instanceof. // Checa tambm se do tipo Object. b1 = int1 instanceof Integer; System.out.println(int1 do tipo Integer: + b1); b2 = int1 instanceof Object; System.out.println(int1 Object: + b2); b2 = int1 instanceof Number; System.out.println(int1 do tipo Number: + b2);

    }

    }

    Listagem 2.14 TestaInstanceOf.java

    2. Consultando a documentao da API Java, voc vai observar que classe Integer uma classe filha da classe java.lang.Number, e que esta filha de java.lang.Object. Por isto o teste de int1 instanceof Number retorna true.

    3. Modifique o programa para criar uma instncia de objeto da classe Long e mostre que o objeto do tipo Object, Number e da prpria classe Long.

    5

  • 51www.3way.com.br

    Java OO | Laboratrio

    Lab 6 | Criando suas prprias classes

    Neste laboratrio voc ir aprender a criar e usar suas prprias classes. A patir deste laboratrio os exerccios dos prximos laboratrios possuem dependncias, ento deve ser feito todos os exerccios, no pule nenhum exerccio porque ir precisar das classes que sero criadas e das alteraes dos mtodos soliticadas. Lei atentamente os comentrios nos cdigos citados, eles so importantes para voc entender o que est fazendo ou para qual utilidade do cdigo.

    O projeto destes laboratrios a partir deste chegar ao final do curso com uma aplicao completa representando o sistema de um banco ou empresa que trabalha com dinheiro e vrias contas para armazenar os saldos. muito importante que seja feito os exerccios corretamente para que a aplicao no tenha comportamentos estranhos. Em caso de dvida para resolver um exerccio consulte o instrutor para a melhor soluo ou para descobrir o erro.

    Apesar de a ferramenta sugerir o que deve ser feito para resolver alguns erros de compilao, se voc no sabe ou no entende a soluo proposta, ento no a faa e tome cuidado com a importao de classes de pacotes diferente do solicitado.

    O diagrama abaixo mostra como ficar a parte de modelo do projeto, onde um cliente ter UMA ou vrias CONTAS, uma CONTA de apenas uma AGNCIA e uma AGNCIA de um banco, agora lendo o contrrio, um BANCO no tem nenhuma ou tem vrias AGNCIAS, uma AGNCIA no tem nenhuma ou tem vrias CONTAS, uma CONTA no tem nenhum ou tem vrios clientes.

    Figura 5.1 Diagrama UML para aplicao Banco

    6

  • 52www.3way.com.br

    Java OO | Laboratrio

    Sugerimos que estes exemplos sejam feitos com uso da IDE Eclipse.

    Durao prevista: 80 minutos

    Exerccios

    Exerccio 1: Definindo e usando classes ( 20 minutos)

    Exerccio 2: Membros estticos (10 minutos)

    Exerccio 3: Sobrecarga (20 minutos)

    Exerccio 4: Construtores (10 minutos)

    Exerccio 5: referencia this (20 minutos)

    Exerccio 1 | Definindo e usando classes 1. Criando uma classe Conta.java, que representa uma conta de banco.

    1.1 | Definindo a nova classe Conta.java 1. Crie um novo projeto com o nome Banco e crie sua classe para que fique conforme a especificao UML abaixo.

    Figura 5.1 Diagrama UML classe Conta

    import java.util.Date;

    public class Conta {

    private int numero; private String titular; private double saldo; private Date dataAbertura;

    }

    Listagem 5.1 Conta.java

    2. Crie os mtodos getters e setters para todos os atributos da classe Conta.java conforme exemplo abaixo:

    public int getNumero() {

    return numero;}

    6

  • 53www.3way.com.br

    Java OO | Laboratrio

    public void setNumero(int numero) {

    this.numero = numero;}

    3. Crie a classe ContaService.java com os mtodos depositar(), sacar() e transferir() conforme o cdigo na Listagem-5.2.

    Figura 5.2 Diagrama UML classe ContaService

    public class ContaService {

    public void depositar(Conta contaDestino, double valor) {

    // credita na conta e debita no caixa contaDestino.setSaldo(contaDestino.getSaldo() + valor); }

    public void sacar(Conta contaSaque, double valor) {

    // debita na conta e credita no caixa contaSaque.setSaldo(contaSaque.getSaldo() - valor); }

    public void transferir(Conta contaSaque, double valor, Conta contaDestino) {

    // transfere valor da conta para conta destino this.sacar(contaSaque, valor); this.depositar(contaDestino, valor); }

    }

    Listagem 5.2 Classe ContaService.java

    4. Agora crie uma nova classe TestaConta.java para fazer uso da classe Conta.java e testarmos os seus mtodos conforme abaixo:

    import java.util.Scanner;

    public class TestaConta {

    public static void main(String[] argv) {

    // objeto para ler dados da console, captura o que for digitado Scanner c = new Scanner(System.in);

    // declara e inicializa saldo com valor digitado pelo usurio System.out.println(Digite o saldo inicial da conta); double saldoConta = c.nextDouble();

    // declara e inicializa o numero da conta digitado pelo usurio System.out.println(Digite o numero da conta); int numeroConta = c.nextInt();

    6

  • 54www.3way.com.br

    Java OO | Laboratrio

    // Cria uma instncia de ContaService onde est presente as operaes para Objeto Conta ContaService operacoesConta = new ContaService(); // cria uma instncia da classe Conta Conta conta1 = new Conta();

    // altera valor dos atributos da instncia da classe Conta conta1.setNumero(numeroConta); conta1.setSaldo(saldoConta);

    // Nova instncia de Conta para transferncia Conta conta2 = new Conta();

    // Nova instncia de Conta para transferncia Conta conta3 = new Conta();

    // Mostra dados da instncia da classe Conta System.out.println(O numero da Conta1 : + conta1.getNumero()); System.out.println(O saldo da Conta1 : + conta1.getSaldo());

    // chamada ao mtodo depositar para adicionar saldo da conta System.out.println(Ser creditado 100 reais na conta ); operacoesConta.depositar(conta1, 100.00); System.out.println(Saldo da Conta1 : + conta1.getSaldo());

    // chamada ao mtodo sacar para debitar no saldo da conta System.out.println(Ser debitado 56.43 reais na conta ); operacoesConta.sacar(conta1, 56.43); System.out.println(Saldo da Conta : + conta1.getSaldo());

    System.out.println(Saldo da Conta 1 : + conta1.getSaldo()); System.out.println(Saldo da Conta 2 : + conta2.getSaldo()); System.out.println(Saldo da Conta 3 : + conta3.getSaldo()); // chamada ao mtodo tranferir para retirar o valor de conta1 para conta2 System.out.println(Transferir 50.00 de conta 1 para conta2 ); operacoesConta.transferir(conta1, 50.00, conta2); System.out.println(Saldo da Conta 1 : + conta1.getSaldo()); System.out.println(Saldo da Conta 2 : + conta2.getSaldo()); System.out.println(Saldo da Conta 3 : + conta3.getSaldo()); }

    }

    Listagem 5.3 Classe TestaConta.java

    4. Modifique sua classe para criar uma terceira instncia da classe Conta.java em sua classe TestaConta.java como o nome da varivel conta3 e transfira 100,23 da varivel conta2 para conta3. Mostre o saldo de cada conta antes e depois da transferncia.

    5. Configure o campo dataAbertura de Conta.java para armazenar a data de criao da instncia, ou seja, quando for instanciado o objeto Conta.java deve ser atribudo a data do sistema operacional para a varivel e mostre o valor do atributo na tela aps a ser instanciado o objeto para cada varivel na classe TestaConta.java.

    Dica: Deve ser alterado o construtor da classe para possuir este comportado evitando que seja criada uma instncia e no seja atribudo um valor para o atributo dataAbertura.

    6

  • 55www.3way.com.br

    Java OO | Laboratrio

    Exerccio 2 | Membros estticos 1. Usando variveis estticas

    2. Usando mtodos estticos

    2.1 | Criando aplicativos que usam variveis estticas 1. Crie uma classe de UtilData.java, esta classe ser uma classe utilitria para podermos manipular data