Você está na página 1de 66

Programao Java

Sumrio
Introduo Programao Orientada a Objetos......................................... 4 Introduo:...................................................................................................... 4 O que so modelos?....................................................................................... 4 Exemplo de Modelo: ....................................................................................... 4 Exemplo de Representao Grfica do Modelo Aluno ................................... 4 O que Programao Orientada a Objetos?.................................................. 4 Encapsula-mento:........................................................................................... 5 Classes e Objetos:.......................................................................................... 9 Softwares Recomendados:............................................................................. 9 Referncia: ..................................................................................................... 9 Literatura de Apoio: ........................................................................................ 9 2. Qual a relao entre modelo e linguagem Java? ...................................... 10 3. Criao de Classes em Java..................................................................... 10 Sintaxe Bsica: ............................................................................................. 10 Palavras Reservadas:................................................................................... 10 Uma classe ................................................................................................... 11 Exemplo de aplicao:.................................................................................. 11 Exemplo de no aplicao:........................................................................... 11 Diferena entre classe e aplicao ............................................................... 11 Como criar um objeto de dentro de uma aplicao? .................................... 11 A palavra-chave new .................................................................................... 12 Recomendaes para o projeto de classes: ................................................. 12 Exerccios: .................................................................................................... 12 4. Aplicaes em Java .................................................................................. 13 5. Estruturas Fundamentais em Java............................................................ 15 Comentrios: ................................................................................................ 15 Converses entre tipos: ................................................................................ 15 Operadores Lgicos: .................................................................................... 15 6 Arrays ......................................................................................................... 15 6.1 Arrays de Objetos. .................................................................................. 16 6.2 Array como argumento. .......................................................................... 16 6.3 Array como valor de retorno ................................................................... 17 6.4 Exerccios. .............................................................................................. 17 7 - Laos .......................................................................................................... 18 Lao indeterminado: ..................................................................................... 18 Lao indeterminado 2: .................................................................................. 18 Lao determinado: ........................................................................................ 18 Interrupo de lao: ...................................................................................... 18 Exemplo de interrupo continue: ................................................................ 18 Exemplo de interrupo break: ................................................................... 19 Exemplo de interrupo return: ................................................................. 19 8 A Classe String ......................................................................................... 19 String: ........................................................................................................... 19 Como criar uma String: ................................................................................. 19 Como concatenar uma String? ..................................................................... 19 9 Como ler do Teclado? ............................................................................... 20 Entrada Texto ............................................................................................... 20 A Classe Scanner: ........................................................................................ 20 1.

Prof. Vida (vida@utfpr.edu.br).

Programao Java

Janela de Leitura: ......................................................................................... 21 A classe JOptionPane: ................................................................................. 21 10 A CLASSE JOptionPane ........................................................................... 21 Alguns Tipos de Janelas:.............................................................................. 24 Tipos de Mensagens: ................................................................................... 24 Tipos de Conjunto de Botes:....................................................................... 24 Exerccios: .................................................................................................... 24 11 Reutilizao de Classes. ........................................................................... 25 12 Construtores e Sobrecarga ....................................................................... 27 O que so construtores? .............................................................................. 27 Como construtores so representados? ....................................................... 27 Exemplo de definio de construtores: ......................................................... 27 Sobrecarga: .................................................................................................. 28 Assinatura:.................................................................................................... 28 Exemplo de sobrecarga de mtodos. ........................................................... 28 A palavra reservada...................................................................................... 29 Exerccios: .................................................................................................... 29 13 Campos e Mtodos Estticos.................................................................... 31 Introduo:.................................................................................................... 31 Exemplo de Campo Esttico:........................................................................ 31 Mtodos Estticos: ....................................................................................... 32 Exemplo de Mtodo Esttico: ....................................................................... 32 Mtodos chamados diretamente do mtodo main: ....................................... 32 Exemplo de Mtodos chamados diretamente do mtodo main: ................... 33 Outro exemplo: ............................................................................................. 33 Exerccios: .................................................................................................... 34 14 Leitura e Escrita. ....................................................................................... 35 Introduo:.................................................................................................... 35 Exemplo de Entrada e Sada de Textos: ...................................................... 35 15 Herana..................................................................................................... 37 Introduo:.................................................................................................... 37 Exemplo de representao da estrutura de Herana: .................................. 37 Cdigo parcial da classe Pessoa:................................................................ 38 Cdigo parcial da classe filha Aluno: ............................................................ 38 Cdigo completo da classe Pessoa:............................................................. 39 Cdigo Completo da classe Professor:......................................................... 39 A palavra super:......................................................................................... 39 Como evitar que um determinado mtodo seja sobre-escrito?..................... 41 16 Interfaces .................................................................................................. 42 Introduo:.................................................................................................... 42 O que uma interface? ................................................................................ 42 Exemplo de Herana Mltipla ....................................................................... 42 Exemplo de Representao de uma interface .............................................. 43 Exemplo de interface: ................................................................................... 43 Exemplo de classe:....................................................................................... 44 Exemplo da classe que implementa uma interface:...................................... 45 Comentrios: ................................................................................................ 45 Comentrios da Compilao......................................................................... 45 Mtodos com a mesma assinatura ............................................................... 46 17 Pacotes e Classes .................................................................................... 47

Prof. Vida (vida@utfpr.edu.br).

Programao Java

Introduo:.................................................................................................... 47 Criao de pacotes de classes: .................................................................... 47 O efeito da definio de pacotes na estrutura de diretrio: .......................... 48 Como utilizar classes de outros pacotes?..................................................... 49 O modificador de acesso protected:........................................................ 49 O modificador de acesso protected: ............................................................. 50 18 Resumo dos Modificadores de Acesso: .................................................... 50 18. Como Conectar o Java a um Banco de Dados ......................................... 51 18.1 Como criar o Banco de Dados MSAccess ? ...................................... 51 18.2 Como o programa Java accessa o Banco de Dados ? ..................... 53 18.3 Exemplo de Acesso via ODBC: ........................................................... 55 18.4 Exemplo de Acesso a um Banco de Dados MySql atravs de drive JDBC. ........................................................................................................... 58 19 Resumo de alguns mtodos da classe String ........................................... 61 20 A classe Math............................................................................................ 63

Prof. Vida (vida@utfpr.edu.br).

Programao Java

1. Introduo Programao Orientada a Objetos


Computadores so ferramentas de uso comum hoje em dia. Eles podem automatizar tarefas e manipular valores. Para executar essa tarefa, computadores trabalham com modelos computacionais. Um paradigma para definio desses modelos fornecido pela Orientao a Objetos ou simplesmente OO. Nesse paradigma, os dados a serem processados e o processamento ou manipulao desses dados devem ser considerados em conjunto. Esse conjunto denominado de modelo. Modelos so representaes simplificadas de objetos, O que so pessoas, itens, tarefas, processos, conceitos, idias, por modelos? exemplo. As simplificaes inerentes aos modelos , em muitos casos, necessria. Dependendo do contexto, algumas informaes devem ser ocultas ou ignoradas. Um modelo para a representao de um aluno para um Exemplo de sistema acadmico, por exemplo, poderia ser formado com os Modelo: seguintes dados: Nome, Cdigo de Matrcula, Curso, Turma, Disciplinas. Esse aluno poderia ser representado em um outro modelo se o objetivo fosse o desenvolvimento de um sistema de transporte escolar cuja funo levar e trazer o aluno da casa para o colgio. Nesse novo contexto, os dados poderiam ser, por exemplo: Nome, Endereo, Colgio, horrio de incio da aula, horrio de trmino da aula. Introduo: Exemplo de Representa o Grfica do Modelo Aluno

Programao Orientada a Objetos (POO) um paradigma O que de programao de computadores onde se usam classes Programa (modelos) e objetos (exemplos ou instncias desses modelos) o Orientada para o desenvolvimento de programas de computador. a Objetos? Na POO, os dados pertencentes aos modelos so representados por tipos de dados nativos, ou seja, que so caractersticos da linguagem de programao, ou por outros modelos. Por exemplo, o dado Nome poderia ser representado pelo tipo nativo String. Um dado do tipo String permite representar um conjunto de caracteres. Por sua vez, Endereco poderia ser representado por um

Prof. Vida (vida@utfpr.edu.br).

Programao Java modelo denominado por Classe_Endereco. Encapsulamento:

Modelos podem conter dados para a representao das informaes ou dados relativos e operaes para manipulao desses dados. Em algumas situaes, esses dados no devem ser manipulados diretamente, mas somente atravs de processos. Como exemplo, o valor do salrio de um funcionrio poderia ser o resultado de um processamento [horas trabalhadas] x [valor hora]. Como analogia, pode-se considerar o televisor. Quando o usurio comum ligar o televisor apertando o boto Ligar/Desligar diversos mecanismos entram em ao. Que mecanismos so esses e quais dados so importantes para esses mecanismos so informaes sem importncia para o usurio comum. O importante para ele a possibilidade de assistir a programao desejada. Apesar dos dados e mecanismos no terem importncia alguma, eles existem e esto escondidos ou encapsulados. Estando encapsulados os dados, pode ser interessante prever recursos de modificao e leitura desses dados. Logo, deve-se criar uma operao para faz-lo e ocultar o acesso direto a esses dados. A operao de acesso aos dados ocultos denominado por Mtodos de Acesso. A capacidade de ocultar dados dentro de modelos, permitindo que somente operaes especializadas ou dedicadas manipulem os dados ocultos chama-se encapsulamento. Encapsulamento um dos benefcios mais palpveis da POO. Modelos que encapsulam os dados possibilitam a criao de programas com menos erros e mais clareza. Exemplo 1: A Figura 1 mostra um modelo Lampada usando uma variante do diagrama de classes da Linguagem Unificada de Modelagem (UML).

Figura 1 Modelo Lampada

Neste diagrama o retngulo superior mostra o nome do modelo ou classe, o retngulo central mostra que dados definem o modelo e o retngulo inferior mostra que operaes do modelo podem ser realizadas. No modelo Lampada, alguns dados no esto representados, eles foram desprezados. So exemplos desses dados, consumo, cor e tamanho. A deciso de quais dados e operaes devem pertencer a um modelo depende da abrangncia e escopo do modelo.
Prof. Vida (vida@utfpr.edu.br).

Programao Java
O Exemplo 1 em Pseudocdigo:

6
Modelo Lampada inicio do modelo dado estadoDaLampada; Operacao acende() Inicio estadoDaLampada = aceso; fim operacao apaga() inicio estadoDaLampada = apagado; fim operacao mostraEstado() inicio se (estadoDaLampada == aceso ) imprime A Lampada estah acesa; seno imprime A Lampada estah apagada; fim fim do modelo

Prof. Vida (vida@utfpr.edu.br).

Programao Java
Exemplo 2:

Figura 2 - Modelo ContaBancariaSimplificada O Exemplo 2 em Pseudocdigo:

Modelo ContaBancariaSimplificada inicio do modelo dado nomeDoCorrentista, contaEhEspecial;

CPF,

saldo,

operacao abreConta(nome, deposito, especial) inicio nomeDoCorrentista = nome; saldo = deposito; contaEhEspecial = especial; fim operacao abreContaSimples(nome) inicio nomeDoCorrentista = nome; saldo = 0.0; contaEhEspecial = falso; fim operacao deposita(valor) inicio saldo = saldo + valor; fim operacao retira(valor) inicio se (contaEhEspecial == falso) inicio se (valor <= saldo) saldo = saldo valor; senao saldo = saldo valor; fim fim operacao mostraDados() inicio imprime O nome do correntista ; imprime nomeDoCorrentista; imprime O saldo ; imprime saldo; se (contaEhEspecial == verdadeiro) imprime A conta especial.; senao imprime A conta comum.;

Prof. Vida (vida@utfpr.edu.br).

Programao Java
fim fim do modelo
Exemplo 3:

Figura 3 - Modelo RegistroAcademico O Exemplo 3 em Pseudocdigo:

Modelo RegistroAcademico inicio do modelo dado nomeDoAluno, numeroDeMatricula; dado dataDeNascimento, ehBolsista, anoDeMatricula; operacao inicializaRegistro(nome, matricula, data, temBolsa, qualAno)

inicio nomeDoAluno = nome; numeroMatricula = matricula; dataDeNascimento = data; ehBolsista = temBolsa; anoDeMatricula = qualAno; fim operacao calculaMensalidade() inicio mensalidade = 400; se (ehBolsista) mensalidade = mensalidade / 2; retorna mensalidade; fim operacao mostraRegistro() inicio imprime Nome do aluno: ; imprime nomeDoAluno ; imprime Numero de Matricula: ; imprime numeroDeMatricula ; imprime Data de Nascimento: ; imprime dataDeNascimento; se (ehBolsista == verdadeiro) imprime O aluno bolsista; senao imprime O aluno nao bolsista; imprime Ano de Matricula: imprime anoDeMatricula; fim fim do modelo

Prof. Vida (vida@utfpr.edu.br).

Programao Java Classes e Objetos:

Programadores que utilizam o paradigma de POO criam e usam objetos a partir de classes. Classes esto relacionadas diretamente com modelos. Classes so estruturas que definem os dados que devem ser representados e as operaes que devem ser efetuadas com esses dados. Objetos so exemplos dessas classes. Uma analogia pode ser realizada nesse instante. Pode-se considerar que a receita para fazer um bolo uma classe. Nela esto representados os ingredientes ou dados (ovo, farinha, etc...) e os processos necessrios (quebrar o ovo, separar a gema da clara, etc...). Quando, a partir da receita, um bolo feito, esse bolo o objeto.
Interface de Edio: JCreator LE www.jcreator.com ou, NetBeans www.netbeans.org Compilador e Mquina de Execuo: Java SDK www.sun.com

Softwares Recomendad os: Referncia:

Literatura de Apoio:

Ttulo:Introduo Programao Orientada a Objetos usando Java. Ano: 2003 Autor: Rafael Santos Editora: Campus ISBN: 85-352-1206-X Ttulo: Core Java, Volume 1 Fundamentos Ano: 2001 Autor: Cay S. Hortsmann e Gary Cornell Editora: Makron Books ISBN: 85-346-1225-0

Prof. Vida (vida@utfpr.edu.br).

10

2. Qual a relao entre modelo e linguagem Java? Modelos so implementados em Java atravs de classes. Por exemplo: Modelo

Cdigo Java

// arquivo detalhado Lampada.java class Lampada { private boolean estadoDaLampada=false; public void acende() { estadoDaLampada = true; } Modelo Lampada Inicio do modelo dado estadoDaLampada; operacao acende() inicio estadoDaLampada = aceso; fim operacao apaga() inicio estadoDaLampada = apagado; fim operacao mostraEstado() inicio se (estadoDaLampada == aceso ) imprime A Lampada estah acesa; seno imprime A Lampada estah apagada; fim fim do modelo } public void apaga() { estadoDaLampada = false; } public void mostraEstado() { if (estadoDaLampada == true) System.out.println(A lampada estah acesa.); else System.out.println(A lampada estah apagada.); }

Prof. Vida (vida@utfpr.edu.br).

Programao Java 3. Criao de Classes em Java Sintaxe Bsica:

10

Uma classe em Java sempre declarada com a palavra-chave class seguida do nome da classe. O nome da classe no pode conter espaos e deve sempre ser iniciado por uma letra. Para nomes de classes, mtodos e campos em Java, o caracter sublinhado ( _ ) e o sinal ( $ ) tambm so considerados letras. O nome da classe no deve conter acentos e pode conter nmeros, contanto que estes apaream depois de uma letra. Nomes de Classes no podem ser exatamente iguais s palavras reservadas em Java. Caracteres maisculos e minsculos so diferenciados em Java. O contedo das classes delimitado pelas chaves { e }. Todos os campos e mtodos tambm devem estar entre esses caracteres. Uma classe declarada como pblica necessita obrigatoriamente ser salva em um arquivo .java e o nome do arquivo necessita ser o mesmo da classe.

Palavras Reservadas:

Abstract, boolean, break, byte, case, catch, char, class, const, continue, default, do, double, else, extends, false, final, finally, float, for, goto, if, implements, import, instanceof, it, interface, long, native, new, null, package, private, protected, public, return, short, static, strictfp, super, switch, synchronized, this, throw, throws, transiente, true, try, void, volatile, while. Tipo boolean char byte short int long float double String Faixa de valores true ou false 0 a 65535 -128 a 127 -32768 a 32767 -2147483648 a 2147483647 -9223372036854775808 a 9223372036854775807 1.40129846432481707 e 45 a 3.40282346638528860 e + 38 4.9406545841246544 e 324 a 1.7976931348623157 e + 308 Tamanho limitado memria disponvel

Tipos Bsicos em Java:

Prof. Vida

Programao Java Uma classe


uma aplicao ?

11

A diferena entre uma classe e uma aplicao consiste na existncia de um mtodo de execuo: public static void main(String [] a) { comandos ; }
// arquivo TesteOlaMundo.java public class TesteOlaMundo { public static void main(String [] a) { System.out.println(Ola Mundo !); } } // arquivo OlaMundo.java

Exemplo de aplicao:

Exemplo de public class OlaMundo no aplicao: {

public void main() { System.out.println(Ola Mundo !); } }

Diferena entre classe e aplicao

Os arquivos TesteOlaMundo.java e OlaMundo.java definem duas classes distintas. A classe TesteOlaMundo uma aplicao pois ela possui o mtodo public static void main(String [] a) . A classe OlaMundo no uma aplicao pois ela no possui o mtodo public static void main(String [] a). Essa classe possui um mdoto parecido, o mtodo public void main(). A diferena entre public static void main(String [] a) e public void main() a presena das palavras static e String [] a.
// arquivo testeLamp.java

Como criar class Lampada um objeto de { dentro de uma private boolean estadoDaLampada=false; aplicao?
public void acende() { estadoDaLampada = true; } public void apaga() { estadoDaLampada = false; } public void mostraEstado() { if (estadoDaLampada == true) System.out.println(A lampada estah acesa.); else System.out.println(A lamada estah apagada.); } } public class testeLamp { public static void main(String[] a) { Lampada lamp1 = new Lampada();

Prof. Vida

Programao Java
lamp1.acende(); lamp1.mostraEstado(); lamp1.apaga(); lamp1.mostraEstado(); } }

12

A palavrachave new

A criao e o uso de instncias de classes em mtodos como o public static void main(String[] a), por exemplo, mostrado no exemplo anterior so feitos atravs da palavra-chave new.

1. Sempre mantenha os dados privados. Desenvolva metodos de Recomendae acesso (get) e alteracao (set). s para o 2. Sempre inicialize os dados projeto de 3. Nao use tipos basicos em demasia numa classe. A idia substituiclasses: los por uma nova classe. Por exemplo, os dados relativos ao endereo poderiam ser substituidos por uma nica classe Classe_Endereco.

Exerccios:

1 ) Criar um modelo para representar um tringulo. O modelo dever armazenas os trs lados, verificar se os dados dos trs lados formam um tringulo e calcular o permetro do tringulo. 2 ) Implementar esse modelo em Java. 3) Criar um modelo para representar as coordenadas de um ponto em um sistema bidimensional. Esse modelo dever incluir um mtodo para mover o ponto, ou seja, modificar as suas coordenadas. 4) Implementar o modelo do exerccio 3 em Java. 5) Implementar em Java o modelo RegistroAcademico. 6) Fazendo uso do modelo desenvolvido no exerccio 3, especifique um modelo que represente uma reta. 7) Implemente o modelo do exerccio 6 em Java.

Prof. Vida

Programao Java

13

4. Aplicaes em Java Em Java, podemos criar em uma classe um mtodo especial que ser considerado o ponto de entrada do programa. A presena desse mtodo na classe far com que a classe se torne executvel. Dentro desse mtodo poderemos ter a criao e manipulao de dados e instncias de classes. Esse mtodo definido pela seguinte assinatura public static void main(String[] a). Exemplo de definio de classe:
// arquivo Ponto2D.java public class Ponto2D { private double x,y; public void inicializaPonto2D(double _x,double _y) { x = _x; y = _y; } public boolean ehIgual(Ponto2D outroPonto2D) { if ((x == outroPonto2D.x) && (y == outroPonto2D.y)) return true; else return false; } public Ponto2D origem() { Ponto2D temporario = new Ponto2D(); temporario.inicializaPonto2D(0,0); return temporario; } public Ponto2D clona() { Ponto2D temporario = new Ponto2D(); temporario.inicializaPonto2D(x,y); return temporario; } public String toString() { String resultado = "("+x+","+y+")"; return resultado; } public double distancia(Ponto2D ext) { double saida = -1.0; saida = Math.sqrt( (ext.x - x)*(ext.x - x) + (ext.y - y)*(ext.y - y) ); return saida; } }
Quadro 1 Exemplo da Classe Ponto2D

Exemplo de Aplicao:
// arquivo Ponto2D.java
public class Ponto2D { private double x,y; public void inicializaPonto2D(double _x,double _y)

Prof. Vida

Programao Java
{ x = _x; y = _y; } public boolean ehIgual(Ponto2D outroPonto2D) {if ((x == outroPonto2D.x) && (y == outroPonto2D.y)) return true; else return false; } public Ponto2D origem() { Ponto2D temporario = new Ponto2D(); temporario.inicializaPonto2D(0,0); return temporario; } public Ponto2D clona() { Ponto2D temporario = new Ponto2D(); temporario.inicializaPonto2D(x,y); return temporario; } public String toString() { String resultado = "("+x+","+y+")"; return resultado; }

14

public double distancia(Ponto2D ext) { double saida = -1.0; saida = Math.sqrt( (ext.x - x)*(ext.x - x) + (ext.y - y)*(ext.y - y) ); return saida; }

public static void main(String[] argumentos) { Ponto2D p1; Ponto2D p2,p3,p4; P1 = new Ponto2D(); p2 = new Ponto2D(); p1.inicializaPonto2D(-1.34,9.17); System.out.println("As coordenadas de P1 sao " + p1); System.out.println("As coordenadas de P2 sao "+p2); P3 = p1.clona(); p4 = p1.origem(); System.out.println("As coordenadas de P3 sao "+p3); System.out.println("As coordenadas de P4 sao "+p4); System.out.println("P1 estah na mesma posicao de P2 ? +p1.ehIgual(p2)); System.out.println("P1 estah na mesma posicao de P3 ? +p1.ehIgual(p3)); System.out.println("P1 estah na mesma posicao de P4 ? +p1.ehIgual(p4)); System.out.println("P2 estah na mesma posicao de P4 ? +p2.ehIgual(p4)); System.out.println(new Ponto2D()); System.out.println(A distancia entre P1 e P2 eh + p1.distancia(p2)); }
} Quadro 2 - Aplicao Ponto 2D

" " " "

*** Observe que a principal diferena entre os exemplos dos Quadros 1 e 2 a existncia do mtodo public static void main(String[] argumentos) {/* aqui vai o cdigo que define a aplicao*/ } **** Prof. Vida

Programao Java 5. Estruturas Fundamentais em Java // duas barras indica que a partir de seu ponto de insero, o Comentrio // resto da linha ser comentrio. s: /* define um bloco de comentrios */ Tipos de boolean Valores : true / false dados: int Intervalo de -2147483648 a 2147483647 short Intervalo de -32768 a 32767 long -9223372036854775808 a 9223372036854775807 byte -128 1 127 float + - 3.40282347 e + 38 double + - 1.7976931348623157 e 308 char 65536 especiais: \b backsapce \t tabulao \n nova linha \r retorno do carro \ aspas \ apstrofe \\ barra invertida.

15

// arquivo testeConversao.java class testeConversao Converses { public static void main(String [] a) entre tipos: { double x1 = 3.47; char letraA = 'a'; char letraB = 'b'; char letraC = 'c'; int y1 = (int)x1; int y2 = (int)letraA; System.out.println("y1="+ y1 + " y2=" + y2); System.out.println( (int)letraB ); System.out.println( (int)letraC ); } } == if ( 3 == 4 ) // testa se 3 igual a 4 Operadores != if ( letra != c) // testa se letra diferente de c. Lgicos: > if ( 3 < 4 ) // testa se 3 menor que 4 < if ( 3 > 4 ) // testa se 3 maior que 4 >= if ( x >= 4 ) // testa se x maior ou igual a 4 <= if ( x <= 4 ) // testa se x menor ou igual a 4 && if (( x < 4 )&& ( x > 1) ) // testa se x menor que 4 e maior que 1 || if (( x < 4 )|| ( x > 1)) // testa se x menor que 4 ou maior que 1

6 Arrays
A estrutura de dados do tipo Array permite armazenar uma coleo de objetos ou elementos do mesmo tipo. Por exemplo, um Array de inteiros permite armazenar um conjunto de nmeros inteiros. Um Array de Ponto2D permite armazenar um conjunto de objetos da classe Ponto2D. Prof. Vida

Programao Java Um Array precisa ser ser criado explicitamente conforme o exemplo a seguir:
int [ ] numeros = new int[10]; for (int i = 0; i < 10; i++) numeros[i]=i;

16

Nesse exemplo, um array denominado por numeros criado com a palavra reservada new. Em seguida, esse Array preenchido com nmeros inteiros atravs da instruo for ( ; ; ). A seguinte instruo imprimir o nmero 9 na sada: System.out.println( numeros[9] ); A palavra reservada new j foi utilizada anteriormente para criao de instncias de classe, como por exemplo Ponto2D p1 = new Ponto2D(). O que distingue o seu uso a presena dos ( e ) ou das [ ]. A palavra chave new sendo utilizada com [ e ] define a criao de um array. Quando usado com ( e ) instncia de classes. Um array tambm pode ser criado de maneira mais rpida quando conhecido o conjunto de elementos que ele armazenar. Por exemplo: char[ ] vogais = {a, e, i, o, u}; Nesse exemplo, o array vogais criado a partir do conjunto de cinco elementos fornecidos na mesma instruo. O posicionamento dos [ e ] pode ser feito antes ou aps da definio da varivel. Por exemplo, os dois cdigos abaixo so aceitos pelo compilador Java:
int [ ] numeros = new int[10]; int numbers [ ] = new int[10];

6.1 Arrays de Objetos. Um conjunto de objetos pode ser armazenado em um Array. Por exemplo: Lampada[ ] pinheirinho = new Lampada[8]; Nesse exemplo, um array denominado por pinheirinho dever armazenar oito (8) objetos do tipo Lmpada. Destaca-se, nesse ponto, que ainda no ocorreu a gerao de instncias de cada objeto da classe Lmpada. A seguinte instruo executa essa tarefa. for(int i = 0; i < 8; i++) pinheirinho[i] = new Lampada(); Nesse exemplo a criao de objetos Lampada feita explicitamente. 6.2 Array como argumento. Um Array pode ser utilizado como um argumento para uma funo. Ou seja, a funo no receber apenas um nico elemento mas uma coleo. Quando isso ocorre, dentro da funo, o programador necessida saber quantos elementos esto contidos nessa coleo. Diferentemente de outras linguagens de programao, como por exemplo o C, um array em java uma estrutura de informaes. Dessa estrutura, uma das principais informaes o tamanho ou length do array. O exemplo a seguir ilustra como essa informao pode ser utilizada.
/////arquivo demoArrays.java /*1*/public class demoArrays /*2*/{

Prof. Vida

Programao Java
/*3*/ /*4*/ /*5*/ /*6*/ /*7*/ public static void main(String[] a) { int [] numeros = {1,2,3,4,5,6,7,8,9,10}; imprimeImpares(numeros); }

17

/*8*/ public static void imprimeImpares(int [] lista) /*9*/ { /*10*/ double resto; /*11*/ for (int i = 0; i < lista.length; i++) /*12*/ { resto = lista[i] % 2.0; /*13*/ if ( resto != 0.0) System.out.println(lista[i]); /*14*/ } /*15*/ } /*16*/}

6.3 Array como valor de retorno O valor de retorno de uma funo pode ser um Array. Nesse caso, no h a necessidade de especificar no cdigo qual o tamanho desse array. O exemplo anterior modificado para ilustrar esses conceitos.
/////arquivo demoArrays.java /*1*/public class demoArrays /*2*/{ /*3*/ public static void main(String[] a) /*4*/ { /*5*/ int [] numeros = {1,2,3,4,5,6,7,8,9,10}; /*5.1*/ int [] numerosInv = inverteOrdem(numeros); /*6*/ imprimeImpares(numeros); /*6.1*/ System.out.println("Numeros Invertidos:"); /*6.2*/ imprimeImpares(numerosInv); /*7*/ } /*8*/ public static void imprimeImpares(int [] lista) /*9*/ { /*10*/ double resto; /*11*/ for (int i = 0; i < lista.length; i++) /*12*/ { resto = lista[i] % 2.0; /*13*/ if ( resto != 0.0) System.out.println(lista[i]); /*14*/ } /*15*/ } /*15.1*/ public static int[ ] inverteOrdem(int [ ] lista) /*15.2*/ { /*15.3*/ int[] saida = new int[lista.length]; /*15.4*/ for (int i = 0; i < lista.length; i++) /*15.5*/ saida[saida.length-i-1] = lista[i]; /*15.6*/ return saida; /*15.7*/ } /*16*/}

Observe no cdigo anterior que a funo InverteOrdem definida nas linhas 15.1 a 15.7 recebe como um argumento um array de inteiros denominado por lista e essa funo retorna um array de inteiros. O tamanho do array lista obtido atravs do dado length na linha 15.3. Esse tamanho utilizado na definio da varivel de sada denominada por int[ ] saida. 6.4 Exerccios. 1. Criar uma funo que imprima um array de objetos Ponto2D. 2. Criar uma funo que receba uma array de objetos Triangulo e verifique quantos desses elementos so equilteros. Prof. Vida

Programao Java

18

7 - Laos
Lao indeterminado: class contador { public static void main(String [] a) { int x = 10; while (x > 0)

{
System.out.println(x); x-- ;

}
} } Lao indeterminado 2: class contador { public static void main(String [] a) { int x = 10;

do {
System.out.println(x); x-- ; }while (x > 0); } } class contador { public static void main(String [] a) { for (int x = 10; x >0; x--) System.out.println(x); } } break; // interrompe o lao continue; // realiza uma nova iterao return; // abandona o mtodo em execuo. System.exit(0); // encerra a aplicao com retorno 0 (zero).

Lao determinado:

Interrupo de lao:

Exemplo de interrupo continue:

class divisao { public static void main(String[] a) { for (int i = 1; i < 100; i++) { if ( (i%3) == 0) continue; System.out.println(i); } } }

Prof. Vida

Programao Java Exemplo de interrupo break: class divisao2 { public static void main(String[] a) { for (int i = 1; i < 100; i++) { if ( (i%7) == 0) break; System.out.println(i); } System.out.println("fim"); } } class divisao3 { public static void main(String[] a) { for (int i = 1; i < 100; i++) { if ( (i%7) == 0) return; System.out.println(i); } System.out.println("fim"); } }

19

Exemplo de interrupo return:

8 A Classe String
String: Como criar uma String: Como concatenar uma String? Uma String uma sequncia de caracteres. Diferentemente dos outros tipos de dados, uma String uma classe. String mensagem = ; String mensagem = new String(); // arquivo concatenaString.java class concatenaString { public static void main(String [] a) { String p1 = "ola"; String p2 = "mundo"; String p3 = p1 + p2; String p4 = p1 + " " + p2; System.out.println(p3); System.out.println(p4); }}

Prof. Vida

Programao Java

20

9 Como ler do Teclado?


Entrada Texto // arquivo LerTeclado.java import java.io.*; public class LerTeclado { public String string() { byte[] b = new byte[128]; try { System.in.read(b); } catch (java.io.IOException e) {System.out.println(e);} String saida = new String(b); return saida; } public double real() { return Double.parseDouble(string()); } public int inteiro() { return Integer.parseInt(string()); } public static void main(String [] a) { LerTeclado entrada = new LerTeclado(); System.out.println("Digite uma frase:"); String s = entrada.string(); System.out.println("Frase Lida="+s); System.out.println("Digite um numero:"); double n = entrada.real(); System.out.println("Numero Lido" + n); } } import java.util.Scanner; class teste{ public static void main(String[] a){ Scanner s = new Scanner(System.in); System.out.println("\n Digite alguma coisa:"); String t = s.next(); System.out.println("Voce digitou a String:" + t); System.out.println("\n Digite um numero inteiro:"); int n = s.nextInt(); System.out.println("Voce inseriu o numero:" + n); System.out.println("\n Digite um numero com casa Prof. Vida

A Classe Scanner:

Programao Java + decimal:"); double m = s.nextDouble(); System.out.println("Voce inseriu o numero:" + m); } } Janela de Leitura:

21

// arquivo testeTeclado1.java class testeTeclado1 { public static void main(String [] a) { String m1; m1 = javax.swing.JOptionPane.showInputDialog ("Digite um texto"); System.out.println(m1); } } Apresenta uma janela ao usurio. Utilizada para solicitar uma entrada de texto e apresentar as opes yes/no/cancel, por exemplo. // arquivo testeTeclado2.java class testeTeclado2 { public static void main(String [] a) { int n1; double n2; n1 = Integer.parseInt( javax.swing.JOptionPane.showInputDialog( Digite um numero)); n2 = Double.parseDouble( javax.swing.JOptionPane.showInputDialog( Digite um outro numero)); javax.swing.JOptionPane.showMessageDialog ( null, n1+*+n2+=+n1*n2, texto, javax.swing.JOptionPane.INFORMATION_MESSAGE); }}

A classe JOptionPane:
Outro exemplo leitura do teclado:

10 A CLASSE JOptionPane
A classe javax.swing.JOptionPane permite apresentar uma caixa e a partir dessa caixa, o usurio interagir com ela, fornecendo algumas informaes. So exemplos do emprego da classe JOptionPane:
public static void exemplo1() { int escolha = JOptionPane.showConfirmDialog(null, "escolha um", "escolha um", JOptionPane.YES_NO_OPTION); if (escolha == 0) System.out.println( "Voce selecionou \"YES\" "); if (escolha == 1) System.out.println( "Voce selecionou \"NO\" "); if (escolha == -1) System.out.println( "Voce precisa selecionar uma opcao!"); }

Prof. Vida

Programao Java
public static void exemplo2() { Object[] options = { "OK", "CANCEL" }; int selecionado; selecionado = JOptionPane.showOptionDialog (null,"Click OK to continue" ,"Warning", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); if (selecionado == 0) {System.out.println ("Voce selecionou OK");} else if (selecionado == 1) {System.out.println( "Voce selecionou CANCEL");} else {System.out.println( "Voce selecionou " + selecionado);} } public static void exemplo3() { Object[] possibleValues = { "First", "Second", "Third" }; Object selectedValue = JOptionPane.showInputDialog( null,"Choose one", "Input" , JOptionPane.INFORMATION_MESSAGE , null, possibleValues , possibleValues[0]); if (selectedValue == possibleValues[0]) {System.out.println( "Voce selecionou o primeiro");} if (selectedValue == possibleValues[1]) {System.out.println( "Voce selecionou o segundo");} if (selectedValue == possibleValues[2]) {System.out.println( "Voce selecionou o terceiro");} }

22

Exemplo do uso da classe JOptionPane.

// arquivo testeJOptionPane.java import javax.swing.*; class testeJOptionPane { public static void exemplo1() { int escolha = JOptionPane.showConfirmDialog(null, "escolha um", "escolha um", JOptionPane.YES_NO_OPTION); if (escolha == 0) System.out.println( "Voce selecionou \"YES\" "); if (escolha == 1) System.out.println( "Voce selecionou \"NO\" "); if (escolha == -1) System.out.println( "Voce precisa selecionar uma opcao! "); } ////////////////////////////////////////// public static void exemplo2() { Object[] options = { "OK", "CANCEL" }; int selecionado; selecionado = JOptionPane.showOptionDialog Prof. Vida

Programao Java (null,"Click OK to continue" ,"Warning", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]); if (selecionado == 0) {System.out.println ("Voce selecionou OK");} else if (selecionado == 1) {System.out.println( "Voce selecionou CANCEL");} else {System.out.println( "Voce selecionou " + selecionado);} } /////////////////////////////////////////// public static void exemplo3() { Object[] possibleValues = { "First", "Second", "Third" }; Object selectedValue = JOptionPane.showInputDialog( null,"Choose one", "Input" ,JOptionPane.INFORMATION_MESSAGE , null, possibleValues , possibleValues[0]); if (selectedValue == possibleValues[0]) {System.out.println( "Voce selecionou o primeiro");} if (selectedValue == possibleValues[1]) {System.out.println( "Voce selecionou o segundo");} if (selectedValue == possibleValues[2]) {System.out.println( "Voce selecionou o terceiro");} } ////////////////////////////////////////////// public static void main(String[] a) { exemplo1(); exemplo2(); exemplo3(); JOptionPane.showMessageDialog(null ,Fim do Programa); } }

23

Prof. Vida

Programao Java Alguns Tipos de Janelas: Tipos de Mensagens: showConfirmDialog : Pede uma confirmao com botes de yes/no/cancel. showInputDialog : Fornece um prompt para entrada do usurio. showMessageDialog :Informa ao usurio que alguma coisa aconteceu. showOptionDialog : A unio das trs acima. ERROR_MESSAGE INFORMATION_MESSAGE WARNING_MESSAGE QUESTION_MESSAGE PLAIN_MESSAGE DEFAULT_OPTION YES_NO_OPTION YES_NO_CANCEL_OPTION OK_CANCEL_OPTION

24

Tipos de Conjunto de Botes:

Exerccios:

1) Criar uma aplicao Java que calcule o fatorial de um numero. Esse nmero lido atravs do teclado. 2) Criar uma aplicao Java que leia um nmero do teclado e verifique se esse nmero par ou mpar. (dica: utilize o perador (%) que retorna o reto da divisao de dois numeros. Por exemplo: if ( ( 50 % 5 ) == 0 ) // numero divisivel por 5.

Prof. Vida

Programao Java

25

11 Reutilizao de Classes.
Um dos aspectos positivos e de grande interesse na OO, a possibilidade de reutilizarmos uma classe. Por exemplo, a classe Ponto2D, vista anteriormente, poderia ser utilizada para compor uma outra classe, a classe Reta a seguir.
//////////// ******************** arquivo Ponto2D.java class Ponto2D { private double x,y; public void inicializaPonto2D(double _x,double _y) { x = _x; y = _y; } public boolean ehIgual(Ponto2D outroPonto2D) { if ((x == outroPonto2D.x) && (y == outroPonto2D.y)) return true; else return false; } public Ponto2D origem() { Ponto2D temporario = new Ponto2D(); temporario.inicializaPonto2D(0,0); return temporario; } public Ponto2D clona() { Ponto2D temporario = new Ponto2D(); temporario.inicializaPonto2D(x,y); return temporario; } public String toString() { String resultado = "("+x+","+y+")"; return resultado; } } ////// ******************** arquivo Reta.java public class Reta { Ponto2D p1 = new Ponto2D(); Ponto2D p2 = new Ponto2D(); public void setPontos(Ponto2D v1, Ponto2D v2) { setP1(v1); setP2(v2); } public void setP1(Ponto2D v) {p1=v;} public void setP2(Ponto2D v) {p2=v;} public Ponto2D getP1() {return p1;} public Ponto2D getP2() {return p2;} public String toString() { String saida = "Reta formada pelos pontos " + p1.toString() + " e " + p2.toString(); return saida; } public static void main(String [] a)

Prof. Vida

Programao Java
{ Ponto2D pa = new Ponto2D(); pa.inicializaPonto2D(3,4); Reta r = new Reta(); r.setPontos(pa, pb); System.out.println(r); }} Ponto2D pb = new Ponto2D(); pb.inicializaPonto2D(7,8);

26

Prof. Vida

Programao Java

27

12 Construtores e Sobrecarga
O que so construtores? Construtores so mtodos especiais, que so chamados automaticamente quanto instncias so criadas atravs da palavrachave new. Atravs desses construtores, pode-se garantir que o cdigo que eles contm ser executado antes de qualquer cdigo em outros mtodos, j que uma instncia de uma classe s pode ser usada depois de ter sido criada com new. Construtores so particularmente teis para inicializar campos de instncias de classes para garantir que, quando mtodos dessas instncias forem chamados, eles contenham valores especficos e no os default.

O construtor um mtodo que obrigatoriamente possui o mesmo Como nome da classe. Esse mtodo no possui o valor de retorno informado. construtores O exemplo abaixo apresenta, em negrito, um construtor para a classe so Reta. Observe que o construtor modifica como a classe instanciada representados? (destaque em negrito e itlico no cdigo a seguir). Exemplo de definio de construtores:
////// ******************** public class Reta { Ponto2D p1; Ponto2D p2; arquivo Reta.java

public Reta(Ponto2D pA, Ponto2D pB) {p1=pA; p2=pB;} public void setPontos(Ponto2D v1, Ponto2D v2) { setP1(v1); setP2(v2); } public void setP1(Ponto2D v) {p1=v;} public void setP2(Ponto2D v) {p2=v;} public Ponto2D getP1() {return p1;} public Ponto2D getP2() {return p2;} public String toString() { String saida = "Reta formada pelos pontos " + p1.toString() + " e " + p2.toString(); return saida; } public static void main(String [] a) { Ponto2D pa = new Ponto2D(); Ponto2D pb = new Ponto2D(); pa.inicializaPonto2D(3,4); pb.inicializaPonto2D(7,8); Reta r = new Reta(pa,pb); System.out.println(r);

}}

Prof. Vida

Programao Java Sobrecarga:

28

Em algumas situaes, ser til ou interessante poder executar um mtodo em uma classe passando mais ou menos argumentos. Por exemplo, consideremos a classe Reta. Nessa classe, o construtor poderia ser chamado de duas formas. A primeira delas fornecendo os dois pontos que definem a reta. Na Segunda, apenas um ponto e o outro ponto de definio poderia ser considerado a origem. Apesar de terem o mesmo nome, essas duas assinaturas desse construtor so diferentes. Esse recurso denominado de sobrecarga. Observe, no cdigo abaixo, a sobrecarga dos seguintes mtodos: construtor, setPontos, setP1 e setP2. Java permite apenas uma nica assinatura por mtodo. Uma assinatura formada por: <nome do mtodo> (<argumentos>).
////// ******************** public class Reta { Ponto2D p1; Ponto2D p2; arquivo Reta.java

Assinatura:

Exemplo de sobrecarga de mtodos.

public Reta(Ponto2D pA, Ponto2D pB) {p1=pA; p2=pB;} public Reta(Ponto2D pA) {this(pA, pA.origem());} //observacao: this(...) chama outro construtor !! public void setPontos(Ponto2D v1, Ponto2D v2) { setP1(v1); setP2(v2); } public void setPontos(double x1, double y1 , double x2, double y2) { setP1(x1,y1); setP2(x2,y2); } public void setP1(Ponto2D v) {p1=v;} public void setP2(Ponto2D v) {p2=v;} public void setP1(double x, double y) {p1= new Ponto2D(); p1.inicializaPonto2D(x,y);} public void setP2(double x, double y) {p2= new Ponto2D(); p2.inicializaPonto2D(x,y);} public Ponto2D getP1() {return p1;} public Ponto2D getP2() {return p2;} public String toString() { String saida = "Reta formada pelos pontos " + p1.toString() + " e " + p2.toString(); return saida; } public static void main(String [] a) { Ponto2D pa = new Ponto2D(); Ponto2D pb = new Ponto2D(); pa.inicializaPonto2D(3,4); pb.inicializaPonto2D(7,8); Reta r = new Reta(pa,pb); System.out.println(r);} }

Prof. Vida

Programao Java A palavra reservada


this(...) :

29

Um construtor no pode ser chamado diretamente. Java cria internamente para cada instncia uma auto-referncia, ou seja, uma referncia prpria instncia. Essa referncia representada pela palavra chave this. 1) Escreva um construtor para a classe Lampada de forma que instncias desta s possam ser criadas se um estado inicial for passado para o construtor. Esse estado pode ser o valor booleano que indica se a lmpada est acesa (true) ou apagada (false).

Exerccios:

2) Identifique e explique o(s) erro(s) na classe abaixo: class Ponto2D { private double x,y; Ponto2D() { Ponto2D(0.0,0.0); } Ponto2D(double coord1,double coord2) { x = coord1; y = coord2; } } // fim da classe 3) Escreva uma classe denominada por Equation2g que permita calcular as razes de uma equao do segundo grau. a.x 2 + bx + c = 0 Escreva um construtor onde o usurio poder fornecer os valores de a, b e c. e outro construtor onde o usurio no necessita fornecer valor algum. 4) Escreva dois construtores para a classe Ponto2D: um sem argumentos que considere que o ponto est na origem, ou seja, com coordenadas (0,0), e um que receba dois argumentos do tipo double e que os use para inicializar os campos da classe.

Prof. Vida

Programao Java

30

5) Escreva em Java a classe NumeroComplexo que represente um nmero complexo. A classe dever ter os seguintes mtodos: Construtor que obrigue o usurio fornecer a parte real e imaginria do nmero. toString( ) print( ), que deve imprimir o nmero complexo encapsulado usando a notao a+bi onde a a parte real e b a imaginria; isEquals( NumeroComplexo ), que recebe outra instncia da classe NumeroComplexo e retorna true se os valores dos campos encapsulados forem iguais aos da instncia passada como argumento; somar( NumeroComplexo ), que recebe outra instncia da classe NumeroComplexo e soma este nmero complexo com o encapsulado usando a frmula (a+bi)+(c+di) = (a+c)+(b+d)i; subtrair( NumeroComplexo ), que recebe outra instncia da classe NumeroComplexo e subtrai o argumento do nmero complexo encapsulado usando a frmula (a+bi)(c+di) = (ac)+(bd)i; multiplicar( NumeroComplexo ), que recebe outra instncia da classe NumeroComplexo e multiplica este nmero complexo com o encapsulado usando a frmula (a+bi) * (c+di) = (acbd)+(ad+bc)i; dividir( NumeroComplexo ), que recebe outra instncia da classe NumeroComplexo e divide o nmero encapsulado pelo passado (a + bi ) (ac + bd ) (bc ad ) = 2 + 2 como argumento usando a frmula i (c + di ) c +d2 c +d2 6 ) Escreva trs construtores para a classe NumeroComplexo. Um construtor dever receber os dois valores (real e imaginrio) como argumentos, o outro somente o valor real, considerando o imaginrio como sendo zero, e o terceiro construtor no recebe argumentos, considerando as partes real e imaginria do nmero complexo como sendo iguais a zero. 7 ) Modifique a classe Equation2g para que esta possa calcular o valor de razes complexas como o exemplo abaixo: 1.x 2 + 1.x + 2 = 0 A soluo calculada da seguinte forma:
x1, 2 = x1, 2 1 12 4 * 1 * 2 1 7 1 2.6457 1 = = 2 *1 2 2 1 2.6457 = i 2 2

Prof. Vida

Programao Java

31

13 Campos e Mtodos Estticos.


Introduo: Campos estticos em uma classe so compartilhados por todas as instncias dessa classe. Em outras palavras, somente um valor ser armazenado em um campo esttico, e caso este valor seja modificado por uma das instncias dessa classe, a modificao ser refletida em todas as outras instncias dessa classe. //************** arquivo testeEstatico.java class Estatico { private static int x; private int y; public void setXY(int novoX, int novoY) { setX(novoX); setY(novoY);} public void setX(int novoX) {x=novoX;} public void setY(int novoY) {y=novoY;} public String toString() {return ("x="+ x + "\t y="+y); } public void print() { System.out.println(toString()); } } public class testeEstatico { public static void main(String[] args) { Estatico a = new Estatico(); Estatico b = new Estatico(); a.setXY(1,2); b.setXY(3,4); System.out.println("b:"+ b); System.out.println("a:"+ a); } } Qual o valor impresso para o objeto a?
Resposta:

Exemplo de Campo Esttico:

Resultado da Execuo:

Prof. Vida

Programao Java
Mtodos Estticos:

32

Mtodos estticos em uma classe so declarados com o modificador static, que deve preceder o tipo de retorno do mtodo. A diferena principal entre mtodos estticos e mtodos noestticos que os mtodos estticos podem ser chamados sem a necessidade de criao de instncias das classes s quais pertencem. Mtodos estticos so adequados para implementar bibliotecas de rotinas que sejam independentes de dados armazenados em classes, ou seja, mtodos que s necessitem dos dados passados como argumentos para efetuar a tarefa requerida.

Exemplo de Mtodo Esttico:

//******************* arquivo testeResistor.java

// definicao da classe class Resistor { static double calculaSerie( double r1 ,double r2) {return r1+r2;} static double calculaParalelo(double r1 ,double r2) { double saida=-1.0; if ((r1+r2) != 0.0) saida = r1*r2/(r1+r2); return saida; } } // teste da classe. class testeResistor { public static void main(String [] arg) { double calculo = Resistor.calculaParalelo(1.0,1.0); double calculo2 = Resistor.calculaSerie(1.0,1.0); System.out.println( calculo + "\n" + calculo2); } }

Se um mtodo for chamado diretamente a partir do mtodo main, Mtodos este mtodo dever ser obrigatoriamente declarado como esttico. chamados O exemplo testeResistor a seguir ilustra essa necessidade. diretamente do mtodo main:

Prof. Vida

Programao Java
Exemplo de // definicao da Aplicacao Mtodos class testeResistor2 { static double calculaSerie( double r1 chamados ,double r2) diretamente do {return r1+r2;} mtodo main:
//******************* arquivo testeResistor2.java

33

static double calculaParalelo(double r1 ,double r2) { double saida=-1.0; if ((r1+r2) != 0.0) saida = r1*r2/(r1+r2); return saida; } public static void main(String [] arg) { double calculo = calculaParalelo(1.0,1.0); double calculo2 = calculaSerie(1.0,1.0); System.out.println( calculo + "\n" + calculo2); }
}

Outro exemplo:

// arquivo CalculoDePrecoDeTerreno.java class CalculoDePrecoDeTerreno { public static void main(String[] argumentos) { double preco; System.out.print( "O preco do terreno N1 eh "); preco = precoDoTerreno(450,1); System.out.println(preco); System.out.print( "O preco do terreno Q2 eh "); preco = precoDoTerreno(475,4); System.out.println(preco); System.out.print( "O preco do terreno F3 eh "); System.out.println(precoDoTerreno(525,2)); } public static double precoDoTerreno (double area,int localizacao) { double preco = 0; if (localizacao == 1) preco = area*22.00; if (localizacao == 2) preco = area*27.00; if (localizacao == 3) preco = area*29.50; if (localizacao == 4) preco = area*31.50; if (localizacao == 5) preco = area*34.50; return preco; } }

Prof. Vida

Programao Java
Exerccios: 1) Escreva a classe ConversaoDeUnidadesDeArea com mtodos estticos para converso das unidades de rea segundo a lista abaixo. 1 metro quadrado = 10.76 ps quadrados 1 p quadrado = 929 milhas quadradas 1 milha quadrada = 640 acres 1 acre = 43.560 ps quadrados 2) Escreva a classe ConversaoDeUnidadesDeTempo com mtodos estticos para converso aproximada das unidades de segundo a lista abaixo. 1 minuto = 60 segundos 1 hora = 60 minutos 1 dia = 24 horas 1 semana = 7 dias 1 ms = 30 dias 1 ano = 365.25 dias

34

Prof. Vida

Programao Java

35

14 Leitura e Escrita.
Introduo: Java no possui uma funo especfica para entrada e sada de textos em arquivo. O exemplo a seguir apresenta como essa entrada e sada poderia ser implementada em Java. Nesse exemplo, uma classe chamada Arquivo criada. O construtor da classe obriga o seu usurio fornecer o nome do aquivo ou instncia da classe File. Duas funes teis esto a disposio: ler() e escrever(String). //////////////////// import java.io.*; class Arquivo { private File name; public Arquivo(String nome) { name= new File(nome); } public Arquivo(File v){name=v;} public String ler() { String arq = "Arquivo lido:" +name.getName() +"\n"; if (name.exists()) { if (name.isFile()) { try { RandomAccessFile r = new RandomAccessFile(name,"r"); StringBuffer buf = new StringBuffer(); String text; while ( (text=r.readLine()) != null) arq += text + "\n"; } catch (IOException erro) {System.out.println( "***ERRO: Nao foi possivel ler \n\t" + erro);} } } return arq; } public void escrever(String texto) { try{ if (name.exists()) {name.delete();} RandomAccessFile r = new RandomAccessFile(name,"rw"); StringBuffer buf = new StringBuffer(); r.writeBytes(texto); } catch (IOException erro) {System.out.println( "***Erro de Escrita:\n\t" + erro); } } } Prof. Vida arquivo exemploIO.java

