Академический Документы
Профессиональный Документы
Культура Документы
NDICE
Captulo I Introduo ao Java .......................................................................................................................... 4 1 Histria ......................................................................................................................................................... 4 2 Caracterstica da Linguagem ........................................................................................................................ 4 2.1) Simples .................................................................................................................................................... 4 2.2) Orientada a Objeto .................................................................................................................................. 4 2.3) Distribuda............................................................................................................................................... 4 2.4) Robusta.................................................................................................................................................... 4 2.5) Segura...................................................................................................................................................... 5 2.6) Neutra em Relao a Arquitetura ............................................................................................................ 5 2.7) Portvel ................................................................................................................................................... 5 3 Applets x Aplicativos ................................................................................................................................... 5 4 Java SDK ...................................................................................................................................................... 5 4.1) Verses da linguagem ............................................................................................................................. 6 5 - Java API ........................................................................................................................................................ 6 6 Ambientes de Desenvolvimento Integrado ................................................................................................... 7 Exerccios de Reviso Captulo I: .................................................................................................................. 7 Captulo II Onde esta instalado?...................................................................................................................... 8 1 - O SDK ....................................................................................................................................................... 8 Execute 1: Documentao .......................................................................................................................... 8 2 O IDE ....................................................................................................................................................... 9 Execute 2: IDE JCreator ............................................................................................................................. 9 Captulo III Primeiro Exemplo ...................................................................................................................... 11 1 Primeiro Exemplo: Bem Vindo a Hytec!................................................................................................ 11 Execute 3: Digitando o primeiro exemplo ................................................................................................ 11 Exerccios de Reviso Captulo III: .............................................................................................................. 13 Captulo IV Fundamentos.............................................................................................................................. 14 1 Tipos Primitivos, Variveis e Operadores .................................................................................................. 14 1.1) Tipos primitivos .................................................................................................................................... 14 1.2) Variveis ............................................................................................................................................... 15 1.3) Operadores ............................................................................................................................................ 16 1.2.1) Operadores Aritmticos.................................................................................................................. 16 Execute 4: Exemplo de Operadores Aritmticos ...................................................................................... 18 1.2.2) Operadores Relacionais .................................................................................................................. 19 Execute 5: Exemplo de Operadores Relacionais ...................................................................................... 21 1.2.3) Operadores Lgicos ....................................................................................................................... 22 Execute 6: Exemplo de Operadores Lgicos ............................................................................................ 23 1.2.4) Manipulao de Strings .................................................................................................................. 24 Execute 7: Exemplo de String .................................................................................................................. 25 2 Estruturas de Controle e seleo ................................................................................................................. 25 2.1) Estrutura de seleo............................................................................................................................... 25 2.1.1) Declarao if else ........................................................................................................................ 26 Execute 7: Exemplo de estrutura de seleo IF ........................................................................................ 27 2.1.2) Declarao Switch .......................................................................................................................... 27 Execute 8: Exemplo de estrutura de seleo Switch................................................................................. 29 2.2) Estrutura de Controle ............................................................................................................................ 29 2.2.1) Declarao while ............................................................................................................................ 29 Execute 9: Exemplo de estrutura de controle while ................................................................................. 30 2.2.2) Declarao do - while..................................................................................................................... 31 Execute 10: Exemplo de Estrutura de Controle do{ }While .................................................................... 32 2.2.3) Declarao For ............................................................................................................................... 33 SCRS 502 Bl. C Ent. 22 W2 CEP - 70330-530 Tel.: (61) 3225-7784 Braslia - DF
Execute 11: Exemplo de estrutura de controle FOR................................................................................. 34 2.3) Estrutura de Controle de Erros .............................................................................................................. 35 Execute 12: Exemplo de estrutura de erro try..catch ................................................................................ 36 Execute 13: Exemplo de estrutura de erro try..finally .............................................................................. 37 2.4) Vetores .................................................................................................................................................. 38 Execute 14: Exemplo de utilizao de Vetores ........................................................................................ 39 Exerccios de Reviso Captulo IV:.............................................................................................................. 39 Captulo V Programao Orientada a Objetos............................................................................................... 41 1) Objetos e classes ...................................................................................................................................... 41 2) Atributos e comportamento ...................................................................................................................... 42 3) Criando uma classe .................................................................................... Erro! Indicador no definido. Execute 15: Exemplo de criao de classes. ............................................................................................. 49 4) Criando novos objetos (tambm chamados de instncias) ....................................................................... 50 5) O que faz o operador new ........................................................................................................................ 50 6) Acessando e Definindo variveis de classe e de instncia ................................................................ 51 7) Chamando mtodos .......................................................................................................................... 51 8) Criando classes ................................................................................................................................. 52 9) Criando Mtodos .............................................................................................................................. 52 10) A palavra-chave this e Super ............................................................................................................ 53 10.1) This ................................................................................................................................................. 53 Execute 16: Exemplo de criao de classes e mtodos............................................................................. 53 Execute 17: Exemplo de criao de classes e mtodos............................................................................. 55 11) Acessibilidade ........................................................................................................................................ 56 12) Dicas para o projeto de classes ............................................................................................................... 56 13) Herana .................................................................................................................................................. 57 Execute 18: Exemplo de criao de classes e mtodos Herana e Acessibilidade. ............................... 58 14) Classes Abstratas.................................................................................................................................... 60 15) Interface ................................................................................................................................................. 61 Exerccios de Reviso Captulo V ................................................................................................................ 62 Capitulo VI Aplicaes Grficas com a AWT .............................................................................................. 64 1) Introduo ................................................................................................................................................ 64 2) Construindo uma aplicao Grfica ......................................................................................................... 64 1) Componentes bsicos ....................................................................................................................... 65 2) Criando Janelas (Frames) ................................................................................................................. 66 Execute 19: Exemplo de criao de Janela usando componente Frame. .................................................. 66 Execute 19: Exemplo de criao de Janela usando componente Frame. .................................................. 67 Execute 20: Exemplo de criao de Janela usando componente Frame. .................................................. 69 6) Criando Rtulos (Labels) ......................................................................................................................... 70 Execute 21: Exemplo de criao de Label................................................................................................ 71 3) Criando Botes (Button)................................................................................................................... 72 Execute 22: Exemplo de criao de Button. ............................................................................................. 72 4) Criando caixa de entrada de texto (TextField).................................................................................. 74 Execute 22: Exemplo de criao de Button. ............................................................................................. 74 5) Criando Painis (Panel) .................................................................................................................... 75 Execute 23: Exemplo de criao de Panel. ............................................................................................... 75 6) Criando caixa de entrada multilinha ou memo (TextArea)............................................................... 77 Execute 24: Exemplo de criao de TextArea. ......................................................................................... 77 11) Criando caixa de lista (List) ................................................................................................................... 79 Execute 25: Exemplo de criao de List................................................................................................... 80 12) Criando caixa de seleo (Choice) ......................................................................................................... 82 Execute 26: Exemplo de criao de Choice. ............................................................................................ 82 13) Criando caixa de opo (Checkbox): ..................................................................................................... 84 Execute 27: Exemplo de criao de Checkbox......................................................................................... 84 SCRS 502 Bl. C Ent. 22 W2 CEP - 70330-530 Tel.: (61) 3225-7784 Braslia - DF
14) Criando Grupo de CheckBox (CheckboxGroup) ................................................................................... 86 Execute 28: Exemplo de criao de CheckboxGroup. ............................................................................. 86 15) Criando Menus ....................................................................................................................................... 88 Execute 29: Exemplo de criao de Menus. ............................................................................................. 90 Exerccios de Reviso do capitulo VI........................................................................................................... 92 1) A diferena entre applets e aplicativos ..................................................................................................... 95 2) Criando applets ........................................................................................................................................ 95 3) Principais atividade do applet .................................................................................................................. 95 3.1) Incializao ....................................................................................................................................... 96 3.2) Partida ............................................................................................................................................... 96 3.3) Interrupo ........................................................................................................................................ 97 3.4) Destruio ......................................................................................................................................... 97 3.5) Pintura ............................................................................................................................................... 97 Execute 30: Exemplo de criao de applets. ............................................................................................ 98 Execute 31: Exemplo de criao de applets. .......................................................................................... 100 Execute 32: Exemplo de criao de applets. .......................................................................................... 103 Exerccios de Reviso do capitulo VII ....................................................................................................... 104
2 Caracterstica da Linguagem
2.1) Simples
Mesmo sendo estruturada com base no c++, a linguagem omite os maiores problemas da linguagem C++ que so os ponteiros, sobrecarga de operadores, herana mltiplas que so as maiores dores de cabea para os iniciantes.
2.3) Distribuda
Pronta para a Internet por possuir uma biblioteca extensa para lidar com TCP/IP, como HTTP e FTP. Os aplicativos Java podem acessar uma URLs (pginas Internet) como estivesse usando um arquivo no sistema local.
2.4) Robusta
Em Java os programas so escritos de forma confiveis tentando evitar possveis erros de implementao. Java coloca nfase na verificao antecipada de possveis erros, na
SCRS 502 Bl. C Ent. 22 W2 CEP - 70330-530 Tel.: (61) 3225-7784 Braslia - DF
2.5) Segura
A coleta de lixo a grande arma do Java, pois aqueles erros de acesso memria que bem evidenciados pelos programadores quando usam C++ so corrigidos pelos coletores de lixo que coletam esses lixos automaticamente. A eliminao do uso de ponteiros (que o responsvel principal pelos lixos deixados pelos programadores quando no usados de forma correta), portanto favorvel ao uso de vetores e outras estruturas substitutivas trazendo benefcios de segurana.
2.7) Portvel
Java foi criada para ser portvel. O bytecodes gerado pelo compilador pode ser transportado para plataformas distintas que suportam Java (Solaris, Windows, MAC, OS, Linux e outros). No necessrio compilar o programa novamente para execut-lo em outro sistema, porque o prprio compilador Java escrito em Java de modo que ele portvel para qualquer sistema que possui o interpretador (bytecodes).
3 Applets x Aplicativos
As applets rodam embutidas em pginas WEB. As applets rodam em um ambiente restrito de segurana. Aplicativos so independentes. possvel escrever programas que rodam tanto como applets quantos como aplicativos independentes.
4 Java SDK
O ambiente de desenvolvimento de software Java, Java SDK formado essencialmente por um conjunto de aplicativos que permitem entre outras tarefas compilar e executar programas escritos na linguagem Java. Pode ser baixado gratuitamente na pagina da SUN (www.sun.com). As ferramentas bsicas do kit de desenvolvimento do Java so: compilador Java: javac interpretador de aplicativos Java (mquina virtual): java interpretador de applets java: appletviewer
Outras ferramentas javadoc; gerador de documentao para programas java. jar: um manipulador de arquivos comprimidos no formato java archive. Jdb: depurador de programas javae e outras.
5 - Java API
A linguagem java menor e mais simples do que C++, entretanto tem uma grande biblioteca de classes. Principais caractersticas: Classes so agrupadas em pacotes API Java2 tem cerca de 60 pacotes API pode ser consultada em http: //java.sun.com/j2se/1.4/docs/api/
Descrio Manipulao de aplicaes applet Trabalhar com janelas e seus componentes Manipulao de entradas e sadas Manipulao de padres da linguagem
Manipulao de definies matemticas Manipulao de rede Manipulao de texto Manipulao de utilidades Trabalhar com janelas e seus componentes
Execute 1: Documentao
1. Para verificar estas instalaes siga os passos descritos abaixo: 2. Acessar o windows explorer: (iniciar, programas, windows explorer) 3. Acessar o disco local (c:), acessar a pasta j2sdk1.4.2_04 4. Verifique as pastas instaladas. 5. Acesse a pasta DOCS, dois cliques no arquivo index.htm (nesta pasta esto as documentaes do java que sero til no decorrer do curso de java), clique no link API & Language, clique no link Java 2 Platform API Specification.
2 O IDE
O IDE (ambiente de desenvolvimento integrado) instalado em nossos computadores o JCreator (Xinox Software). De fcil compreenso e bem leve.
10
11
Ferramenta Compilar
Ferramenta Executar
2. Digite o programa na parte da janela onde est especificado para digitar o programa:
12
// BemVindo.java public class BemVindo{ // classe BemVindo public static void main(String args[ ]){ System.out.println(Bem Vindo a Hytec); } }
public um qualificador do mtodo que indica que este acessvel externamente a esta classe (para outras classes que eventualmente seriam criadas). No nos deteremos neste aspecto agora, por enquanto todos os mtodos sero declarados como public. static um qualificador que indica que o mtodo deve ser compartilhado por todos os objetos que so criados a partir desta classe. Os mtodos static podem ser invocados, mesmo quando no for criado nenhum objeto para a classe, para tal deve-se seguir a sintaxe: <NomeClasse>.<NomeMetodoStatic>(argumentos) Retornaremos a esta explicao posteriormente, por enquanto apenas necessrio saber que particularmente o mtodo main precisa ter uma qualificao porque ele chamado sem que se crie nenhum objeto de sua classe (classe BemVindo). void Semelhante ao void em C/C++, o valor de retorno da funo. Quando a funo no retorna nenhum valor ela retorna void, uma espcie de valor vazio que tem que ser especificado. main um nome particular do mtodo que indica para o compilador o incio do programa, dentro deste mtodo e atravs de interaes entre os atributos e argumentos visveis nele que o programa se desenvolve. String argv[] o argumento de main e por consequncia do programa todo. um vetor de strings que formado quando so passados ou no argumentos atravs da invocao do nome do programa na linha de comando do sistema operacional. { .... } Abre chaves e fecha chaves: delimitam um bloco de cdigo
SCRS 502 Bl. C Ent. 22 W2 CEP - 70330-530 Tel.: (61) 3225-7784 Braslia - DF
13
// classe BemVindo O uso das duas barras determina que o texto depois delas seja um comentrio que no faz parte das intrues do programa e assim para definir explicaes sobre a instruo usada no programa. No exemplo colocado a frase classe BemVindo apenas como um comentrio que no faz parte dos comandos e sim apenas uma explicao. System.out.println Chamada do mtodo println para o atributo out da classe ou objeto System. O argumento uma constante do tipo String. println assim como o writeln de Pascal, imprime a String e posiciona o cursor na linha abaixo, analogamente print no avana a linha.
3. Salvar o programa. Acesse o menu File, a opo Save All 4. Compilar o programa. Menu Build, opo Compile File. 5. Executar o programa. Menu Build, opo Execute File. 6. Programa apenas imprimiu a mensagem Bem Vindo a Hytec
14
Tipo inteiro
Descrio Usado para descrever um dado que utiliza nmeros inteiros. Tamanho (8 byte) Usado para descrever um dado que utiliza nmeros inteiros com tamanho menor que o tipo long.Tamanho (4 byte). Usado para descrever um dado que utiliza nmeros inteiros com tamanho menor que o tipo int. Tamanho (2 byte) Usado para descrever um dado que utiliza nmeros inteiros com tamanho menor que o tipo short. Tamanho (1 byte) Usado para descrever um dado que utiliza nmeros reais. Tamanho (8 byte) Usado para descrever um dado que utiliza nmeros reais com tamanho meno que double. Tamanho (4
Tel.: (61) 3225-7784 Braslia - DF
Int
inteiro
short
inteiro
byte
inteiro
double
ponto flutuante
float
ponto flutuante
15
byte) char caracter Usado para descrever apenas um caracter alfanumrico e smbolos. Tamanho (1 byte) Usado para descrever um dado que apresente apenas verdadeiro (true) ou falso (false). Tamanho (1 bit).
boolean
1.2) Variveis
Variveis so locais onde os dados so mantidos. Como na maioria das linguagens de programao, so de tipos especficos. O tipo de uma varivel determina o tipo de informao que pode ser armazenada nela. Variveis em Java podem ser declaradas como atributos no corpo da classe ou podem ser declaradas localmente em qualquer parte da implementao de um mtodo. A declarao de variveis no Java segue a sintaxe:
<identificador> = <valor>;
Exemplos:
16
float salario = 260.5; // declarao de uma varivel real com contedo char sexo = m; // declarao de uma varivel caracter com o contedo boolean achou = false; // declarao de uma varivel lgica com contedo qtfilhos = 9; // atribui o valor 9 a varivel qtfilhos .... 1.3) Operadores
A linguagem Java oferece um conjunto bastante amplo de operadores destinados a realizar operaes aritmticas, lgicas, relacionais e atribuio.
17
Diviso
Resto da diviso
Usado para identificar o resto da diviso entre dois nmeros inteiros. Por exemplo: A = 10 X=A%B O valor de X 4 B=6
Sinal negativo
Usado para identificar o sinal negativo de um nmero. Por exemplo: A=5 X = -A O valor de X 5
++
Incremento (+1)
Usado para incrementar (acrescentar 1) um nmero. Por exemplo: A=5 X = ++a igual X= A + 1 O valor de X 6
--
Decremento(-1)
Usado para decrementar (retirar 1) um nmero. Por exemplo: A=5 X = --A igual X = A - 1 O valor de X 4
18
Estes operadores aritmticos podem ser combinados para formar expresses onde deve ser observada a precedncia de avaliao de operadores. Parntesis pode ser utilizado para determinar uma forma especfica de avaliao de uma expresso. Por exemplo: 5+4*3 o resultado ser 17. (5+3)*3 o resultado ser 24. Nos exemplos o uso dos parntesis indica que deve ser feitas a soma primeira e depois a multiplicao. Caso no use o parntesis feita primeira multiplicao e depois a soma.
//Aritmeticos.java public class Aritmeticos { public static void main(String arg[]){ // declarao e inicializao de duas variveis int a = 5; int b = 2; System.out.print(a = ); // exibe em tela o texto a= System.out.println(a); // mostra o contedo da varivel a System.out.print(b = ); // exibe em tela o texto b= System.out.println(b); // mostra o contedo da varivel b System.out.print(a = ); // exibe em tela o texto a= System.out.println(++a); // mostra o resultado da operao ++a System.out.print(b = ); //exibe em tela o texto b= System.out.println(--b); //exibe em tela o resultado da operao --b
19
System.out.print(a + b =); // exibe em tela o texto a+b= System.out.println (a+b); // exibe em tela o resultado de a+b System.out.print(a b =); // exibe em tela o texto a-b= System.out.println(a-b); // exibe em tela o resultado de a-b igual 5 System.out.print(a * b =); // exibe em tela o texto a * b = System.out.println(a*b); // exibe em tela o resultado de a*b 6 System.out.print(a / b = ); System.out.println(a/b); // exibe em tela o texto a / b = //exibe em tela o resultado de a / b igual 6
System.out.print(a % b = ); // exibe em tela o texto a % b = System.out.println (a%b); //exite em tela o resultado a % b igual 0 } }
4. Compilar e Executar. Verifique o resultado: a=5 b=2 a=6 b=1 a+b=7 ab=5 a*b=6 a/b=6 a%b=0
Operador ==
Significado igual
Exemplo Usado para comparar se uma expresso igual outra. Por exemplo: A=5 B=8
X = A == B
SCRS 502 Bl. C Ent. 22 W2 CEP - 70330-530 Tel.: (61) 3225-7784 Braslia - DF
20
O valor de X false, pois 5 no igual a 8. != diferente Usado para comparar se uma expresso diferente da outra. Por exemplo: A=5 B=8
X = A != B O valor de X true, pois 5 no diferente de 8. > maior que Usado para comparar se uma expresso maior do que a outra. Por exemplo: A=5 X=A>B O valor de X false, pois 5 no maior do que 8. >= maior ou igual que Usado para comparar se um expresso maior ou igual a outra. Por exemplo: A=5 B=8 B=8
X = A >= B O valor de X false, pois 5 no maior ou igual a 8. < menor que Usado para comparar se uma expresso menor do que a outra. Por exemplo: A=5 X=A<B O valor de X true, pois 5 menor do que 8. <=
SCRS 502 Bl. C Ent. 22 W2 CEP - 70330-530
B=8
21
uma expresso menor ou igual do que a outra. Por exemplo: A=5 B=8
Note que o operador igual == (usado para comparar se uma expresso igual a outra) para diferenciar da atribuio = ( usado para armazenar um valor em uma varivel).
int a = 15; // declara a varivel inteira a e atribui o valor 15 a ela int b = 12; // declara a varivel inteira b e atribui o valor 12 a ela System.out.print(a = ); // exibe o texto a= System.out.println(a); // exibe o contedo da varivel a System.out.print(b = ); // exibe o texto b= System.out.println(b); // exibe o contedo da varivel b System.out.print(a = = b ); // exibe o texto a = = b System.out.println(a= =b); // exibe o resultado da comparao a = = b System.out.print(a != b ); // exibe o texto a != b System.out.println(a!=b); // exibe o resultado da comparao a != b
22
// exibe o texto a > b // exibe o resultado da comparao a > b // exibe o texto a < b // exibe o resultado a comparao a < b
e lgico (and): compara valores lgicos e a = false retorna verdadeiro caso todos os valores x = a && b forem verdadeiros. A false false true true B false true false true A && B false false false true
o valor x false
||
b = true
Tel.: (61) 3225-7784 Braslia - DF
23
retorna verdadeiro caso existe um valor x = a || b verdadeiro. A false false true true B false true false true A || B false true true true o valor x true
a = false b = true x = !a O valor de x true, pois aquilo que no falso so pode ser verdadeiro. y=!b O valor de y false, pois aquilo que no verdadeiro so pode ser falso.
//Logicos.java public class Logicos { public static void main(String arg[]){ boolean a=false; // declara a varivel logica a com o contedo false boolean b=true; // declar a varivel logica b com o contedo true
SCRS 502 Bl. C Ent. 22 W2 CEP - 70330-530 Tel.: (61) 3225-7784 Braslia - DF
24
System.out.print("a && b = "); // exibe o texto a && b = System.out.println(a&&b); // exibe o resultado a && b System.out.print("a || b = "); System.out.println(a||b); System.out.print("!a = "); System.out.println(!a); } }
4. Compilar e executar. Verifique o resultado.
a = false b = true a && b = false a || b = true !a = true
String cumprimento = oi; // declarao da varivel cumprimento com o contedo oi String A = bana; // declarao da varivel A com o contedo bana String B =nada. // declarao da varivel B com o contedo nada String C = A + B; // a string C unio da varivel A com a B igual a bananada. Quando uma string concatenada com um valor que no string esse valor convertido em string String disciplina = Pro+55; // coloca na string disciplina o valor Pro55.
SCRS 502 Bl. C Ent. 22 W2 CEP - 70330-530 Tel.: (61) 3225-7784 Braslia - DF
25
Isto feito freqentemente em comandos de impresso, como no exemplo a seguir: float nota = 20 System.out.println(Nota de Programao: +nota); Ocorre a juno do texto Nota de Programao com a varivel nota. O valor da nota convertido em string exibindo portanto o resutado Nota de Programao 20.
// StringDemo.java public class StringDemo { public static void main(String a[]){ String palavra1 = "Curso"; // declarao da varivel string palavra1 igual curso String palavra2 = "Java"; // declarao da varivel string palavra2 igual Java String frase = palavra1+ " "+ palavra2; // a varivel frase recebe a unio de //palavra1 mais espao ( ) mais palavra2 System.out.println(frase); //exibe na tela o contedo da varivel frase igual // Curso Java } }
4. Compilar e executar. Verifique o resultado. Curso Java
26
if ( condio ) comando1; else comando2; onde: condio: uma expresso de comparao de dados comando1: o comando caso a comparao seja verdadeira comando2: o comando caso a comparao seja falsa Traduo: Se (condio) comando1 ; seno comando 2;
Exemplo:
Para mais de um comando ser executado depois da declarao, utiliza-se o conceito de blocos, delimitados por {}.
Exemplo:
if ( fim == true ){ // comandos caso for verdadeiro a condio cont = 0; System.out.println(Trmino!); } else { // commandos caso for falso a condio cont = cont +1; System.out.println(Continuando...); }
SCRS 502 Bl. C Ent. 22 W2 CEP - 70330-530 Tel.: (61) 3225-7784 Braslia - DF
27
//ExemploIF.java public class ExemploIF { public static void main(String a[]){ char sexo= 'F'; // declarao da varivel caracter sexo contendo F
if (sexo == 'M') { // se o sexo for M de masculino System.out.println("Masculino"); // exibe a mensagem Masculino } else { System.out.println("Feminino"); // exibe a mensagem Feminino } } }
4. Compilar e Executar. Verifique o resultado: Feminino
Sintaxe:
28
onde: expresso: pode ser um valor char, byte, short ou int valor: o contedo do valor comandos: uma seguncia comandos caso o valor escolhido for igual ao conteudo default: o valor padro caso nenhum valor for escolhido break: a instruo usada para parar a execuo caso um valor seja encontrado
Traduo Escolha(expresso) { Caso valor: comandos; parar; ... outros casos: comandos; }
switch ( cmd ){ case 1: System.out.println(Item do menu 1); break; case 2: System.out.println(Item do menu 2); break; case 3: System.out.println(Item do menu 3); break; default: System.out.println(Comando invalido!); } O resultado ser a escolha do segundo valor do cmd pois igual a 2 ento exibir na tela Item do menu 2 e para (break) a execuo do comando pois encontrou um valor verdadeiro. Caso o valor do cmd fosse 4 ser impresso Comando invalido pois nehum valor foi encontrado portanto escolheu o valor padro (default usado caso no encontre nenhum valor verdadeiro).
29
//ExemploSwitch.java public class ExemploSwitch { public static void main(String a[]){ char sexo= 'F'; // declarao da varivel caracter sexo contendo F; switch (sexo){ // escolha sexo case 'M':System.out.println("Masculino");break; // caso M case 'F':System.out.println("Feminino");break; // caso F default:System.out.println("Sexo invlido"); // outros casos } } }
4. Compilar e executar. Veja o resultado: Feminino
while (condio) { bloco de comandos; } onde: condio: usado para repetir enquanto a condio for verdadeira bloco de comandos: comandos usados para repetir caso a condio seja verdadeira.
SCRS 502 Bl. C Ent. 22 W2 CEP - 70330-530 Tel.: (61) 3225-7784 Braslia - DF
30
while ( i != 0 ){ // enquanto i for diferente de zero salario = salario + 10; i--; // i menos 1 } Nesse exemplo o valor inicial de i 3 portanto a condio satisfeito (i!=0) ocorre a execuo dos comando dentro do while (repetio) veja o que acontece i = 3 e salario = 260 entrou no while pois i diferente de 0(i!=0) { salario = 260 + 10 portanto salario = 270 i-- portanto i igual a 2 (i!=0) repete salario = 270 + 10 portanto salario = 280 i-- portanto i igual a 1 (i!=0) repete salrio = 280 + 10 portanto salrio = 290 i-- portanto i igual a 0 (i!=0) no repete pois o valor de i 0 sai do while } saiu do while
31
// ExemploWhile.java public class ExemploWhile{ public static void main(String a[]){ int j = 10; // declara uma varivel inteira chamada j contendo o valor 10 while (j > 0){ // enquanto a varivel j for maior que 0 repete System.out.println(j); // exibe o valor de j j--; // decrementa o valor de j (retira 1 da varivel j) } } } 4. Compilar e executar. Veja o resultado 10 9 8 7 6 5 4 3 2 1 2.2.2) Declarao do - while
Utilizada quando se quer que o corpo do lao seja necessariamente executado. A expresso de comparao avaliada depois que o lao for executado.
Sintaxe:
32
i = 3 e salario = 260 faa { salario = 260 + 10 portanto salario = 270 i-- portanto i igual a 2 (i!=0) repete salario = 270 + 10 portanto salario = 280 i-- portanto i igual a 1 (i!=0) repete salrio = 280 + 10 portanto salrio = 290 i-- portanto i igual a 0 (i!=0) no repete pois o valor de i 0 sai do while }enquanto i for diferente de 0 saiu do while
33
public static void main(String a[]){ int j=10; // declara uma varivel chamada j contendo o valor 10 do { // repete System.out.println(j); //exibe o valor da varivel j j--; // decrementa o valor de j ou seja retira 1 da varivel j } while (j>0); // enquanto j for maior que 0 } }
Sintaxe:
for (valor_inicial; condio para repetir; valor de incremento) { bloco de comandos } Traduo: para (valor_inicial; condio para repetir; valor de incremento){ bloco de comandos }
Exemplo:
34
//ExemploFor.java public class ExemploFor { public static void main(String a[]){ int j; // declara a varivel inteira j; for (j=10;j>0;j--){ // para (j=10 ; j>0; j--) repete de 10 at 1 System.out.println(j); // exibe o valor de j } } }
35
Sintaxe: try { Comandos normais que ser tratado; } catch (exception1){ Comandos de tratamento de erro1; } catch (exception2){ Comandos de tratamento de erro2; }
36
Traduo: Tratar { Comandos normais que ser tratado; } definir (exception1){ Comandos de tratamento de erro1; } definir (exception2){ Comandos de tratamento de erro2; } Sintaxe: try { Comandos normais; } finally { Comandos de tratamento de erro; } Traduo: Tratar { Comandos normais; } finalizar { Comandos de tratamento de erro; }
37
//TratamentoErros.java public class TratamentoErros { public static void main(String args[]){ int a = 10; // declarao varivel inteira a igual 10 int b = 0; // declarao varivel inteira b igual 0 int c; // declarao varivel inteira c try { // tratar o erro c = a / b; // diviso por zero causa erro pois a =10 e b = 0, ocorre 10/0 } catch (ArithmeticException e) { // define o erro de Aritmtica System.out.println("Impossvel diviso por zero"); // exibe texto } } }
//TratamentoErrosF.java public class TratamentoErrosF { public static void main(String args[]){ int a = 10; // declarao da varivel a igual 10 int b = 0; // declarao da varivel b igual 0 int c; // declarao da varivel c try { // Tratar erro c = a / b; // diviso por zero causa erro
SCRS 502 Bl. C Ent. 22 W2 CEP - 70330-530 Tel.: (61) 3225-7784 Braslia - DF
38
} finally { // finaliza a execulo e exibe a mensagem de erro System.out.println("Impossvel diviso por zero"); } } }
2.4) Vetores
Vetores so objetos, eles possuem papel importante no estilo de programao dessa linguagem que exclui os ponteiros. Por serem objetos, vetores so obrigatoriamente alocados de maneira dinmica. O exemplo a seguir aloca um vetor de inteiros com trs posies, seguindo uma sintaxe semelhante alocao de objetos (que veremos mais adiante):
Sintaxe: <tipo primitivo> <nome do vetor>[ ] = new <tipo primitivo>[<tamanho do vetor>] onde: <tipo primitivo>: um dos tipos primitivos j conhecidos anteriormente. <nome do vetor>: o nome de identificao do vetor. new : criao do novo objeto vetor. <tamanho do vetor>: o tamanho das posie do vetor.
Exemplo: int x[ ] = int[3] no exemplo criado um vetor chamado x de inteiro com 3 posies
39
//VetorTest.java public class VetorTest { public static void main (String args[]) { int vetor[] = new int[3]; // declara um vetor de inteiros chamado vetor com 3 posies vetor[0]=0; // coloca na posio 0 o valor 0 vetor[1]=10; // coloca na posio 1 o valor 10 vetor[2]=20; // coloca na posio 2 o valor 20 int soma; // declara uma varivel inteira chamada soma; soma = vetor[0] + vetor[1] + vetor[2] // soma os valores das posies do vetor System.out.println(soma); // exibe a soma } }
40
2) Desenvolva uma aplicao que declare duas strings e faa a concatenao dessas strings e imprima utilizando o comando System.out.println(). 3) Desenvolva uma aplicao que conte de 1 at 10, usando os comandos (for, while e do ..While) 4) Desenvolva uma aplicao que declare duas variveis de ponto flutuante e verifique qual a varivel maior utilizando o comando if. 5) Desenvolva uma aplicao que declare uma varivel caracter chamada estacivil contendo o caracter c. Faa uma estrutura usando o switch para que possa imprimir casado caso a varivel estadocivil possua o contedo c. Solteiro quando o contedo for s. Divorciado quando o contendo for d. Vivo quando o contedo for v. Caso o contedo seja diferente dos citados acima imprima Estado civil invalido. 6) Desenvolva uma aplicao que declare um vetor de 10 posies e atribua o valor 20 a todas as posies.
41
Bola
42
Onde cor, material, oca e raio so os atributos que descrevem as caractersticas do objeto da classe Bola. Para modelar as classes usaremos a notao UML para melhor estruturar as classes, seus atributos e mtodos.
2) Atributos e comportamento
Uma classe Java consiste em dois tipos de informao: atributos e comportamento. Ambos esto presentes em Vulcao, um projeto que voc implementar hoje como uma classe. Esse projeto, uma simulao por computador de um veculo de explorao vulcnica. Os atributos so os dados que diferenciam um objeto do outro. Eles podem ser usados para determinar a aparncia, o estado e outras qualidades dos objetos pertencentes a essa classe. Um veculo de explorao vulcnica poderia ter os seguintes atributos: - informaes: explorando, movendo, retornando ao incio. - Velocidade: em milhas por hora - Temperatura: em grau fahrenheit Em uma classe, os atributos so definidos atravs de variveis (lugares para armazenar informaes em um programa de computador) Comportamento se refere s atividades que uma classe de objetos pode realizar neles mesmos e em outros objetos. Ele pode ser usado para alterar os atributos de um objeto, receber informaes de outros objetos e enviar mensagens para outros objetos que estejam solicitando a eles a realizao de tarefas. Um rob de vulco poderia ter o seguinte comportamento: - verificar a temperatura atual - iniciar um levantamento - relatar sua localizao atual O comportamento de uma classe de objetos implementado atravs de mtodos. Os mtodos so grupos de instrues relacionadas em uma classe de objetos em seus prprios objetos e em outros e so utilizados da mesma maneira que as funes e subrotinas so usadas em outras linguagens de programao. Os objetos se comunicam entre si atravs de mtodos. Uma classe ou um objeto pode chamar mtodos de outra classe ou objeto por muitos motivos, incluindo os seguintes:
SCRS 502 Bl. C Ent. 22 W2 CEP - 70330-530 Tel.: (61) 3225-7784 Braslia - DF
43
- para relatar uma alterao em outro objeto - para dizer ao outro objeto para alterar algo a respeito de si mesmo - para pedir que o outro objeto faa algo
Sintaxe de um mtodo pblico: public <tipo de retorno> <nome do mtodo>(<argumentos>){ instrues executadas pelo mtodo return <varivel de retorno> } onde: <tipo de retorno>: so os tipos primitivos estudados anteriormente. <nome do mtodo>: um nome que identifica um mtodo. <argumentos>: so dados que devem ser passados para o mtodo. return: o comando usado para retorna o valor definido pelo mtodo. <varivel de retorno>: a varivel usada para retorna o valor usado no mtodo.
Exemplo: public int soma(int x, int y){ int s; s = x + y; return s; } no exemplo descrito acima criado um mtodo pblico chamado soma que do tipo de retorno inteiro e recebe os argumentos x,y que so inteiro. A varivel s usada para fazer a soma de x mai y. A varivel s usada para retornar o valor do soma de x com y. System.out.println(soma(10,8)); O comando acima mostra a utilizao do mtodo soma que recebe os valores 10 para x e 8 para y. Portanto ao chamar o mtodo ser feita a soma de x com y dando o resultado de 18, pois esta usando o comando para exibir essa soma atravs do mtodo.
SCRS 502 Bl. C Ent. 22 W2 CEP - 70330-530 Tel.: (61) 3225-7784 Braslia - DF
44
//atributos: so os dados que define a caracterstica da classe Bola String cor; String material; boolean oca; float raio; //mtodos: so comportamentos que podem alterar um atributo de uma classe /* este mtodo obterCor() retorna uma string representando a cor da Bola. Onde public a assinatura tornando este mtodo pblico para usar em qualquer programa. String o tipo de retorno do mtodo. obterCor o nome do mtodo. O abrir e fechar parntesis indicam que um mtodo sem argumentos. */ public String obterCor(){ return cor; // retorna a cor; }
/* este mtodo obterMaterial() retorna uma string representando o material da Bola. Onde public a assinatura tornando este mtodo pblico para usar em qualquer parte do programa. String o tipo de retorno do mtodo. obterMaterial o nome do mtodo. O abrir e fechar parntesis indicam que um mtodo sem argumentos. */ public String obterMaterial(){ return material; } /* este mtodo obterOca() retorna true ou false representado se a Bola oca ou no. Onde public a assinatura tornando este mtodo pblico para usar em qualquer parte do programa. boolean o tipo de retorno do mtodo. obterOca o nome do mtodo. O abrir e fechar parntesis indicam que um mtodo sem argumentos. */ public boolean obterOca(){ return oca; }
45
/* este mtodo obterRaio() retorna ponto flutuante para o valor do raio. Onde public a assinatura tornando este mtodo pblico para usar em qualquer parte do programa. float o tipo de retorno do mtodo. obterRaio o nome do mtodo. O abrir e fechar parntesis indicam que um mtodo sem argumentos. */ public float obterRaio(){ return raio; }
// mtodo sem retorno (usa o comando void ) e com argumento (String c) para mudar a cor da bola public void mudarCor(String c){ cor = c; } // mtodo sem retorno (usa o comando void ) e com argumento (String m) para mudar a material da bola public void mudarMaterial(String m){ material = m; } // mtodo sem retorno (usa o comando void ) e com argumento (boolean o) para mudar oca da bola public void mudarOca(boolean o){ oca = o; } // mtodo sem retorno (usa o comando void ) e com argumento (float r) para mudar o raio da bola public void mudarRaio(float r){ raio = r; } // mtodos sem retorno e sem argumentos imprimirInfoBola: usado para imprimir as informaes da bola public void imprimirInfoBola(){ System.out.println("Cor.....: "+obterCor()); // exibe informao da cor da bola System.out.println("Material: "+obterMaterial()); // exibe informao do material da bola System.out.println("Oca.....: "+obterOca()); // exibe informao do oco da bola System.out.println("Raio....: "+obterRaio()); // exibe informao do raio da bola System.out.println(""); // exibe uma linha em branco }
// mtodo principal da aplicao public static void main(String a[]){ /* cria um novo objeto chamado bl a partir da classe Bola. O comando new usado para criar o objeto a partir do modelo (classe) Bola */ Bola b1 = new Bola(); // mudando o conteudo dos atributos da bola atravs da notao de ponto que indica o objeto.atributo b1.cor = "Branca"; b1.material = "Couro"; b1.oca = true; b1.raio = 2; SCRS 502 Bl. C Ent. 22 W2 CEP - 70330-530 Tel.: (61) 3225-7784 Braslia - DF
46
// imprimindo informaes da bola atravs da notao de ponto objeto.mtodo b1.imprimirInfoBola(); /* mudando o conteudo dos atributos da bola usando os mtodos atravs notao de ponto objeto.mtodo. */ b1.mudarCor("Vermelha"); // chama o mtodo mudarCor colocando a cor vermelha b1.mudarMaterial("Plastico"); // chama o mtodo mudarMaterial colocando o material plastico b1.mudarOca(false); // chama o mtodo mudarOca colocando o valor false b1.mudarRaio(3); // chama o mtodo mudarRaio colocando o valor 3 no raio // imprimindo informaes da bola b1.imprimirInfoBola(); } }
47
} // construtor com argumentos. public Pai(String n, String s, String c, String o, int i){ nome = n; sobrenome=s; corcabelo=c; corolhos=o; idade=i; } // mtodos sem argumentos e com retorno public int obterIdade(){ // mtodo usado para retornar a idade inteira return idade; // retorna a idade } public String obterCorCabelo(){ // mtodo usado para retornar a cor do cabelo string return corcabelo; // retorna a cor do cabelo } public String obterCorOlhos(){ // mtodo usado para retornar a cor dos olhos string return corolhos; // retorna a cor dos olhos } public String obterNome(){ return nome; } public String obterSobrenome(){ return sobrenome; } // mtodo usado para retornar o nome string // retorna o nome
// mtodos sem retorno void usado para mostrar as informaes dos atributos public void imprimirInfo(){ System.out.println("Nome...........: "+obterNome()+" "+obterSobrenome()); System.out.println("Cor dos Cabelos: "+obterCorCabelo()); System.out.println("Cor dos Olhos:.: "+obterCorOlhos()); System.out.println("Idade..........: "+obterIdade()); System.out.println(""); } //mtodos com argumentos e sem retorno public void mudarIdade(int i){ // mudar a idade idade = i; } public void mudarCorCabelo(String c){ corcabelo=c; } // mudar a cor do cabelo
public void mudarCorOlhos(String o){ // mudar a cor dos olhos corolhos=o; } SCRS 502 Bl. C Ent. 22 W2 CEP - 70330-530 Tel.: (61) 3225-7784 Braslia - DF
48
// mudar o nome
// mudar o sobrenome
// mtodo principal da aplicao public static void main(String a[]){ // construindo os objetos Pai p1 = new Pai(); // cria o objeto p1 a partir da classe Pai // Criar o objeto p2 a partir da classe Pai atribuindo as caractersticas do Pai Pai p2 = new Pai("Carlos","Sousa","Loiros","Azuis",38); // imprimindo as informaes p1.imprimirInfo(); // exibe informaes do objeto p1 p2.imprimirInfo(); // exibe informaes do objeto p2 // alterando as informaes p1.mudarNome("Sandro"); // muda o nome do objeto p1 p2.mudarIdade(54); // muda a idade do objeto p2 // imprimindo as informaes p1.imprimirInfo(); // exibe informaes do objeto p1 p2.imprimirInfo(); // exibe informaes do objeto p2 } }
49
Para ver classes objetos, atributos e comportamentos em ao, voc desenvolver uma classe Vulcao, criar objetos a partir dela e trabalhar com eles em um programa funcional.
public void mostrarAtributos(){ // este mtodo mostra as informaes dos atributos System.out.println("Informacao : "+informacao); System.out.println("Velocidade : "+velocidade); System.out.println("Temperatura: "+temperatura); } // executando o programa public static void main(String a[]){ Vulcao dante = new Vulcao(); // criando o objeto dante da classe vulcao dante.informacao = "Explorando"; // mudando o atributo informacao do objeto dante dante.velocidade = 2; // mudando o atributo velocidade do objeto dante dante.temperatura = 510; // mudando o atributo temperatura do objeto dante dante.mostrarAtributos(); // exibe as informaes do objeto dante } } SCRS 502 Bl. C Ent. 22 W2 CEP - 70330-530 Tel.: (61) 3225-7784 Braslia - DF
50
51
Para obter o valor de uma varivel de instncia, voc usa a notao ponto. Com essa notao, o nome de uma varivel de instncia ou de classe possui duas partes: uma referncia a um objeto ou classe no lado esquerdo do ponto e a varivel no lado direito. A notao de ponto um modo de fazer referncia varivel de instncia e aos mtodos de um objeto usando um operador de ponto(.). Por exemplo, dante.velocidade = 2, o objeto dante obtm valor da velocidade que uma varivel de instncia. Voc utiliza a varivel de instncia para acessar variveis da classe. Chamar um mtodo em um objeto semelhante a fazer referncia a suas variveis de instncia: a notao ponto usada. O objeto cujo mtodo voc est chamando fica do lado esquerdo do ponto e o nome do mtodo e seus argumentos ficam no lado direito. Por exemplo: dante.mostrarAtributos(); dante.checarTemperatura();
Essa forma de acessar variveis e uma expresso (isto , ela retorna um valor) e os dois lados do ponto tambm so expresses.
7) Chamando mtodos
Chamar um mtodo em um objeto e semelhante a fazer referncia a suas variveis de instncia: notao de ponto usada. O objeto cujo mtodo voc est chamando fica no lado esquerdo do ponto e o nome do mtodo e seus argumentos ficam no lado direito. Por exemplo: dante.checarTemperatura(); dante.mostrarAtributos.
52
8) Criando classes
Ela definida atravs da palavra-chave class e do nome da classe como exemplo a seguir: class Bola{ //corpo da classe } Por definio, as classes herdam da classe Object. Essa a superclasse na hierarquia de classes Java. A palavra-chave extends usada para indicar a superclasses de uma classe. Veja a seguinte subclasse de bola: class BolaFutebol { //corpo da classe }
9) Criando Mtodos
Os mtodos definem o comportamento de um objeto e tudo o que acontece quando ele criado e as diversas tarefas que pode realizar durante sua existncia. As definies dos mtodos tem quatro partes bsicas: Nome do mtodo; Uma lista de parmetros; Tipo de objeto ou tipo primitivo retornado pelo mtodo; corpo do mtodo. Sintaxe bsica do mtodo: Tipo nomedometodo(tipo arg1, tipo arg2, tipo arg3...){ // corpo do mtodo }
Por exemplo:
53
Usado para fazer referncia a uma classe mais acima de outra na hierarquia de classes, sua subclasse. Uma classe pode ter apenas uma superclasse imediatamente superior, mas esta tambm pode ter uma superclasse e assim por diante. t = super.x; a varivel de instncia x da classe superior super.resetData(this); // chama mtodo resetData, definido na classe superior return super; // retorna o objeto da classe superior super() //construtor da classe superior
54
// mtodos construtores public MaquinaLavar(int velocidade){ this.velocidade=velocidade; // this, define que o atributo velocidade da classe recebe // a varivel velocidade do mtodo MaquinaLavar } //mtodos public int aumentarVelocidade (){ return velocidade++; } public int diminuirVelocidade(){ return --velocidade; } public int obterVelocidade(){ return velocidade; } public void setVelocidade(){
if (velocidade<0) { // se velocidade menor que zero. Zerar o valor System.out.print("Velocidade invalida.\n Parando motor..."); velocidade =0; } if (velocidade>100){ // se velocidade maior que 100. Voltar a 99. System.out.print("Hiperaquecimento. Reduzindo velocidade para 99"); velocidade=99; } }
// mtodo usado para desenvolver a aplicao public static void main(String args[]){ int y=0,x=0; MaquinaLavar veloMaquina = new MaquinaLavar(0); do { y=veloMaquina.diminuirVelocidade(); x++; } while(x<5); System.out.print(y); veloMaquina.setVelocidade(); SCRS 502 Bl. C Ent. 22 W2 CEP - 70330-530 Tel.: (61) 3225-7784 Braslia - DF
55
} }
56
neon.seLigada(); } }
11) Acessibilidade
Acessibilidade de uma classe, mtodo ou atributo de uma classe a forma como que tal pode ser visto e utilizado por outras classes. Este conceito mais conhecido como encapsulamento (ocultando dados) sendo muito importante dentro da orientao a objeto. A determinao de acessibilidade de uma classe ou membro de uma classe feita pelos qualificadores de acesso, ou seja palavras reservadas da linguagem que determina o grau de encapsulamento exibe por uma classe ou elementos. Abaixo uma pequena tabela esquematizando a acessibilidade de elementos declarados em uma classe. Mtodos Classe Private Protected Package Public e Atributos da Implementao da Classe Instncia da Classe
no no sim sim
// atributo private double frequencia; // mtodo de acesso public double getFrequencia(){ return frequencia; }
57
public class Exemplo{ //atributos private int a; private int b //construtor public Exemplo(){ a = 0; b = 0; } }
Evite o uso de muitos tipos bsicos em uma classe. Nem todos os atributos necessitam de mtodos de acesso. Padronize a estrutura de suas classes. Divida classes com muita responsabilidade. Utilize nomes significativos na denominao das classes.
13) Herana
Herana o compartilhamento de atributos e operaes entre classes baseado num relacionamento hierrquico do tipo pai e filho, ou seja a classe pai contm definies que podem ser utilizadas nas classes definidas como filho. A classe pai o que se denomina classe base ou superclasse e as classes filho so chamadas de classes derivadas ou subclasses. Este mecanismo sugere que uma classe poderia ser definida em termos mais genricos ou amplos e depois refinada sucessivamente em uma ou mais subclasses especficas. Da a origem do termo tcnico que descreve a herana: especializao.
58
Em Java indicamos que uma classe derivada de uma outra classe utilizando a palavra reservada extends conforme o trecho simplificado de cdigo dado a seguir: A superclasse no recebe qualquer indicao especial. Por exemplo:
//Superclasse.java public class SuperClasse { . . . } //SubClasse.java public class SubClasse extends SuperClasse { . . . }
59
velocidadeMaxima = v; } protected void ajustarVelocidade(int v){ if (v > 0 && v<=velocidadeMaxima) velocidade = v; } public int obterVelocidadeMaxima( ) { return velocidadeMaxima; } public int obterVelocidade( ){ return velocidade; } }
4. Compilar 5. Acesse o menu File, opo new, opo file. Coloque o nome do arquivo de LiquidificadorAnalogico.java 6. Digite o seguinte cdigo:
//LiquidificadorAnalogico.java public class LiquidificadorAnalogico extends LiquidificadorGenerico { //construtor public LiquidificadorAnalogico( ){ velocidade =0 ; } //mtodos public void aumentarVelocidade(){ ajustarVelocidade(velocidade +1); } public void diminuirVelocidade( ){ ajustarVelocidade(velocidade 1); } }
7. Compilar 8. Acesse o menu File, opo new, opo file. Coloque o nome do arquivo de LiquidificadorDigital.java 9. Digite o seguinte cdigo:
//LiquidificadorDigital.java SCRS 502 Bl. C Ent. 22 W2 CEP - 70330-530 Tel.: (61) 3225-7784 Braslia - DF
60
public class LiquidificadorDigital extends LiquidificadorGenerico { //construtor public LiquidificadorDigital( ){ velocidade =0 ; } //mtodos public void trocarVelocidade(int v){ // aciona mtodo protegido para troca de velocidade ajustarVelocidade(v); } }
10. Compilar 11. Acesse o menu File, opo new, opo file. Coloque o nome do arquivo de LiquidificadorTestar.java 12. Monte uma aplicao para utilizar os atributos e mtodos das classes LiquidificadorAnalogico e LiquidificadorDigital 13. Compilar e executar.
61
Para definir uma classe ou mtodo abstrato basta acrescentar o qualificador abstract a classe ou ao mtodo. Mtodos abstratos obrigam que as subclasses tenham que implement-los.
15) Interface
O Java permite a definio de um tipo especial de classe denominada interface. Uma interface uma classe que permite obter resultados semelhantes aos obtidos com a herana mltipla, isto , permite o compartilhamento das interfaces das classes envolvidas sem o compartilhamento de suas implementaes, levando ao extremo o conceito da orientao objetos. Isto significa que, embora o Java no oferece os mecanismos de herana mltipla (quando uma classe compartilha a interface e implementao de vrias classes base simultaneamente), possvel obter-se a melhor parte da herana mltipla (ao compartilhamento apenas da interface da classe) atravs deste novo mecanismo. O nome interface se origina exatamente do fato que o que se pretende uma definio compartilhvel da interface propriamente dita de uma classe mas no de sua implementao efetiva. A vantagem de utilizar-se as interfaces a definio de um protocolo entre classes, isto , uma especificao do que uma classe deve oferecer e implementar em termos de seus mtodos o que resulta numa poderosa abstrao. Uma interface pode ser declarada como exemplificado a seguir: interface NomeDaInterface { // declarao de atributos // declarao de mtodos sem implementao }
Os mtodos devero obrigatoriamente ser implementados nas classes que utilizarem a interface.
SCRS 502 Bl. C Ent. 22 W2 CEP - 70330-530 Tel.: (61) 3225-7784 Braslia - DF
62
As subclasses de Trabalhador devem implementar uma interface que contenha pelo menos o mtodo clculo. A classe Trabalhador deve conter um construtor que aceite o nome e o sobrenome do empregado como parmetros. A classe tambm deve conter os seguintes mtodos: getPrimeiroNome que retorna o nome. getSobrenome que retorna o sobrenome. toString que retorna o nome e o sobrenome separados por um espao. A classe Trabalhador Chefe deve conter um construtor que aceita um nome, um sobrenome e um salrio semanal como argumentos. A classe tambm deve conter os seguintes mtodos: setSalarioSemanal para atribuir um novo valor varivel de instncia privada salarioSemanal. Calculo para calcular o valor do salrio de um chefe ToString que forma um String contendo o tipo de empregado (isto , Chefe: ) seguido pelo nome do empregado chefe e o salrio que recebe. A classe TrabalhadorComissao deve conter um construtor que aceita um nome, um sobrenome, um salrio, uma comisso e uma quantidade de itens vendidos como argumentos. A classe tambm dever conter os seguintes mtodos: setSalario, setComissao e setQuantidade para atribuir um novo valor s variveis de instncia privativas salrio, comisso e quantidade, respectivamente. calculo para calcular o valor do salrio de um trabalhador por comisso toString que forma um String contendo o tipo do empregado (Isto , Trabalhador por comisso:) seguido pelo nome do empregado e o salrio que recebe. A classe TrabalhadorProducao deve conter um construtor que aceita um nome, um sobrenome, um salrio por item produzidos, uma quantidade de itens produzidos. A classe tambm deve conter os seguintes mtodos: setSalario e setQuantidade para atribuir um novo valor s variveis de instncia privativas salario e quantidade, respectivamente. calculo para calcular o valor do salrio de um trabalhador por produo toString que forma um String contendo o tipo do empregado (isto ,Trabalhador por produo) seguido pelo nome do empregado e o salrio que recebe. A classe TrabalhadorHorista deve conter um construtor que aceita um nome, um sobrenome, um salrio e uma quantidade de horas trabalhadas. A classe tambm deve conter os seguintes mtodos: setSalario e setQuantidade para atribuir um novo valor s variveis de instncia privativas salario e horas. calculo para calcular o valor do salrio de um trabalhador horista. ToString que forma uma String contendo o tipo de empregado (isto ,Trabalhador Horista: ) seguido pelo nome do empregado e o salrio que recebe.
63
64
65
Adio do componente na interface: todos os componentes que devero ser exibidos na interface devem ser individualmente adicionado a esta, ou seja, cada um dos componentes deve ser adicionado a janela. Registro dos mtodos processadores de eventos: a interface das aplicaes verdadeiramente renderizada pela GUI oferecida pelo sistema operacional. Assim sendo, quando ocorre a interao do usurio com a aplicao atravs do teclado ou mouse, o sistema operacional envia para a aplicao responsvel pela janela uma srie detalhada de mensagens narrando o tipo e forma da interao do usurio mtodos especiais capazes de receber tais mensagens devem ser adicionados a aplicao e associados aos componentes que desejamos ser capazes de reagir interao com o usurio.
3)Componentes bsicos
Como mencionado anteriormente o pacote java.awt.Component a base para construo de todos os componentes GUI oferecidos pelo Java atravs o pacote java.awt. Esta classe oferece a infra-estrutura necessria para criao de objeto que possuam uma representao grfica que pode ser exibida na tela e com a qual o usurio pode interagir. Os componentes bsicos so listados abaixo: Componente Button Checkbox Classe Button Checkbox Pacote Funo
java.awt Criar botes java.awt Criar caixa de opes java.awt Criar um grupo de botes de opo java.awt Criar Caixa de seleo java.awt Criar janela completa java.awt Criar rtulo de texto java.awt Criar caixa de listagem java.awt Criar menus java.awt Criar barra de menu java.awt Criar item de menu java.awt Criar paineis
CheckboxGroup CheckboxGroup Choice Frame Label List Menu MenuBar MenuItem Panel Choice Frame Label List Menu MenuBar MenuItem Panel
66
java.awt Criar caixa multlinha de texto java.awt Criar uma caixa de entrada de texto java.awt Criar janela simples
//Janela.java import java.awt.*; // importar o pacote java para utilizar os componentes. public class Janela extends Frame{ //Construtor public Janela() { super(); // constroe a janela a partir da classe Frame setSize(320,240); // define o tamanho da janela setLocation(50,50); } // programa principal static public void main(String args[ ]){ Janela j = new Janela(); // instanciando o objeto da classe janela j.show(); // exibindo a janela na tela } }
67
Apesar da aparncia esperada, das capacidades de dimensionamento e iconizao, a janela no fechada quando acionamos a opo Fechar. Isto ocorre por no haver mtodos processadores de eventos capazes de receber tal mensagem encerrando a aplicao. Para que uma janela tenha seus eventos processados necessrio implementarmos um processador de eventos especfico. Existem basicamente duas opes para a soluo desta questo: Utilizar a classe java.awt.event.WindowAdapter. Utilizar a interface java.awt.event.WindowListener.
Vejamos o cdigo do exemplo anterior modificado para implementao da interface java.awt.event.WindowListener. Note a adio de uma nova diretiva import para indicarmos o uso do pacote java.awt.event.
68
//Janela2.java import java.awt.*; // importar o pacote java para utilizar os componentes. import java.awt.event.*; //importar o pacote para processadores de eventos public class Janela2 extends Frame implements WindowListener{ //herana do Frame e interface //WindowListener //Construtor public Janela2() { super(); // constroe a janela a partir da classe Frame setSize(320,240); // define o tamanho da janela setLocation(50,50); addWindowListener(this); //adiciona a lista de eventos para esta classe } // mtodos da interface WindowListener public void windowClosing(WindowEvent e){ // mtodo de evento quando fechar a janela System.exit(0); } public void windowClosed(WindowEvent e){} //mtodo de evento fechar a janela public void windowIconified(WindowEvent e){} // mtodo de evento a janela tornar-se cone public void windowOpened(WindowEvent e){} //mtodo de evento abrir janela public void windowDeiconified(WindowEvent e){} //mtodo de evento a janela deixar de ser cone public void windowActivated(WindowEvent e){} // mtodo de evento quando a janela ativa public void windowDeactivated(WindowEvent e){} //mtodo de evento quando a janela desativada // programa principal static public void main(String args[ ]){ Janela2 j = new Janela2(); // instanciando o objeto da classe janela j.show(); // exibindo a janela na tela } }
69
A outra soluo exige uma implementao de uma classe em separado (um segundo arquivo fonte) para o java.awt.event.WindowAdapter que possui um nico mtodo, windowClosing, responsvel por processar o evento de fechar janela, como mostrado abaixo:
4. Compilar.
70
5. Acesse o menu File, opo new, opo file. Coloque o nome do arquivo de Janela3.java. 6. Digite o seguinte cdigo:
//Janela3.java import java.awt.*; // importar o pacote java para utilizar os componentes. public class Janela3 extends Frame{ //Construtor public Janela3() { super(); // constroe a janela a partir da classe Frame setSize(320,240); // define o tamanho da janela setLocation(50,50); //define a localizao da janela nas coordenadas da tela x e y addWindowListener(new FecharJanela()); //adiciona o evento FecharJanela } // programa principal static public void main(String args[ ]){ Janela3 j = new Janela3(); // instanciando o objeto da classe janela j.show(); // exibindo a janela na tela } }
71
Os rtulos podem exibir uma nica linha de texto a qual no pode ser modificada nem editada pelo usurio, caracterizando um componente passivo. Mtodos apropriados so fornecidos para que o texto de um rtulo possa ser programaticamente obtido e modificado bem como seu alinhamento.
//ExemploLabel.java import java.awt.*; // importar o pacote java para utilizar os componentes. public class ExemploLabel extends Frame{ //herana da classe Frame private Label l1; private Label l2; public ExemploLabel(){ super(Exemplo de Label); // constroe a janela do construtor Frame; setSize(400,200); //define o tamanho do Frame setLocation(50,50); //define a localizao do frame // instanciao dos objetos label l1 = new Label(Bem vindo a Hytec); l2 = new Label(Java Bsico); // alterao do layout do Frame ou seja da exibio no frame setLayout(new FlowLayout()); add(l1); // adicionando o label 1 no frame add(l2); //adicionando o label 2 no frame } static public void main(String args[]){ ExemploLabel e = new ExemploLabel(); // instancia a classe ExemploLabel e.addWindowListener(new FecharJanela()); e.show(); // mostra a janela do frame } }
72
73
b1 = new Button(Clique aqui); // instanciando o boto l1 = new Label(Boto no foi usado); b1.addActionListener(this); add(b1); add(l1); contar = 0; } public void actionPerformed(ActionEvent e){ if (e.getSource()==b1){ contar++; l1.setText(Boto j foi usado + contar+ vez(es).); } }
static public void main(String args[]){ ExemploButton e = new ExemploButton(); // instancia a classe ExemploButton e.addWindowListener(new FecharJanela()); e.show(); // mostra a janela do frame } }
74
75
tx3.setText(tx4.getText()); tx4.setText(); } } static public void main(String args[]){ ExemploTextField e = new ExemploTextField(); // instancia a classe ExemploTextField e.addWindowListener(new FecharJanela()); e.show(); // mostra a janela do frame } }
76
import java.awt.*; // importar o pacote java para utilizar os componentes. import java.awt.event.*; // importar o pacote para processar os eventos principalmente de cliques no boto //neste exemplo public class ExemploPainel extends Frame implements ActionListener{ //classe Frame e interaface //ActionListener private TextField entrada; private Label l1,l2; private Button btlimpar, bttransf, btok; private Panel pacima,pabaixo,pdireita; // construtor public ExemploPainel(){ super(Exemplo de Painel); // constroe a janela do construtor Frame; setSize(400,120); //define o tamanho do Frame // instanciao dos objetos l1 = new Label(Entrada); // instanciando o Label l1 l2 = new Label(Sada); // instanciando o Label l2 entrada = new TextField(20); // instanciando o TextField btlimpar = new Button(Limpar); btlimpar.addActionListener(this); bttransf = new Button(Transferir); bttransf.addActionListener(this); btok = new Button(OK); btok.addActionListener(this); pacima = new Panel(new FlowLayout(FlowLayout.LEFT)); // gerenciador FlowLayout pabaixo= new Panel(new GridLayout(1,2)); // gerenciador GridLayout pdireita = new Panel(); //adio dos componentes pacima.add(l1); //adicionando o Label l1 ao Painel pacima pacima.add(entrada); //adicionando o TextField entrada ao Painel pacima add(pacima, BorderLayout.CENTER); //adicionando o Painel pacima ao frame no centro pdireita.add(l2); //adicionando o Label l2 add(pdireita,BorderLayout.EAST); //adicionando o Painel pdireita ao frame a direita pabaixo.add(btlimpar); //adicionando o boto btlimpar ao Painel pabaixo pabaixo.add(bttransf); //adicionando o boto bttransf ao Painel pabaixo pabaixo.add(btok); //adicionando o boto btok ao Painel pabaixo add(pabaixo,BorderLayout.SOUTH); // adicionando o Painel pabaixo ao frame abaixo. } // Interface ActionListener public void actionPerformed(ActionEvent e){ if (e.getSource()==btlimpar){ entrada.setText(); } else if (e.getSource()==bttransf) { l2.setText(entrada.getText()); }
else { //fechar a aplicao System.exit(0); } } public static void main(String a[]){ ExemploPainel p = new ExemploPainel();
77
78
public ExemploTextArea(){ super(Exemplo de TextArea); // constroe a janela do construtor Frame; setSize(300,300); //define o tamanho do Frame // instanciao dos objetos txentrada = new TextField(20); txentrada.addActionListener(this); txposicao = new TextField(3); txposicao.addActionListener(this); btestado = new Button(on/off); btestado.addActionListener(this); taeditor = new TextArea(); // criar painel Panel p = new Panel(); p.setLayout(new FlowLayout()); //usando o gerenciador de layout FlowLayout //adicionando os componentes no painel p.add(txentrada); p.add(txposicao); p.add(btestado); //adiciona painel no topo do frame add(p, BorderLayout.NORTH); //adiciona o TextArea no centro do frame add(taeditor, BorderLayout.CENTER); } // Interface ActionListener public void actionPerformed(ActionEvent e){ if (e.getSource()==btestado){ taeditor.setEditable(!taeditor.isEditable()); } else if (e.getSource()==txentrada) { taeditor.append(txentrada.getText()); txentrada.setText(); } else if (e.getSource()==txposicao){ //insere a entrada do texto na posicao indicada taeditor.insert(txentrada.getText(),Integer.parseInt(txposicao.getText())); txentrada.setText(); txposicao.setText(); } } public static void main(String a[]){ ExemploTextArea t = new ExemploTextArea(); t.addWindowListener(new FecharJanela()); t.show(); } }
79
Este componente basicamente produz dois tipos de eventos: java.awt.event.ItemEvent quando ocorre a seleo de um item e java.awt.event.ActionEvent quando o usurio d um duplo clique sobre um item e pela lista. Estes eventos requerem tratamento por listeners diferentes respectivamente como as interfaces: java.awt.event.ItemListener e java.awt.event.ActionListener.
80
81
} } // mtodos da interface ActionListener public void actionPerformed(ActionEvent e){ if (e.getSource()==txentrada){ // inclui entrada na lista cxlista.add(txentrada.getText()); txentrada.setText(""); } else if (e.getSource()==cxlista){ //remove o item indicado txentrada.setText(cxlista.getSelectedItem()); cxlista.remove(cxlista.getSelectedIndex()); lbexibicao.setText(" sem seleo"); } } // mtodo main public static void main (String a[]){ ExemploList l = new ExemploList(); l.addWindowListener(new FecharJanela()); l.show(); } }
82
83
setSize(200,200); // instancia do objetos lbexibicao = new Label(" sem seleo "); lbexibicao.setBackground(SystemColor.control); cxselecao = new Choice(); cxselecao.add("Branco"); cxselecao.add("Vermelho"); cxselecao.add("Azul"); cxselecao.add("Verde"); cxselecao.addItemListener(this); // adicionando os objetos no frame add(lbexibicao,BorderLayout.NORTH); add(cxselecao,BorderLayout.CENTER); } // mtodos da interface ItemListener public void itemStateChanged(ItemEvent e){ if (e.getSource()==cxselecao){ // testa se existe a selecao if (cxselecao.getSelectedIndex()>-1){ // exibe o item selecionado lbexibicao.setText(cxselecao.getSelectedItem()); switch (cxselecao.getSelectedIndex()){ case 0: setBackground(Color.white);break; case 1: setBackground(Color.red);break; case 2: setBackground(Color.blue);break; case 3: setBackground(Color.green);break; } repaint(); // redesenha a janel com as cores selecionadas } else // limpa a exibicao lbexibicao.setText(" sem seleo"); } } // metodo main public static void main (String a[]){ ExemploChoice c = new ExemploChoice(); c.addWindowListener(new FecharJanela()); c.show(); } }
84
85
// construtor public ExemploCheckbox(){ super("Exemplo de Checkbox"); setSize(300,300); // instanciao dos componentes chnegrito = new Checkbox("Negrito",false); chnegrito.addItemListener(this); chitalico = new Checkbox("Itlico",false); chitalico.addItemListener(this); chserif = new Checkbox("Serifado",false); chserif.addItemListener(this); txexibicao = new TextField("Experimente o checkbox"); txtam = new TextField("12"); txtam.addActionListener(this); // adicionando os componentes no frame add(txexibicao,BorderLayout.CENTER); Panel p = new Panel(); p.setLayout(new GridLayout(1,4)); p.setBackground(SystemColor.control); p.add(chnegrito); p.add(chitalico); p.add(chserif); p.add(txtam); add(p, BorderLayout.SOUTH); } // interface ActionListener public void actionPerformed(ActionEvent e){ changeFont(); } // interface ItemListener public void itemStateChanged(ItemEvent e){ changeFont(); } // metodo changeFont() private void changeFont(){ //testa estado de cada checkbox int negr = (chnegrito.getState() ? Font.BOLD:Font.PLAIN); int ital = (chitalico.getState() ? Font.ITALIC:Font.PLAIN); int size = Integer.parseInt(txtam.getText()); if (chserif.getState()) txexibicao.setFont(new Font("Serif",negr+ital,size)); else txexibicao.setFont(new Font("SanSerif",negr+ital,size)); } }
86
87
import java.awt.*; import java.awt.event.*; public class ExemploCheckBoxGroup extends Frame implements ItemListener{ private Checkbox chbranco,chvermelho,chazul,chverde; private CheckboxGroup cgcores; // metodo main public static void main(String a[]){ ExemploCheckBoxGroup c = new ExemploCheckBoxGroup(); c.addWindowListener(new FecharJanela()); c.show(); } // construtor public ExemploCheckBoxGroup(){ super("Exemplo de CheckBoxGroup"); setSize(250,200); // instanciao dos componentes cgcores = new CheckboxGroup(); chbranco = new Checkbox("Branco",cgcores,true); chvermelho = new Checkbox("Vermelho",cgcores,false); chazul = new Checkbox("Azul",cgcores,false); chverde = new Checkbox("Verde",cgcores,false); chbranco.addItemListener(this); chvermelho.addItemListener(this); chazul.addItemListener(this); chverde.addItemListener(this); // adicionando componentes ao frame Panel p = new Panel(); p.setBackground(SystemColor.control); p.setLayout(new GridLayout(4,1)); p.add(chbranco); p.add(chvermelho); p.add(chazul); p.add(chverde); add(p,BorderLayout.WEST); } // interface ItemListener public void itemStateChanged(ItemEvent e){ if (e.getSource()==chbranco){ setBackground(Color.white); } else if (e.getSource()==chvermelho) setBackground(Color.red); } else if (e.getSource()==chazul){ setBackground(Color.blue); } else if (e.getSource()==chverde){ setBackground(Color.green); } repaint(); // redesenhar a tela SCRS 502 Bl. C Ent. 22 W2 CEP - 70330-530
88
} }
MenuItem
89
PopupMenu
Adicionar uma barra de menus contendo menus e itens de menus bastante simples no Java. Basta seguir intuitivamente a estrutura visual apresentada: Adicionar uma barra de menu a janela; Adicionar os menus suspensos a barra de menu; Adicionar os itens de menus desejados ou a cada um dos menus suspensos e Adicionar os listener necessrios para ser possvel que os menus e itens de menus exibam funcionalidades.
Para criarmos a barra de menu fazemos: MenuBar barraMenu = new MenuBar(); Para cada menu suspenso declaramos e instanciamos um objeto Menu, como exemplificado para menus suspensos Arquivo, Editar e Ajuda.
Menu menuArquivo = new Menu(Arquivo); Menu menueditar = new Menu(Editar); Menu menuAjuda = new Menu(Ajuda);
Para cada item de menu de cada menu item, declaramos e instanciamos objetos MenuITem. Abaixo temos o cdigo correspondente para itens de um possvel menu Arquivo.
MenuItem minovo = new MenuItem(Novo); MenuItem miabrir = new MenuItem(Abrir); MenuItem misalvar = new MenuItem(Salvar); MenuItem misair = new MenuItem(Sair);
Agora adicionamos os itens de menu acima ao menu suspenso Arquivo. Note o uso do mtodo addSeparator para adicionar-se separadores aos itens de um menu suspenso:
MenuArquivo.add(minovo); MenuArquivo.add(miabrir); MenuArquivo.add(misalvar); MenuArquivo.add(misair);
O mesmo deve ser feito para os demais menus da aplicao. Finalmente adicionamos os menus suspensos a barra de menu e esta ao frame atravs do mtodo setMenuBar.
BarraMenu.add(menuArquivo); BarraMenu.add(menuEditar); BarraMenu.add(menuAjuda); SetMenuBar(barraMenu);
90
public ExemploMenus(){ super("Exemplo de Menus"); setSize(300,100); setLocation(50,50); // barra de menu barraMenu = new MenuBar(); // menus suspensos menuArquivo = new Menu("Arquivo"); menueditar = new Menu("Editar"); menuajuda = new Menu("Ajuda"); // itens do menu arquivo minovo = new MenuItem("Novo"); miabrir = new MenuItem("Abrir"); misalvar = new MenuItem("Salvar"); misair = new MenuItem("Sair"); misair.addActionListener(this); // itens do menu editar mirecortar = new MenuItem("Recortar"); micopiar = new MenuItem("Copiar"); micolar = new MenuItem("Colar"); // itens do menu ajuda miajuda = new MenuItem("Ajuda"); misobre = new MenuItem("Sobre"); // adicionando os itens do menu arquivo menuArquivo.add(minovo); SCRS 502 Bl. C Ent. 22 W2 CEP - 70330-530 Tel.: (61) 3225-7784 Braslia - DF
91
menuArquivo.add(miabrir); menuArquivo.add(misalvar); menuArquivo.add(misair); // adicionando os itens do menu editar menueditar.add(mirecortar); menueditar.add(micopiar); menueditar.add(micolar); // adicionando os itens do menu ajuda menuajuda.add(miajuda); menuajuda.add(misobre); // adicionando os menus suspensos a barra de menu barraMenu.add(menuArquivo); barraMenu.add(menueditar); barraMenu.add(menuajuda); // adicionando a barra de menu ao frame setMenuBar(barraMenu); } public void actionPerformed(ActionEvent e){ if (e.getSource()==misair){ // implementao do menu sair System.exit(0); } } public static void main(String a[]){ ExemploMenus m = new ExemploMenus(); m.addWindowListener(new FecharJanela()); m.show(); } }
92
Funcionalidades: boto Limpar: quando clicar neste boto todas as caixas de textos e label imc sero limpos. boto Calcular IMC: quando clicar neste boto dever ser mostrado no label imc o clculo do imc (ndice de massa corprea ). O imc calculado da seguinte forma: peso dividido pela altura (metros) ao quadrado. A tabela abaixo define a situao do IMC: IMC abaixo de 20 20 at 25 acima de 25 at 30 acima de 30 at 35 acima de 35 Situao abaixo do peso normal peso normal sobrepeso obesidade obesidade mrbida
No label imc dever ser apresentado o valor do imc e a situao. Veja o exemplo:
93
Funcionalidades: Boto +: quando clicar nesse boto ser efetuado a soma entre os dois nmeros e mostrar o resultado no label resultado. Boto /: quando clicar nesse boto ser efetuado a diviso entre os dois nmeros e mostrar o resultado no label resultado. Boto *: quando clicar nesse boto ser efetuado a multiplicao entre os dois nmeros e mostrar o resultado no label resultado. Boto -: quando clicar nesse boto ser efetuado a subtrao entre os dois nmeros. Boto Limpar: quando clicar nesse boto limpar os TextFields e o label resultado.
94
A tela mostrada acima posui: Uma barra de menu; Dois menus: Exemplos e Sair. O menu Exemplos possui 3 itens: Calculo IMC, Calculadora e Exemplos de Vrios Objetos O menu Sair possui 2 itens: Sim e No.
Funcionalidades: Quando clicar no item de menu Calculo IMC ser executado a aplicao do exerccio 1 (Calculo IMC). Quando clicar no item de menu Calculadora ser executado a aplicao do exerccio 2 (Calculadora). Quando clicar no item de menu Exemplos de Vrios Objetos ser executado a aplicao do exerccio 3 (Exemplos de Vrios Objetos). Quando clicar no item de menu sim: dever sair da aplicao.
Tel.: (61) 3225-7784 Braslia - DF
95
2) Criando applets
A maior parte dos programas Java que voc criou at agora era formada de aplicativos (programas simples com o mtodo main()) que utilizado para criar objetos, configurar variveis de instncia e chamar outros mtodos. As applets no possuem um mtodo main() que seja chamado automaticamente para inciar o programa. Em vez disso, existem vrios mtodos que so chamados em diferentes pontos na execuo de um applet. Todos os applets so subclasses da classe java.applet. Todos os applets devem ser declarados public, pois a classe applet uma classe pblica.
96
Um exemplo desses mtodos paint(), que chamado toda vez que a janela do applet precisa ser apresentada ou reapresentada. A seguir so descritos cinco dos mtodos mais importante na execuo de um applet: incializao, partida, interrupo, destruio e pintura.
3.1) Incializao
A inicializao ocorre quando o applet carregado. Ela pode incluir a criao dos objetos de que o applet precisa, a configurao do estado inicial, o carregamento de imagens ou fontes ou o ajuste de parmetros. Para fornecer comportamento para inicializao de um applet, voc anula o mtodo init() do seguinte modo: public void init(){ //codigo aqui } Algo til a fazer ao inicializar um applet configurar a cor de sua janela de plano de fundo. As cores so representadas na linguagem Java pela classe Color, parte do pacote java.awt.Chame setBackground(Color) em um applet para aplicar a cor especfica para o plano de fundo na janela. public void init(){ setBackground(Color.black); }
3.2) Partida
A partida de um applet realizada depois que ele inicializado. Ela tambm pode ocorrer se o applet tiver sido interrompido anteriormente. Por exemplo, um applet interrompido se o usurio do navegador segue um vnculo para uma pgina diferente e reiniciado quando o usurio retorna pgina que contm o applet. A partida pode ocorrer vrias vezes durante o ciclo de vida de um applet, mas a inicializao s ocorre uma vez. Para fornecer comportamento de incio para seu applet, anule o mtodo start() do seguinte modo: public void start(){ // cdigo aqui }
SCRS 502 Bl. C Ent. 22 W2 CEP - 70330-530 Tel.: (61) 3225-7784 Braslia - DF
97
A funcionalidade que voc coloca no mtodo start() pode incluir o incio de um thread (aplicao em execuo) para controlar o applet, o envio de mensagens apropriadas para objetos auxiliares ou a solicitao para o applet comear a ser executado de alguma maneira.
3.3) Interrupo
A interrupo e a partida andam lado a lado. A interrupo ocorre quando o usurio sai da pgina que contm o applet que est sendo executado ou quando um applet interrompe sua execuo chamando stop(). public void stop() { // cdigo aqui }
3.4) Destruio
A destruio soa mais escabrosa do que realmente . O mtodo destroy() permite que o applet faa uma limpeza pouco antes de ser liberado da memria ou de sair do navegador. Voc pode usar esse mtodo para acabar com todos os threads que estiverem em execuo ou para liberar todos os outros objetos que estiverem sendo executados. Geralmente, voc no desejar anular destroy(), a no ser que existam recursos especficos que precisem ser liberados, como os threads que o applet criou. Para fornecer comportamento de limpeza ao seu applet, anule o mtodo destroy(), do seguinte modo: public void destroy(){ // cdigo aqui }
3.5) Pintura
atravs da pintura que um applet apresenta algo na tela, seja texto, uma linha, um fundo colorido ou uma imagem. Ela pode ocorrer centenas de vezes durante o ciclo de vida de um applet: uma vez depois que o applet inicializado; outra vez se a janela do navegador ficar atrs de outra janela na tela; mais uma vez se a janela do navegador for
SCRS 502 Bl. C Ent. 22 W2 CEP - 70330-530 Tel.: (61) 3225-7784 Braslia - DF
98
movida para uma posio diferente na tela etc. Para apresentar algo, voc deve anular o mtodo paint() de sua subclasse Applet. Esse mtodo tem a seguinte aparncia: public void paint(Graphics g){ // cdigo aqui }
99
} }
4. Compilar. 5. Acesse o menu File, opo new, opo file. Coloque o nome do arquivo de testaapplet.html <html> <body> <applet code=ExemploApplet.class width=275 height=80> </applet> </body> </html> 6. Abra o internet explorer. Acesse o menu arquivo, opo abrir localize o arquivo testaapplet.html d duplo clique. Veja o resultado na tela a seguir: A seguinte tela ser exibida:
Observe que s a varivel pintura que mudou o seu valor Acesse o menu applet e clique na opo stop a tela a seguir ser exibida
100
Acesse o menu Applet, clique na opo restart. Observe varivel interrompe mudou o valor, a varivel inicio mudou valor, a varivel pintura mudou o valor.
101
add(b1); add(b2); add(b3); add(b4); b1.addActionListener(this); b2.addActionListener(this); b3.addActionListener( this); b4. addActionListener( this); } public void actionPerformed(ActionEvent evt) { Object source = evt.getSource(); if (source == b1) setBackground(Color.blue); if (source == b2) setBackground(Color.green); if (source == b3) setBackground(Color.white); if (source == b4) setBackground(Color.black); } } 4. Compilar 5. Acesse o menu File, opo new, opo file. Coloque o nome do arquivo de testaapplet2.html <html> <body>
102
<applet code="ExemploApplet2.class" width=200 height=200></applet> </body> </html> 6. Abra o internet explorer. Acesse o menu arquivo, opo abrir localize o arquivo testaapplet2.html d duplo clique. Veja o resultado na tela a seguir:
103
public void init(){ b1=new Button("Clique aqui"); L1=new Label("Boto no foi usado b1.addActionListener(this); add(b1); add(L1); contar=0; }
");
public void actionPerformed(ActionEvent e){ if(e.getSource()==b1){ contar++; L1.setText("Boto j foi usado "+contar+" vez(es)."); } } }
4. Compilar 5. Acesse o menu File, opo new, opo file. Coloque o nome do arquivo de testaapplet3.html <html> <body> <applet code="ExemploApplet3.class" width=400 height=100></applet> </body> </html>
SCRS 502 Bl. C Ent. 22 W2 CEP - 70330-530 Tel.: (61) 3225-7784 Braslia - DF
104
6. Abra o internet explorer. Acesse o menu arquivo, opo abrir, localize o arquivo testaapple3.html d um duplo clique. Veja o resultado na tela a seguir:
3. Desenvolva um applet para o exemplo de Panel do captulo VI: ExemploPainel.java 4. Desenvolva um applet ExemploTextArea.java para o exemplo de TextArea do captulo VI: