Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de...

40
Introdução á Introdução á Programação em Java Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009

Transcript of Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de...

Page 1: Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009.

Introdução á Programação Introdução á Programação em Javaem Java

Abraão Ferreira Monteiro6º Período de Sistemas de Informação

UNIVERSITAS

SECOMP 2009

Page 2: Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009.

1. Histórico:

A tecnologia Java foi criada como uma ferramenta de programação em computação, parte de um pequeno trabalho anônimo e secreto chamado "the Green Project" da Sun Microsystems em 1991.

A equipe "Green Team", um grupo secreto formado por 13 pessoas e liderado por James Gosling, trancou-se em um escritório anônimo na Sand Hill Road em Menlo Park e trabalhou dia e noite por 18 meses, isolado de toda a comunicação com a Sun. Eles estavam tentando antever e planejar a "nova onda" na computação. Sua primeira conclusão foi que ao menos uma tendência significativa seria a convergência de computadores e de dispositivos controlados digitalmente. O resultado foi uma linguagem de programação não atrelada a dispositivos, apelidada de "Oak".

Para demonstrar como o Java poderia impulsionar o futuro dos dispositivos digitais, a equipe Green Team desenvolveu um controlador portátil para sistemas de entretenimento doméstico voltado para o setor de televisão digital. A idéia estava muito à frente de seu tempo e o setor de TV digital não estava preparado para o incrível avanço oferecido pela tecnologia Java.

Page 3: Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009.

A Internet estava pronta para essa tecnologia e, em 1995, a equipe pôde anunciar que o navegador Netscape Navigator passaria a incorporar a tecnologia Java.

A versatilidade, eficiência, portabilidade de plataforma e segurança fazem dela a tecnologia ideal para a computação em rede, de modo que, hoje, a tecnologia Java está presente em mais de dois bilhões e meio de dispositivos:- PCs;-Telefones celulares e outros dispositivos portáteis;- Smart cards;- Além de set-top boxes, impressoras, webcams, jogos, sistemas de navegação para automóveis, terminais lotéricos, dispositivos médicos, estações de pagamento de estacionamento, etc.

Page 4: Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009.

2. Tecnologia Java:

J2SE (Core/Desktop): A plataforma Java 2 Standard Edition provê um ambiente para o sistema central do Java e para o desenvolvimento de aplicações Java em desktops, sendo a base para as tecnologias J2EE (Java 2 Enterprise Edition) e Java Web Services, tendo um compilador, ferramentas, runtimes e JAVA APIs, que permitem escrever, testar, desenvolver e executar applets e aplicações;

J2EE (Enterprise/Server): A plataforma Java 2 Enterprise Edition define o padrão para desenvolver componentes baseados em aplicações empresariais multicamada e provê serviços adicionais, ferramentas e APIs para suportar o desenvolvimento simplificado das aplicações empresariais;

J2ME (Mobile/Wireless): A plataforma Java 2 Micro Edition é um conjunto de tecnologias e especificações destinadas ao consumidor, com dispositivos como telefones móveis, PDAs e impressoras;

Existe ainda as tecnologias Java Card, Java Web Services, XML, JSLEE, JAIN Initiative, Java Metadata Interface, Jini Network Technology, JXTA Technology, Java Dynamic Management Kit e OSS through Java Initiative.

Page 5: Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009.

Portável:

Java foi criada para ser portável. O "byte-code" gerado pelo compilador para a sua aplicação específica pode ser transportado entre plataformas distintas que suportam Java (Solaris 2.3, Windows Server, Windows Seven, Mac/Os, etc) . Não é necessário recompilar um programa para que ele rode numa máquina e sistema diferente, ao contrário do que acontece por exemplo com programas escritos em C e outras linguagens.

Orientada a Objetos:

A portabilidade é uma das características que se inclui nos objetivos almejados por uma linguagem orientada a objetos.

Java suporta herança, mas não herança múltipla. A ausência de herança múltipla pode ser compensada pelo uso de herança e interfaces, onde uma classe herda o comportamento de sua superclasse além de oferecer uma implementação para uma ou mais interfaces.