Exemplo de Entrada e Sada de Textos:

Programao Java

36

public class exemploIO { public static void main(String[] arg) { Arquivo arq = new Arquivo("c://exemplo.txt"); arq.escrever("Ola Mundo!\n Numero Gerado:" + Math.random()); String textoLido = arq.ler(); System.out.println(textoLido); } }

Prof. Vida

Programao Java

37

15 Herana
Introduo: Durante o processo de representao de objetos ou entidades no ambiente computacional, pode-se observar algumas caractersticas comuns entre esses objetos. Por exemplo, em um ambiente acadmico, duas entidades podem ser facilmente identificadas, Aluno e Professor. Tanto Aluno, como Professor possuem atributos comuns a qualquer pessoa tais como: nome, data de nascimento, telefone e e-mail. Poderamos dizer que esses atributos comuns so associados a uma outra entidade chamada Pessoa. Dessa forma, pode-se afirmar que Aluno e Professor compartilham essa estrutura de informaes. Ou que Aluno uma especializao de Pessoa e Professor tambm uma especializao de Pessoa. Aluno e Professor definem atributos especficos de cada entidade. Um atributo especfico do aluno o curso que ele est matriculado, por exemplo. Um atributo especfico do professor a disciplina que ele ministra, por exemplo. Representa-se esse tipo de estrutura atravs do conceito de Herana. Uma classe dita classe filha, quando essa herda a estrutura de uma outra classe, denominada de classe pai. Por exemplo, pode-se dizer que Pessoa a classe pai de Aluno e Professor. A figura a seguir ilustra essa representao em linguagem UML.

Exemplo de representa o da estrutura de Herana:

Essa estrutura de herana pode ser denominada de estrutura um. Ou seja, Professor um(a) Pessoa, Aluno um(a) Pessoa. Representando os dados nesse tipo de estrutura, h a possibilidade de compartilhamento de dados e mtodos entre as classes pai e filha. As classes pai e filha tambm so denominadas de superclasse e Prof. Vida

Programao Java
classe.

38

Cdigo parcial da classe Pessoa:

// arquivo Pessoa.java import java.util.Date; public class Pessoa { private String nome; private Date dataNascimento; private String telefone; private String email; public Pessoa(String nome) { } public void setNome(String _nome) { }

public void setDataNascimento(Date data) {} public void setTelefone(String fone) { } public void setEmail(String mail) { }

public String toString() {return null; } public String getNome() {return null; }

public Date getDataNascimento(){return null;} public String getTelefone() { return null;} public String getEMail() {return null; } }

Cdigo parcial da classe filha Aluno:

// arquivo Aluno.java public class Aluno extends Pessoa { private String curso; public Aluno(String v) { super(v); } public void setCurso(String _curso) {} public String toString() {return null; } public String getCurso() {return null; } } // arquivo Professor.java public class Professor extends Pessoa { private String disciplina; public Professor(String v) {super(v); } public void setDisciplina(String _materia){} public String toString() {return null;} public String getDisciplina() {return null;} }

Cdigo parcial da classe filha Professor:

Prof. Vida

Programao Java
Cdigo completo da import java.util.*; classe Pessoa:
public class private private private private // arquivo Pessoa.java

39

Pessoa { String nome; Date dataNascimento; String telefone; String email;

public Pessoa(String v) { setNome(v);} public void setNome(String v) { nome = v; } public void setDataNascimento(int dia, int mes, int ano) { dataNascimento = new Date((ano-1900),(mes-1),dia); } public void setTelefone(String fone) { telefone = fone;} public void setEmail(String v) { email = v; } public String toString() { String saida="\nDados Pessoais:"; saida += "\n\tNome:"+ getNome(); saida += "\n\tNascimento:"+ dataNascimento; saida += "\n\ttelefone:"+ getTelefone(); saida += "\n\tE-Mail:"+ getEMail(); return saida; } public String getNome() {return nome; } public Date getDataNascimento() {return dataNascimento; } public String getTelefone() {return telefone;} public String getEMail() { return email;} }

Cdigo Completo da classe Professor:

// arquivo Professor.java public class Professor extends Pessoa { private String disciplina; public Professor(String v) {super(v);} public void setDisciplina(String v) {disciplina=v; }

public String toString() { String saida=super.toString(); saida += "\nDados Acadmicos do Professor:"; saida += "\n\tDisciplina: "; saida += getDisciplina(); return saida; } public String getDisciplina() {return disciplina;} } A palavra Sempre que uma classe filha precisar se referenciar a uma classe pai, a palavra super pode ser usada. Na classe Professor, essa palavra utilizada no construtor para chamar o contrutor da classe pai. Nesse caso, super( parmetros ); . Prof. Vida

super:

Programao Java

40

Uma classe filha chama um mtodo da classe pai atravs da seguinte sintaxe de instruo: super.<nome do mtodo da classe pai> Por exemplo, o mtodo toString() da classe Professor chama o mtodo toString() da classe Pessoa atravs da instruo super.toString().
Cdigo do programa de teste do exemplo considerado.

// arquivo testeAcademico.java import javax.swing.*; import java.util.*; public class testeAcademico { public static void main(String args[]) { Professor p1 = novoProfessor(); System.out.println(p1); } // mtodo de auxlio public static Professor novoProfessor(){ String nome = JOptionPane.showInputDialog ("Digite o nome"); int ano = Integer.parseInt( JOptionPane.showInputDialog ("Digite o ano de nascimento")); int mes = Integer.parseInt( JOptionPane.showInputDialog ("Digite o mes de nascimento")); int dia = Integer.parseInt( JOptionPane.showInputDialog ("Digite o dia de nascimento")); String fone = JOptionPane.showInputDialog ("Digite o numero de telefone"); String mail = JOptionPane.showInputDialog ("Digite o email"); String disciplina = JOptionPane.showInputDialog ("Digite a Disciplina do Professor"); Professor saida = new Professor(nome); saida.setDataNascimento(dia,mes,ano); saida.setTelefone(fone); saida.setEmail(mail); saida.setDisciplina(disciplina); return saida; } }

Comentrios:

O mtodo setDataNascimento utilizado no programa anterior, escrito em caracter itlico e sublinhado, est fazendo referncia ao mtodo da classe pai e no o mtodo da classe Professor.

Prof. Vida

Programao Java
Como evitar que um determinado mtodo seja sobreescrito?.

41

O modificador final inserido na assinatura do mtodo define que o mtodo no poder ser sobre-escrito por nenhuma classe filha. O modificador final, ilustrado abaixo, no mtodo getEmail() da classe Pessoa define que esse mtodo no pode ser sobre-escrito nas classes filhas.

Qualquer tentativa de (re)definio desse mtodo em uma classe filha ser considerada como erro. Por exemplo, a classe Professor, se compilada fornecer a seguinte mensagem de erro:

Exerccio:

1) Implementar a classe Aluno. 2) Implementar a classe Ponto3D que dever ser filha da classe Ponto2D. A classe Ponto3D dever armazenar trs coordenadas. 3) Criar uma classe ProfessorPosGraduacao. Essa classe dever ser filha da classe Professor e possuir a estrutura definida no diagrama UML ao lado.

Prof. Vida

Programao Java

42

16 Interfaces
Introduo:

Um dos aspectos interessantes da OO a capacidade de herana mltipla, ou seja, uma classe ser classe filha de duas outras classes. Infelizmente Java no permite essa representao. Ou seja, o seguinte exemplo de cdigo NO ACEITO pelo compilador java:
public class MinhaClasse extends classePai1, classePai2, classePai3

Como alternativa a essa limitao, o Java permite sim, a implementao de classes promessa. Uma classe promessa denominada em Java como
interface. O que uma interface?

uma promessa de que uma classe herdeira implementar certos mtodos com certas caractersticas. Uma interface define apenas as assinaturas dos mtodos e no os cdigos. Esses cdigos sero definidos pelas classes que a implementarem. Uma interface no possui atributos. Todo e qualquer atributo definido em uma interface tratado como constante.

Exemplo de Herana Mltipla

Como representar uma classe Automovel em Java? Uma classe poderia representar a entidade veculo. Nesse contexto, por exemplo, um veculo pode ser do tipo Terrestre, Martimo ou Areo ; pode ser movido por um motor que possui uma potncia definida e possui um ano de fabricao. Outra classe poderia representar a entidade Bens de Consumo, por exemplo. Nessa classe, a informao importante destacada aqui o Clculo de Depreciao do bem de consumo. Pode-se ento representar uma classe Automovel como sendo filha das classes Veculo e Bens_de_Consumo, conforme ilustra o diagrama abaixo.

Prof. Vida

Programao Java
Exemplo de Representa o de uma interface

43

Observe que nesse diagrama, a interface possui a referncia <<interface>> antes do seu nome. Exemplo de interface:
///////////// { // metodo sem o corpo. Apenas a assinatura! public double calculoDepreciacao( int anoFabricacao , double taxa); } //// fim do arquivo !! arquivo Bens_de_Consumo.java public interface Bens_de_Consumo

Prof. Vida

Programao Java
Exemplo de classe:
/////////////////// public class Veiculo { /** * * * * */ private int Tipo=0; private int Potencia_do_Motor; private int Capacidade_de_Pessoas; private int Ano; public void setTipo(int valor) {if ( (valor ==0) ||(valor ==1) ||(valor ==2)) Tipo = valor; } public void setPotencia(int valor) {Potencia_do_Motor = valor;} public void setCapacidadePessoas(int valor) { Capacidade_de_pessoas = valor;} public void setAno(int valor) {Ano = valor;} public int getTipo() {return Tipo;} public int getPotenciaDoMotor() { return Potencia_do_Motor; } public int getCapacidadeDePessoas() { return Capacidade_de_Pessoas;} public int getAno() { return Ano;} } Qual o seu tipo? 0 -> Maritmo, 1 -> Terrestre, 2 -> Aereo arquivo Veiculo.java

44

Prof. Vida

Programao Java
Exemplo da classe que implementa uma interface:
/////////////////////// arquivo Automovel.java

45

public class Automovel extends Veiculo

implements Bens_de_Consumo {
private double Valor; public double calculoDepreciacao( int anoFabricacao , double taxa) { java.util.Date hoje = new java.util.Date(); int anoHoje = 1900+hoje.getYear(); return (Valor*(1-(Math.abs(anoHoje-anoFabricacao) *(1-taxa/100))/100)); } public void setValor(double v) {Valor=v;} public double getValor() { return Valor;} }

Comentrios:

O mtodo calculoDepreciacao(int anoFabricacao, double


taxa) definido na interface Bens_De_Consumo necessita obrigatoriamente ser

definido na classe que a implementa, nesse caso, a classe Automvel. Uma classe pode implementar mltiplas interfaces. De maneira genrica, exemplifica-se:
public class MinhaClasse implements interface1, interface2, interface3

