Professional Documents
Culture Documents
PDF gerado usando o pacote de ferramentas em cdigo aberto mwlib. Veja http://code.pediapress.com/ para mais informaes.
PDF generated at: Fri, 12 Sep 2014 14:38:18 UTC
Contedo
Pginas
Introduo e Instalao
Introduo
O que Java
A histria de Java
Os bsicos da linguagem
Criando e executando o primeiro programa
9
9
12
14
Literais
16
Variveis
19
Identificadores
20
Converso de tipos
21
Constante
22
22
Exerccios
24
Estruturas de controle
25
Comandos de seleo
25
if
27
switch
28
Comandos de iterao
30
for
34
Arrays (Vetores)
36
Vetores
36
41
Mtodos
42
42
43
Classes e objetos
44
Introduo s classes
44
Declarao de classes
44
Objetos
45
Herana
45
Modificadores de acesso
Modificadores
47
47
50
Matemtica
51
52
53
54
54
Colees
56
57
58
Swing
58
Concluso
59
Autores
59
Apndices
60
60
61
RMI
62
Java 3D
66
Referncias
Fontes e Editores da Pgina
67
68
69
Introduo e Instalao
Introduo
Java uma linguagem de programao de alto nvel e orientada objetos criada pela empresa Sun Microsystems no
comeo da dcada de 90. A sintaxe da linguagem muito parecida com C e C++, mas ela possui um nmero maior
de facilidades e funcionalidades.
Desvantagens da Linguagem
Apesar disso, a linguagem tambm possui as seguintes desvantagens:
Performance reduzida: por ser uma linguagem no projetada para gerar cdigo nativo para cada arquitetura, os
programas em Java costumam ter um desempenho menor que os escritos em linguagens como C++. Eles tambm
costumam ocupar mais espao em memria. Mas medida que a linguagem vem sendo refinada, tal desvantagem
vem diminuindo cada vez mais.
Programas em Java geralmente demoram mais tempo para compilar.
Programas que realizam clculo com nmeros em ponto flutuante tendem a possuir baixo desempenho.
O que Java
O que Java
Java uma linguagem de programao orientada a objetos, fcil de se aprender, e que possui como maior
vantagem ser portvel entre as diversas plataformas existentes.
Por exemplo, se o programa java for feito em uma plataforma Linux, ele pode ser usado na plataforma FreeBSD ou
Windows - o programa rodar sem problema nenhum desde que a JRE (Java Runtime Environment), tambm
conhecida como Mquina Virtual Java (Java Virtual Machine) esteja instalada na plataforma.
Linguagens como C e C++ rodam em diversas plataformas, mas os programas precisam ser recompilados, o que no
acontece com o Java onde o mesmo binrio pode ser portado. Alm disso a linguagem pode ser usada para
desenvolver programas para a maioria dos celulares, PDA's (Palm Tops) alm de diversos dispositivos como cartes
(Vale Refeio, Vale transporte, Cartes de acesso).
O que so Objetos
Em programao, objetos nada mais so do que um conjunto de dados sobre o qual esto definidas algumas
operaes. Se fssemos criar um programa capaz de gerar na tela formas geomtricas, por exemplo, poderamos criar
um objeto chamado "quadrado" que seria um conjunto de quatro nmeros (que em POO so chamados de Atributos)
que representam os seus vrtices. O objeto "quadrado" poderia possuir as operaes (que em POO so chamadas de
Mtodos) "MudaPosicao()" que serviria para posicionar o quadrado em uma coordenada especfica passada como
argumento e MudaCor() que trocaria a cor do quadrado desenhado na tela.
Os Atributos de um objeto so quaisquer variveis que eles possuam que representam um nmero, caractere ou
string. Se fssemos programar um jogo, por exemplo, o personagem que o jogador controla poderia possuir atributos
chamados Fora, Resistncia e Velocidade que seriam variveis inteiras dentro do cdigo. Ele tambm poderia
possuir um atributo chamado Posio, que seria um vetor de inteiros que armazenariam a sua coordenada na tela.
Os Mtodos de um objeto podem ser qualquer ao que o objeto pode executar. No jogo do exemplo acima, o
personagem principal poderia possuir um mtodos chamados Pular, Atirar e Andar. Os Mtodos nada mais so do
que funes executadas sobre os Atributos de um Objeto.
Classes
Classes nada mais so do que uma declarao de um objeto no comeo do cdigo. Nesta declarao, voc especifica
quais so os Atributos e Mtodos(Comportamentos)de seu objeto. Por exemplo, uma vez que voc crie uma classe
chamada "quadrado", voc pode passar a criar novos objetos pertencentes esta classe, que poderiam ter diferentes
valores para cada um de seus Atributos.
Classe um conjunto de especificaos tcnica de um objeto, Nesta declarao, pode-se especificar quais so os
Atributos e Metodos(Comportamentos) da classe. Por exemplo, uma vez que seja criada uma classe chamada
"quadrado", pode-se passar a criar novos objetos pertencentes esta classe, que podem ter diferentes valores para
cada um de seus Atributos.
Herana
Herana a capacidade que as classes tem de passar informaes umas para as outras. Atravs da herana possvel
criar fcil e rapidamente novos tipos de classes baseadas nas classes existentes. Por exemplo, assumindo que existe
uma classe chamada "Veiculo", poderamos gerar uma nova classe chamada "Carro", e outra classe chamada
"Caminhao" que herdam (ou so filhas) de "Veiculo".
A classe "Veiculo" possui todos os Atributos que tem em comum entre um caminho e um carro. Ambos possuem
caracteristicas (Atributos) como, nmero de rodas, tipo de combustvel, quantidade de portas, etc. Estes Atributos
esto definidos na classe "Veiculo". Por sua vez, as classes "Carro" e "Caminho", alm de herdarem os atributos da
classe "Veiculo", podem possuir seus prprios Atributos exclusivos. O mesmo ocorre com os Metodos.
Por exemplo, a classe "Caminhao", que poderia ter o Atributo numero de marchas reduzidas, que no faz sentido
para um carro, apenas para um caminho.
Para identificar se dois objetos tem uma relao de herana, deve-se analisar se o relacionamento do tipo " um
tipo de". Por exemplo, Carro um tipo de Veiculo, logo Carro herda de Veiculo; Cachorro um tipo de Mamifero, e
assim por diante.
Nota: em outras linguagens orientadas a objeto, como C++, existe herana mltipla, ou seja, uma classe pode herdar
de mais de uma. Ex.: 'morcego um tipo de mamfero' E 'morcego um tipo de animal que voa'. Em java NO
EXISTE herana mltipla! O que pode ser feito para simular isso implementar uma Interface, mas isso ser visto
mais adiante.
Sobrecarga de mtodos
Algumas vezes uma mesma operao pode ser feita de diversas maneiras, utilizando informaes diferentes. Isso
pode ser feito utilizando a sobrecarga de mtodos. Consiste em criar mais de um mtodo com o mesmo nome, porm
com parmetros de entrada diferentes. Isso muito usado quando uma funo tem valores padro. Cria-se um
mtodo que recebe 3 parmetros de entrada, e outro que no recebe nenhum, este ultimo ir invocar o primeiro
passando os 3 valores padro.
Sobreescrita de mtodos
Quando a herana usada, a classe 'filha' herda todos os mtodos da classe 'pai', porm, as vezes isso pode trazer
alguns problemas. Para dar mais flexibilidade, possvel sobreescrever um mtodo, ou seja, criar uma nova
implementao daquele mtodo para a classe filha.
Polimorfismo
Poli (muitas) morphos (formas) permite ao desenvolvedor utilizar uma mesma assinatura de mtodo para
desempenhar funes similares, de acordo com o contexto. Um exemplo de polimorfismo no exemplo utilizado na
herana seria um mtodo que retorna a autonomia do veculo. No carro, este mtodo tem que verificar a potncia do
motor e o combustvel usado (alcool ou gasolina) no caminho, teria que verificar o peso da carga e a potncia do
motor.
A vantagem do polimorfismo est no fato que um trecho de cdigo, muitas vezes no sabe se o objeto Veiculo um
caminho ou um carro, bastando chamar o mtodo que retorna a autonomia, se o objeto for um carro, a virtual
machine invoca o mtodo do carro, se o objeto for um caminho, ela invoca o metodo do caminho.
Agregao
Agregao um tipo de relacionamento entre objetos mais fraco que a Herana. Na Agregao, o tipo de
relacionamento que tem que ser analisado se uma classe "composta por outra", no existindo sem a outra.
Por exemplo, uma turma ou aula composta por alunos e um professor, no existindo sem os mesmos.
Associao
Associao um tipo de relacionamento entre objetos mais fraco que a Agregao. Na Associao, o tipo de
relacionamento que tem que ser analisado se uma classe "possui a outra".
Por exemplo uma pessoa possui um endereo.
A histria de Java
A histria de Java
Java comeou na verdade como um projeto na Sun que objetivava o estudo e a anlise de interaes entre
dispositivos eletrnicos e computadores, no exatamente para o desenvolvimento de uma linguagem para aplicativos
embarcados. Nesse tempo a linguagem tinha o nome-cdigo Green e foi idealizada por James Gosling. Contudo, a
Sun perdeu a disputa para uma outra empresa e o projeto Green estava marcado para ser descontinuado.
Entretanto, eis que surge algo novo, sim, uma nova palavra chamada internet. Com o advento em 1993 do web
browser Mosaic e das pginas estticas HTML a vida das pessoas sofreria uma mudana profunda, bem como a do
projeto Green. Com o objetivo de tirar proveito desse mercado o projeto Green sofre algumas mudanas e
adaptaes, se chamando Oak e em 1995 lanado com o nome Java. Tal nome adveio do evento que os
idealizadores da linguagem descobriram que j havia uma linguagem chamada Oak e ento ao tomar seus cafs
tiveram a idia de a chamar de Java em virtude de este ser o nome do local daonde o caf era comprado, a qual era
pequena ilha na Indonsia.
Assim em 1995 a Sun faz a divulgao da linguagem no evento SunWorld e a disponibiliza oficialmente em 1996,
ano da primeira JavaOne. Java foi lanada ento, sendo uma linguagem de propsito geral, porm, num primeiro
momento conhecida por seus applets que adicionavam interatividade s pginas Web, caracterstica ainda inexistente
na poca, quando a existncia do Flash ainda nem era pensada. De l para c a linguagem sofreu muitas mudanas e
evoluiu se adaptando com o tempo e atingindo a enorme popularidade que tem hoje.
Se o JDK estiver instalado ser mostrado a verso do mesmo como, por exemplo, a seguir:
javac 1.6.0_01
Se a verso mostrada for maior que 1.6.0x pode-se pular o restante desta pgina e passar para o prximo
captulo
Caso o JDK no esteja instalado, ir aparecer a seguinte mensagem, por exemplo:
'javac' is not recognized as an internal or external command, operable
program or batch file.
Baixando o JDK
O JDK 6u1 pode ser baixado aqui [2].
Instalando o JDK
Roda-se o programa de instalao.
Aps a instalao, deve-se configurar o acesso global pasta do Java. Descrevemos a seguir como isto feito:
No Windows 9x
Adicione as seguintes linhas no final do arquivo AUTOEXEC.BAT:
set PATH=%PATH%; C:\Program Files\Java\jdk1.6.0_01\bin;
set CLASSPATH=.
Obs.: A localizao da pasta dos arquivos Java ("C:\Program Files\Java\jdk1.6.0_01\bin;") deve ser mudada de
acordo do lugar onde voc instalou o JDK. Reinicie o computador.
No Windows XP
V ao Painel de controle - Sistema. Abra a aba da janela "Avanado" e clique no boto "Variveis do sistema".
Edite a varivel PATH adicionando o caminho C:\Program Files\Java\jdk1.6.0_01\bin (ou a pasta de
instalao dos executveis Java - caso j exista outros caminhos configurados, deve-se separar esta incluso
com ponto-e-vrgula ; ). Reinicie o computador.
No Linux
A instalao do Java no Linux pode ser feita de diversas maneiras e tambm varia muito dependendo da distribuio:
Para instalar no Ubuntu:
Mquina para executar programas Java:
apt-get install openjdk-7-jre
Plugin para executar applets Java no navegador
apt-get install icedtea-7-plugin
Instalao do SDK, o qual inclui compilador:
apt-get install openjdk-7-jdk
Para mais detalhes sobre como instalar o Java no Linux, veja o tutorial encontrado no livro Linux para iniciantes,
captulo Linux para iniciantes/Instalando programas/Java.
Referncias
[1] http:/ / java. sun. com
[2] http:/ / java. sun. com/ javase/ downloads/ index. jsp
Os bsicos da linguagem
Criando e executando o primeiro programa
Criao de um programa
A criao de um programa pode conter muitas fases: o levantamento do que se quer fazer, do que as pessoas
esperam, do custo de desenvolvimento, etc. Como o objetivo inicial deste livro no explicar esses diversos
mtodos mas, explicar como se cria programas em Java, vamos simplificar neste momento nas seguintes fases:
1.
2.
3.
4.
Fase 4 - Compilao
javac Olamundo.java
O cdigo-fonte
Chamamos de cdigo-fonte o conjunto de instrues, expresses, etc. que esto numa linguagem de
computador no compilada, ou seja, cuja traduo para uma linguagem de mquina necessria. O conjunto
de instrues (e outros) em linguagem Java o nosso cdigo-fonte que deve estar contido no arquivo
Olamundo.java:
class Olamundo
{
public static void main(String[] args)
{
System.out.println("Ol mundo!");
}
}
Compilao
O cdigo-fonte deve ser transformado, organizado, numa linguagem mais prxima da linguagem da mquina,
para isso se faz a compilao. A compilao em Java no como a das outras linguagens tradicionais pois ela
no traduz o programa para a linguagem de mquina de um determinada linha de processadores ou ambiente
operacional comum (Windows, DOS, Linux, etc.) e sim para uma mquina virtual JVM (Java Virtual
Machine), e a instalao do JDK (Java Development Kit) extremamente necessria, pois o JVM no compila
os projetos, apenas executa os projetos prontos. Faa o download do programa clicando AQUI [2].
As instrues que podem ser interpretadas (reconhecidas) pela JVM so denominadas bytecodes. Cada
ambiente operacional ter sua JVM especfica para executar os programas, porm o cdigo em bytecodes
reconhecido por qualquer JVM. Assim, um mesmo programa Java (cdigo-fonte) pode ser compilado em
bytecodes somente uma vez e ser executado em qualquer JVM de qualquer sistema ou ambiente operacional.
A compilao do cdigo-fonte Java feita com o programa javac de acordo com a sintaxe:
javac <nome do programa>.java
Ento, para compilar o nosso primeiro programa executamos:
obs: em linha de comando deve-se execut-lo no diretrio "bin" do "jdk" informando o caminho do arquivo para o
javac --> javac x:\caminhho\arquivo.java
10
Executando o programa
Para executarmos o programa compilado em bytecodes utilizamos o programa java, segundo a sintaxe:
java <nome do programa>
Ento, para executar o nosso primeiro programa digitamos:
java Olamundo
No se deve especificar a extenso .class no caso do programa ser executado num terminal, numa linha de
comando (em alguns sistemas operacionais, como o Windows XP, escrever o .class gera uma mensagem de
erro). O comando deve ser digitado na origem do arquivo, raiz ou diretrio, onde se encontra o .class
Referncias
[1] http:/ / www. espacoloko. com
[2] https:/ / cds. sun. com/ is-bin/ INTERSHOP. enfinity/ WFS/ CDS-CDS_Developer-Site/ en_US/ -/ USD/
ViewProductDetail-Start?ProductRef=jdk-6u22-oth-JPR@CDS-CDS_Developer
11
12
Simplificando e resumindo
Para simplificar o entendimento vamos incluir comentrios no programa:
class Olamundo // declara a classe Olamundo que corresponde ao nome do
programa
{
public static void main(String[] args) // declara o mtodo
principal (main)
// que ser executado ao iniciar a classe
{
System.out.println("Ol mundo!"); // escreve ''Ol mundo!'' na
tela
}
}
Nos captulos adiante sero explicados os termos que ainda no foram descritos aqui (vetores, classes etc.)
13
a;
b = '1';
z = 111;
pato = 0xA;
seven = 07;
14
a;
by1 = -32.0;
bz2 = 32.2F;
bz = 32.455f;
bze = 1.32455e4f;
15
a;
by1 = -32.0;
bz2 = 32.2d;
bz = 32.455D;
bze = 1.32455e4D;
Literais
Literais
Literais so as representaes de dados dentro do cdigo fonte. Na linguagem Java, literais representam os
dados dos tipos primitivos, dos tipos String e dos tipos nulo, por exemplo.
Assim, podemos subdividir os literais em:
Literais Booleanos ou Lgicos: correspondem ao valores true (verdadeiro) e false (falso).
Literais inteiros: representam os nmeros inteiros e podem ser de base octal, decimal, ou hexadecimal.
Assim:
Literais Inteiros Decimais: so nmeros em base decimal que representam um valor inteiro. Eles podem
ser tanto byte, como short, int ou long. Para escrever um literal inteiro na base decimal, basta digitar o seu
valor com um desses dgitos: 0 1 2 3 4 5 6 7 8 9.
Literais Inteiros Octais: so nmeros em base octal que representam um valor inteiro. Para representar
este tipo de literal, basta escrever os seus dgitos colocando 0 (dgito zero) antes. Os dgitos para este tipo
so: 0 1 2 3 4 5 6 7.
Literais Inteiros Hexadecimais: so nmeros em base hexadecimal que representam um valor inteiro. Para
representar este tipo de literal basta escrever os seus dgitos normalmente precedidos pelos caracteres 0x
(zero xis) ou 0X. Os dgitos permitidos so: 0 1 2 3 4 5 6 7 8 9 A a B b C c D d E e F f.
Literais Fracionrios (de Ponto Flutuante): correspondem aos nmeros racionais (fracionrios). Para
represent-los, basta escrever um nmero inteiro seguido por um ponto e por sua parte decimal - o ponto faz o
lugar da vrgula. Outra opo seria escrever o nmero em notao cientfica, escrevendo primeiro o valor da
mantissa, seguido do caractere "e" e do valor do expoente (de base 10).
16
Literais
17
Literais Caracteres: correspondem a um caractere. Para represent-los, basta escrever o caractere cercado por
apstrofos. Tambm podem armazenar caracteres de controle de formatao (quebra de linha, etc.) e tambm
caracteres no formato unicode.
Literais de cadeias de caracteres - Strings: correspondem s cadeias de caracteres. Para represent-los,
escreva o(s) caracter(es) cercado(s) por aspas.
Literal nulo: representa a ausncia de tipo e de dado (valor). Para representar utiliza-se a palavra null.
Os literais atribuem valores s variveis ou partes do cdigo. Ou seja, eles so usados para fazer com que
variveis passem a ter um valor ou se executem clculos. Exemplos:
boolean ligado=true;
int velocidade=128;
int x=0012;
int peso=0x12a;
float preco=1.24;
char letra='f';
int pesoTotal;
pesoTotal=x*peso/4;
String texto="Isto um exemplo de cadeia de caracteres";
Nos exemplos acima, pudemos ver exemplos da atribuio de valores iniciais s diversas variveis no momento da
declarao assim como, a partir da declarao de pesoTotal (sem valor inicial), do clculo de pesoTotal igual a x
vezes o peso dividido por 4. A varivel ligado recebe o valor "verdadeiro", velocidade recebe o nmero 128, x
recebe 12 em octal que o mesmo que 10 em decimal, peso recebe 12A em hexadecimal que o mesmo que 298 em
decimal, preco recebe 1,24 e letra recebe f. J a varivel texto recebe Isto um exemplo de cadeia de caracteres.
Literais
18
, ou seja, 1000
, ou seja, -1000
, ou seja, 0,01
, ou seja, -0,001
Significado
Escape Unicode
\b
\u0008
\t
\u0009
\n
\u000a
\f
\u000c
\r
\u000d
\"
\u0022
\'
\u0027
\\
\u005c
\u7Ffc
\u0062
\u0078
Variveis
19
Variveis
Variveis
Variveis so nomes atribudos endereos na memria de um computador onde se guardam dados. A
declarao de uma varivel consiste em dar um nome para a posio de memria a ser usada e especificar qual
tipo de dado a guardar na memria.
Para declarar uma varivel, utiliza-se a seguinte sintaxe:
modificador tipo identificador;
Observao: o modificador opcional no caso da varivel ser a completar
Por exemplo:
static int flor;
Pode-se declarar mais de uma varivel do mesmo tipo separando-as por vrgulas, como na seguinte sintaxe:
modificador tipo identificador1, identificador2, identificador3;
Por exemplo:
static float medida, raiz1, raiz2;
Iniciar uma varivel atribuir um valor, um dado, varivel. As variveis tambm podem ser declaradas e
iniciadas ao mesmo tempo. Por exemplo:
static int tempodecorrido=0;
Modificadores
Java/Modificadores
Identificadores
Java/Identificadores
Identificadores
20
Identificadores
Identificador o nome que utilizamos para representar as variveis, classes, objetos, etc. Por exemplo, na
Matemtica utilizamos um nome para as incgnitas (x, y, z, etc.) que o identificador daquela incgnita.
Utilizamos, em Java, as seguintes regras para criao do identificador:
1.
2.
3.
4.
5.
carro1
carro_1
Palavras-chave
Em programao, palavras-chave, ou palavras reservadas, so as palavras que no podem ser usadas como
identificadores, ou seja, no podem ser usadas como nome de variveis, nome de classes, etc. Estas palavras
so assim definidas ou porque j tm uso na sintaxe da linguagem ou porque sero usadas em alguns
momento, seja para manter compatibilidade com verses anteriores ou mesmo com outras linguagens. No caso
do Java temos as seguintes palavras-chave:
Identificadores
21
abstract
continue for
new
switch
assert(3) default
goto(1)
package
synchronized
boolean
do
if
private
this
break
double
implements protected
throw
byte
else
import
public
throws
case
enum(4) instanceof
return
transient
catch
extends
int
short
try
char
final
interface
static
void
class
finally
long
strictfp(2) volatile
native
super
const(1) float
while
null
(1) sem uso na linguagem
(2) somente a partir da verso 1.2
(3) somente a partir da verso 1.4
(4) somente a partir da verso 5.0
Converso de tipos
De String para tipo bsico
int num = Integer.parseInt(numInt);
double num = Double.parseDouble(numDou);
Implcitas
Entre inteiros: tipos menores para tipos maiores;
byte b = 10; short s = 10; int i = 10; long l = 10;
s = b; i = b; i = s; l = b; l = s; l = i;
i = 10; l = 100;
Explcitas
Type Casting
varTipo1 = (tipo1) varOuValTipo2;
Entre inteiros: tipos maiores para tipos menores;
byte b = 10; short s = 10; int i = 10; long l = 10;
b = (byte) s; b = (byte) i; s = (short) i; b = (byte) l; s = (short) l;
i = (int) l;
b = (byte) 10; s = (short) 10;
Cuidado para que o valor que est sendo atribudo no extrapole o tamanho mximo possvel do tipo que est
recebendo.
Constante
22
Constante
Constantes
As constantes em Java so declaradas atravs do modificador final. Um modificador de acesso tambm pode
ser adicionado opcionalmente com o fim de determinar o escopo da constante. A sintaxe para declarao de
uma constante a seguinte:
modificador final tipo identificador=literal;
Onde:
Comentrios
Comentrios, como o prprio nome instiga, so notas que podem ser includas no cdigo fonte para descrever
o que se quiser. Assim, no modificam o programa executado e servem somente para ajudar o programador a
melhor organizar os seus cdigos. Os comentrios em Java seguem a mesma sintaxe da linguagem C++.
/* */
Comentrios de uma ou mais linhas podem ser iniciados por /* e terminados por */ . Por exemplo:
{
int a=10;
int b;
b=a*2;
/* a partir deste ponto, deve-se comear a exibir
os resultados na tela do usurio */
}
//
Comentrios que terminam no final da linha so indicados com // . Pode ser usados desde o nicio da linha ou
colocados depois do cdigo funcional, desde que no haja um caractere de quebra de linha no comentrio. Por
exemplo:
{
int a=10; // declarao de a como int e atribuio do valor 10
int b; //declarao de b
// a prxima linha calcula b como sendo duas vezes a
b=a*2;
// daqui em diante deve-se exibir os resultados na tela
}
23
Exerccios
Exerccios
class Olamundo // declara a classe Olamundo que corresponde ao nome do programa {
public static void main(String[] args) // declara o mtodo principal (main)
// que ser executado ao iniciar a classe
{
System.out.println("Ol mundo!"); // escreve Ol mundo! na tela
}
}
24
25
Estruturas de controle
Comandos de seleo
Como pode-se notar, o conhecimento adquirido at aqui no permite a criao de programas muito interativos. Eles
sempre executam da mesma forma, independente do que o usurio faz ou dos valores que so recebidos. Mas agora
iremos aprender a usar alguns comandos que permitem que dependendo das circunstncias, os programas executem
instrues diferentes.
O comando if-then-else
O comando if-then-else permite que voc escolha duas aes diferentes a serem seguidas. Ele segue a seguinte
sintaxe:
if(VALOR_BOOLEAN){
comando1;
comando2;
(...)
comandon;
}else{
comando1;
comando2;
(...)
comandon;
}
Onde VALOR_BOOLEAN uma literal, varivel ou operador que possui ou retorna um valor do tipo boolean. Se o
valor de VALOR_BOOLEAN for "verdadeiro", a seqncia de comandos que vai desde o primeiro { aps o
comando at o primeiro } executada. Caso contrrio, a seqncia de comandos cercada por colchetes aps a palavra
else executada. O comando else opcional. E caso aps o if ou aps o else exista apenas um comando, o uso de
colchetes tambm se torna opcional. Exemplos de uso:
Exemplo 1:
if(elemento1>elemento2)
System.out.println("O primeiro elemento maior"); //Repare que
no so usados colchetes, pois este o nico comando a ser executado
neste bloco
else{
elemento1=elemento2;
System.out.println("O primeiro elemento era menor, mas agora j
recebeu o valor do segundo elemento");
}
Exemplo 2:
if(elemento2==elemento1)
//Este um exemplo de "if" sem um "else".
Se os nmeros no forem iguais, nenhum comando executado
Comandos de seleo
26
O comando switch-case
O comando switch-case bastante semelhante ao if-then-else. A diferena que ele mais recomendado caso o seu
programa tenha muitos caminhos a serem seguidos por ser um comando mais fcil de ser escrito e interpretado. A
sintaxe do comando
switch(VARIVEL){
case VALOR1: comandos; break;
case VALOR2: comandos; break;
(...)
case VALORn: comandos; break;
default: comandos; break;
}
Onde VARIVEL pode ser qualquer varivel de qualquer tipo e VALOR pode ser qualquer literal do mesmo tipo
que a varivel. Os comandos a serem executados so aqueles posicionados entre a literal que possuir o mesmo valor
que a varivel e o comando "break". Caso nenhum literal tenha o mesmo valor que a varivel, os comandos
posicionados logo aps o "default" so executados. O "default" opcional. Exemplos de uso:
int mes=5;
switch (mes)
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
{
System.out.println("Janeiro"); break;
System.out.println("Fevereiro"); break;
System.out.println("Maro"); break;
System.out.println("Abril"); break;
System.out.println("Maio"); break;
System.out.println("Junho"); break;
System.out.println("Julho"); break;
System.out.println("Agosto"); break;
Comandos de seleo
case 9:
case 10:
case 11:
case 12:
default:
27
System.out.println("Setembro"); break;
System.out.println("Outubro"); break;
System.out.println("Novembro"); break;
System.out.println("Dezembro"); break;
System.out.println("Ms invlido.");break;
}
No exemplo acima, a string "Maio" ser impressa na tela.
if
Foi proposta a fuso deste mdulo com: Java/Comandos de seleo (discuta).
Dando sequncia ao estudo de Java vamos comear a ver dois tipos de estrutura: a de seleo e a de iterao
(repetio).
As estruturas de seleo servem para dar ao programador uma maior liberdade de escolha sobre o rumo da execuo
de um cdigo. Geralmente elas esto associadas a condicionais e do a oportunidade de se escolher uma de duas ou
mais opes.
A primeira estrutura a ser vista o if, que se traduz para portugus para como se. Essa estrutura testa uma condio e
verifica se ela verdade se for executa o que est dentro do bloco if.
Para ilustr-la vamos fazer rapidinho um programa que testa se um dado nmero par ou no.
// ---------- Par.java ------- //
// testa se um nmero par -- //
public class Par{
public static void main( String args[] ){
int x = 8;
if( x % 2 == 0 ){ // testa se o resto da diviso de x por 2 0
System.out.println( x + " par." );
}
System.exit( 0 );
}
}
Dessa forma, a utilizao de estruturas if bem simples. A nica coisa a ser lembrada que a condio dos ifs
devem ser colocadas dentro de parnteses e que devem ser colocadas chaves para delimitar o corpo de um if. Obs:
Quando h somente uma instruo no bloco if a chave opcional, como por exemplo o trecho de cdigo dado acima.
Entretanto bom colocar-se a chave uma vez que d maior clareza e legibilidade ao cdigo na maioria das vezes.
if
28
else
Muitas vezes um bloco if acompanhado de um bloco else. Enquanto um deles, o if, serve para testar um
condio, o else serve para o mesmo propsito, porm a funo dele executar caso a condio que o if avalia
seja falsa. Desta maneira um cdigo executa o que est dentro do bloco if se a condio do if for avaliada como
verdadeira e pula o else e executa o que est dentro do else, pulando o if, caso a condio avaliada pelo if
seja falsa. Junto com o else tambm pode vir um outro if o que faz com que se a execuo do primeiro if seja
falsa ele caia no else testando a condio desse segundo if.
Exemplo:
if( x == 2 ){
System.out.println( "x vale 2" );
}
else if( x == 4 ){
System.out.println( "x vale 4" );
}
else{
System.out.println( "x no vale nem 4 nem 2" );
}
switch
Comando switch
A instruo switch uma instruo condicional de mltiplos desvios. Ou seja, de acordo com o resultado de uma
condio pode-se executar um desvio entre os vrios possveis - diferente da instruo if que permite somente dois
desvios: um para a condio verdadeira e outra para a falsa.
A instruo switch analisa o valor (literal) resultante de uma expresso ou varivel - que chamamos de condio no
pargrafo anterior - e, de acordo com esse valor (que pode ser dos tipos: char, byte, short, int, long ou um tipo
enumerado) desvia a execuo dos programas para um dos casos (atravs da palavra-chave case).
...
case <valorn>: <bloco de programan a ser executado>
break;
default: <bloco de programa a ser executado caso nenhuma das condies acima seja adequada>
break;
switch
29
Onde:
<condio> literal, expresso ou varivel que seja do tipo char, byte, short, int, long ou um tipo
enumerado.
case <valorn>: estabelece que o bloco n seguinte seja executado caso <condio> seja igual a
<valorn>.
break; estabelece o fim do bloco de um dos casos.
default: estabelece que o bloco seguinte seja executado caso nenhum <valorx> seja igual <condio>.
Exemplos de uso do switch
import java.util.Scanner;
class Troca {
public static void main(String args[]) {
System.out.println("Digite um nmero:\n");
Scanner ler = new Scanner(System.in);
int dia_da_semana = ler.nextInt();
ler.nextLine();
switch (dia_da_semana){
case 1: System.out.println("Domingo");
break;
case 2: System.out.println("Segunda-feira");
break;
case 3: System.out.println("Tera-feira");
break;
case 4: System.out.println("Quarta-feira");
break;
case 5: System.out.println("Quinta-feira");
break;
case 6: System.out.println("Sexta-feira");
break;
case 7: System.out.println("Sbado");
break;
default: System.out.println("O dia da semana est errado.");
break;
}
}
}
switch
30
No exemplo, temos uma varivel inteira, de nome dia_da_semana. A parte switch(dia_da_semana) nos
diz que a deciso devem ser em volta desta varivel, dos dados referentes a ela. case 1: nos diz o que fazer, se o
valor de dia_da_semana for 1. O programa imprimir "Domingo". break; diz ao sistema que ele deve
interromper, neste momento, a sequncia de comandos e terminar o switch, caso contrrio, ele continuaria nos outros
cases.
A parte import java.util.Scanner; responsvel pela importao da classe Scanner, que far a entrada
de dados no programa. Ali define-se uma classe Scanner, com o objeto ler. Logo faz se a referncia a entrada de
dados. Na segunda linha, declara-se a varivel x, que conter o objeto ler, e o nextInt(); significa que ele
Cortar, qualquer entrada do teclado (neste caso o Enter, Backspace, etc).
Comandos de iterao
Neste captulo veremos como fazer para que o seu programa execute uma sequncia de instrues um determinado
nmero de vezes ou at que determinada condio seja satisfeita.
O comando for
O comando for deve ser usado sempre que se deseja que um cdigo seja executado um determinado nmero de
vezes. A sintaxe do comando for :
for(INICIALIZAO;CONDIO;EXPRESSO){
COMANDO(S);
}
Quando o comando "for" executado, a primeira coisa a ser feita a inicializao prevista. Em seguida, verifica-se
se CONDIO "falso". Em caso afirmativo, o loop no ser executado. Caso contrrio, todos os comandos
existentes no bloco abaixo do comando so executados e a operao prevista em EXPRESSO executada. Mais
uma vez, a CONDIO analisada. Caso ela seja falsa, o loop interrompido. Caso contrrio, ela continua.
Exemplos de uso:
for(int i=1;i<=10;i++)
//O loop executado 10 vezes
System.out.println(i+" "); //Ser impressa na tela uma contagem de
1 at 10.
Comandos de iterao
31
}while(CONDIO);
Ele funciona exatamente igual ao comando "while". A diferena que a CONDIO s analisada depois que os
comandos so executados. Isso significa que o comando "do-while" sempre executa o conjunto de comandos ao
menos uma vez. Mesmo que a condio seja inicialmente falsa. Exemplos de uso:
Exemplo 1:
while(true){
System.out.printls("Estou preso!"); //Como aqui CONDIO sempre
verdadeira, este comando sempre ser executado.
}
Exemplo 2:
while(variavel%435==4){
variavel+=(variavel*3); //O numero de vezes que este comando
ser executado depende do valor inicial da varivel
}
O comando break
O comando break um comando bastante importante no desenvolvimento da maior parte dos programas de
computador, ele usado para sair imediatamente de um lao (loop, em ingls), independente do valor de
CONDIO. Ele pode ser executado dentro de um while, for, do ... while ou switch (estes comandos sero
discutidos mais adiante neste livro), fazendo um sada imediata dessa instruo. Passando para o execuo do
prximo comando.
A sintaxe do comando bastante simples:
break;
Exemplos de uso: No exemplo abaixo temos um cdigo escrito em Java, onde em um loop for interrompido
quando a varivel inteira contador se torna igual a 5.
public class BreakTeste
{
public static void main( String args[] )
{
int contador; //Varivel de controle usada como referncia
for ( contador = 1; contador <= 10; contador++ )//Lao, ser repetido 10 vezes
{
if ( contador == 5 ) //Se o contador chegar at 5
break;
tornar verdadeira
System.out.printf( "%d ", contador);
}//Termino da instruo for
Comandos de iterao
O comando continue
O comando continue serve para encerrar a execuo de comandos e verificar o valor de CONDIO. Caso o valor
seja "verdadeiro", a iterao continua. Caso contrrio, ela se encerra. Exemplos de uso:
for(int i=1;i<=10;i++){
//O loop executado 10 vezes
if(i%2==0)
continue;
System.out.println(i+" "); //Ser impressa na tela os nmeros
mpares entre 1 e 10
}
Neste captulo veremos como fazer para que o seu programa execute uma sequncia de instrues um determinado
nmero de vezes ou at que determinada condio seja satisfeita.
O comando for
O comando for deve ser usado sempre que se deseja que um cdigo seja executado um determinado nmero de
vezes. A sintaxe do comando for :
for(INICIALIZAO;CONDIO;EXPRESSO){
COMANDO(S);
}
Quando o comando "for" executado, a primeira coisa a ser feita a inicializao prevista. Em seguida, verifica-se
se CONDIO "falso". Em caso afirmativo, o loop no ser executado. Caso contrrio, todos os comandos
existentes no bloco abaixo do comando so executados e a operao prevista em EXPRESSO executada. Mais
uma vez, a CONDIO analisada. Caso ela seja falsa, o loop interrompido. Caso contrrio, ela continua.
Exemplos de uso:
for(int i=1;i<=10;i++)
//O loop executado 10 vezes
System.out.println(i+" "); //Ser impressa na tela uma contagem de
1 at 10.
32
Comandos de iterao
33
Alm do comando "while", tambm pode ser usado o comando "do-while" que segue a seguinte sintaxe:
do{
COMANDO(S);
}while(CONDIO);
Ele funciona exatamente igual ao comando "while". A diferena que a CONDIO s analisada depois que os
comandos so executados. Isso significa que o comando "do-while" sempre executa o conjunto de comandos ao
menos uma vez. Mesmo que a condio seja inicialmente falsa. Exemplos de uso:
Exemplo 1:
while(true){
System.out.printls("Estou preso!"); //Como aqui CONDIO sempre
verdadeira, este comando sempre ser executado.
}
Exemplo 2:
while(variavel%435==4){
variavel+=(variavel*3); //O numero de vezes que este comando
ser executado depende do valor inicial da varivel
}
O comando break
O comando break um comando bastante importante no desenvolvimento da maior parte dos programas de
computador, ele usado para sair imediatamente de um lao (loop, em ingls), independente do valor de
CONDIO. Ele pode ser executado dentro de um while, for, do ... while ou switch (estes comandos sero
discutidos mais adiante neste livro), fazendo um sada imediata dessa instruo. Passando para o execuo do
prximo comando.
A sintaxe do comando bastante simples:
break;
Exemplos de uso: No exemplo abaixo temos um cdigo escrito em Java, onde em um loop for interrompido
quando a varivel inteira contador se torna igual a 5.
public class BreakTeste
{
public static void main( String args[] )
{
int contador; //Varivel de controle usada como referncia
for ( contador = 1; contador <= 10; contador++ )//Lao, ser repetido 10 vezes
{
if ( contador == 5 ) //Se o contador chegar at 5
break;
Comandos de iterao
tornar verdadeira
System.out.printf( "%d ", contador);
}//Termino da instruo for
System.out.printf( "\nInterrompe o contador quando o contador =
%d\n",contador );
}//Fim do main
}//Fim da classe BreakTest
O comando continue
O comando continue serve para encerrar a execuo de comandos e verificar o valor de CONDIO. Caso o valor
seja "verdadeiro", a iterao continua. Caso contrrio, ela se encerra. Exemplos de uso:
for(int i=1;i<=10;i++){
//O loop executado 10 vezes
if(i%2==0)
continue;
System.out.println(i+" "); //Ser impressa na tela os nmeros
mpares entre 1 e 10
}
for
Sintaxe
for (int i=0; i<=10; i++) // i++ incrementando i
{
<bloco de comando>
}
34
for
35
}
}
O Resultado obtido ser:
ndice
ndice
ndice
ndice
ndice
ndice
ndice
ndice
ndice
ndice
0
1
2
3
4
5
6
7
8
9
ForEach
ForEach funciona com Array ou toda class que implementa a interface Iterable:
public interface Iterable<T>{
public abstract Iterator<T> iterator();
}
Exemplo de ForEach:
public class ForEach {
public static void main(String [] args){
String nomes[] = new String[5];
nomes[0]
nomes[1]
nomes[2]
nomes[3]
nomes[4]
=
=
=
=
=
"joo";
"maria";
"jos";
"paulo";
"paula";
for(String n : nomes){
System.out.println(n);
}
}
}
36
Arrays (Vetores)
Vetores
Definio de vetor
Um vetor uma estrutura de dados formada por um conjunto de dados ou outros elementos de um mesmo tipo
ou uma mesma estrutura. O vetor pode ter uma dimenso ou mais. Tambm chamado de matriz quando de
duas dimenses, funciona de modo anlogo s matrizes matemticas. O acesso aos dados feito atravs de
"coordenadas" (ndices).
A programao faz um grande uso de vetores. Cada item de um vetor chamado de elemento. Cada um dos
elementos possui uma posio dentro do vetor, qual referenciamos atravs do ndice do elemento. Cada um
dos "domnios" (conjunto de posies, endereos de armazenamentos) do vetor, nos chamamos de dimenso.
J o tipo de dado (ou de elemento) corresponde ao "contradomnio" do vetor, ou seja, o conjunto de literais ou
de outro tipo de elemento que o vetor pode armazenar.
Veja um vetor de uma dimenso e dez elementos:
[1][0],
[1][1],
[1][2],
[1][3],
[1][4],
[2][0],
[2][1],
[2][2],
[2][3],
[2][4],
[3][0],
[3][1],
[3][2],
[3][3],
[3][4],
[4][0],
[4][1],
[4][2],
[4][3],
[4][4].
Cada elemento representado por dois ndices (um para cada dimenso), entre colchetes e adjacentes [ ][ ].
Veja um vetor de trs dimenses e cento e vinte e cinco elementos (5 x 5 x 5):
Vetores
37
[1][0][0],
[1][1][0],
[1][2][0],
[1][3][0],
[1][4][0],
[1][0][1],
[1][1][1],
[1][2][1],
[1][3][1],
[1][4][1],
[1][0][2],
[1][1][2],
[1][2][2],
[1][3][2],
[1][4][2],
[1][0][3],
[1][1][3],
[1][2][3],
[1][3][3],
[1][4][3],
[1][0][4],
[1][1][4],
[1][2][4],
[1][3][4],
[1][4][4],
[2][0][0],
[2][1][0],
[2][2][0],
[2][3][0],
[2][4][0],
[2][0][1],
[2][1][1],
[2][2][1],
[2][3][1],
[2][4][1],
[2][0][2],
[2][1][2],
[2][2][2],
[2][3][2],
[2][4][2],
[2][0][3],
[2][1][3],
[2][2][3],
[2][3][3],
[2][4][3],
[2][0][4],
[2][1][4],
[2][2][4],
[2][3][4],
[2][4][4],
[3][0][0],
[3][1][0],
[3][2][0],
[3][3][0],
[3][4][0],
[3][0][1],
[3][1][1],
[3][2][1],
[3][3][1],
[3][4][1],
[3][0][2],
[3][1][2],
[3][2][2],
[3][3][2],
[3][4][2],
[3][0][3],
[3][1][3],
[3][2][3],
[3][3][3],
[3][4][3],
[3][0][4],
[3][1][4],
[3][2][4],
[3][3][4],
[3][4][4],
[4][0][0],
[4][1][0],
[4][2][0],
[4][3][0],
[4][4][0],
[4][0][1],
[4][1][1],
[4][2][1],
[4][3][1],
[4][4][1],
[4][0][2],
[4][1][2],
[4][2][2],
[4][3][2],
[4][4][2],
[4][0][3],
[4][1][3],
[4][2][3],
[4][3][3],
[4][4][3],
[4][0][4],
[4][1][4],
[4][2][4],
[4][3][4],
[4][4][4].
Vetores
38
Declarao de um vetor
Para declarar um vetor, utiliza-se a seguinte sintaxe:
tipo[] identificador;
ou
tipo identificador[];
Onde:
tipo = tipo de dado ou de elemento;
identificador = nome do vetor.
Um vetor de duas dimenses criado do seguinte modo:
tipo[][] identificador;
ou
tipo identificador[][];
Um vetor de trs dimenses criado do seguinte modo:
tipo[][][] identificador;
ou
tipo identificador[][][];
E assim, por diante - um vetor de quatro dimenses criado do seguinte modo:
tipo[][][][] identificador;
ou
tipo identificador[][][][];
Dados em um vetor
Os elementos dos vetores podem ser atribudos da seguinte forma (separados por vrgulas e entre chaves. Por
exemplo, em um vetor unidimensional poderamos indicar os dados de seus elementos assim:
{x0,x1,x2, ... ,xn}
onde cada um dos valores X um valor do elemento de ndice correspondente no vetor. A numerao dos ndices
comea a partir do 0 e pode ser somente nmero natural, ou seja, inteiro maior ou igual a zero.
Vetores podem ser declarados e iniciados conforme o seguinte exemplo - cada dimenso delimitada por
chaves e cada elemento separado do outro atravs de vrgulas:
int[] vetor={34, 27, 3, 2};
Outro modo de uso declarando, iniciando com o tamanho (quantidade de elementos) do vetor e depois
atribuindo os valores, como o equivalente a seguir:
int[] vetor= new int[4];
vetor={34, 27, 3, 2};
Ou ento, atribuindo os elementos individualmente:
Vetores
39
Vetores
40
assim, em Java:
int[][] B=new int[2][4];
B={{8,0,9,2},
{2,4,3,1}};
ou assim:
int[][] B={{8,0,9,2},
{2,4,3,1}};
ou assim:
int[][]
B[0][0]
B[0][1]
B[0][2]
B[0][3]
B[1][0]
B[1][1]
B[1][2]
B[1][3]
B=new int[2][4];
= 8;
= 0;
= 9;
= 2;
= 2;
= 4;
= 3;
= 1;
Ento, no caso de duas dimenses, geralmente se formata o cdigo em Java assim (para lembrar a
representao "biordenada" da matriz):
float[][] V={{1.5, 2.7, 3.5},
{1.2, 3.0, 4.5}};
Cada dimenso est agrupada por chaves. Cada um dos elementos da dimenso so separados por vrgulas. Os
nmeros fracionrios so representados com ponto ao invs de vrgula (entre a parte inteira e a fracionria).
Exemplo de um vetor de 3 dimenses (4 elementos x 3 elementos x 2 elementos), lembre-se que cada
dimenso est agrupada entre chaves
Vetores
41
int[][] V2={
{{1,65}, {2,47}, {33,5}},
{{1,32}, {22,7}, {53,65}},
{{1,5}, {12,7}, {23,5}},
{{1,2}, {2,7}, {3,66}}};
Equivale sobreposio (num espao tridimensional) dessas duas matrizes (formando a terceira dimenso):
42
Mtodos
O que so mtodos e para que servem
Esta pgina um esboo de informtica. Ampliando-a voc ajudar a melhorar o Wikilivros.
Mtodos
Mtodos so blocos de cdigo que pertencem a uma classe e tem por finalidade realizar uma tarefa. Eles so
anlogos s funes em C e sub-rotinas em pascal. Mtodos geralmente correspondem uma ao do objeto.
Exemplo: correr, pegar, etc. Numa classe para realizar clculos matemticos poderia ser pegar somar, subtrair,
dividir, etc. Alm disso um papel fundamental dos mesmos ter de evitar reescrever cdigo para uma mesma funo
toda vez que se deseja cham-la.
O comando return
O comando " return" serve para sair do mtodo em que est executando. Exemplos de uso:
public static void main(String[] args){
System.out.println("Boo!");
if (args.length > 0)
return;
System.out.println("Baa!");
}
Valor de retorno
Um mtodo pode retornar o valor de uma varivel. O tipo do valor de retorno definido antes do nome do mtodo.
O mtodo deve retornar um dado desse tipo atravs do comando return.
A palavra-chave void indica a ausncia de um tipo de dado. Serve para indicar um mtodo retorna nenhum dado. Por
exemplo:
public static void main(String[] args) {
//
}
Um exemplo prtico
No nosso exemplo vamos fazer mtodos que realizem operaes matemticas. Suponha que vamos fazer uma classe
OperacoesMatematicas
/*OperacoesMatematicas.java*/
public class OperacoesMatematicas{
public int somar( int num1, int num2 ){
43
44
Classes e objetos
Introduo s classes
O conhecimento sobre classes um conhecimento global,sendo que toda linguagem orientada a objetos utiliza desse
conceito para projetar seus objetos. Uma classe nada mais do que um projeto de um objeto. Ao definirmos classes
estamos modelando uma entidade que pode ser criada vrias vezes com a mesma definio. Sendo que ao
necessitarmos utilizar essa entidade temos que criar um objeto atravs do nosso modelo que a classe. Fazendo uma
analogia, uma receita de bolo seria a classe o resultado dessa receita, o bolo, seria o objeto.
Declarao de classes
Para declarar uma classe em java, utilizamos a palavra reservada class. Por exemplo:
Digamos que criamos a classe YouTube. Se quero declarar essa classe como de acesso geral utilizaria a seguinte
sintaxe:
public class YouTube {
//IMPLEMENTAO DE MTODOS E ATRIBUTOS DA CLASSE
}
Se queres uma classe de acesso restrito:
private class YouTube {
}
Se queres uma classe de acesso restrito:
protected class YouTube {
}
Objetos
45
Objetos
Elementos de software que representam entidades fsicas ou abstratas, simples ou complexas, dentro de um sistema.
Possuem identidade, responsabilidades especficas, estado e um conjunto de mensagens que esto aptos a responder.
Estticos: Dependem de um agente externo ao objeto para solicitar que o objeto altere o seu estado.
Dinmicos: O objeto capaz de espontaneamente alterar o seu prprio estado.
Herana
Em java a herana realizada de maneira simples ao utilizar a palavra chave extends:
Exemplo:
package academico;
public abstract class Pessoa {
public String strNome;
public String strTelefone;
// Mtodos
public void getStrNome(String Nome) {
this.StrNome = Nome;
}
public String setStrNome() {
return StrNome;
}
}
public class Aluno extends Pessoa {
// strNome e strTelefone, bem como seus metodos so herdados nesta
calasse por meio da palavra "extends"
}
Quando uma classe criada como sub-classe de outra classe, a palavra-chave super usada para que a sub-classe
possa acessar mtodos public ou protected (mas no private) da superclasse. super tambm usado para invocar o
constructor da superclasse, durante o constructor da subclasse.
Sintaxe:
super.<method_name>(<argumentos>);
ou
super(<argumentos>); //Em contrutor
Outro exemplo:
public class SuperClass
{
SuperClass(String title)
{
Herana
46
System.out.println( "Super: " + title );
}
public void printHello()
{
System.out.println( "Hello from SuperClass" );
return;
}
}
public class SubClass extends SuperClass
{
SubClass(String title)// constructor
{
super(title); // chama o constructor de Frame
}
public void printHello()
{
super.printHello();
System.out.println( "Hello from SubClass" );
return;
}
public static main( String[] args )
{
SubClass obj = new SubClass();
obj.printHello();
}
}
47
Modificadores de acesso
Modificadores
Modificadores
Modificadores de acesso
Os modificadores de acesso so palavras-chave que modificam a forma como podem ser acessadas as classes,
mtodos e/ou variveis.
Modificadores
Friendly
Sem modificador de acesso, o membro da classe considerado friendly. No h uma palavra-chave para esse
modificador.
Outros modificadores
Os modificadores a seguir podem ser usados em conjunto com os modificadores de acesso provendo, assim, outros
comportamentos:
Modificador abstract
A instruo abstract serve para:
declarar mtodos abstratos, ou seja, mtodos que devero ser desenvolvidos/implementados nas subclasses.
Quando a classe que contiver mtodos abstratos for herdada, os referidos mtodos devero ser implementados,
caso contrrio, a classe que extendeu dever ser declarada como abstrata.
declarar classes abstratas que se desenvolvem numa(s) subclasse(s). Classes abstratas so aquelas que no
esto totalmente implementadas/descritas. Uma classe abstrata no pode ser instanciada e amplamente usada
nas interfaces.
Uma classe considerada abstrata se contiver pelo menos um mtodo abstrato. Um mtodo abstrato tem a
seguinte caracterstica: void getName( );
Caso o mtodo tenha as chaves caractersticas {}, o mesmo no mais ser considerado abstrato, embora no
tenha cdigo dentro das chaves.
48
Modificadores
Modificador final
A instruo final indica que a classe, mtodo ou varivel assim declarada tm uma nica atribuio que se
mantm constante, ou seja, no pode ser alterada no decorrer do processamento.
Este modificador declara o que chamamos, em programao, de constante.
49
50
51
Matemtica
52
53
54
55
56
Colees
57
58
ndice
Primeiro programa
Widgets
Eventos e Action listeners
59
Concluso
Autores
Os usurios citados abaixo contribuiram para o desenvolvimento deste trabalho. Estes dados foram obtidos em
16/12/2013.
Abacaxi, Albmont, Alexandref93, Alexandreqo, Algum, Daniel Souza, Dante Cardoso Pinto de Almeida, David
Stress, Devarde, Edufsousa, Ezarate, Felipe Gustavo Firmo, Fesaopilger, Guiwp, Helder.wiki, Helder.wiki.bot,
Hojerio, JackPotte, Jonas AGX, Jorge Morais, Julianocanuto, LipeFontoura, Lus Felipe Braga, Lukas, Marco
Antonio Bidia, Marcos Antnio Nunes de Moura, Master, Maxtremus, MGFE Jnior, Mike.lifeguard, Nunesnd,
PatiBot, PatrciaR, Profvalente, Raylton P. Sousa, Ruy Pugliesi, SallesNeto BR, Scorpion, Seduardo, Sfragata,
Thiagoharry, Voz da Verdade, Wbrito, Webcentro, Wutsje.
60
Apndices
Palavras-chave ou palavras reservadas da
linguagem Java
Palavras-chave
Em programao, palavras-chave, ou palavras reservadas, so as palavras que no podem ser usadas como
identificadores, ou seja, no podem ser usadas como nome de variveis, nome de classes, etc. Estas palavras
so assim definidas ou porque j tm uso na sintaxe da linguagem ou porque sero usadas em alguns
momento, seja para manter compatibilidade com verses anteriores ou mesmo com outras linguagens. No caso
do Java temos as seguintes palavras-chave:
abstract
continue for
new
switch
assert(3) default
goto(1)
package
synchronized
boolean
do
if
private
this
break
double
implements protected
throw
byte
else
import
public
throws
case
enum(4) instanceof
return
transient
catch
extends
int
short
try
char
final
interface
static
void
class
finally
long
strictfp(2) volatile
native
super
const(1) float
while
null
(1) sem uso na linguagem
(2) somente a partir da verso 1.2
(3) somente a partir da verso 1.4
(4) somente a partir da verso 5.0
Notas
A palavra-chave goto no tem uso em Java. Ela foi reservada para que no seja usada como identificador dentro
dos programas, evitando assim confuses com o comanda goto que existe em outras linguagens.
appletviewer
apt
extcheck
htmlconverter
keytool
jar
jarsigner
java
javac
javadoc
javah
javap
javaw
javaws
jconsole
jdb
jinfo
jmap
jps
jsadebugd
jstack
jstat
jstatd
kinit
klist
ktab
idlj
native2ascii
orbd
pack200
policytool
rmic
rmiregistry
rmid
serialver
servertool
tnameserv
unpack200
61
RMI
62
RMI
Introduo
A tecnologia Java RMI (Remote Method Invocation) consiste em uma biblioteca capaz de permitir que um
programa rodando em uma dada mquina efetue chamadas objetos instanciados em outra mquina. Apesar de ser
desenvolvida focando principalmente a chamada de procedimentos objetos localizados em mquinas distintas ela
tambm pode ser utilizada para efetuar a comunicao entre dois processos rodando na mesma mquina (desde que
ambos utilizem a JVM), muito embora tecnologias como XPCOM e outras possam disponibilizar performance e
integrao melhores.
Tenologias semelhantes
Existem duas outras tecnologias que se assemelham muito com a RMI: CORBA e .NET Remoting (que no .NET 3.0
foi incorporada pela WCF). A tecnologia .NET Remoting pode ser vista como a resposta Microsoft tecnologia
RMI, e possui quase as mesmas caractersticas. J a tecnologia CORBA divulgada mais tempo e possui a
vantagem de possuir bibliotecas em diversas linguagens, assim um objeto CORBA pode ser utilizado em vrios
programas escritos em linguagens diferentes (a tecnologia RMI foi feita exclusivamente para a plataforma Java).
Um exemplo rpido
Para demonstrar a facilidade da linguagem, vou criar um exemplo bem simples que ir utilizar a tecnologia RMI.
Um pequeno aplicativo para postar mensagens em um frum e listar as mesmas.
Primeiro devemos criar uma interface que ser utilizada para exibir aos usurios dos servio as operaes.
package rmiknolexample;
import java.rmi.RemoteException;
import java.rmi.Remote;
/**
*
* @author Andre
*/
public interface IForum
extends Remote {
public void postMessage(String author, String aMessage) throws
RemoteException;
public String[] readPosts() throws RemoteException;
public String[] readPosts(int beginAt) throws RemoteException;
}
Depois devemos criar uma classe que ir implementar a interface e disponibilizar a funcionalidade.
package rmiknolexample;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.Vector;
RMI
63
/**
*
* @author Andre
*/
public class ForumImpl
extends UnicastRemoteObject
implements IForum {
private Vector posts;
// O construtor padro deve gera a exeo RemoteException
public ForumImpl() throws RemoteException {
posts = new Vector();
}
public void postMessage(String author, String aMessage) throws
RemoteException {
posts.add(author + " disse uma vez: " + aMessage);
}
public String[] readPosts() throws RemoteException {
String[] result = new String[posts.size()];
posts.toArray(result);
return result;
}
public String[] readPosts(int beginAt) throws RemoteException {
String[] results = readPosts();
String[] copy = new String[results.length - beginAt];
System.arraycopy(results, beginAt, copy, 0, copy.length);
return copy;
}
Feito isso vamos implementar a classe que ir disponibilizar o servio ao usurio.
package rmiknolexample;
import java.rmi.Naming;
import java.rmi.RemoteException;
/**
*
* @author Andre
*/
public class ForumService {
public static void main(String[] args) {
try {
RMI
64
ForumImpl forumObj = new ForumImpl();
Naming.rebind("forumService", forumObj);
System.err.println("Rodando");
} catch(RemoteException e) {
System.err.println("Ocorreu um erro relativo ao RMI: " +
e.getMessage());
e.printStackTrace();
System.exit(0);
} catch(Exception e) {
System.err.println("Ocorreu um erro desconhecido: " +
e.getMessage());
e.printStackTrace();
System.exit(0);
}
}
}
Na classe acima observe a linha:
Naming.rebind("forumService", forumObj);
Ela responsvel por associar um nome ao seu objeto. atravs deste nome que os computadores e processos
remotos iro encontrar e utilizar o seu objeto. Este nome nico para um dado host, ou seja, mesmo se duas
aplicaes criarem objetos distintos (at mesmo de classes distintas) o mesmo nome no poder ser utilizado.
Por ltimo vamos implementar a classe que ir utilizar o servio disponibilizado.
package rmiknolexample;
import java.rmi.Naming;
import java.rmi.RemoteException;
/**
*
* @author Andre
*/
public class ForumClient {
public static void main(String[] args) {
try {
IForum forumObj =
(IForum)Naming.lookup("rmi://localhost/forumService");
forumObj.postMessage("autor", "Java RMI muito legal");
forumObj.postMessage("autor", "Nunca poste no frum sem
buscar");
String[] posts = forumObj.readPosts();
int x = 1;
for(String s: posts)
System.err.println(x++ + ": "+ s);
RMI
65
int offset = 1;
posts = forumObj.readPosts(offset);
for(String s: posts)
System.err.println((x++ + offset) + ": "+ s);
} catch(RemoteException e) {
System.err.println("Ocorreu um erro relativo ao RMI: " +
e.getMessage());
e.printStackTrace();
System.exit(0);
} catch(Exception e) {
System.err.println("Ocorreu um erro desconhecido: " +
e.getMessage());
e.printStackTrace();
System.exit(0);
}
}
}
A linha:
IForum forumObj = (IForum)Naming.lookup("rmi://localhost/forumService");
Efetua uma consulta no host informado (neste caso o localhost) e solicita o objeto associado ao nome: forumService.
O resto do cdigo fala por si s, e graas ao RMI as chamadas so idnticas chamadas locais. Melhorando um
pouco o design da aplicao possvel criar um objeto local ou ento um remoto dependendo da ocasio.
Para facilitar o teste, a classe abaixo foi criada apenas para permitir rodar o servio atravs da linha de comando:
"java -jar arquivoJar.jar"
package rmiknolexample;
/**
*
* @author Andre
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
if (args[0].equals("server"))
ForumService.main(args);
else if (args[0].equals("client"))
ForumClient.main(args);
else
System.err.println("Usage: ");
}
RMI
66
}
pronto! Para executar basta compilar as classes, iniciar o aplicativo rmiregistry que o responsvel por encontrar e
disparar as chamadas aos objetos corretos e iniciar o servidor em um terminal ou prompt.
Aps isso feito abra outro terminal ou prompt e inicie a aplicao cliente.
Observao importante: neste caso o teste apenas local mas quando utiliza-se um ambiente com diversas mquinas
muito importante iniciar a aplicao servidor com a opo: -Djava.rmi.server.hostname=<nome_ou_ip_do_host>.
Caso no seja feito o objeto pode ser exportado com o host errado e a aplicao cliente pode tentar disparar o
procedimento em um endereo diferente do solicitado.
Existem diversas outras caractersticas da tecnologia RMI que no foram abordadas, como por exemplo a capacidade
de baixar o cdigo de uma determinada classe de modo transparente. Assim mesmo que o contexto local no
reconhea uma classe esta ser transferida do servidor e poder ser utilizada pela aplicao.
Fontes e referncias
Informaes sobre RMI - Sun [1]
Java RMI - Andr Luiz Alves Moraes [2]
Referncias
[1] http:/ / java. sun. com/ javase/ technologies/ core/ basic/ rmi/ index. jsp
[2] http:/ / knol. google. com/ k/ andr%C3%A9-luiz-alves-moraes/ java-rmi/ n6m12v5sl0jh/ 1
Java 3D
Java 3D uma API desenvolvida em Java em colaborao com a Sun Microsystems onde podem ser desenvolvidas
aplicaes compiladas e interpretadas (tendo-se necessria a utilizao da JVM) podendo inclusive serem rodadas
em internet browsers
Ligaes externas
Site oficial [1]
Java 3D project [2]
Referncias
[1] http:/ / java. sun. com/ javase/ technologies/ desktop/ java3d/
[2] https:/ / java3d. dev. java. net/
67
68
Licena
Licena
Creative Commons Attribution-Share Alike 3.0
//creativecommons.org/licenses/by-sa/3.0/
69