3. Características da Linguagem:

Page 6: Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009.

Parecida com C, C++:

Java tem a aparência de C ou de C++, embora a filosofia da linguagem seja diferente. Java também possui características herdadas de muitas outras linguagens de programação: Objective-C, Smalltalk, Eiffel, Modula-3, etc. Muitas das características desta linguagem não são totalmente novas. Java é uma feliz união de tecnologias testadas por vários centros de pesquisa e desenvolvimento de software.

Segura:

A presença de coleta automática de lixo, evita erros comuns que os programadores cometem quando são obrigados a gerenciar diretamente a memória (C , C++, Pascal ). A eliminação do uso de ponteiros, em favor do uso de vetores, objetos e outras estruturas substitutivas traz benefícios em termos de segurança. O programador é proibido de acessar a memória que não pertence ao seu programa.

A presença de mecanismos de tratamento de exceções torna as aplicações mais robustas, não permitindo que elas abortem, mesmo quando rodando sob condições anormais.

Page 7: Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009.

Suporta concorrência:

A linguagem permite a criação de maneira fácil, de vários "threads" de execução. Particularmente útil nos ambientes em que aplicações Java são suportadas, ambientes estes que geralmente podem mapear os threads da linguagem em processamento paralelo real.

Eficiente:

Como Java foi criada para ser usada em computadores pequenos, ela exige pouco espaço, pouca memória. Java é muito mais eficiente que grande parte das linguagens de "scripting" existentes, embora seja cerca de 20 vezes mais lenta que C, o que não é um marco definitivo. Com a evolução da linguagem, serão criados geradores de "byte-codes" cada vez mais otimizados que trarão as marcas de performance da linguagem mais próximas das de C++ e C.

Suporte para programação de sistemas distribuídos:

Java fornece facilidades para programação com sockets, TCP/IP, entre outros.

Page 8: Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009.

4. Bytecodes:

O código de um programa de computador escrito na linguagem Java é transformado para uma forma intermediária de código denominada bytecode, que é interpretada pelas Máquinas Virtuais Java (JVMs). É essa característica que faz com que os os programas Java sejam independentes de plataforma, executando em qualquer sistema que possua uma JVM. Cada opcode tem o tamanho de um byte — daí o seu nome — e assim o número de diferentes códigos de operação está limitado a 256. Os 256 possíveis valores para códigos de operação não são todos utilizados.

Page 9: Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009.
Page 10: Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009.

Bytecode Visualizer 3.3 http://www.drgarbage.com/

Page 11: Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009.

Em Java, classes são definidas através do uso da palavra-chave class. Para definir uma classe, utiliza-se a construção:

[modif] class NomeDaClasse {

// corpo da classe...

}

A primeira linha é um comando que inicia a declaração da classe. Após a palavra-chave class, segue-se o nome da classe, que deve ser um identificador válido para a linguagem. O modificador modif é opcional; se presente, pode ser uma combinação de public e abstract ou final.

A definição da classe propriamente dita está entre as chaves { e }, que delimitam blocos na linguagem Java. Este corpo da classe usualmente obedece à seguinte seqüência de definição:

1. As variáveis de classe, iniciando pelas public, seguidos pelas protected, pelas com visibilidade padrão (sem modificador) e finalmente pelas private.

5. Classes: (Abstração)

Page 12: Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009.

2. Os atributos (ou variáveis de instância) dos objetos dessa classe, seguindo a mesma ordenação definida para as variáveis de classe. 3. Os construtores de objetos dessa classe. 4. Os métodos da classe, geralmente agrupados por funcionalidade.

Toda classe pode também ter um método main associado, que será utilizado pelo interpretador Java para dar início à execução de uma aplicação.

Java também oferece outra estrutura, denominada interface, com sintaxe similar à de classes mas contendo apenas a especificação da funcionalidade que uma classe deve conter, sem determinar como essa funcionalidade deve ser implementada.

Propriedades de uma classe (meta-informação) podem ser obtidas através das funcionalidades oferecidas na classe java.lang.Class.

Page 13: Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009.

// Comentário de uma linha public class HelloWorld {