Durante a compilao, a mensagem de advertncia a seguir aparecer. Essa Comentrios da mensagem refere-se classe Date que , atualmente, uma classe deprecated, ou Compilao seja, existe outra classe melhor para representar datas. Apesar disso, a classe Date pode ser utilizada sem maiores inconvenientes.

Prof. Vida

Programao Java O que acontece se, por exemplo, a classe Veiculo possuir um mtodo com a Mtodos com a mesma mesma assinatura de um mtodo da interface Bens_de_Consumo ? assinatura Para responder a essa questo, 1- Insira na classe Veiculo o seguinte mtodo:
public void comum() {System.out.println("classe veiculo");}

46

2 - Insira na interface Bens_De_Consumo a seguinte promessa de implementao:


public void comum();

O cdigo abaixo poder ser compilado sem erros? O que resulta da sua execuo?

Prof. Vida

Programao Java

47

17 Pacotes e Classes
Introduo:

Foi visto durante o curso que a criao de uma aplicao em Java envolve a criao de vrias classes. Mesmo que seja usado apenas um nico arquivo .java contendo os fontes das classes, para cada classe, um arquivo .class gerado para cada classe definida. Sem um mecanismo de organizao, seria necessrio descobrir que classes so necessrias para a execuo de uma aplicao qualquer, e a falta de uma classe poderia impedir a execuo de toda a aplicao. Com a finalidade de organizar esse conjunto de classes, o Java fornece uma soluo. Java prov um mecanismo de agrupamento de classes em pacotes (packages). Nesse pacote, pode-se criar grupos de classes que mantm uma relao entre si. Um pacote pode servir tambm para indicar quem criou as classes. At o presente momento, as classes tm sido criadas sem declarar a que pacote elas pertencem. Todas as classes criadas com essa caracterstica pertencem ao pacote default.

Criao de pacotes de classes:

Pacotes requerem que as classes que o compe sejam armazenadas em um mesmo especfico diretrio. O diretrio necessita possuir o mesmo nome do pacote. Para definir se uma classe pertence ou no a um pacote, basta declarar no incio do arquivo package <nome do pacote> .
////////////////// arquivo testeAcademico.java

Exemplo:

