Documente Academic
Documente Profesional
Documente Cultură
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.
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.
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.
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:
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.
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).
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.
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.
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.
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
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
Depois de clicar no boto Finish o Eclipse mostrar a estrutura pr-criado da classe Exemplo01.
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
Execuo do programa:
Execute o programa.
13
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
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
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
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
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
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
< 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)); } }
20
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
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); } }
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
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
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
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
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
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
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
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
29
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!"); } }
30
} }
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();
} }
31
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
} 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
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";
34
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
36
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; } }
System.out.println("n1 / n2 = "+Calculos.dividir(n1,n2)); } }
37
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
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
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
System.out.println(" } }
Ativo: "+objJuridica.getAtivo());
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
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
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
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
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
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.
46
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
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
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
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
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:
"
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
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
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:
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
54
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 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.
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
Na prxima pgina clique em MySQL 5.0 -- Generally Available (GA) release for production use:
57
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!.
58
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.
59
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:
61
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.
Aceite os termos da prxima pgina e clique em Next. Escolha a instalao completa (Full).
62
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
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.
64
Depois clique no boto Close. Observe que a tabela aparece como parte do banco que voc criou:
65
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):
66
C:\Arquivos de programas\Java\jdk1.5.0_12\jre\lib\ext
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.
68
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
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
71
72
73
} catch(Exception e) { System.out.println(e.getMessage()); } } }
+ +
74
"
75
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
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
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
} 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
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
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
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
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
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
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
86
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
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
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
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