private static String str = “Hello World!”;

public HelloWorld(){

}

private static void escreverMensagem(){

System.out.println(str);

}

public static void main (String args[]) {

escreverMensagem();

}

}

Page 14: Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009.
Page 15: Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009.

6. Objeto:

Uma classe define um tipo de dado. Ela não pode ser usada a não ser que seja instanciada. A exemplo dos tipos de dados primitivos os quais somente podem ser usados quando uma variável de um determinado tipo é declarada, devemos criar uma instância. Uma instância é um objeto do tipo definido pela classe. Qualquer classe (desde que não seja abstract) pode ser instanciada como qualquer outro tipo de dado da linguagem Java. O trecho de código abaixo exibe uma classe chamada Geometria criando um a instância da classe Vértice:

public class Geometria {Vértice v = new Vértice(1.2, 3.5);...

}

A diferença mais evidente entre a declaração de um objeto de uma classe e a declaração de um dado primitivo reside na necessidade de reservar memória para o objeto através do uso do operador new. Na verdade, esse operador realiza uma série de tarefas:

• Reserva espaço na memória para a instância da classe Vértice, o qual deve ser suficiente para conter seu estado, isto é, os valores dos seus campos. • Realiza a chamada do método construtor. • Retorna uma referência para o novo objeto (o qual é atribuído à variável v).

Page 16: Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009.

7. Encapsulamento:

Os objetos contém atributos e métodos. O encapsulamento trata de dar alguma segurança aos objetos. Exemplo: Um objeto Cliente por exemplo tem atributos como qualquer outro e estes não podem ser acessados por qualquer outro objeto diretamente. Existem dois tipos de atributos, os privados e os publicos. Em UML e OO (orientação a objetos) é definido que para atributos privados usa-se o sinal de “-” antes do nome e para atributos publicos usa-se o sinal de “+” antes do nome.

Page 17: Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009.

Para que o encapsulamento exista é preciso deixar os atributos privados e os métodos públicos, assim está sendo garantido que os valores atribuídos aos atributos serão sempre respeitados pelas regras existentes.

Exemplo:

O atributo CPF deve sempre ter 11 números, se o atributo não for privado, ele perde essa regra (11 números) pois alguém poderia acessar e colocar 12 ou 9 números tornando-o inválido.

Como os atributos privados não podem ser acessados diretamente por outros objetos, existem os métodos públicos que são os responsáveis em acessar os atributos e trazer ou levar algum dado para o objeto respeitando as regras.

Page 18: Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009.

8. Herança:

O que torna a orientação a objetos única é o conceito de herança que no inglês significa inheritance.

Herança é um mecanismo que permite que características comuns a diversas classes com comportamentos comuns ou parecidos, sejam abstraídas e centralizadas em uma classe base, ou superclasse. Tem uma relação “É um”.

Exemplo:

Um Jaguar “é um” carro. Logo ele foi herdado da classe carro, pois contém as características comuns de um carro.

A partir dessa superclasse outras classes podem ser especificadas. Portanto uma subclasse que é uma classe herdada da superclasse recebe sem codificação extra as características da superclasse. Ainda podemos adicionar elementos particulares a está subclasse.

Na linguagem Java uma subclasse somente pode herdar uma única superclasse diretamente.

Page 19: Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009.
Page 20: Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009.

Exemplo:

public class Veiculo { protected String modelo;

public void setModelo(String modelo) {

this.modelo = modelo; }

public String getModelo(){ return this.modelo; }}

Existem vários tipos de veículos. Dentre os quais podemos citar Carro,

moto, etc... Alguns veículos possuem características específicas. Portanto não seria interessante colocarmos os atributos de todos os veículos dentro da classe Veículo. Aí que surge o conceito de herança. Podemos criar uma classe específica para cada tipo de veiculo, como será mostrado a seguir. 

Page 21: Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009.

public class Carro extends Veiculo {

private String categoria;

public void setCategoria(String categoria) { this.modelo = categoria; }

public String getCategoria(){ return this.categoria; }}

A palavra reservada extends indica que a classe Carro é filha da classe

Veículo.

A classe Carro irá herdar atributos e métodos da classe Veiculo que não estejam com o modificador private.

Por exemplo, todas as classes que herdarem da classe Veículo terão o atributo modelo.

Page 22: Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009.

9. Polimorfismo:

Analisando a palavra Polimorfismo, ela significa muitas formas. Ou seja, para uma árvore de herança, temos muitas formas de objetos e métodos a partir de uma superclasse e suas subclasses. Polimorfismo é o princípio pelo qual usamos objetos construídos a partir de uma árvore de herança, através de referências do tipo de uma superclasse da hierarquia.

Formas de polimorfismo:

• Subclasses

• Sobrescrita de método

• Sobrecarga de método ou construtor

Page 23: Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009.

10. Tipos de Dados:

boolean Pode assumir o valor true ou o valor false char Caractere em notação Unicode de 16 bits. Serve para a armazenagem de dados alfanuméricos. Também pode ser usado como um dado inteiro com valores na faixa entre 0 e 65535.

byte Inteiro de 8 bits em notação de complemento de dois. Pode assumir valores entre -27=-128 e 27-1=127.

short Inteiro de 16 bits em notação de complemento de dois. Os valores possívels cobrem a faixa de -2-15=-32.768 a 215-1=32.767

int Inteiro de 32 bits em notação de complemento de dois. Pode assumir valores entre -231=2.147.483.648 e 231-1=2.147.483.647.

Page 24: Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009.

long Inteiro de 64 bits em notação de complemento de dois.Pode assumir valores entre -263 e 263-1.

float Representa números em notação de ponto flutuante normalizada em precisão simples de 32 bits em conformidade com a norma IEEE 754-1985. O menor valor positivo representável por esse tipo é 1.40239846e-46 e o maior é3.40282347e+38

double Representa números em notação de ponto flutuante normalizada em precisão dupla de 64 bits em conformidade com a norma IEEE 754-1985. O menor valor positivo representável é 4.94065645841246544e-324 e o maior é 1.7976931348623157e+308

Page 25: Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009.

11. Vetores e Matrizes:

// 12 primeiros termos da seqüência de Fibonacci:

long Fibonacci[] = {1,1,2,3,5,8,13,34,55,89,144};

// Tabela de sen(n*pi/6), sendo n = 0,1,2,...5

float seno[] = {0.0000,0.5000,0.8660,1.0000,0.8660,0.5000};

// Tabela de log(1+n), sendo n = 0,2...99:

double tlog[] = new double[100];

for(int n=0; n<100; n++) tlog[i] = Math.log(1+n);

// Matriz dos coeficientes

double A[][][] = { {1,2,3}, {0,1,3}, {0,0,-1} };

Page 26: Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009.

13. Execução Condicional:

a) if([condição]) [comando 1] // Executado se a condição for true

else[comando 2] // Executado se a condição for false

Exemplo:

if(x<2)System.out.println(“Valor de x MENOR que 2”);

elseSystem.out.println(“Valor de X MAIOR ou IGUAL a 2”);

b) [expressão condicional] ? [expressão 1] : [expressão 2] 

c) if ([condição 1])    [comando 1]

else if ([condição 2])    [comandos 2])

else if ([condição 3])    [comando 3] ....

else    [comando n]

Page 27: Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009.

d) switch([expressão]) {

case [constante 1]: [comando 1] break;

case [constante 2]: [comando 2] break; ...

case [constante n]: [de comando n] break;

default: [comando]

} Exemplo:

public class test {

public static void main(String args[]) {

int op = 2;

System.out.print("valor de op e: “ + op)

switch(op) {

case 1: System.out.println("case 1: op="+op); break;

case 2: System.out.println("case 2: op="+op); break;

case 3: System.out.println("case 3"+op); break;

default: System.out.println("default: op nao esta no limite 1..3");

}

}

}

Page 28: Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009.

14. Laço de iteração:

a) for ([expressão 1]; [condição]; [expressão 2]) [comando]

Exemplo:

for(int i=0; i<10; i++)System.out.println(i);

b) while([condição]) [comando subjacente]

c) do[comando]

while([condição]);

Page 29: Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009.

import java.io.StreamTokenizer;

public class sqrt {

public static void main(String args[]) {

double x; StreamTokenizer inp = new StreamTokenizer(System.in); // Lê um dado double a partir do

teclado

System.out.print("x = "); System.out.flush();

try {

inp.nextToken(); x = inp.nval;

} catch(java.io.IOException e) {

x = 0;

}

// Decide se é possível calcular a raiz quadrada do // número dado. Sendo possível, calcula. Do contrário // emite uma mensagem de aviso

if(x >= 0) System.out.println("raiz quadrada de x e " + sqrt(x)); else System.out.println("x e negativo");

}

}

Page 30: Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009.

Exercícios

1) Escreva uma classe que quando instanciada receba dois valores inteiros. Dentro da classe esses dois valores devem ser somados e retornados para a classe que a instanciou.

2) Escreva um loop de repetição de 1 até 100 que a cada múltiplo de 10 retorne o caractere “*” na tela.

3) No tópico (1) retorne agora os dois valores somados 5 vezes.

Page 31: Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009.

15. AWT e Swing:

A API (Application Programming Interface) para utilizar recursos gráficos é separada em dois componentes principais:

– AWT(Abstract Windowing Toolkit): Contém o conjunto de classes necessárias para a construção de programas com interfaces de janelas.

– SWING: Contém o conjunto de classes complementares para a construção de interfaces avançadas (somente em Java 1.2)

Page 32: Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009.
Page 33: Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009.

16. JOptionPane:

// Default title and icon JOptionPane.showMessageDialog(null, "Eggs are not supposed to be green.", "Message");

// Custom title, warning iconJOptionPane.showMessageDialog(null, "Eggs are not supposed to be green.", "Inane warning", JOptionPane.WARNING_MESSAGE);

// Custom title, error iconJOptionPane.showMessageDialog(null, "Eggs are not supposed to be green.", "Inane error", JOptionPane.ERROR_MESSAGE);

// Custom title, no iconJOptionPane.showMessageDialog(null, "Eggs are not supposed to be green.", "A plain message", JOptionPane.PLAIN_MESSAGE);

// Custom title, custom iconJOptionPane.showMessageDialog(null, "Eggs are not supposed to be green.", "Inane custom dialog", JOptionPane.INFORMATION_MESSAGE, icon);

Page 34: Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009.

// Default icon, custom title

int n = JOptionPane.showConfirmDialog( null, "Would you like green eggs and ham?", "An Inane Question", JOptionPane.YES_NO_OPTION);

Object[] options = {"Yes, please", "No way!"};

int n = JOptionPane.showOptionDialog( null, "Would you like green eggs and ham?", "A Silly Question", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, //do not use a custom Icon options, //the titles of buttons options[0]); //default button title

Page 35: Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009.
Page 36: Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009.

17. NetBeans 6.7.1:

Page 37: Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009.

18. Eclipse:

Page 38: Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009.

Exercícios

1) Criar um JFrame que leia dois valores inteiros e exiba a soma deles em um JTextField.

2) Criar um JFrame que exiba o resultado em um outro JFrame.

3) Criar um JFrame com menu que permita o usuário selecionar a opção de somar ou subtrair dois números inteiros e exiba o resultado em um outro JFrame.

Page 39: Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009.

Agradeço a Atenção!

UNIVERSITASSECOMP 2009

Page 40: Introdução á Programação em Java Abraão Ferreira Monteiro 6º Período de Sistemas de Informação UNIVERSITAS SECOMP 2009.

Bibliografia

1.http://www.dm.ufscar.br/~waldeck/curso/java/

2.http://www.webmonkey.com/tutorial/Program_In_Java_-_Part_1

3.http://www.ic.unicamp.br/~cmrubira/aacesta/java/javatut9.html

4.http://www.dca.fee.unicamp.br/cursos/PooJava/classes/definicao.html

5.http://www.devbr.net/tutoriais/53.html?task=view

6.http://java.sun.com/docs/books/tutorial/uiswing/components/dialog.html