package academico;
import javax.swing.*; import java.util.*; public class testeAcademico { public static Professor novoProfessor() { // o codigo eh omitido por uma questo de espao. } public static void main(String args[]) { Professor p1 = novoProfessor(); System.out.println(p1); } }

Prof. Vida

Programao Java
O efeito da definio de pacotes na estrutura de diretrio:

48

A instruo de definio de pacote informa ao compilador Java que as classes devem ser armazenadas em um diretrio especfico. O Java cria diretrios com o nome do pacote. Nesse exemplo, os cdigos Java esto no diretrio codigos. A partir desse diretrio, o compilador cria a estrutura de diretrios necessria, conforme ilustrado na figura a seguir. Observe que um diretorio chamado academico foi criado dentro da pasta codigos.

Dentro desse novo diretrio, as classes so depositadas, conforme ilustrado abaixo.

Estrutura de Diretrios: Exemplo:

O seguinte cdigo cria uma hierarquia de diretorios ou estruturas na aplicao:


/////////////// arquivo financeiro.java package academico.secretaria; public class financeiro { public financeiro() { } }

Estrutura do exemplo

O exemplo anterior, quando compilado, ir gerar a seguinte estrutura de diretrio:

Prof. Vida

Programao Java

49

Uma classe de um pacote pode utilizar classes de outro pacote. Para acessar o Como utilizar outro pacote, basta inserir a instruo import <nome do pacote> ; . classes de outros pacotes?
Exemplo:

//////////////////// arquivo financeiro.java package academico.secretaria; import academico.*; public class financeiro { private Pessoa p; private Professor p1; public financeiro() { }

Comentrios:

} No exemplo anterior, as classes Pessoa e Professor foram definidas no pacote academico. Para utilizar essas classes que esto em um pacote diferente do pacote academico.secretaria o programador precisa solicitar a sua importao atravs da instruo import.

Campos e mtodos declarados com esse modificador podem ser usados O diretamente por todas as classes pertencentes ao mesmo pacote. modificador Classes externas ao pacote no podem acessar os campos e os mtodos de acesso protected: declarados como protegidos.

Exemplo:

Na classe Professor, crie um mtodo print() com modificador de acesso para protected conforme a ilustrado abaixo.

Com essa modificao, a classe financeiro ao tentar acessar o mtodo print() da classe professor ir fornecer o erro de compilao ilustrado abaixo.
Prof. Vida

Programao Java

50

O modificador de acesso protected:


Exemplo

O modificador protected far com que qualquer campo ou mtodo declarado com ele possa ser acessado por qualquer classe que herde da classe.

1. Na classe Pessoa definida no aqruivo Pessoa.java, modifique o acesso do mtodo getEMail( ) para protected. Por exemplo : protected String getEMail() {return email;} 2. Na classe Professor, insira o mtodo conforme destacado no cdigo a seguir.

18 Resumo dos Modificadores de Acesso:


Mtodos da mesma classe Mtodos de classes herdeiras Mtodos de outras classe no no mesmo pacote Mtodos de outra classe em no outro pacote private sim no protected sim sim no no public sim sim sim sim Prof. Vida

Programao Java

51

18. Como Conectar o Java a um Banco de Dados


18.1 Como criar o Banco de Dados MSAccess ? 1. Crie um banco de dados no Access e salve em alguma pasta, por exemplo crie uma pasta com o nome BDCurso na pasta raiz do seu projeto. 2. Agora abra o Painel de Controle do Windows, v em Ferramentas Administrativas -> Fonte de Dados (ODBC). Voc pode selecionar a aba Fontes de Dados do Sistema, e ento clique em Adicionar.

3. Selecione Driver do Microsoft Access (*.mdb) e clique em Concluir,

Prof. Vida

Programao Java

52

4. Coloque um nome para o Alias do seu banco 5. Clique em Selecionar e escolha o caminho do banco.

6. Pronto, agora pressione OK e pronto, o acesso ao banco de dados est criado!

Prof. Vida

Programao Java
18.2 Como o programa Java accessa o Banco de Dados ? 1. Nas instrues import de um codigo java, a seguinte linha precisa ser adicionada: import java.sql.*; . Ela que contm as classes necessrias para se conectar e manipular o banco 2. Agora, dentro da classe, voc pode definir alguns objetos, um Connection, que manipula a conexo em si, e um Statement, que manipula o banco com querys. private Connection con; private Statement stm; 3. Crie um mtodo especfico para o acesso ao banco. public void open(String ALIAS) { try { /* Tenta se conectar ao Driver */ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } //tratamento de erro catch (ClassNotFoundException e) { System.out.println("Impossvel carregar o Driver: \n" + e); System.exit(0); } try { con = DriverManager.getConnection("jdbc:odbc:"+ALIAS); /* nesse exemplo ALIAS o nome do banco definido na configurao do ODBC*/ stm = con.createStatement(); } catch (SQLException e) { System.out.println( "No foi possvel acessar o banco de dados:\n" + e); System.exit(0); } } 4. Crie um mtodo para encerrar o acesso ao banco. public void close() { try{ if ( ((stm == null) && (con == null)) == false) { stm.close(); con.close();} }

53

Prof. Vida

Programao Java
catch(java.sql.SQLException e){System.out.println(e);} }

54

5. O acesso especfico tabela realizado por uma instncia da classe Statement. O mtodo execute(String) utlizado para executar uma query. stm.execute( insert into nomeDaTabela (nomeDaColuna1, nomeDaColuna2) value (..)); 6. Esse mtodo no possui retorno. Caso o resultado ou retorno da instruo SQL seja um conjunto de dados, o mtodo executeQuery(String) dever ser utilizado. Esse mtodo retorna um objeto do tipo ResultSet. Try { String dados; ResultSet rs = stm.executeQuery("SELECT * FROM nomeDaTabela"); String dados; while (rs.next()) { dados = rs.getString(0); } } catch (SQLException e) { System.out.println(Erro: \n + e); } 7. Caso haja necessidade de obter outras informaes da tabela (por exemplo, quantidade de colunas) deve-se utilizar uma instnica da classe ResultSetMetaData. ResultSetMetaData metaData = rs.getMetaData(); So alguns mtodos importantes do ResultSetMetaData:
int getColumnCount() retorna a quantidade de colunas. int getColumnDisplaySize(int column) retorna o tamanho mximo em caracteres definido para a coluna. String getColumnLabel(int column) retorna o rtulo da coluna. String getColumnName(int column) retorna o nome da coluna. int getColumnType(int column) retorna o tipo de dado da coluna. String getColumnTypeName(int column) retorna o nome do tipo de dado da coluna. int getPrecision(int column) retorna a quantidade de casas decimais definida para a coluna.

String getSchemaName(int column) retorna o nome do esquema definido para a coluna da tabela.

Prof. Vida

Programao Java
18.3 Exemplo de Acesso via ODBC: Nesse exemplo, considera-se a existencia de uma tabela chamada Pessoa para um alias meuBanco.
// arquivo BancoAccess.java 1. import java.sql.*; 2. import java.io.*;

55

3. public class BancoAccess 4. { 5. private Connection con; 6. private Statement stm;

7. public void open(String ALIAS) 8. { 9. try 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. { /* Tenta se conectar ao Driver */ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch (ClassNotFoundException e) { System.out.println("Impossvel carregar o Driver: \n" + e); System.exit(0); } try { con = DriverManager.getConnection("jdbc:odbc:"+ALIAS); /* nesse exemplo ALIAS o nome do banco definido na

configurao do ODBC*/ 23. 24. 25. 26. 27. stm = con.createStatement(); } catch (SQLException e) { System.out.println( "No foi possvel acessar o banco de

dados:\n" + e); 28. 29. 30. System.exit(0); } }

Prof. Vida

Programao Java
31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. } } catch (java.sql.SQLException e) {System.out.println(e);} } public void executeQuery(String pesquisa) { try { ResultSet rs = stm.executeQuery(pesquisa); printResultSet(System.out, rs ,"Dados Armazenados na Tabela"); } catch (java.sql.SQLException e) {System.out.println(e);} } } p.println("Quantidade de Registros: " + count); { try{ if(rs != null) { ResultSetMetaData metaData = rs.getMetaData(); int cols = metaData.getColumnCount(); p.println("\n--------------------------\n" + title + "\n--------------------------"); for(int i = 1;i <= cols;i++) { p.print(metaData.getColumnLabel(i) + "\t"); } p.println("\n--------------------------"); int count = 0; while(rs.next()) {for(int i = 1;i <= cols;i++) { p.print(rs.getString(i) + "\t"); } p.println("\n--------------------------"); count++; public void close() { try{ if ( ((stm == null) && (con == null)) == false) { stm.close(); con.close();} } catch(java.sql.SQLException e){System.out.println(e);} } public void printResultSet(PrintStream p, ResultSet rs , String title)

56

Prof. Vida

Programao Java
70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. } } } public static void main(String [] a) { BancoAccess banco = new BancoAccess(); banco.open("meuBanco"); banco.executeQuery("select * from pessoa"); banco.close(); public void execute(String comando) { try { stm.execute(comando); } catch (java.sql.SQLException e) {System.out.println(e);}

57

Prof. Vida

Programao Java
18.4 Exemplo de Acesso a um Banco de Dados MySql atravs de drive JDBC. // arquivo BancoDeDados.java 1. package curso.BD; 2. import java.sql.*; 3. class Conectar 4. { 5. private static Connection con; 6. private static Statement 7. private static String bd= 8. "jdbc:mysql://localhost:3306/lojinha"; 9. private static String driver="com.mysql.jdbc.Driver"; 10. 11. private static String usuario="root"; private static String senha="root"; stm;

58

12. 13. 14. 15. 16. 17. 18. 19. 20. 21.

public static void open() { try { Class.forName(driver); con = DriverManager.getConnection(bd,usuario,senha); stm = con.createStatement(); } catch(java.lang.Exception e) {System.out.println(e);} }

22. 23. 24. 25. 26. 27. 28.

public static void close() { try{ if (closed()==false) { stm.close(); con.close();} } catch(java.sql.SQLException e){System.out.println(e);} }

29. 30.

public static boolean closed() { Prof. Vida

Programao Java
31. 32. return ((stm == null) && (con == null)); }

59

33. 34. 35. 36. 37. 38. 39.

public static ResultSet executeQuery(String sql) { try{ if (closed() ) open(); return stm.executeQuery(sql); } catch(java.sql.SQLException e){System.out.println(e);

return null;} 40. }

41. 42.

public static void setBD(String v){bd=v;} public static String getBD(){return bd;}

43. 44. 45. 46.

public static void executeInsert(int codigo , String nome, double valor) { String comando="insert into produto (codigo, nome,

valor) values (" 47. 48. 49. 50. 51. + codigo + ", \'" + nome + "\'" + "," + valor + ")"; executeMe(comando); }

52. 53. 54. 55. 56. 57. 58. 59.

public static void executeUpdate(int codigo , String nome, double valor) { String comando= "update produto set nome=\'" + nome + "\'" + ", valor=" + valor + " where codigo=" + codigo; executeMe(comando); Prof. Vida

Programao Java
60. }

60

61. 62. 63. 64. 65. 66.

public static void delete(int codigo) { String comando="delete from produto where codigo=" + codigo; executeMe(comando); }

67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85.

public static void executeMe(String comando) { try {if (closed() ) open(); stm.executeUpdate(comando); } catch(java.lang.Exception e){System.out.println(e);} } public static void criarTabela() { String comando = " create table produto " + "(codigo int unsigned not null auto_increment," + " nome varchar(100) not null," + " valor double ," + " primary key(codigo)" + ") engine=innodb default charset=latin1;"; executeMe("drop table produto"); executeMe(comando); } }

86. 87. 88. 89. 90. 91.

// exemplo de execuo da Classe. public class BancoDeDados { public static void main(String[] a) { Conectar.criarTabela(); Prof. Vida

Programao Java
92. Conectar.executeInsert(1,"televisor 29 polegadas",

61

1500.78); 93. Conectar.executeInsert(2,"DVD Player marca

SchingLing", 78.45); 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. } 107. } 108. catch(java.sql.SQLException e){System.out.println(e);} 109. System.out.println("\n\n ***** FIM !"); 110. } 111. } Conectar.executeInsert(3,"Geladeira ", 980.00); ResultSet rec; rec = Conectar.executeQuery("select * from produto "); System.out.println("\n Codigo \t Nome \t Valor "); try { while(rec.next()) { System.out.println("\n" + rec.getString("codigo")

+ "\t" + rec.getString(2) + "\t" + rec.getString(3) + "\t");

19 Resumo de alguns mtodos da classe String

Method Summary
char charAt(int index)

Returns the character at the specified index.


int compareTo(String anotherString)

Compares two strings lexicographically.


int compareToIgnoreCase(String str)

Compares two strings lexicographically, ignoring case differences.


String concat(String str)

Concatenates the specified string to the end of this string.


boolean contentEquals(StringBuffer sb) Returns true if and only if this String represents the same sequence of characters as the specified StringBuffer. boolean endsWith(String suffix)

Tests if this string ends with the specified suffix. Prof. Vida

Programao Java
boolean equals(Object anObject)

62

Compares this string to the specified object.


boolean equalsIgnoreCase(String anotherString) Compares this String to another String, ignoring case considerations. void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)

Copies characters from this string into the destination character array.
int indexOf(int ch)

Returns the index within this string of the first occurrence of the specified character.
int indexOf(int ch, int fromIndex)

Returns the index within this string of the first occurrence of the specified character, starting the search at the specified index.
int indexOf(String str)

Returns the index within this string of the first occurrence of the specified substring.
int indexOf(String str, int fromIndex)

Returns the index within this string of the first occurrence of the specified substring, starting at the specified index.
int lastIndexOf(int ch)

Returns the index within this string of the last occurrence of the specified character.
int lastIndexOf(int ch, int fromIndex)

Returns the index within this string of the last occurrence of the specified character, searching backward starting at the specified index.
int lastIndexOf(String str)

Returns the index within this string of the rightmost occurrence of the specified substring.
int lastIndexOf(String str, int fromIndex)

Returns the index within this string of the last occurrence of the specified substring, searching backward starting at the specified index.
int length()

Returns the length of this string.


boolean matches(String regex)

Tells whether or not this string matches the given regular expression.
boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)

Tests if two string regions are equal.


boolean regionMatches(int toffset, String other, int ooffset, int len)

Tests if two string regions are equal.


String replace(char oldChar, char newChar)

Returns a new string resulting from replacing all occurrences of oldChar in this string with newChar.
String replaceAll(String regex, String replacement)

Replaces each substring of this string that matches the given regular expression with the given replacement.
String replaceFirst(String regex, String replacement)

Replaces the first substring of this string that matches the given regular expression with the given replacement.
String[] split(String regex)

Splits this string around matches of the given regular expression.


String[] split(String regex, int limit)

Splits this string around matches of the given regular expression.


boolean startsWith(String prefix)

Prof. Vida

Programao Java
Tests if this string starts with the specified prefix.
boolean startsWith(String prefix, int toffset)

63

Tests if this string starts with the specified prefix beginning a specified index.
String substring(int beginIndex)

Returns a new string that is a substring of this string.


String substring(int beginIndex, int endIndex)

Returns a new string that is a substring of this string.


char[] toCharArray()

Converts this string to a new character array.


String toLowerCase()

Converts all of the characters in this String to lower case using the rules of the default locale.
String toLowerCase(Locale locale)

Converts all of the characters in this String to lower case using the rules of the given Locale.
String toString()

This object (which is already a string!) is itself returned.


String toUpperCase()

Converts all of the characters in this String to upper case using the rules of the default locale.
String toUpperCase(Locale locale)

Converts all of the characters in this String to upper case using the rules of the given Locale.
String trim()

Returns a copy of the string, with leading and trailing whitespace omitted.
static valueOf(boolean b) String Returns the string representation of the boolean argument. static valueOf(char c) String Returns the string representation of the char argument. static valueOf(char[] data) String Returns the string representation of the char array argument. static valueOf(char[] data, int offset, int count) String Returns the string representation of a specific subarray of the char array

argument.
static valueOf(double d) String Returns the string representation of the double argument. static valueOf(float f) String Returns the string representation of the float argument. static valueOf(int i) String Returns the string representation of the int argument. static valueOf(long l) String Returns the string representation of the long argument. static valueOf(Object obj) String Returns the string representation of the Object argument.

20 A classe Math

Field Summary
static E double The double value that is closer than any other to e, the base of the natural

Prof. Vida

Programao Java
logarithms.
static PI double The double value that is closer than any other to pi, the ratio of the

64

circumference of a circle to its diameter.

Method Summary
static abs(double a) double Returns the absolute value of a double value. static abs(float a) float Returns the absolute value of a float value. static int abs(int a) Returns the absolute value of an int value. static long abs(long a) Returns the absolute value of a long value. static acos(double a) double Returns the arc cosine of an angle, in the range of 0.0 through pi. static asin(double a) double Returns the arc sine of an angle, in the range of -pi/2 through pi/2. static atan(double a) double Returns the arc tangent of an angle, in the range of -pi/2 through pi/2. static atan2(double y, double x) double Converts rectangular coordinates (x, y) to polar (r, theta). static ceil(double a) double Returns the smallest (closest to negative infinity) double value that is not

less than the argument and is equal to a mathematical integer.


static cos(double a) double Returns the trigonometric cosine of an angle. static exp(double a) double Returns Euler's number e raised to the power of a double value. static floor(double a) double Returns the largest (closest to positive infinity) double value that is not

greater than the argument and is equal to a mathematical integer.


static IEEEremainder(double f1, double f2) double Computes the remainder operation on two arguments as prescribed by

the IEEE 754 standard.


static log(double a) double Returns the natural logarithm (base e) of a double value. static max(double a, double b) double Returns the greater of two double values. static max(float a, float b) float Returns the greater of two float values. static int max(int a, int b) Returns the greater of two int values. static long max(long a, long b) Returns the greater of two long values. static min(double a, double b) double Returns the smaller of two double values. static min(float a, float b) float Returns the smaller of two float values. static int min(int a, int b) Returns the smaller of two int values.

Prof. Vida

Programao Java
static long min(long a, long b)

65

Returns the smaller of two long values. static pow(double a, double b) double Returns the value of the first argument raised to the power of the second argument.
static random() double Returns a double value with a positive sign, greater than or equal to 0.0 and less than 1.0. static rint(double a) double Returns the double value that is closest in value to the argument and is

equal to a mathematical integer.


static long round(double a)

Returns the closest long to the argument.


static int round(float a)

Returns the closest int to the argument. sin(double a) static double Returns the trigonometric sine of an angle.
static sqrt(double a) double Returns the correctly rounded positive square root of a double value. static tan(double a) double Returns the trigonometric tangent of an angle. static toDegrees(double angrad) double Converts an angle measured in radians to an approximately equivalent

angle measured in degrees.


static toRadians(double angdeg) double Converts an angle measured in degrees to an approximately equivalent

angle measured in radians.

Prof. Vida

Você também pode gostar