Sunteți pe pagina 1din 91

Cssio Agnaldo Onodera

INTRODUO LINGUAGEM JAVA

Infoprise Informtica e Servios Ltda Junho/2007

Infoprise Informtica e Servios Ltda

1 INTRODUO Histrico
Em 1991, Patrick Naughton, Mike Sheridan e James Gosling, da Sun Microsystems, iniciaram o projeto denomindo Green Project. O objetivo do projeto era adaptar uma linguagem de programao para ser executada por eletrodomsticos e outros equipamentos comumente utilizados pelas pessoas no seu dia-a-dia. Em 1992, lanaram um prottipo chamado *7 (leia Star Seven) que era um controle remoto com uma interface grfica que usava um mascote hoje conhecido como Duke. O Duke era um guia virtual que ajudava e ensinava o usurio a utilizar o equipamento. O *7 utilizava uma nova linguagem de programao, que Gosling batizou-a como Oak, que quer dizer carvalho, uma rvore que ele podia observar da janela de seu escritrio. A equipe tentou vender a idia para canais de televiso a cabo para permitir interatividade entre o canal e o usurio. A tecnologia da poca no viabilizou a continuidade do projeto. Paralelamente, ocorreu o estouro da Internet e rapidamente uma grande rede interativa se formou. Da noite para o dia, uma grande infra-estrutura estava pronta, e coube a Gosling adaptar o Oak para a Internet e em janeiro de 1995 foi lanada uma nova verso do Oak que foi rebatizada de Java. O smbolo da linguagem Java uma xcara de caf. Nos Estados Unidos, a palavra Java usada como uma forma mais coloquial para caf, algo como cafezinho. No se sabe exatamente o motivo de terem escolhido o cafezinho como smbolo da linguagem. Alguns arriscam a dizer que programar em Java to gostoso como tomar um cafezinho, outros dizem que uma boa parte do desenvolvimento da linguagem se deu nas madrugadas e foram necessrios muitos cafezinhos, ou seja, muito Javas.

Portabilidade
A caracterstica principal da linguagem Java e a responsvel direta pelo seu rpido crescimento a Portabilidade. Desde a sua criao, a portabilidade entre diversos tipos de equipamentos diferentes, foi o grande objetivo da linguagem.

Infoprise Informtica e Servios Ltda

Atualmente possvel executar programas desenvolvidos na linguagem em diversos tipos de equipamentos, tais como: computadores, servidores, handhelds, PDAs (Palms), celulares, TVs, geladeiras e vrios outros equipamentos.

Alm de equipamentos diferentes, tambm possvel executar programas desenvolvidos em Java em diversos sistemas operacionais, tais como: Windows (PC), Linux (PC), Solaris (estaes Sun), Mac OS (Macintosh), etc.

Essa caracterstica devido JVM (Java Virtual Machine), ou em portugus, Mquina Virtual Java. A JVM uma mquina imaginria que executa programas escritos em Java em uma mquina real. Em outras palavras, a JVM um software que l arquivos compilados em Java e o executa por meio de interpretao. Existe uma JVM para cada plataforma: Linux, Windows, Solaris, Mac OS, etc. Desta maneira, um mesmo cdigo compilado pode ser executado em qualquer uma dessas plataformas, basta que exista uma JVM para ela. Esse cdigo compilado de um programa Java chamado de Bytecode. O Bytecode um cdigo intermedirio que ser interpretado e executado pelas JVMs.

Custo
A linguagem Java livre e possui ferramentas grficas de desenvolvimento (IDEs) tambm gratuitas, tais como: Eclipse, NetBeans, JEdit, JCreator (acadmico), etc.

Infoprise Informtica e Servios Ltda

Arquitetura
A linguagem Java utiliza o paradigma de Programao Orientada Objetos permitindo a integrao da anlise orientada objetos com a UML. Atualmente existem ferramentas Case em que o programador pode criar seus diagramas de classes e posteriormente gerar o cdigo Java correspondente s classes criadas. A ferramenta mais conhecida dessa categoria o Jude, que livre. Alm de ser orientada objetos, a linguagem permite a criao de aplicaes multi-camadas e com suporte ao processamento paralelo mltiplo.

Plataformas
As principais subdivises da tecnologia Java so: J2SE (Java 2 Standard Edition) J2EE (Java 2 Enterprise Edition) J2ME (Java 2 Micro Edition) Java Web Services

Plataforma J2SE (Java 2 Standard Edition) a plataforma padro do Java que oferece um completo ambiente para desenvolvimento de aplicaes para clientes e servidores. Seu JDK (Kit de Desenvolvimento Java) oferecido com ferramentas de compilador, documentador, depurador (debug), ambiente de runtime, mquina virtual (JVM), etc. Plataforma J2EE (Java 2 Enterprise Edition) O J2EE no um produto, mas um conjunto de especificaes definidas pela SUN para o desenvolvimento de aplicaes de grande porte, crticas, escalveis, portveis e componentizadas. Plataforma J2ME (Java 2 Micro Edition) A tecnologia J2ME voltada para o desenvolvimento de aplicaes para pequenos dispositivos, tais como: celulares, Smart Cards, etc. Java Web Services Baseada na tecnologia XML. Muito utilizada para aplicaes de e-commerce, pois permite a troca de informaes pela rede.

Infoprise Informtica e Servios Ltda

2 INSTALAO
possvel desenvolver aplicaes Java utilizando um simples Bloco de Notas, pois o JDK possui programas para compilao e execuo de programas. Apesar disso, bastante recomendvel a utilizao de uma IDE (ambiente Integrado de Desenvolvimento) para ganhar tempo no desenvolvimento, pois geralmente, essas ferramentas possui tudo que necessrio para o desenvolvimento em uma nica aplicao. Existem diversos IDEs para a linguagem Java. O JBuilder (www.borland.com) e o Websphere (www.ibm.com) so pagos. O Eclipse (www.eclipse.org), o NetBeans (www.netbeans.com) e o JCreator (www.jcreator.com) so gratuitos. Atualmente, os mais utilizados so o Eclipse e o NetBeans, pois so excelentes ferramentas de desenvolvimento e gratuitos. No nosso curso, vamos adotar o ambiente Eclipse. Sendo assim, vamos efetuar a instalao de nosso ambiente de desenvolvimento em duas etapas: Instalao do JDK Instalao do IDE Eclipse

Instalao do JDK
Antes de instalar o JDK, devemos fazer o download do kit de desenvolvimento no site da SUN: http://java.sun.com/javase/downloads/index_jdk5.jsp Pgina de Download da SUN:

Infoprise Informtica e Servios Ltda

Clique no boto Download ao lado de JDK 5.0 Update 12.

Na prxima pgina voc deve aceitar os termas de licena do produto clicando em Accept License Agreement. Depois voc deve efetuar o download de acordo com a plataforma requerida: Windows, Linux ou Solaris. Ainda, voc pode fazer a instalao Offline ou Online. No nosso caso, optamos pela instalao Offline.

Ao terminar o download, execute o arquivo jdk-1_5_0_12-windows-i586p.exe para efetuar a instalao. O instalador do JDK segue os padres de outros instaladores do Windows, siga os passos e utilize as configuraes padres. Ao terminar a instalao ser mostrada uma tela com a mensagem Installation Completed, clique no boto Finish.

Infoprise Informtica e Servios Ltda

Para testar se o JDK foi instalado corretamente, abra o Bloco de Notas e digite o programa seguir: public class SeuNome { public static void main (String[] args) { System.out.println("Ol mundo!!!"); } } Depois de digitar o programa, grave como SeuNome.java na pasta: C:\Arquivos de programas\Java\jdk1.5.0_12\bin Abra o Prompt de Comando, entre na pasta C:\Arquivos de programas\Java\jdk1.5.0_12\bin e digite a instruo para compilar o programa. javac SeuNome.java Confira se no ocorreu erro na compilao e verifique se o arquivo SeuNome.class foi criado. Se foi criado, digite a instruo abaixo para executar o programa. java SeuNome Observe o resultado da execuo do programa.

Instalao do Eclipse
Inicialmente vamos efetuar o download do Eclipse no site: http://www.eclipse.org/downloads/ Clique no cone do lado de Download now: Eclipse SDK 3.2.2, Windows (121MB).

Na prxima pgina escolha um servidor espelho mais prximo de voc.

Infoprise Informtica e Servios Ltda

O Eclipse no exige uma instalao como a maioria dos programas para o ambiente Windows, basta descompactar o arquivo recebido que ele j poder ser utilizado. Ao terminar o download do arquivo eclipse-SDK-3.2.2-win32.zip.zip, descompacte-o em uma pasta que poder ser utilizado por todos os usurios do computador que voc est instalando, sugerimos a pasta Arquivos de Programas. Sugerimos tambm que voc crie um atalho na rea de trabalho para o Eclipse. Antes de executar o Eclipse, crie uma pasta para ser utilizada durante nosso curso. Sugesto c:\Curso_Java\SeuNome. Para executar o Eclipse d um duplo clique sobre o cone do arquivo Eclipse.exe ou no seu atalho.

Aps alguns segundos pedir para voc selecionar a rea de trabalho (Workspace) que a pasta onde sero gravados seus arquivos. Selecione a pasta que voc criou anteriormente e clique no boto Ok.

Infoprise Informtica e Servios Ltda

Depois de selecionar a rea de trabalho, ser mostrada a tela de apresentao do Eclipse:

Feche essa tela de apresentao. Criando um Novo Projeto Para criar um novo Projeto no Eclipse, clique no menu File, escolha a opo New e a opo Project....

Na prxima janela, clique no tipo de Projeto (Java Project) e depois no boto Next.

Infoprise Informtica e Servios Ltda

O prximo passo identificar o projeto. Em Project Name digite o nome do projeto (Projeto1). As outras opes, mantenha como est. Clique no boto Next.

Na tela de configuraes do Projeto, mantenha como est e clique no boto Finish.

Infoprise Informtica e Servios Ltda

Aps o trmino das configuraes do novo projeto, o Eclipse mostrar a tela inicial do projeto.

Criando um Novo Pacote Um pacote pode ser considerado um diretrio com um conjunto classes que fazem parte de um projeto. Para criar um novo pacote de um projeto, clique com o boto direito do mouse sobre o nome do projeto e escolha a opo New / Package.

Na tela seguinte, digite o nome do novo pacote. No nosso exemplo, digite Aula01 e depois clique no boto Finish.

10

Infoprise Informtica e Servios Ltda

Criando uma Nova Classe Clique sobre o nome do pacote (Aula01) com o boto direito do mouse e escolha a opo New/Class.

Na prxima tela, digite o nome da classe (Exemplo01), deixe selecionada a opo public static void main(String[] args) e clique em Finish.

11

Infoprise Informtica e Servios Ltda

Depois de clicar no boto Finish o Eclipse mostrar a estrutura pr-criado da classe Exemplo01.

Digitando Cdigo em Java Altere a classe Exemplo01 para:


package aula01; public class Exemplo01 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String ola = "Ol mundo!"; System.out.println(ola); } }

Executando o programa Antes de executar o programa, grave-o clicando no boto Save da barra de ferramentas. Para executar, clique no menu Run, escolha a opo Run.... Na prxima tela, d um duplo clique sobre Java Application. Escolha nosso programa (Exemplo01) e clique no boto Run. Observe que o resultado da execuo mostrado na parte inferior da janela.

12

Infoprise Informtica e Servios Ltda

Execuo do programa:

Altere o programa para:


package aula01; public class Exemplo01 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String ola = "Ol mundo!"; String empresa = "Infoprise Informtica"; String curso = "Curso de Introduo Linguagem Java"; System.out.println(ola); System.out.println(empresa); System.out.println(curso); } }

Execute o programa.

13

Infoprise Informtica e Servios Ltda

3 FUNDAMENTOS DA LINGUAGEM Comentrios


Existem duas maneiras de fazer um comentrio dentro de um programa em Java: por linha e por bloco. Exemplo de comentrio por linha: System.out.println("Ol mundo!!!"); Exemplo de comentrio por bloco: /* Este programa imprime um texto na tela */ public class SeuNome { public static void main (String[] args) { System.out.println("Ol mundo!!!"); } } // imprime um texto na tela

Variveis
Uma varivel um local reservado na memria do computador que um programa utiliza para armazenar uma informao. O uso de variveis deve seguir algumas regras: Seu nome deve iniciar com uma letra Seu nome no pode ter espaos Seu nome no pode conter caracteres especiais, somente letras, nmeros e underline. Letras minsculas e maisculas tm diferena na linguagem Java Deve possuir um tipo. No pode ser uma palavra chave.

Exemplo: Utilize o mesmo projeto da aula passada. Crie um novo pacote chamado aula02. Crie uma nova classe denominada Exemplo02. Marque a opo Public static void main.

14

Infoprise Informtica e Servios Ltda

package aula02; public class Exemplo02 { public static void main(String[] args) { // declarao da varivel int x; // atribuio de um valor varivel x = 5; // impresso do valor da varivel System.out.println(x); } }

Tipos de Variveis Os principais tipos de variveis em Java so: Tipo int long float double char boolean String Exemplo:
package aula02; public class Exemplo03 { public static void main(String[] args) { // declarao e inicializao das variveis int x = 5; float y = 6.32F; double z = 5.43; char k = 'A'; boolean j = true; String nome = "Infoprise"; // impresso dos valor das variveis System.out.println("x = " + x); System.out.println("y = " + y); System.out.println("z = " + z); System.out.println("k = " + k); System.out.println("j = " + j); System.out.println("nome = " + nome); } }

Definio Inteiro (32 bits) Inteiro longo (64 bits) Real (32 bits) Real (64 bits) Caracter true ou false Cadeia de caracteres

15

Infoprise Informtica e Servios Ltda

Exerccio Proposto 01
Faa um programa em Java que defina e atribua valores s variveis para: Armazenar o seu nome completo, Armazenar a sua idade, Armazenar o valor do seu salrio. Depois de definir e atribuir valores s variveis acima, imprima seus valores. Grave o arquivo (classe) como Proposto01.

16

Infoprise Informtica e Servios Ltda

4 OPERADORES Operador de Atribuio


O operador de atribuio o sinal de igual que tem como finalidade de armazenar o valor da expresso que estiver direita do igual varivel que estiver esquerda. Exemplos: x = 5; double salario = 5433.23; total = 456 + 403; k = k + 1; j = j + 2;

Operadores de Atribuio Reduzidos


Um operador de atribuio reduzido um operador de atribuio que simplifica uma operao de atribuio. Por exemplo, a expresso x = x + 2 pode ser simplificado como x += 2. Operadores de atribuio reduzidos: Operador += -= *= /= Exemplo x += 2; x -= 3; x *= 4; x /= 2; Significado x = x + 2; x = x 3; x = x * 4; x = x / 2;

Exemplo: Crie o pacote aula03. Crie a classe Exemplo04. Antes de executar o programa, diga quais sero os valores impressos.
package aula03; public class Exemplo04 { public static void main(String[] args) { int x = 0; x += 2; System.out.println("x = " + x); x *= 3; System.out.println("x = " + x); x /= 2; System.out.println("x = " + x); x -= 5; System.out.println("x = " + x); } }

17

Infoprise Informtica e Servios Ltda

Operadores Aritmticos
Tabela de operadores aritmticos utilizados pela linguagem Java: Operador + * / % Exemplo x+y x-y x*y x/y x%y Significado Adio Subtrao Multiplicao Diviso Resto da diviso

Exemplo: Dentro do pacote aula03, crie a classe Exemplo05. Digite e depois execute o programa abaixo:
package aula03; public class Exemplo05 { public static void main(String[] args) int x = 50; int y = 5; double j = 12.56; double k = 2.32; System.out.println("Valor de x = System.out.println("Valor de y = System.out.println("Valor de j = System.out.println("Valor de k = System.out.println(" x + y = " + System.out.println(" j + k = " + System.out.println(" x - y = " + System.out.println(" j - k = " + System.out.println(" x * y = " + System.out.println(" j * k = " + System.out.println(" x / y = " + System.out.println(" j / k = " + System.out.println(" x % y = " + System.out.println(" j % k = " + System.out.println(" j / x = " + System.out.println(" y * k = " + } }

" + x); " + y); " + j); " + k); (x+y) ); (j+k) ); (x-y) ); (j-k) ); (x*y) ); (j*k) ); (x/y) ); (j/k) ); (x%y) ); (j%k) ); (j/x) ); (y*k) );

Pr-incremento e Ps-incremento
A linguagem Java possui depois operadores especiais que efetuam o incremento de uma unidade em uma varivel. Operador ++ -Exemplo x++ ou ++x x-- ou --x Significado x=x+1 x=x1

18

Infoprise Informtica e Servios Ltda

Quando o operador aparece antes da varivel o valor incrementado do seu uso e quando aparece depois, o valor incrementado aps o seu uso. Exemplo: Dentro do pacote aula03, crie a classe Exemplo06. Antes de executar o programa abaixo, tente prever quais sero os valores impressos.
package aula03; public class Exemplo06 { public static void main(String[] args) { int x = 12; System.out.println("x = " + x); System.out.println(++x); System.out.println(x); System.out.println(x++); System.out.println(x); int y = 20; System.out.println("y = " + y); System.out.println(y--); System.out.println(y); System.out.println(--y); System.out.println(y); } }

Operadores Relacionais
Os operadores relacionais so utilizados em expresses lgicas que retornam um valor verdadeiro (true) ou falso (false). Tabela de operadores relacionais utilizados pela linguagem Java: Operador > >= < <= == != Exemplo x>y x >= y x<y x <= y x == y x != y Significado Maior Maior ou igual Menor Menor ou igual Igual Diferente

Exemplo: Dentro do pacote aula03, crie a classe Exemplo07. Antes de executar o programa abaixo, tente prever quais sero os valores impressos.
package aula03; public class Exemplo07 { public static void main(String[] args) { int a = 12; int b = 6; System.out.println("a = " + a); System.out.println("b = " + b); System.out.println("a > b = " + (a>b) ); System.out.println("a >= b = " + (a>=b) );

19

Infoprise Informtica e Servios Ltda

System.out.println("a System.out.println("a System.out.println("a System.out.println("a } }

< b = " + (a<b) ); <= b = " + (a<=b) ); == b = " + (a==b) ); != b = " + (a!=b) );

Operadores Lgicos
Os operadores lgicos so utilizados em expresses lgicas complexas que retornam um valor verdadeiro (true) ou falso (false). Tabela de operadores lgicos utilizados pela linguagem Java: Operador && || ! Exemplo j && k j || k !k Significado E lgico Ou lgico No lgico

Exemplo: Dentro do pacote aula03, crie a classe Exemplo08. Antes de executar o programa abaixo, tente prever quais sero os valores impressos.
package aula03; public class Exemplo08 { public static void main(String[] args) { int x = 12; int y = 7; System.out.println((x>10)&&(x<20)); System.out.println((y<50)||(y>=100)); System.out.println(y>0); System.out.println(!(y>0)); } }

Operadores bit bit


A linguagem Java possui operadores que executam operaes sobre os bits das variveis. Tabela de operadores: Operador << >> & | ^ ~ Exemplo Op << n Op >> n X&y X|y X^y ~x Significado Shift de n posies para a esquerda Shift de n posies para a direita AND bit bit OR bit bit XOR bit bit NOT bit bit

20

Infoprise Informtica e Servios Ltda

Exemplo: Dentro do pacote aula03, crie a classe Exemplo09. Antes de executar o programa abaixo, tente prever quais sero os valores impressos.
package aula03; public class Exemplo09 { public static void main(String[] args) { int x = 0; int y = 0; int z = 0; x = 2; // 0000 0010 System.out.println("x = " + x); x = x << 2; System.out.println("x = " + x); // 0000 1000 x = x >> 1; System.out.println("x = " + x); // 0000 0100 x = 2; // 0000 0010 y = 6; // 0000 0110 System.out.println("x = " + x); System.out.println("y = " + y); z = x | y; // 0000 0110; System.out.println("z = " + z); z = x & y; // 0000 0010; System.out.println("z = " + z); } }

Exerccio Proposto 02
Crie uma classe chamada Proposto02 para efetuar o clculo da mdia de duas notas de um aluno, para isto: Defina duas variveis para armazenar as notas Defina uma varivel para armazenas a mdia calculada Atribua os valores para as notas 7 e 8.5 Imprima o valor das notas Imprima o valor da mdia calculada

Exerccio Proposto 03
Observe o trecho de programa abaixo. Diga quais sero os valores impressos.
int x = 44; System.out.println(x); System.out.println(x++); System.out.println(++x); int y = 16; System.out.println(y); System.out.println(--y); System.out.println(y--); System.out.println(y--); System.out.println(--y);

21

Infoprise Informtica e Servios Ltda

5 CONTROLE DE FLUXO Instrues para Controle de Fluxo


Um programa escrito em Java executa as instrues da esquerda para a direita e de cima para baixo. Algumas instrues podem alterar esse fluxo natural de execuo do programa. Atravs desse controle, certas instrues podem ou no ser executadas, outras instrues podem ser executadas repetidas vezes. A linguagem Java oferece um conjunto de instrues para controle de fluxo.

Instruo if / else
A instruo if permite que uma instruo ou um bloco de instrues seja executado dependendo de uma condio lgica. Caso a condio seja verdadeira, a instruo ou bloco ser executada, caso contrrio a instruo no ser executada. Exemplo: Crie um novo pacote chamado aula04. Dentro dele, crie a classe Exemplo10.
package aula04; public class Exemplo10 { public static void main(String[] args) { // Este programa calcula o valor absoluto de um nmero int j = 5; if (j < 0 ) j = j * -1; System.out.println("Valor absoluto = " + j); } }

Altere a linha 5 do programa/classe Exemplo10 e execute o programa novamente.


int j = -5;

A instruo if tambm pode ser utilizada com o else. O else permitir que uma outra instruo seja executada caso a condio seja falsa. Exemplo: Dentro do pacote aula04, crie a classe Exemplo11.
package aula04; public class Exemplo11 { public static void main(String[] args) { double nota = 4.5; if (nota >= 5) System.out.println("Aluno aprovado"); else System.out.println("Aluno reprovado"); } }

22

Infoprise Informtica e Servios Ltda

Depois de executar o programa, altere a linha abaixo e execute novamente.


double nota = 7;

Instruo while
A instruo while permite que um bloco de instrues seja executado diversas vezes dependendo de uma expresso lgica. Caso a expresso lgica seja verdadeira, o bloco de instrues ser executado. Isto se repete at que a expresso se torne falsa. Exemplo: Dentro do pacote aula04, crie a classe Exemplo12.
package aula04; public class Exemplo12 { public static void main(String[] args) { int i = 0; while (i <= 50) { System.out.println("i = " + i); i += 5; } } }

Instruo do / while
A instruo do/while semelhante instruo while. A diferena que a expresso lgica avaliada aps o bloco de instrues. Exemplo: Dentro do pacote aula04, crie a classe Exemplo13.
package aula04; public class Exemplo13 { public static void main(String[] args) { int z = 1; do { System.out.println(z + " Meu nome"); z++; } while (z <= 10); } }

Instruo for
A instruo for tambm repete um bloco de instrues, mas essa instruo foi criada especificamente para utilizar um contador para controlar o loop.

23

Infoprise Informtica e Servios Ltda

Exemplo: Dentro do pacote aula04, crie a classe Exemplo14.


package aula04; public class Exemplo14 { public static void main(String[] args) { int p; for (p = 1; p <= 5; p++) { System.out.println("Valor de p = " + p); } } }

Instruo switch
A instruo switch executa instrues dependendo de uma expresso inteira ou do tipo enumerada. Exemplo: Dentro do pacote aula04, crie a classe Exemplo15.
package aula04; public class Exemplo15 { public static void main(String[] args) { int mes = 6; switch (mes) { case 1: System.out.println("Janeiro"); break; case 2: System.out.println("Fevereiro"); break; case 3: System.out.println("Maro"); break; case 4: System.out.println("Abril"); break; case 5: System.out.println("Maio"); break; case 6: System.out.println("Junho"); break; case 7: System.out.println("Julho"); break; case 8: System.out.println("Agosto"); break; case 9: System.out.println("Setembro"); break; case 10: System.out.println("Outubro"); break;

24

Infoprise Informtica e Servios Ltda

case 11: System.out.println("Novembro"); break; case 12: System.out.println("Dezembro"); break; default: System.out.println("Ms invlido"); break; } } }

Exerccio Proposto 04
Uma agncia est fazendo uma pr-seleo de candidatas que desejam seguir a carreira de modelo. O requisito mnimo ter 1,70 m de altura. Crie uma classe chamada Proposto04 que receba a altura da candidata e verifique se ela pode ser modelo ou no.

Exerccio Proposto 05
Crie uma classe chamada Proposto05 que imprima o seu nome 20 vezes.

Exerccio Proposto 06
Crie uma classe chamada Proposto06 que possua uma varivel chamada semana que deve receber um nmero indicado o dia da semana, onde 1 deve representar o domingo, 2 a segunda-feira, e assim por diante. Depois o programa dever imprimir o dia da semana por extenso.

25

Infoprise Informtica e Servios Ltda

6 Orientao Objetos Introduo


A Programao Orientada Objetos (OOP) um novo paradigma que auxilia o desenvolvimento de programas de computadores baseados nos conceitos do mundo real. O mundo real est repleto de objetos. Praticamente, tudo que vemos, pegamos, temos contato, pode ser chamado de objetos. Existem conjuntos de objetos que possuem caractersticas e funcionalidade semelhantes. Estes objetos podem ser agrupados em Classes. Uma classe possui atributos e mtodos. Exemplos de objetos: O carro Corsa azul do Joo. A cala raspada do Pedro. A rvore que est em frente da escola. O computador que a Maria est utilizando. O vo que atrasou para sair de So Paulo na 6. Feira passada, s 16 hs.

Exemplos de classes: Carro Cala rvore Computador Vo

Na programao orientada objetos, podemos dizer que um objeto uma instncia de uma classe. Representao grfica de uma classe: Carro +cor:String +modelo:String +motor:String +ligar():void +desligar():void +acelerar():void +frear():void

26

Infoprise Informtica e Servios Ltda

Operaes de Abstrao
Os objetos do mundo real se relacionam, podendo formar novos objetos. Na programao orientada objetos (OOP) no diferente: os objetos se relacionam e formam novos objetos. As principais operaes de abstrao so: Classificao/Instanciao Generalizao/Especializao Agregao/Decomposio Associao

Classificao/Instanciao A Classificao agrupa objetos semelhantes em um mesmo grupo. A Instanciao cria ou define um novo objeto partir de uma classe. Representao grfica: Carro cor modelo motor ligar desligar acelerar frear

Classificao

Fusca do Jos

Vectra do Alexandre

Instanciao

Generalizao/Especializao A Especializao cria uma nova classe partir de uma classe j existente. A nova classe vai possuir todas as caractersticas da primeira classe e mais algumas caractersticas prprias. Exemplo: a classe Pediatra uma Especializao da classe Mdico.

27

Infoprise Informtica e Servios Ltda

A Generalizao o processo inverso: cria uma nova classe partir de um conjunto de classes que possuem algumas caractersticas semelhantes (no todas). Exemplo: a classe Pessoa a uma generalizao das classes Funcionrio, Aluno e Professor. Podemos identificar o uso da abstrao Generalizao/Especializao quando se utilize o termo um tipo de, por exemplo: Cardiologista um tipo de Mdico, Aluno um tipo de Pessoa, etc. Representao grfica: Mdico Generalizao

Pediatra

Cardiologista

Especializao

Agregao/Decomposio A Agregao forma a nova classe ao unir outras classes. Exemplo: a classe Avio formada pela unio das classes: Asa, Fuselagem, Leme e Profundor. A Decomposio supe que uma classe ser particionada em vrias classes. Exemplo: a classe Computador ser decomposta em Monitor, Gabinete, Teclado e Mouse. Representao grfica:

28

Infoprise Informtica e Servios Ltda

Computador Monitor Gabinete Teclado Monitor Gabinete Teclado

Agregao Decomposio

Associao Duas classes possuem um relacionamento entre elas, mas no possui nenhum tipo de operao de abstrao anterior. Exemplo: Professor e Disciplina, um Professor leciona uma determinada Disciplina. Representao grfica: Professor
Associao

Disciplina

Implementao de uma Classe


Representao grfica da classe Carro: Carro +cor:String +modelo:String +motor:String +ligar():void +desligar():void +acelerar():void +frear():void Implementao da Classe Carro: Crie um novo pacote chamado aula05. Dentro dele, crie a classe Carro. Ateno: no ative a opo public static void main, pois essa classe no ser executada.

29

Infoprise Informtica e Servios Ltda

package Aula05; public class Carro { // atributos public String cor = ""; public String modelo = ""; public String motor = ""; // mtodos public void ligar() { System.out.println("Ligando o carro!"); } public void desligar() { System.out.println("Desligando o carro!"); } public void acelerar() { System.out.println("Acelerando o carro!"); } public void frear() { System.out.println("Freando o carro!"); } }

Instncia de uma Classe


Instncia de uma classe a representao de uma classe na memria do computador. Exemplo: Utlizando o pacote aula05, crie a classe Exemplo16. Ateno: agora ative a opo public static void main, pois essa classe ser executada.
package Aula05; public class Exemplo16 { public static void main(String[] args) { Carro objCarro = new Carro(); objCarro.modelo = "Vectra"; objCarro.cor = "Prata"; objCarro.modelo = "2.0"; objCarro.ligar(); objCarro.acelerar(); objCarro.frear(); objCarro.desligar();

30

Infoprise Informtica e Servios Ltda

} }

Uma classe pode ter vrias instncias simultaneamente na memria do computador. Exemplo: Utlizando o pacote aula05, crie a classe Exemplo17.
package Aula05; public class Exemplo17 { public static void main(String[] args) { Carro objCarro1 = new Carro(); Carro objCarro2 = new Carro(); objCarro1.modelo = "Vectra"; objCarro1.cor = "Prata"; objCarro1.motor = "2.0"; objCarro2.modelo = "Uno"; objCarro2.cor = "Verde"; objCarro2.motor = "1.0"; System.out.println("Carro: "+objCarro1.modelo); objCarro1.ligar(); objCarro1.acelerar(); objCarro1.frear(); objCarro1.desligar(); System.out.println("\nCarro: "+objCarro2.modelo); objCarro2.ligar(); objCarro2.acelerar(); objCarro2.frear(); objCarro2.desligar();

} }

Tipos de atributos de uma Classe


Uma classe pode possuir dois tipos de atributos: Atributos tipo Campo Atributos tipo Propriedade

Atributos tipo Campo

31

Infoprise Informtica e Servios Ltda

Os atributos do tipo Campo so variveis pblicas e podem ser vistas, utilizadas e alteradas fora da classe. Exemplo de declarao:
public class Carro { // atributos public String modelo = "";

Exemplo de uso:
objCarro2.modelo = "Uno"; System.out.println("Carro: "+objCarro2.modelo);

Atributos tipo Propriedade Os atributos do tipo Propriedade so implementados como variveis locais e s podem ser acessados atravs de mtodos. Representao grfica de uma classe com atributos do tipo Propriedade: Cliente #nome:String #cidade:String #ativo:boolean +setNome(nome:String):void +getNome():String +setCidade(cidade:String):void +getCidade:String +setAtivo(ativo:boolean):void +getAtivo:Boolean Exemplo: Utilizando o pacote aula05, crie a classe Cliente. Ateno: no ative a opo public static void main, pois essa classe no ser executada.
package Aula05; public class Cliente { // atributos do tipo Propriedade private String nome = ""; private String cidade = ""; private boolean ativo = false; public void setNome(String nome) { this.nome = nome; } public String getNome() { return this.nome;

32

Infoprise Informtica e Servios Ltda

} public void setCidade(String cidade) { this.cidade = cidade; } public String getCidade() { return this.cidade; } public void setAtivo(boolean ativo) { this.ativo = ativo; } public boolean getAtivo() { return this.ativo; } }

A criao de uma instncia de uma classe que utiliza atributos do tipo Propriedade idntica s classes que utilizam atributos do tipo Campo. A nica diferena o modo de acessar os atributos, nesse casso, devemos utilizar os mtodos set e get. Utlizando o pacote aula05, crie a classe Exemplo18. Ateno: agora ative a opo public static void main, pois essa classe ser executada.
package Aula05; public class Exemplo18 { public static void main(String[] args) { Cliente objCliente = new Cliente(); objCliente.setNome("Infoprise"); objCliente.setCidade("Araatuba"); objCliente.setAtivo(true); System.out.println(objCliente.getNome()); System.out.println(objCliente.getCidade()); System.out.println(objCliente.getAtivo()); } }

Atributos estticos
Quando criamos duas instncias de uma mesma classe, os atributos dessas classes tambm so duplicados. Se um atributo de uma classe definido como esttico (static) ele no necessita de uma instncia para ser utilizado. Alm disso, ele compartilhado por todas as instncias dessa classe.

33

Infoprise Informtica e Servios Ltda

Exemplo: Altere a propriedade cor da classe Carro para esttico:


public class Carro { // atributos public static String cor = ""; public String modelo = ""; public String motor = "";

Utlizando o pacote aula05, crie a classe Exemplo19.


package Aula05; public class Exemplo19 { public static void main(String[] args) { Carro carro1 = new Carro(); Carro carro2 = new Carro(); carro1.modelo = "Astra"; carro1.cor = "Bege"; carro2.modelo = "Uno"; carro2.cor = "Verde"; System.out.println(carro1.modelo); System.out.println(carro1.cor); System.out.println("\n"+carro2.modelo); System.out.println(carro2.cor); } }

Observe que o Eclipse indicou um erro quando utilizamos o atributo esttico. Isto ocorreu, porque utilizamos o atributo associado uma instncia e como o atributo foi definido como esttico, no dependemos da instncia para utiliz-lo. No lugar de utilizar:
carro1.cor carro2.cor = "Bege"; = "Verde";

Poderamos ter utilizado:


Carro.cor = "Verde";

Observe que Carro o nome da classe.

34

Infoprise Informtica e Servios Ltda

Mtodos Construtores
Um mtodo construtor executado no momento que criada uma instncia de uma classe. Ele possui o mesmo nome da classe e no possui um tipo de dados. Exemplo: classe Retangulo sem construtor. Retangulo #largura:double #comprimento:double #status:String; +setLargura(largura:double):void +getLargura():double +setComprimento(comprimento:double):void +getComprimento:double +getStatus:String; +calcularArea:double Utilizando o pacote aula05, crie a classe Retangulo. Ateno: no ative a opo public static void main, pois essa classe no ser executada.
package Aula05; public class Retangulo { // atributos do tipo propriedade private double largura = 0; private double comprimento = 0; private String status = ""; // mtodos public void setLargura(double largura) { this.largura = largura; } public double getLargura() { return this.largura; } public void setComprimento(double comprimento) { this.comprimento = comprimento; } public double getComprimento() { return this.comprimento; } public String getStatus() { return this.status; } public double calcularArea() { double area; area = this.largura * this.comprimento; return area; } }

35

Infoprise Informtica e Servios Ltda

Agora crie a classe Exemplo20.


package Aula05; public class Exemplo20 { public static void main(String[] args) { Retangulo objRet = new Retangulo(); System.out.println("Status: "+objRet.getStatus()); } }

Execute a classe Exemplo20 e observe o resultado:


Status:

Inclua o mtodo Construtor na classe Retangulo e altere a classe calcularArea:


package Aula05; public class Retangulo { // atributos do tipo propriedade private double largura = 0; private double comprimento = 0; private String status = ""; // mtodos public Retangulo() { this.status = "rea no calculada!"; } public void setLargura(double largura) { this.largura = largura; } public double getLargura() { return this.largura; } public void setComprimento(double comprimento) { this.comprimento = comprimento; } public double getComprimento() { return this.comprimento; } public String getStatus() { return this.status; } public double calcularArea() { double area; area = this.largura * this.comprimento; this.status = "rea calculada!"; return area; } }

Execute a classe Exemplo20 novamente e observe o resultado:


Status: rea no calculada!

36

Infoprise Informtica e Servios Ltda

Agora altere a classe Exemplo20 para executar o clculo da rea do retngulo:


package Aula05; public class Exemplo20 { public static void main(String[] args) { Retangulo objRet = new Retangulo(); System.out.println("Status: "+objRet.getStatus()); objRet.setComprimento(10); objRet.setLargura(2.5); System.out.println("rea: "+objRet.calcularArea()); System.out.println("Status: "+objRet.getStatus()); } }

Mtodos Estticos
Um mtodo esttico (static) pode ser executado sem que a instncia da classe seja criada. O mtodo executado diramente da classe. Exemplo: Utilizando o pacote aula05, crie a classe Calculos. Ateno: no ative a opo public static void main, pois essa classe no ser executada.
package Aula05; public class Calculos { public static double somar(double n1,double n2) { return n1 + n2; } public static double subtrair(double n1,double n2) { return n1 - n2; } public static double multiplicar(double n1, double n2) { return n1 * n2; } public static double dividir(double n1,double n2) { return n1/n2; } }

Agora crie a classe Exemplo21:


package Aula05; public class Exemplo21 { public static void main(String[] args) { double n1 = 20; double n2 = 10; System.out.println("n1 = "+n1); System.out.println("n2 = "+n2); System.out.println("n1 + n2 = "+Calculos.somar(n1,n2)); System.out.println("n1 - n2 = "+Calculos.subtrair(n1,n2));
System.out.println("n1 * n2 = "+Calculos.multiplicar(n1,n2));

System.out.println("n1 / n2 = "+Calculos.dividir(n1,n2)); } }

37

Infoprise Informtica e Servios Ltda

Exerccio Proposto 07
Crie uma classe chamada Televisao de acordo com a representao abaixo. Os atributos devem ser criados como campos. Televisao +marca:String +tamanho:int +tipo:String +ligar():void +desligar():void +mudarCanal():void * tipo pode ser plasma ou crt ** os mtodos devem emitir uma mensagem que esto sendo executados Crie uma classe chamada Proposto07 que crie um objeto pertencente classe Televiso atribua valores aos atributos e execute seus mtodos.

Exerccio Proposto 08
Crie uma classe chamada Produto de acordo com a representao abaixo. Os atributos devem ser criados como propriedades. Produto #nome:String #quantidade:int #custo:double #venda:double +setNome(nome:String):void +getNome():String +setQuantidade(quantidade:double):void +getQuantidade():double +setCusto(custo:double):void +getCusto():double +setVenda(venda:double):void +getVenda():double Crie uma classe chamada Proposto08 que crie um objeto pertencente classe Produto atribua valores aos atributos atravs dos mtodos e imprime seus valores tambm utilizando os mtodos.

38

Infoprise Informtica e Servios Ltda

7 Manipulao de Classes e Objetos Operao de Generalizao / Especializao


Herana uma classe filha herda os atributos e mtodos de uma classe pai. No exemplo abaixo, as classes Fsica e Juridica herdam todos os atributos e mtodos da classe Cliente. A classe Fsica, alm dos atributos nome, cidade e ativo tambm possui o atributo cpf, j a classe Jurdica tm o atributo cnpj a mais. O mesmo acontece com os mtodos, a classe Fsica e Jurdica possuem todos os mtodos da classe Cliente e os mtodos criados em cada classe.
Cliente
#nome:String #cidade:String #ativo:boolean +setNome(nome:String):void +getNome():String +setCidade(cidade:String):void +getCidade:String +setAtivo(ativo:boolean):void +getAtivo:Boolean

Generalizao

Fisica
#cpf:String +setCpf(cpf:String):void +getCpf():String

Juridica
#cnpj:String +setCnpj(cnpj:String):void +getCnpj():String

Especializao

Para criar uma classe Filha partir de uma classe Pai devemos utilizar o termo extends. A classe Cliente foi criada dentro do pacote (package) Aula05. Para utilizar uma classe em outro pacote, devemos utilizar o termo import. Implementao da Classe Fisica: Crie um novo pacote chamado aula06. Dentro dele, crie a classe Fisica. Ateno: no ative a opo public static void main, pois essa classe no ser executada.
package aula06; import Aula05.Cliente; public class Fisica extends Cliente { private String cpf = ""; public void setCpf(String cpf) {

39

Infoprise Informtica e Servios Ltda

this.cpf = cpf; } public String getCpf() { return this.cpf; } }

Implementao da Classe Juridica: Crie a classe Juridica. Ateno: no ative a opo public static void main, pois essa classe no ser executada.
package aula06; import Aula05.Cliente; public class Juridica extends Cliente { private String cnpj = ""; public void setCnpj(String cnpj) { this.cnpj = cnpj; } public String getCnpj() { return this.cnpj; } }

Crie a classe Exemplo22. Ateno: agora ative a opo public static void main, pois essa classe ser executada.
package aula06; public class Exemplo22 { public static void main(String[] args) { Fisica objFisica = new Fisica(); Juridica objJuridica = new Juridica(); objFisica.setNome("Joo"); objFisica.setCidade("Birigui"); objFisica.setCpf("000.000.000-00"); objFisica.setAtivo(true); objJuridica.setNome("Infoprise"); objJuridica.setCidade("Araatuba"); objJuridica.setCnpj("99.999.999/0001-99"); objJuridica.setAtivo(true); System.out.println("Pessoa Fsica:"); System.out.println(" Nome: "+objFisica.getNome()); System.out.println(" Cidade: "+objFisica.getCidade()); System.out.println(" CPF: "+objFisica.getCpf()); System.out.println(" Ativo: "+objFisica.getAtivo()); System.out.println("\nPessoa Jurdica:"); System.out.println(" Nome: "+objJuridica.getNome()); System.out.println(" Cidade: "+objJuridica.getCidade()); System.out.println(" CPF: "+objJuridica.getCnpj());

40

Infoprise Informtica e Servios Ltda

System.out.println(" } }

Ativo: "+objJuridica.getAtivo());

Operao de Agregao / Decomposio


No exemplo abaixo, a classe Computador agrega as classes Monitor, Gabinete e Teclado. Os atributos e mtodos das classes Monitor, Gabinete e Teclado foram omitidos do diagrama abaixo para economizar espao.
Computador
+objMonitor:Monitor +objGabinete:Gabinete +objTeclado:Teclado

Monitor

Gabinete

Teclado

Agregao Decomposio

Implementao da Classe Monitor: Utilizando o pacote chamado aula06, crie a classe Monitor. Ateno: no ative a opo public static void main, pois essa classe no ser executada.
package aula06; public class Monitor { private int tamanho = 0; private String tipo = ""; // crt ou lcd public void setTamanho(int tamanho) { this.tamanho = tamanho; } public int getTamanho() { return this.tamanho; } public void setTipo(String tipo) { this.tipo = tipo; } public String getTipo() { return this.tipo; } }

Implementao da Classe Gabinete: Utilizando o pacote chamado aula06, crie a classe Gabinete.

41

Infoprise Informtica e Servios Ltda

Ateno: no ative a opo public static void main, pois essa classe no ser executada.
package aula06; public class Gabinete { private String processador; private String memoria; private String hd; public void setProcessador(String processador) { this.processador = processador; } public String getProcessador() { return this.processador; } public void setMemoria(String memoria) { this.memoria = memoria; } public String getMemoria() { return this.memoria; } public void setHd(String hd) { this.hd = hd; } public String getHd() { return this.hd; } }

Implementao da Classe Teclado: Utilizando o pacote chamado aula06, crie a classe Teclado. Ateno: no ative a opo public static void main, pois essa classe no ser executada.
package aula06; public class Teclado { private int numTeclas = 0; private String tipo = ""; // portugues ou ingles public void setNumTeclas(int numTeclas) { this.numTeclas = numTeclas; } public int getNumTeclas() { return this.numTeclas; } public void setTipo(String tipo) { this.tipo = tipo; } public String getTipo() { return this.tipo; } }

Um Computador composto por Monitor, Gabinete e Teclado. Dessa forma a classe Computador deve agregar as classes Monitor, Gabinete e Teclado.

42

Infoprise Informtica e Servios Ltda

Implementao da Classe Computador: Utilizando o pacote chamado aula06, crie a classe Computado.. Ateno: no ative a opo public static void main, pois essa classe no ser executada.
package aula06; public class Computador { public Monitor objMonitor = new Monitor(); public Gabinete objGabinete = new Gabinete(); public Teclado objTeclado = new Teclado(); }

Implementao da Classe Exemplo23: Utilizando o pacote chamado aula06, crie a classe Exemplo23.. Ateno: ative a opo public static void main, pois essa classe ser executada.
package aula06; public class Exemplo23 { public static void main(String[] args) { Computador objComputador = new Computador(); objComputador.objMonitor.setTamanho(17); objComputador.objMonitor.setTipo("LCD"); objComputador.objTeclado.setNumTeclas(101); objComputador.objTeclado.setTipo("portugus"); objComputador.objGabinete.setProcessador("Pentium IV 2.6ghz"); objComputador.objGabinete.setHd("30gb"); objComputador.objGabinete.setMemoria("512mb"); System.out.println("Computador:"); System.out.println(" Processador: " + objComputador.objGabinete.getProcessador()); System.out.println(" HD: "+objComputador.objGabinete.getHd()); System.out.println(" Memria: " + objComputador.objGabinete.getMemoria()); System.out.println(" Teclado - teclas: " + objComputador.objTeclado.getNumTeclas()); System.out.println(" Teclado - tipo: " + objComputador.objTeclado.getTipo()); System.out.println(" Monitor - tamanho: " + objComputador.objMonitor.getTamanho()); System.out.println(" Monitor - tipo: " + objComputador.objMonitor.getTipo()); } }

Overriding / Sobrescrita
Uma sobrescrita (overriding) ocorre quando um mtodo de uma superclasse sobrescrito por um mtodo de mesmo nome de uma subclasse. Exemplo: parte da classe Cliente (no implementar essa classe).
package Aula05;

43

Infoprise Informtica e Servios Ltda

public class Cliente { public void setAtivo(boolean ativo) { this.ativo = ativo; } }

Exemplo: parte da classe Fsica (no implementar essa classe):


package aula06; import Aula05.Cliente; public class Fisica extends Cliente { public void setAtivo(boolean ativo) { if (ativo) this.ativo = false; else this.ativo = true; } }

Overloading / Sobrecarregamento
O sobrecarregamento (overloading) ocorre quando mais de um mtodo com o mesmo nome implementado na mesma classe. A diferenciao ocorre pelos parmetros de cada mtodo. Exemplo: parte da classe Cliente (no implementar essa classe):
package Aula05; public class Cliente { public void setAtivo(boolean ativo) { this.ativo = ativo; } public void setAtivo() { this.ativo = true; } }

Classe Abstrata
Uma classe abstrata uma classe que no pode instanciada, ou seja, no pode ter um objeto pertencente diretamente dessa classe. O objetivo de uma classe abstrata servir de base para outras classes. Por exemplo, a classe Cliente poderia ser definida como abstrata, assim no seria possvel ter um objeto pertencente classe Cliente. Mas as classes Fsica e Jurdica que so filhas da classe Cliente podem ser utilizadas.

44

Infoprise Informtica e Servios Ltda

Para definir uma classe como abstrata, basta acrescentar o termo abstract antes do nome da classe (no implementar essa classe):
package Aula05; public class abstract Cliente { . . . }

Interface
Uma interface um tipo de classe que define os mtodos que devero ser implementados na classe derivada. As classes que implementam essa interface so obrigadas implementar os mtodos. Uma classe derivada pode implementar mais de uma interface. Implementao da Interface Cadastro: Clique com o boto direito sobre o pacote chamado aula06, escolha o menu New e a opo Interface. Chame esse interface de Cadastro.
package aula06; public interface Cadastro { public void incluir(); public void alterar(); public void excluir(int cod); }

Implementao da Interface Endereco: Clique com o boto direito sobre o pacote chamado aula06, escolha o menu New e a opo Interface. Chame esse interface de Endereco.
package aula06; public interface Endereco { public public public public public public } void setEndereco(String endereco); String getEndereco(); void setCidade(String cidade); String getCidade(); void setCep(String cep); String getCep();

45

Infoprise Informtica e Servios Ltda

Implementao da Classe Aluno: Utilizando o pacote chamado aula06, crie a classe Aluno. Ateno: no ative a opo public static void main, pois essa classe no ser executada.
package aula06; public class Aluno implements Cadastro, Endereco { public void incluir() { } public void alterar() { } }

Observe que o Eclipse indica vrios erros: os mtodos que ainda no foram implementados.

Altere a classe Aluno e observe que os erros no aparecem mais.


package aula06; public class Aluno implements Cadastro, Endereco { public void incluir() { } public void alterar() { } public void excluir(int codigo) { } public void setEndereco(String endereco) { } public String getEndereco() { return null; } public void setCidade(String cidade) { } public String getCidade() { return null; } public void setCep(String cep) { }

46

Infoprise Informtica e Servios Ltda

public String getCep() { return null; } }

Exerccio Proposto 09
Crie uma classe chamada Funcionario que implemente as classes Cadastro e Endereo.

Exerccio Proposto 10
Crie uma classe chamada Imovel e depois suas classes filhas: Residencial e Comercial.
Imovel
#endereco:String #cidade:String #valorAluguel:double +setEndereco(endereco:String):void +getEndereco():String +setCidade(cidade:String):void +getCidade:String +setValorAluguel(valorAluguel:double):void +getValorAluguel:double

Residencial
#numQuartos:int +setNumQuartos(numQuartos:int):void +getNumQuartos():int

Comercial
#area:double +setArea(area:double):void +getArea():double

47

Infoprise Informtica e Servios Ltda

8 Classes Empacotadoras, Strings e Threads Classes Empacotadoras


Uma classe Empacotadora uma classe que contm mtodos estticos (no necessitam de um objeto para serem executados) para a manipulao de um certo tipo de dado. Tipo Boolean Implementao da Classe Exemplo24 : Crie um novo pacote chamado aula07, crie a classe Exemplo24. Ateno: ative a opo public static void main, pois essa classe ser executada.
package Aula07; public class Exemplo24 { public static void main(String[] args) { boolean x = false; if (x == Boolean.FALSE) System.out.println("false"); else System.out.println("true"); // converso de string para boolean String y = "true"; x = Boolean.parseBoolean(y); if (x == Boolean.FALSE) System.out.println("false"); else System.out.println("true"); // converso de booelan para String y = Boolean.toString(x); System.out.println("String y = "+y); } }

Tipo Byte Implementao da Classe Exemplo25: Utilize o pacote chamado aula07, crie a classe Exemplo25. Ateno: ative a opo public static void main, pois essa classe ser executada.

48

Infoprise Informtica e Servios Ltda

package Aula07; public class Exemplo25 { public static void main(String[] args) { byte menor = Byte.MIN_VALUE; byte maior = Byte.MAX_VALUE; System.out.println("Menor byte = "+menor); System.out.println("Maior byte = "+maior); // convertendo byte para String String x = "123"; byte y = Byte.parseByte(x); System.out.println("Byte y = " + y); // convertendo String para byte y = 100; x = Byte.toString(y); System.out.println("String x = "+x); } }

Tipo Character Implementao da Classe Exemplo26: Utilize o pacote chamado aula07, crie a classe Exemplo26. Ateno: ative a opo public static void main, pois essa classe ser executada.
package Aula07; public class Exemplo26 { public static void main(String[] args) { char c = '7'; if (Character.isDigit(c)) System.out.println(c+" um nmero"); if (Character.isLetter(c)) System.out.println(c+" uma letra"); } }

Tipo Double Implementao da Classe Exemplo27: Utilize o pacote chamado aula07, crie a classe Exemplo27. Ateno: ative a opo public static void main, pois essa classe ser executada.
package Aula07; public class Exemplo27 { public static void main(String[] args) {

49

Infoprise Informtica e Servios Ltda

double menor = Double.MIN_VALUE; double maior = Double.MAX_VALUE; System.out.println("Menor double = "+menor); System.out.println("Maior double = "+maior); // convertendo String para double String x = "23.21"; double y = Double.parseDouble(x); System.out.println("double y = "+y); // convertendo double para String y = 3.14159; x = Double.toString(y); System.out.println("String x = "+x); } }

Tipo Integer Implementao da Classe Exemplo28: Utilize o pacote chamado aula07, crie a classe Exemplo28. Ateno: ative a opo public static void main, pois essa classe ser executada.
package Aula07; public class Exemplo28 { public static void main(String[] args) { int menor = Integer.MIN_VALUE; int maior = Integer.MAX_VALUE; System.out.println("Menor int = "+menor); System.out.println("Maior int = "+maior); // convertendo String para int String x = "23"; int y = Integer.parseInt(x); System.out.println("int y = "+y); // convertendo int para String y = 33; x = Integer.toString(y); System.out.println("String x = "+x); } }

Classe String
A classe String contm vrios mtodos para manipulao de strings. Implementao da Classe Exemplo29: Utilize o pacote chamado aula07, crie a classe Exemplo29. Ateno: ative a opo public static void main, pois essa classe ser executada.

50

Infoprise Informtica e Servios Ltda

package Aula07; public class Exemplo29 { public static void main(String[] args) { String empresa = "Infoprise Informtica"; // encontra a posicao de uma string int pos = empresa.indexOf("Informtica"); if (pos < 0) System.out.println("String no encontrada!"); else System.out.println("Encontrada na posio: "+pos); // tamanho da string System.out.println("Tamanho da string: "+empresa.length()); // parte da string (posicao inicial, posio final) System.out.println("Parte da string: " empresa.substring(0,9)); // parte da string (posicao inicial) System.out.println("Parte da empresa.substring(10));

string:

"

// maisculas System.out.println("Maisculas: "+empresa.toUpperCase()); } }

Classe Math
A classe Math um tipo de classe empacotadora que contm vrios mtodos que realizam diversos tipos de operaes matemticas. Implementao da Classe Exemplo30: Utilize o pacote chamado aula07, crie a classe Exemplo30. Ateno: ative a opo public static void main, pois essa classe ser executada.
package Aula07; public class Exemplo30 { public static void main(String[] args) { int x = -7; // valor absoluto System.out.println("Valor absoluto de x = "+Math.abs(x)); // exponenciao System.out.println("2 elevado 4 = "+Math.pow(2,4)); // nmeros aleatrios for (x=1;x<=10;x++) System.out.println(Math.random());

51

Infoprise Informtica e Servios Ltda

// nmeros aleatrios entre 0 e 10 for (x=1;x<=10;x++) System.out.println(Math.round(Math.random()*10)); } }

Thread
Uma Thread um processo que pode ser executado. A linguagem Java permite que vrios processos sejam executados simultaneamente. Implementao da Classe Tarefa: Utilize o pacote chamado aula07, crie a classe Tarefa. Ateno: No ative a opo public static void main, pois essa classe no ser executada sozinha.
package Aula07; public class Tarefa extends Thread { private String mensagem = ""; public void setMensagem(String mensagem) { this.mensagem = mensagem; } public void run() { for (int x = 1;x<=1000;x++) System.out.println(mensagem+"-"+x); } }

Implementao da Classe Tarefa: Utilize o pacote chamado aula07, crie a classe Exemplo31. Ateno: ative a opo public static void main, pois essa classe ser executada sozinha.
package Aula07; public class Exemplo31 { public static void main(String[] args) { Tarefa x = new Tarefa(); Tarefa y = new Tarefa(); x.setMensagem("Tarefa x: "); y.setMensagem("Tarefa y: "); x.start(); y.start(); } }

52

Infoprise Informtica e Servios Ltda

Ao executar o mtodo start, ele executa o mtodo run mas no aguarda que o mtodo termina para executar o outro mtodo start. Observe que o resultado do Console demonstrada as frases Tarefa x: e Tarefa y: no aparecem exatamente na seqncia.
. . . Tarefa Tarefa Tarefa Tarefa Tarefa Tarefa Tarefa . . .

x: x: x: y: x: y: x:

908 909 910 880 911 881 912

Se o mtodo start() for substitudo pelo mtodo run() os mtodos no sero executados paralelamente.

Exerccio Proposto 11
Crie uma classe chamada Proposto11 que crie uma varivel chamada email do tipo String. A classe dever verificar se o valor atribudo varivel um e-mail ou no (verifique se a string possui um smbolo arroba: @).

Exerccio Proposto 12
Crie uma classe chamada Proposto12 que imprima nomes dos meses de forma aleatria. Dica: faa um sorteio de nmero entre 1 e 12 e imprima o nome do ms correspondente ao nmero sorteado.

53

Infoprise Informtica e Servios Ltda

9 Manipulao de Arquivos Classe File


A classe File utilizada para manipular arquivos. Principais mtodos da classe File: getName retorna o nome do arquivo renameTo troca o nome do arquivo exists verifica a existncia do arquivo canWrite retorna true se o arquivo pode ser escrito canRead retorna true se o arquivo pode ser lido isFile retorna true se o caminho um arquivo length retorna o tamanho do arquivo delete exclui o arquivo getPatch retorna o nome da pasta isDirectory retorna true se o caminho uma pasta mkdir cria uma pasta

Classes para Manipulao de Stream


stream o fluxo de dados do arquivo para a aplicao e da aplicao para o arquivo. A linguagem Java trabalha com dois tipos de stream: caracter e byte. Classe Reader para manipular entrada de caracteres. Classe Writer para manipular sada de caracteres. Classe InputStream para manipular entrada de bytes. Classe OutputStream para manipular sada de bytes. Implementao da Classe Exemplo32: Crie um pacote chamado aula08, crie a classe Exemplo32. Ateno: ative a opo public static void main, pois essa classe ser executada.
package Aula08; import java.io.*; public class Exemplo32 { public static void main(String[] args) { String arquivo = "c:\\Curso_Java\\SeuNome\\ler.txt"; File arq = new File(arquivo); if (! arq.exists()) {

54

Infoprise Informtica e Servios Ltda

System.out.println("Arquivo no existe"); return; } else { try { // InputStream - fluxo de entrada do arquivo InputStream is = new FileInputStream(arquivo); // InputStreamReader - converte os bytes e chars InputStreamReader isr = new InputStreamReader(is); // BufferedReader - armazena os chars em memria BufferedReader br = new BufferedReader(isr); String s = br.readLine(); // le primeira linha while (s != null) { System.out.println(s); s = br.readLine(); } } catch (Exception x) { System.out.println(x.getMessage()); } } } }

Execute o programa e observe que ser apresentado um erro:


Arquivo no existe

Execute o Bloco de Notas, digite um texto com algumas linhas e grave na pasta c:\Curso_Java\SeuNome com o nome ler.txt. Execute o programa novamente e observe o texto contido no arquivo ser mostrado.

Entrada de Dados pelo Teclado


As entradas e sadas de dados de uma aplicao um tipo de stream. O System.out um tipo de Stream que envia dados para a sada padro. O System.in um tipo de Stream que recebe dados de uma entrada padro (normalmente o teclado). Implementao da Classe Exemplo33: Utilizando o pacote aula08, crie a classe Exemplo33. Ateno: ative a opo public static void main, pois essa classe ser executada. 55

Infoprise Informtica e Servios Ltda

package Aula08; import java.io.*; public class Exemplo33 { public static void main(String[] args) { String linha = ""; InputStreamReader isr = new InputStreamReader(System.in); BufferedReader in = new BufferedReader(isr); System.out.print("Digite seu nome: "); try { linha = in.readLine(); System.out.println("\nSeu nome "+linha); in.close(); } catch (Exception e) { e.getMessage(); } } }

56

Infoprise Informtica e Servios Ltda

10 Integrao com Banco de Dados (SGBD) Download do MySQL


Faa o download do MySQL no site: http://www.mysql.com/ Clique na opo downloads.

Na prxima pgina clique em MySQL 5.0 -- Generally Available (GA) release for production use:

57

Infoprise Informtica e Servios Ltda

Na prxima pgina, role a tela para baixo e clique em Windows, localize Windows Zip/Setup.exe (x86) e clique em Pick a mirror:

Na prxima pgina, voc pode se cadastrar (se desejar) ou clique em No thanks, just take me to the downloads!.

Escolha o local por onde deseja efetuar o download:

58

Infoprise Informtica e Servios Ltda

Grave o arquivo em uma pasta para depois efetuar a instalao.

Download das Ferramentas Grficas


Para facilitar a manipulao de dados no MySQL interessante utilizar algumas ferramentas grficas. Retorne rea de downloads do site do MySQL e clique na opo GUI Tools:

Na prxima pgina localize Windows downloads e Windows (x86) e clique em Pick a mirror.

Escolha de onde deseja efetuar o download e grave o arquivo na mesma pasta que gravou o arquivo anterior.

Download do Conector Java


O conector ter a funo de permitir que as aplicaes Java se conectem com o servidor de banco de dados MySQL. Retorna pgina de downloads novamente e clique em Connectors:

59

Infoprise Informtica e Servios Ltda

Clique na opo Connector/J:

Na prxima pgina, localize Source and Binaries (zip) e clique em download.

Grave o arquivo na mesma pasta que os outros arquivos. 60

Infoprise Informtica e Servios Ltda

Instalando o MySQL
Localize o arquivo mysql-5.0.45-win32.zip descompacte-o e execute o arquivo Setup.exe. Na tela de apresentao, clique no boto Next:

Na prxima tela escolha o tipo de instalao (Typical):

Na prxima tela clique no boto Install:

61

Infoprise Informtica e Servios Ltda

Aguarde o trmino da instalao. Ao terminar a instalao, o MySQL vai entrar em sua configurao. Escolha a configurao padro (Standard Configuration) e senha para o usurio root.

Instalando as Ferramentas do MySQL


Localize e execute o arquivo mysql-gui-tools-5.0-r12-win32. Na tela inicial do Setup clique no boto Next:

Aceite os termos da prxima pgina e clique em Next. Escolha a instalao completa (Full).

62

Infoprise Informtica e Servios Ltda

Acessando o Banco de Dados MySQL


Localize no menu a pasta MySQL e dentro dela a opo MySQL Query Browser. Na tela de conexo, digite os dados abaixo e clique em OK.

A tela do MySQL Query Browser ser mostrada. Este programa ser utilizado para manipular o banco de dados, executar comandos SQL e efetuar o gerenciamento.

63

Infoprise Informtica e Servios Ltda

Criando um Banco
Para criar um novo banco de dados, clique na rea direita da janela com o boto direito do mouse e escolha a opo Create New Schema.

Digite o nome do banco (Schema) e clique no boto Ok.

Observe que o nome do seu banco aparece na lista de Schemas:

Criando uma Tabela no Banco


Para criar uma nova tabela no banco de dados, selecione seu banco (Schema) e clique com o boto direito do mouse. Escolha a opo Create New Table.

64

Infoprise Informtica e Servios Ltda

Digite o nome da tabela e defina suas colunas conforme tela abaixo:

Clique no boto Apply Changes. Clique no boto Execute:

Depois clique no boto Close. Observe que a tabela aparece como parte do banco que voc criou:

65

Infoprise Informtica e Servios Ltda

Incluindo Registros na Tabela


Antes de incluir um registro, torne seu banco de dados o banco Default. Clique com o boto direito do mouse sobre ele e escolha a opo Make Default Schema.

Para incluir um novo registro em uma tabela utilizaremos a instruo SQL: insert Digite a instruo SQL abaixo e clique no boto Execute.

Verifique se o registro foi includo corretamente digitando a instruo SQL abaixo (depois de digitar a instruo clique em Execute):

Observe que o valor do campo idaluno foi gerado automaticamente.

66

Infoprise Informtica e Servios Ltda

Inclua pelo menos cinco novos alunos na tabela.

Alterando Registros na Tabela


Para alterar um registro da tabela vamos utilizar o comando SQL: update Digite a instruo abaixo e clique em Execute:

Excluindo um Registro da Tabela


Para excluir um registro da tabela vamos utilizar o comando SQL: delete Digite a instruo abaixo e clique em Execute:

Instalando o Conector Java


Para que os aplicativos Java possam se conectar com os banco de dados MySQL devemos instalar o conector. Localize o arquivo mysql-connector-java-5.0.7.zip. Selecione apenas o arquivo mysql-connector-java-5.0.7-bin.jar para ser extrado na pasta: 67

Infoprise Informtica e Servios Ltda

C:\Arquivos de programas\Java\jdk1.5.0_12\jre\lib\ext

Configurando o Eclipse para acessar o MySQL


1 - Execute o Eclipse abrindo sua Workspace. 2 Clique com o boto direito do mouse sobre o nome do projeto e escolha a opo Properties. 3 No lado esquerdo da janela selecione Java Build Path e do lado direito clique na guia Libraries.

4 Clique no boto Add External JARs... 5 Localize o arquivo mysql-connector-java-5.0.7-bin.jar e clique em Abrir.

6 Confira se o arquivo se encontra na lista e clique em Ok. Neste momento as classes para acesso ao banco de dados MySQL j podem ser utilizadas.

Estabelecendo a Conexo com o MySQL


Para abrir uma conexo com o banco de dados, devemos inicialmente carregar o driver especfico para o SGBD que estamos trabalhando, no nosso caso o MySQL:
Class.forName(com.mysql.jdbc.Driver).newInstance();

68

Infoprise Informtica e Servios Ltda

O segundo passo estabelecer a conexo com o banco de dados informando sua localizao, seu banco (schema), usurio e senha:
String url = jdbc:mysql://127.0.0.1/seunome?user=root&password=123; Connection cn = DriverManager.getConnection(url);

Vamos criar uma classe especfica para efetuar a conexo com o banco de dados MySQL. Implementao da Classe Conexao: Crie um pacote chamado aula09, crie a classe Conexao. Ateno: no ative a opo public static void main, pois essa classe no ser executada.
package Aula09; import java.sql.*; public class Conexao { public static String status = ""; public static Connection getConnection() { Connection con = null; try { Class.forName("com.mysql.jdbc.Driver").newInstance(); String url = "jdbc:mysql://127.0.0.1/seunome?user=root&password=123"; con = DriverManager.getConnection(url); status = "Conexo aberta"; } catch (SQLException e) { status = e.getMessage(); } catch (ClassNotFoundException e) { status = e.getMessage(); } catch (Exception e) { status = e.getMessage(); } return con; } }

Agora que temos uma classe para efetuar a conexo com o banco de dados, vamos criar uma outra classe para executar essa conexo. Implementao da Classe Exemplo34: Utilizando o pacote aula09, crie a classe Exemplo34. Ateno: ative a opo public static void main, pois essa classe ser executada.
package Aula09; import java.sql.*; public class Exemplo34 { public static void main(String[] args) { Connection con = Conexao.getConnection(); System.out.println(Conexao.status); }

69

Infoprise Informtica e Servios Ltda

Consultando Dados de uma Tabela


Para enviar uma instruo SQL ao SGBD devemos criar um objeto da classe Statement que possui os seguintes mtodos: executeQuery() executa uma instruo SQL do tipo Select. Retorna um ResultSet que nos permitir acessar cada um dos registros resultando da consulta. executeUpdate() executa uma instruo SQL desde que no seja do tipo Select. Normalmente utilizado para instrues do tipo insert, update e delete.

Implementao da Classe Exemplo35: O exemplo abaixo listar o nome e a cidade de todos os alunos cadastrados em nosso banco de dados. Utilizando o pacote aula09, crie a classe Exemplo35. Ateno: ative a opo public static void main, pois essa classe ser executada.
package Aula09; import java.sql.*; public class Exemplo35 { public static void main(String[] args) { Connection con = Conexao.getConnection(); String sql = "select * from aluno"; try { Statement st = con.createStatement(); ResultSet rs = st.executeQuery(sql); while (rs.next()) { System.out.print(rs.getString("idaluno")); System.out.print(" - "); System.out.print(rs.getString("nome")); System.out.print(" - "); System.out.println(rs.getString("cidade")); } } catch(SQLException e) { System.out.println(e.getMessage()); } catch(Exception e) { System.out.println(e.getMessage()); } } }

70

Infoprise Informtica e Servios Ltda

Inserindo Dados em uma Tabela


Como visto no tpico anterior, para executar instrues SQL que no sejam do tipo Select, devemos utilizar a classe Statement e o mtodo executeUpdate(). Implementao da Classe Exemplo36: O exemplo abaixo far a leitura do nome e da cidade de um aluno pelo teclado e depois gravar esses dados na tabela Aluno. Utilizando o pacote aula09, crie a classe Exemplo36. Ateno: ative a opo public static void main, pois essa classe ser executada.
package Aula09; import java.sql.*; import java.io.*; public class Exemplo36 { public static void main(String[] args) { String nome = ""; String cidade = ""; InputStreamReader isr = new InputStreamReader(System.in); BufferedReader in = new BufferedReader(isr); try { System.out.print("Digite o nome do aluno: "); nome = in.readLine(); System.out.print("Digite a cidade do aluno: "); cidade = in.readLine(); in.close(); } catch (Exception e) { e.getMessage(); } Connection con = Conexao.getConnection(); String sql = "insert into aluno(nome,cidade) "; sql += "values('"+nome+"','"+cidade+"')"; try { Statement st = con.createStatement(); st.executeUpdate(sql); System.out.println("Aluno gravado com sucesso!"); } catch(SQLException e) { System.out.println(e.getMessage()); } catch(Exception e) { System.out.println(e.getMessage()); } } }

71

Infoprise Informtica e Servios Ltda

Alterando Dados em uma Tabela


Para efetuar a alterao tambm utilizaremos a classe Statement e seu mtodo executeUpdate(). Implementao da Classe Exemplo37: O exemplo abaixo perguntar o cdigo do aluno que pretende alterar, o novo nome e a nova cidade do aluno e depois gravar esses dados sobre o registro do aluno que j est gravado. Utilizando o pacote aula09, crie a classe Exemplo37. Ateno: ative a opo public static void main, pois essa classe ser executada.
package Aula09; import java.sql.*; import java.io.*; public class Exemplo37 { public static void main(String[] args) { String idaluno = ""; String nome = ""; String cidade = ""; InputStreamReader isr = new InputStreamReader(System.in); BufferedReader in = new BufferedReader(isr); try { System.out.print("Digite o cdigo (idaluno) do aluno que pretende alterar: "); idaluno = in.readLine(); System.out.print("Digite o nome do aluno: "); nome = in.readLine(); System.out.print("Digite a cidade do aluno: "); cidade = in.readLine(); in.close(); } catch (Exception e) { e.getMessage(); } Connection con = Conexao.getConnection(); String sql = "update aluno "; sql += "set nome = '"+nome+"', "; sql += "cidade = '"+cidade+"' "; sql += "where idaluno = "+idaluno; try { Statement st = con.createStatement(); int numRegs = st.executeUpdate(sql); if (numRegs>0) System.out.println("Aluno alterado com sucesso!"); else System.out.println("Aluno no encontrado!");

72

Infoprise Informtica e Servios Ltda

} catch(SQLException e) { System.out.println(e.getMessage()); } catch(Exception e) { System.out.println(e.getMessage()); } } }

Excluindo Registro de uma Tabela


Mais uma vez vamos utilizar a classe Statement e seu mtodo executeUpdate(). Implementao da Classe Exemplo38: O exemplo abaixo perguntar o cdigo do aluno que pretende excluir e depois excluir o aluno informado. Utilizando o pacote aula09, crie a classe Exemplo38. Ateno: ative a opo public static void main, pois essa classe ser executada.
package Aula09; import java.sql.*; import java.io.*; public class Exemplo38 { public static void main(String[] args) { String idaluno = ""; InputStreamReader isr = new InputStreamReader(System.in); BufferedReader in = new BufferedReader(isr); try { System.out.print("Digite o cdigo (idaluno) do aluno que pretende excluir: "); idaluno = in.readLine(); in.close(); } catch (Exception e) { e.getMessage(); } Connection con = Conexao.getConnection(); String sql = "delete from aluno "; sql += "where idaluno = "+idaluno; try { Statement st = con.createStatement(); int numRegs = st.executeUpdate(sql); if (numRegs>0) System.out.println("Aluno excludo com sucesso!"); else System.out.println("Aluno no encontrado!"); } catch(SQLException e) { System.out.println(e.getMessage());

73

Infoprise Informtica e Servios Ltda

} catch(Exception e) { System.out.println(e.getMessage()); } } }

Encontrando um Registro de uma Tabela


Nessa caso, vamos utilizar o mtodo executeQuery() da classe Statement. Implementao da Classe Exemplo39: O exemplo abaixo perguntar o cdigo do aluno que o usurio pretende consultar, depois far a busca e o aluno ser mostrado. Utilizando o pacote aula09, crie a classe Exemplo39. Ateno: ative a opo public static void main, pois essa classe ser executada.
package Aula09; import java.sql.*; import java.io.*; public class Exemplo39 { public static void main(String[] args) { String idaluno = ""; InputStreamReader isr = new InputStreamReader(System.in); BufferedReader in = new BufferedReader(isr); try { System.out.print("Digite o cdigo (idaluno) do aluno que pretende encontrar: "); idaluno = in.readLine(); in.close(); } catch (Exception e) { e.getMessage(); } Connection con = Conexao.getConnection(); String sql = "select * from aluno"; sql += " where idaluno="+idaluno; try { Statement st = con.createStatement(); ResultSet rs = st.executeQuery(sql); if (! rs.next()) { System.out.println("Aluno no encontrado!"); } else { System.out.println("Idaluno: " rs.getString("idaluno")); System.out.println("Nome: " rs.getString("nome"));

+ +

74

Infoprise Informtica e Servios Ltda

System.out.println("Cidade: rs.getString("cidade")); } } catch(SQLException e) { System.out.println(e.getMessage()); } catch(Exception e) { System.out.println(e.getMessage()); } } }

"

Persistindo uma Classe no Banco de Dados


As classes consideradas da camada de domnio, ou seja, as classes encontradas no mundo real que vimos at agora, tais como: Carro, Cliente, Televiso, Computador, etc; no eram gravadas no banco de dados. Desta forma, os objetos que criamos pertencentes essas classes eram perdidos quando o programa era encerrado. Os exemplos que vimos nas sees anteriores gravavam informaes no banco de dados, mas no lidavam com objetos e classes da camada de domnio. Nosso objetivo nessa seo integrar uma classe da camada de domnio com uma tabela de banco de dados, tornando o objeto persistente, permitindo que ele seja recuperado posteriormente. Para isso, vamos criar uma classe chamada Aluno que alm dos atributos e mtodos j vistos anteriormente, teremos os mtodos: incluir(), alterar(), excluir() e buscar(). Esses mtodos devem retornar true se a operao ocorreu normalmente e deve retornar false caso ocorra algum erro. Aluno #idaluno:int #nome:String #cidade:String +setIdaluno(idaluno:int):void +getIdaluno():int +setNome(nome:String):void +getNome():String +setCidade(cidade:String):void +getCidade():String +incluir():boolean +alterar():boolean +excluir():boolean +buscar():boolean Implementao da Classe Aluno: Utilizando o pacote aula09, crie a classe Aluno.

75

Infoprise Informtica e Servios Ltda

Observe que a classe abaixo no pode ser executada. Ela necessita de outra classe para utilizar seus mtodos. Os valores que esto sendo gravados ou alterados esto armazenados nos prprios atributos da classe. Depois que essa classe estiver implementada, qualquer outro programa que precisar armazenar, alterar, excluir ou consultar algum Aluno, poder utilizar essa classe. Desta forma, o cdigo SQL e outros recursos necessrios para conectar o banco de dados ficaro escondidos. Ateno: no ative a opo public static void main, pois essa classe no ser executada.
package Aula09; import java.sql.*; public class Aluno { private int idaluno = 0; private String nome = ""; private String cidade = ""; public void setIdaluno(int idaluno) { this.idaluno = idaluno; } public int getIdaluno() { return this.idaluno; } public void setNome(String nome) { this.nome = nome; } public String getNome() { return this.nome; } public void setCidade(String cidade) { this.cidade = cidade; } public String getCidade() { return this.cidade; } public boolean incluir() { boolean resultado = false; Connection con = Conexao.getConnection(); String sql = "insert into aluno(nome,cidade) "; sql += "values('"+this.nome+"','"+this.cidade+"')"; try { Statement st = con.createStatement(); st.executeUpdate(sql); resultado = true; } catch(SQLException e) { resultado = false; } catch(Exception e) {

76

Infoprise Informtica e Servios Ltda

resultado = false; } return resultado; } public boolean alterar() { boolean resultado = false; Connection con = Conexao.getConnection(); String sql = "update aluno "; sql += "set nome = '"+this.nome+"', "; sql += "cidade = '"+this.cidade+"' "; sql += "where idaluno = "+this.idaluno; try { Statement st = con.createStatement(); int numRegs = st.executeUpdate(sql); if (numRegs>0) resultado = true; else resultado = false; } catch(SQLException e) { resultado = false; } catch(Exception e) { resultado = false; } return resultado; } public boolean excluir() { boolean resultado = false; Connection con = Conexao.getConnection(); String sql = "delete from aluno "; sql += "where idaluno = "+this.idaluno; try { Statement st = con.createStatement(); int numRegs = st.executeUpdate(sql); if (numRegs>0) resultado = true; else resultado = false; } catch(SQLException e) { resultado = false; } catch(Exception e) { resultado = false; } return resultado; } public boolean buscar() { boolean resultado = false; Connection con = Conexao.getConnection(); String sql = "select * from aluno"; sql += " where idaluno="+this.idaluno; try { Statement st = con.createStatement(); ResultSet rs = st.executeQuery(sql); if (! rs.next()) { resultado = false; } else {

77

Infoprise Informtica e Servios Ltda

this.nome = rs.getString("nome"); this.cidade = rs.getString("cidade"); resultado = true; } } catch(SQLException e) { resultado = false; } catch(Exception e) { resultado = false; } return resultado; } }

Implementao da Classe Exemplo40: O exemplo abaixo cria uma instncia da classe Aluno e executa seus mtodos principais para manipular os registros no banco de dados. Utilizando o pacote aula09, crie a classe Exemplo40. Ateno: ative a opo public static void main, pois essa classe ser executada.
package Aula09; public class Exemplo40 { public static void main(String[] args) { Aluno objAluno = new Aluno(); // teste de incluso objAluno.setNome("Fulano de tal"); objAluno.setCidade("So Paulo"); if (objAluno.incluir()) System.out.println("Incluso - OK"); else System.out.println("Incluso - ERRO"); // teste de alterao objAluno.setIdaluno(3); objAluno.setNome("Aluno trs"); objAluno.setCidade("Cidade Trs"); if (objAluno.alterar()) System.out.println("Alterao - OK"); else System.out.println("Alterao - ERRO"); // teste de busca objAluno.setIdaluno(4); if (objAluno.buscar()) { System.out.println("Busca - OK"); System.out.println(" Idaluno:" objAluno.getIdaluno()); System.out.println(" Nome:"+objAluno.getNome()); System.out.println(" Cidade:"+objAluno.getCidade());

78

Infoprise Informtica e Servios Ltda

} else System.out.println("Busca - ERRO"); // teste de excluso objAluno.setIdaluno(3); if (objAluno.excluir()) System.out.println("Excluso - OK"); else System.out.println("Excluso - ERRO"); } }

Exerccio Proposto 13
Execute o MySQL Query Browser e crie a tabela Produto com os campos: idproduto integer not null auto inc primary key descricao string(45) not null quantidade integer not null custo double not null venda double not null

Crie uma classe chamada Produto de acordo com a representao grfica abaixo. A classe dever implementar os mtodos incluir(), alterar(), excluir() e buscar() para manipular os registros da tabela Produto dentro do banco de dados. Produto #idproduto:int #descricao:String #quantidade:int #custo:double #venda:double +setIdproduto(idproduto:int):void +getIdproduto():int +setDescricao(descricao:String):void +getDescricao ():String +setQuantidade(quantidade:int):void +getQuantidade():int +setCusto(custo:double):void +getCusto():double +setVenda(venda:double):void +getVenda():double +incluir():boolean +alterar():boolean +excluir():boolean +buscar():Boolean

79

Infoprise Informtica e Servios Ltda

Crie uma classe chamada Proposto13 que crie uma instncia da classe Produto e faa um teste com todas as operaes de manipulao de registro atravs dos mtodos incluir(), alterar(), excluir() e buscar().

80

Infoprise Informtica e Servios Ltda

11 Telas Grficas Biblioteca Swing


A biblioteca Swing oferece uma srie de classes para trabalhar com telas grficas, ela est disponvel no pacote javax.swing. Para criarmos um formulrio/janela devemos utilizar a classe JFrame. Seus principais mtodos so: setSize define o tamanho da janela. setLocation define a localizao da janela. setTitle define o ttulo da janela. setDefaultCloseOperation define o comportamento da aplicao quando a janela for fechada. setVisible define se a janela est visvel ou no

Implementao da Classe Formulario1: Crie um novo pacote chamado de Aula10, crie a classe Formulario1. Ateno: no ative a opo public static void main, pois essa classe no ser executada.
package Aula10; import javax.swing.JFrame; public class Formulario1 { public void criarTela() { JFrame form1 = new JFrame(); form1.setSize(300,200); form1.setLocation(100,100); form1.setTitle("Formulrio Exemplo 1"); form1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); form1.setVisible(true); } }

Implementao da Classe Exemplo41: O exemplo abaixo mostra o uso da classe Formulario1 criada acima. Utilize o pacote Aula10, crie a classe Exemplo41. Ateno: ative a opo public static void main, pois essa classe ser executada.
package Aula10;

81

Infoprise Informtica e Servios Ltda

public class Exemplo41 { public static void main(String[] args) { Formulario1 frm = new Formulario1(); frm.criarTela(); } }

Componentes Grficos
A biblioteca Swing oferece vrios componentes visuais, tais como: JLabel rtulo de texto JTextField caixa de texto JButton boto JPanel painel. Pode conter outros componentes JCheckBox caixa de seleo JComboBox caixa de combinao JMenu menu JMenuBar barra de menu JMenuItem item de menu JRadioButton boto de rdio

Para usar esses componentes esses precisam ser adicionados a um Container. No exemplo seguir, usaremos um JPanel. Implementao da Classe Formulario2: Crie um novo pacote chamado de Aula10, crie a classe Formulario2. Ateno: no ative a opo public static void main, pois essa classe no ser executada.
package Aula10; import javax.swing.*; public class Formulario2 { public void criarTela() { JFrame form = new JFrame(); form.setSize(300,200); form.setLocation(100,100); form.setTitle("Formulrio Exemplo 2"); form.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); form.setVisible(true); JPanel pn1 = new JPanel(); pn1.setLayout(null); JLabel lbl1 = new JLabel("Texto:"); lbl1.setBounds(10,10,40,20); pn1.add(lbl1);

82

Infoprise Informtica e Servios Ltda

JTextField txt1 = new JTextField(""); txt1.setBounds(60,10,80,20); pn1.add(txt1); JButton btn1 = new JButton("Boto"); btn1.setBounds(150,10,80,20); pn1.add(btn1); form.add(pn1); form.setVisible(true); } }

Implementao da Classe Exemplo42: O exemplo abaixo mostra o uso da classe Formulario2 criada acima. Utilize o pacote Aula10, crie a classe Exemplo42. Ateno: ative a opo public static void main, pois essa classe ser executada.
package Aula10; public class Exemplo42 { public static void main(String[] args) { Formulario2 frm = new Formulario2(); frm.criarTela(); } }

Manipulando Eventos
No exemplo anterior, quando o usurio clica no boto nenhuma ao executada. Para que isto ocorra, devemos adicionar os manipuladores de eventos que ficaro esperando que um determinado evento ocorra para que uma ao seja executada. O tratamento de eventos do tipo click do mouse, devemos utilizar a interface ActionListener. Essa interface exige a implementao do mtodo actionPerformed. Implementao da Classe Formulario3: Dentro do pacote Aula10, crie a classe Formulario3. Ateno: no ative a opo public static void main, pois essa classe no ser executada.

83

Infoprise Informtica e Servios Ltda

package Aula10; import java.awt.event.*; import javax.swing.*; public class Formulario3 implements ActionListener { JFrame form = new JFrame(); JPanel pn1 = new JPanel(); JLabel lblTitulo = new JLabel("Clculo da rea de um Retngulo"); JLabel lblLargura = new JLabel("Largura:"); JTextField txtLargura = new JTextField(""); JLabel lblComprimento = new JLabel("Comprimento:"); JTextField txtComprimento = new JTextField(""); JLabel lblResultado = new JLabel("Resultado:"); JButton btnCalcular = new JButton("Calcular"); JButton btnLimpar = new JButton("Limpar"); public void criarTela() { form.setSize(300,200); form.setLocation(100,100); form.setTitle("Formulrio Exemplo 3"); form.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); form.setVisible(true); pn1.setLayout(null); lblTitulo.setBounds(10,10,250,20); pn1.add(lblTitulo); lblLargura.setBounds(10,40,80,20); pn1.add(lblLargura); txtLargura.setBounds(100,40,80,20); pn1.add(txtLargura); lblComprimento.setBounds(10,65,80,20); pn1.add(lblComprimento); txtComprimento.setBounds(100,65,80,20); pn1.add(txtComprimento); btnCalcular.setBounds(10,90,120,20); pn1.add(btnCalcular); btnLimpar.setBounds(140,90,120,20); pn1.add(btnLimpar); lblResultado.setBounds(10,115,200,20); pn1.add(lblResultado); // adiciona um ouvinte ao componente btnCalcular.addActionListener(this); btnLimpar.addActionListener(this); form.add(pn1); form.setVisible(true); } public void actionPerformed(ActionEvent e) {

84

Infoprise Informtica e Servios Ltda

Object o = e.getSource(); if (o == btnCalcular) { calcularArea(); } if (o == btnLimpar) { limparCampos(); } } private void calcularArea() { try { double larg = Double.parseDouble(txtLargura.getText()); double comp = Double.parseDouble(txtComprimento.getText()); double area = larg * comp; lblResultado.setText("Resultado: "+area); } catch (Exception e) { lblResultado.setText("Resultado: ERRO - dados invlidos!"); } } private void limparCampos() { txtLargura.setText(""); txtComprimento.setText(""); lblResultado.setText("Resultado: "); txtLargura.grabFocus(); } }

Implementao da Classe Exemplo43: O exemplo abaixo mostra o uso da classe Formulario3 criada acima. Utilize o pacote Aula10, crie a classe Exemplo43. Ateno: ative a opo public static void main, pois essa classe ser executada.
package Aula10; public class Exemplo43 { public static void main(String[] args) { Formulario3 frm = new Formulario3(); frm.criarTela(); } }

85

Infoprise Informtica e Servios Ltda

Formulrio para Cadastro de Alunos


Nesta seo vamos criar um formulrio para cadastrar alunos no banco de dados utilizando a classe Aluno criada no capitulo anterior. Alm dos botes utilizados na seo anterior, neste exerccio, vamos utilizar menus para executar as mesmas funes dos botes. Implementao da Classe FormularioAluno. Utilizando o pacote Aula10, crie a classe FormularioAluno. Ateno: no ative a opo public static void main, pois essa classe no ser executada.
package Aula10; import Aula09.Aluno; import java.awt.event.*; import javax.swing.*; public class FormularioAluno implements ActionListener { JFrame form = new JFrame(); JPanel painel = new JPanel(); JLabel lblCodigo = new JLabel("Cdigo:"); JTextField txtCodigo = new JTextField(""); JLabel lblNome = new JLabel("Nome:"); JTextField txtNome = new JTextField(""); JLabel lblCidade = new JLabel("Cidade:"); JTextField txtCidade = new JTextField(""); JButton btnEncontrar = new JButton("Encontrar"); JButton btnNovo = new JButton("Novo"); JButton btnGravar = new JButton("Gravar"); JButton btnExcluir = new JButton("Excluir"); JLabel lblStatus = new JLabel("Status:"); // Incluindo Menu JMenuBar mnuBarra = new JMenuBar(); JMenu mnuArquivo = new JMenu("Arquivo"); JMenu mnuEditar = new JMenu("Editar"); JMenuItem mnuSair = new JMenuItem("Sair"); JMenuItem mnuEncontrar = new JMenuItem("Encontrar"); JMenuItem mnuNovo = new JMenuItem("Novo"); JMenuItem mnuGravar = new JMenuItem("Gravar"); JMenuItem mnuExcluir = new JMenuItem("Excluir"); String acao = ""; Aluno objAluno = new Aluno(); public void criarTela() { form.setSize(450,200); form.setLocation(100,100); form.setTitle("Formulrio - Cadastro de Alunos"); form.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); form.setVisible(true); painel.setLayout(null);

86

Infoprise Informtica e Servios Ltda

lblCodigo.setBounds(10,20,80,20); painel.add(lblCodigo); txtCodigo.setBounds(100,20,80,20); painel.add(txtCodigo); btnEncontrar.setBounds(190,20,100,20); painel.add(btnEncontrar); lblNome.setBounds(10,45,80,20); painel.add(lblNome); txtNome.setBounds(100,45,150,20); painel.add(txtNome); lblCidade.setBounds(10,70,80,20); painel.add(lblCidade); txtCidade.setBounds(100,70,120,20); painel.add(txtCidade); btnNovo.setBounds(10,95,100,20); painel.add(btnNovo); btnGravar.setBounds(120,95,100,20); painel.add(btnGravar); btnExcluir.setBounds(230,95,100,20); painel.add(btnExcluir); lblStatus.setBounds(10,120,200,20); painel.add(lblStatus); // adiciona um ouvinte ao componente btnEncontrar.addActionListener(this); btnNovo.addActionListener(this); btnGravar.addActionListener(this); btnExcluir.addActionListener(this); // Menu mnuBarra.add(mnuArquivo); mnuBarra.add(mnuEditar); mnuArquivo.add(mnuSair); mnuEditar.add(mnuEncontrar); mnuEditar.add(new JSeparator()); mnuEditar.add(mnuNovo); mnuEditar.add(mnuGravar); mnuEditar.add(mnuExcluir); mnuSair.addActionListener(this); mnuEncontrar.addActionListener(this); mnuGravar.addActionListener(this); mnuNovo.addActionListener(this); mnuExcluir.addActionListener(this); form.setJMenuBar(mnuBarra); // adicionando painel ao fomulario form.add(painel); form.setVisible(true); }

87

Infoprise Informtica e Servios Ltda

public void actionPerformed(ActionEvent e) { Object o = e.getSource(); if (o == btnEncontrar || o == mnuEncontrar) { encontrar(); } if (o == btnNovo || o == mnuNovo) { novo(); } if (o == btnGravar || o == mnuGravar) { gravar(); } if (o == btnExcluir || o == mnuExcluir) { excluir(); } if (o == mnuSair) { System.exit(0); } } public void encontrar() { acao = ""; try { objAluno.setIdaluno(Integer.parseInt(txtCodigo.getText())); if (! objAluno.buscar()) { lblStatus.setText("Status: Aluno no encontrado!"); } else { txtCodigo.setText(Integer.toString(objAluno.getIdaluno())); txtNome.setText(objAluno.getNome()); txtCidade.setText(objAluno.getCidade()); lblStatus.setText("Status: Aluno encontrado!"); acao = "encontrar"; } } catch (Exception e) { lblStatus.setText("Status: Cdigo invlido!"); txtCodigo.grabFocus(); } } public void gravar() { if (acao.indexOf("novo")>=0) { acao = ""; objAluno.setNome(txtNome.getText()); objAluno.setCidade(txtCidade.getText()); if (!objAluno.incluir()) { lblStatus.setText("Status: Erro na gravao!"); } else { lblStatus.setText("Status: Sucesso na gravao!"); acao = "gravar"; } } if (acao.indexOf("encontrar")>=0) { acao = ""; objAluno.setIdaluno(Integer.parseInt(txtCodigo.getText())); objAluno.setNome(txtNome.getText()); objAluno.setCidade(txtCidade.getText());

88

Infoprise Informtica e Servios Ltda

if (!objAluno.alterar()) { lblStatus.setText("Status: Erro na gravao!"); } else { lblStatus.setText("Status: Sucesso na gravao!"); acao = "gravar"; } } } public void novo() { acao = "novo"; txtCodigo.setText(""); txtNome.setText(""); txtCidade.setText(""); txtCodigo.grabFocus(); } public void excluir() { acao = ""; try { objAluno.setIdaluno(Integer.parseInt(txtCodigo.getText())); if (! objAluno.excluir()) { lblStatus.setText("Status: Aluno no excludo!"); } else { txtCodigo.setText(""); txtNome.setText(""); txtCidade.setText(""); lblStatus.setText("Status: Aluno excludo!"); acao = "novo"; } } catch (Exception e) { lblStatus.setText("Status: Cdigo invlido!"); txtCodigo.grabFocus(); } } }

Exerccio Proposto 14
Crie uma classe chamada FormularioProduto para efetuar o cadastro de produtos utilizando a classe Produto criada no Exerccio Proposto 13.

89

Infoprise Informtica e Servios Ltda

12 Fim do Curso Contedo Visto


Os principais tpicos vistos neste curso foram: Histrico histrico do surgimento da linguagem Java e suas principais aplicaes. Fundamentos - principais fundamentos, tais como: variveis, tipos de variveis, operadores aritmticos, operadores relacionais, operadores lgicos e operadores unrios. Controle de Fluxo instrues para controle de fluxo: if, while, for, e switch. Orientao Objetos conceitos da programao orientada objetos: classes, objetos, operaes de abstrao, herana, polimorfismo, sobrecarga e sobreescrita. Implementao de programas orientados objetos. Banco de Dados MySQL utilizao do SGBD (Sistema Gerenciador de Banco de Dados) MySQL e manipulao de tabelas atravs da linguagem SQL. Implementao de classes para a manipulao de dados armazenados em tabelas do MySQL. Telas Grficas implementao de programas utilizando componentes grficos, tais como: formulrios, rtulos, caixa de textos, botes e menus. Implementao de um formulrio para cadastro de alunos.

Prximos Passos
A linguagem Java foi criada para ser utilizada em diversos tipos de aparelhos e acabou ganhando fora com a Internet. A principal vantagem da linguagem Java a portabilidade, ou seja, a possibilidade de um mesmo programa ser executado em diversos tipos de computadores diferentes e sistemas operacionais diferentes. Desta forma, mesmo programas que no so voltados para a Internet ganham sua importncia, pois esses programas podero ser executados em diversas plataformas diferentes. Uma sugesto para os prximos passos para o domnio da linguagem Java: J2EE - Desenvolvimento de sites para Internet. J2ME Desenvolvimento de aplicaes para dispositivos mveis. Certificao em Java Efetuar a avaliao para a certificao na linguagem Java.

90

S-ar putea să vă placă și