You are on page 1of 26

A Linguagem de

Programação JAVA

Antonio L. Bajuelos
Departamento de Matemática
Universidade de Aveiro
1

A Linguagem de Programação JAVA


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

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 2

A Linguagem de Programação JAVA


„ Características Gerais (cont...)
… Compilada:
„ Um programa em JAVA é compilado para o chamado byte-
code, que é próximo as instruções de máquina, mas não de
uma máquina real.
„ O byte-code é um código de uma máquina virtual idealizada
pelos criadores da linguagem. Por isso JAVA pode ser mais
rápida do que se fosse simplesmente interpretada.
… Portá
Portável:
vel:
„ JAVA foi criada para ser portável.
„ O byte-code gerado pelo compilador para a sua aplicação
específica pode ser transportado entre plataformas distintas
que suportam JAVA (Solaris, Linux/UNIX, Windows, Mac/Os
etc) .
„ Esta portabilidade é importante para a criação de aplicações
para a heterogénea Internet.

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 3

1
A Linguagem de Programação JAVA
„ Características Gerais (cont...)
… Orientada a Objectos:
„ A portabilidade é uma das características que se inclui nos
objectivos principais duma linguagem orientada a objectos.
„ Em JAVA ela foi obtida de maneira inovadora com relação
ao grupo actual de linguagens orientadas a objectos.
„ JAVA suporta herança, mas não herança múltipla.
„ A ausência de herança múltipla pode ser compensada pelo
uso de herança e interfaces, onde uma classe herda o
comportamento de sua superclasse além de oferecer uma
implementação para uma ou mais interfaces.
„ JAVA permite a criação de classes abstractas.

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 4

A Linguagem de Programação JAVA


„ Características Gerais (cont...)
… Segura:
„ A eliminação do uso de ponteiros, em favor do uso de
vectores, objectos e outras estruturas substitutivas traz
benefícios em termos de segurança.
„ O programador é proibido de obter acesso a memória que
não pertence ao seu programa. Estas medidas são
particularmente úteis quando pensarmos em aplicações
comerciais desenvolvidas para a Internet.
„ Ser strongly typed também é uma vantagem em termos de
segurança, que está aliada a eliminação de conversões
implícitas de tipos de C++.

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 5

A Linguagem de Programação JAVA


„ Características Gerais (cont...)
… Eficiente:
„ Como JAVA foi criada para ser usada em computadores
pequenos, ela exige pouco espaço, pouca memória.
„ JAVA é muito mais eficiente que grande parte das
linguagens de scripting existentes, embora seja cerca de 20
vezes mais lenta que C, o que não é um marco definitivo.
„ Com a evolução da linguagem, serão criados geradores de
byte-codes cada vez mais otimizados que trarão as marcas de
performance da linguagem mais próximas das de C++ e C.
„ Além disso um dia JAVA permitirá a possibilidade de gerar
código executável de uma particular arquitetura on the fly,
tudo a partir do byte-code.

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 6

2
A Linguagem de Programação JAVA
„ Objectos em JAVA
… Objectos são instâncias de uma classe.
… Quando um objecto é criado ele precisa ser
inicializado, ou seja para uma única classe de nome
EstudanteDaUA podemos ter vários objectos durante
a execução de um programa. Exemplos:
„ Estudante da UA, Paulo; No.MEC 24124; Curso:
Matemática Aplicada e Computação
„ Estudante da UA, Ana Maria, No.MEC 17254, Identificação
893249, Curso: Lic. em Biologia
…A classe representa somente o molde para a criação
dos objetos e não contém informação.
… INSTANCIAS: Um objecto existente durante um
momento da execuç
execução de um programa é uma instancia
de uma classe.
Linguagens e Ambientes de Programação
Antonio L. Bajuelos 7

A Linguagem de Programação JAVA


„ Objectos em JAVA (cont...)
… Objectos podem conter objectos, ou seja os atributos de um
objecto podem ser objectos, da mesma classe ou não.
… Objectos possuem um estado e um comportamento. Métodos
podem receber objectos como argumentos, podem declarar
objectos como variáveis locais, podem chamar outros métodos.
… Um objecto pode ser visto como um RECORD numa tabela. Na
verdade podemos fazer com objectos muito mais do que fazemos
com records e procedimentos em Pascal.
… O programa mais simples em JAVA deve conter pelo menos uma
classe e um método de início de programa, e é este programa que
faremos agora.

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 8

A Linguagem de Programação JAVA


„ Programa Hello Internet!

// Comentário de uma linha


public class HelloInternet
{
public static void main (String args[])
{
System.out.println("Hello Internet!");
}
}
Resultado: Na ecrã aparece Hello Internet!

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 9

3
A Linguagem de Programação JAVA
„ Programa Hello Internet! (cont...)
… Explicação passo a passo ...

// Comentário de uma linha


„ Comentários em JAVA seguem a mesma sintaxe
de C++ , “//” inicia uma linha de comentário, todo
o restante da linha é ignorado.
„ Existe também um outro tipo de comentário
formado por /* Insira aqui o texto a ser ignorado
*/ , este tipo de comentário pode ser intercalado
em uma linha de código.
„ Comentários são tratados como espaços em
branco.

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 10

A Linguagem de Programação JAVA


„ Programa Hello Internet! (cont...)
… Explicação passo a passo ...

public class HelloInternet


„ class é a palavra reservada que marca o inicio da
declaração de uma classe.
„ public é um especificador, por enquanto public
class pode ser interpretado como o início da
declaração de uma classe.
„ Todas as classes serão declaradas assim.

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 11

A Linguagem de Programação JAVA


„ Programa Hello Internet! (cont...)
… Explicação passo a passo ...
HelloInternet
„ HelloInternet é o nome dado a esta classe.
„ O abre chaves marca o início das declarações da classe que
são os atributos e métodos.
„ Esta classe só possui uma declaração, a do método main.
„ Um método só pode ser declarado {internamente} a classe a
qual pertence, evitando as confusões sobre “escopo”. Desta
forma, todo fragmento de código em JAVA deve pertencer
ao abre chaves-fecha chaves da definição de uma classe.
public static void main (String args[])
{
System.out.println("Hello Internet!");
}
Linguagens e Ambientes de Programação
Antonio L. Bajuelos 12

4
A Linguagem de Programação JAVA
„ Programa Hello Internet! (cont...)
… Explicação passo a passo ...
public
„ É um qualificador do método que indica que este é
acessível externamente a esta classe (para outras
classes que eventualmente seriam criadas).
static
„ É um outro qualificador ou specifier, que indica
que o método deve ser compartilhado por todos os
objectos que são criados a partir desta classe.
„ Os métodos static podem ser invocados, mesmo
quando não foi criado nenhum objecto para a
classe.

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 13

A Linguagem de Programação JAVA


„ Programa Hello Internet! (cont...)
… Explicação passo a passo ...
void
„ Semelhante ao void C++ ou C, é o valor de retorno
da função.
„ Quando a função não retorna nenhum valor ela
retorna void, uma espécie de valor vazio que tem
que ser especificado.
main
„ Este é um nome particular de método que indica
para o compilador o início do programa, é dentro
deste método e através das iterações entre os
atributos, variáveis e argumentos visíveis nele que
o programa se desenvolve.
Linguagens e Ambientes de Programação
Antonio L. Bajuelos 14

A Linguagem de Programação JAVA


„ Programa Hello Internet! (cont...)
… Explicação passo a passo ...
String args[ ]
„ É o argumento de main e por consequência do programa
todo.
„ Ele é um vector de strings que é formado quando são
passados ou não argumentos através da invocação do nome
do programa na linha de comando do sistema operacional,
exemplo:
… Java HelloInternet argumentotexto1 argumentotexto2
{ ... }
„ Abre chaves e Fecha chaves podem ser entendidos como algo
semelhante ao BEGIN...END de Pascal ou Modula-3, ou seja:
delimitam um bloco de código.
„ As variáveis locais dos métodos podem ser declaradas em
qualquer local entre as chaves. Mas por motivos de clareza
do código declararemos todas no início do abre chaves.
Linguagens e Ambientes de Programação
Antonio L. Bajuelos 15

5
A Linguagem de Programação JAVA
„ Programa Hello Internet! (cont...)
… Explicação passo a passo ...
System.out.println(“Hello Internet!”);
„ Chamada do método println para o atributo out da classe ou
objecto System,
„ O argumento é uma constante que vem entre aspas é do tipo
String.
„ println assim como writeln de Pascal, imprime a String e
posiciona o cursor na linha abaixo,
„ Analogamente print não avança linha.

„ O ; - ponto e vírgula separa operações.

... }
„ Finalmente o fecha chaves termina com a declaração da
classe HelloInternet

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 16

A Linguagem de Programação JAVA


„ Forma Geral duma Classe

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 17

A Linguagem de Programação JAVA


„ Atributos
… No programa anterior, não observamos a criação de
nenhum objecto, apenas a declaração da classe
HelloInternet que continha o método main.
… O nosso programa funcionou, porque o método main
não precisa de um objecto específico para ser
invocado.
… No exemplo a seguir declara-se classe (Circulo) e em
seguida cria um objecto deste tipo em main e altera o
conteúdo desta variável.
… Uma classe é parecida com um record de Pascal.
… A classe Circulo é declarada com os atributos: raio e
x e y.
… Note que este objecto não possui métodos ainda.

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 18

6
A Linguagem de Programação JAVA
„ Atributos (cont ...)
…A classe Circulo é especificada em um ficheiro
separado do ficheiro da classe que contém o método
main (início do programa).

// Classe circulo, Ficheiro: Circulo.Java


public class Circulo {
// so atributos entre as chaves
public float raio; //atributo raio do circulo
// coordenadas cartesianas do centro
public float x;
public float y;
}

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 19

A Linguagem de Programação JAVA


„ Atributos (cont ...)
// Classe principal, Ficheiro: Principal.Java
public class Principal {
public static void main(String args[ ]) {
//declaracao de uma variavel circulo no metodo main.
Circulo umcirc;
// alocacao dessa variavel
umcirc=new Circulo();
System.out.println("("+umcirc.x+","+umcirc.y+","+
umcirc.raio+")");
umcirc.x=umcirc.x+17;
System.out.println("("+umcirc.x+","+umcirc.y+","+
umcirc.raio+")");
Resultados:
} (0,0,0)
} (17,0,0)
Linguagens e Ambientes de Programação
Antonio L. Bajuelos 20

A Linguagem de Programação JAVA


„ Sem Includes!
… No exemplo anterior foi utilizado o nome da classe
Circulo na classe Principal mas ambas estão em
ficheiros separados
„ Como o compilador sabe em que pasta está a
classe Circulo?
„ Não é preciso fazer uma espécie de include para
poder usar a classe Circulo em outro arquivo?”
„ A resposta é não. O compilador sabe achar se ela estiver
na pasta do programa principal.
„ Se você tiver que deixar esta classe numa outra pasta
então ela deve fazer parte de um package e então será
necessário importar explicitamente este package.
Linguagens e Ambientes de Programação
Antonio L. Bajuelos 21

7
A Linguagem de Programação JAVA
„ Classe Circulo e declaração de atributos:
…A classe Circulo, esta classe contém três atributos . A
declaração de atributos segue sintaxe semelhante a de
C++
EspecificadorModoAcesso NomeTipo NomeAtributo;
public float raio;
public float x;
public float y;
… Todos os atributos pertencentes a classe são do tipo
float (Ponto flutuante 32-bit).
… Os atributos estão especificados como public o que
significa que podem ser modificados a partir de uma
classe que usa um objecto Circulo.
… Esta classe Circulo não possui métodos.

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 22

A Linguagem de Programação JAVA


„ Classe Circulo e declaração de atributos:
… Exemplo de declaração de variáveis simples:
…A declaração de uma variável Circulo no método
main:
Circulo umcirc;
… Seguida de sua alocação:
umcirc=new Circulo();
… Sem a alocação a variável não pode ser usada.
… Note que os atributos são por default inicializados
para zero.

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 23

A Linguagem de Programação JAVA


„ Classe Principal declaração e inicialização de
atributos:
…A classe Principal não possui atributos, porque
nenhum objecto desta classe é criado, apenas seu
método main é chamado.
… main declara uma referência para objecto da classe
Circulo: Circulo umcirc;
… Antes da referência ao objecto ser usada, este precisa
ser alocado na memória o que é feito através de
umcirc = new Circulo();
… JAVA permite que se aproveite a alocação de um
objecto para inicializar alguns de seus atributos.

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 24

8
A Linguagem de Programação JAVA
„ Colecta automática de lixo:
…A desalocação do objecto é feita pela linguagem,
(automatic garbage collection), o programador não
precisa se preocupar com ela.
… Após o fecha chaves de main, a memória do objecto
umcirc já pode ser liberada, o que normalmente não
ocorre de imediato.
… O ambiente da linguagem executa um tread em baixa
prioridade que libera de tempos em tempos os
espaços inutilizados de memória, tirando proveito por
exemplo de eventuais pausas de iteração do usuário
com o programa.

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 25

A Linguagem de Programação JAVA


„ Acesso e métodos e alterações dos atributos:
…O acesso aos atributos da variável (objecto) umcirc
deve ser feito usando o nome do objeto e o nome do
atributo deste, separados por um ponto:
umcirc.raio=10.0;
… Note que raio sozinho não faz sentido no programa,
precisa-se especificar de que objecto se deseja alterar
ou obter o raio.
… A sintaxe de chamadas de métodos é semelhante a
sintaxe descrita acima, só que ao envés de nome do
atributo temos o nome do método seguido dos
parênteses que podem conter zero ou mais
argumentos.
… Exemplo: No programa HelloInternet é utilizado o
método println() para o objeto System.out.
Linguagens e Ambientes de Programação
Antonio L. Bajuelos 26

A Linguagem de Programação JAVA


„ Imprimindo variáveis do tipo float e inteiro
(int) na ecrã:
System.out.println("("+umcirc.x+","+
umcirc.y+","+umcirc.raio+")");
… O argumento de println que conhecemos é uma única
variável do tipo String, no entanto o código acima
mistura nos argumentos desse método os seguintes
elementos: Strings: “(“, Operadores: “+”, e
variáveis float: umcirc.y.
… O operador “+” é também operador de concatenação
de Strings e que os argumentos int ou float e de
outros tipos básicos desse método são convertidos
para Strings.
Linguagens e Ambientes de Programação
Antonio L. Bajuelos 27

9
A Linguagem de Programação JAVA

„ Os identificadores em JAVA
… Iniciam com uma letra, carácter “_” ou “$”;
… Caracteres subsequentes podem conter dígitos;
… Java diferencia maiúsculas de minúsculas;
… Não existe tamanho máximo para identificadores;
… Palavras-chave não podem ser usadas como
identificadores;

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 28

A Linguagem de Programação JAVA


„ Palavras Reservadas do JAVA

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 29

A Linguagem de Programação JAVA


„ Os operadores = e ==:
… Em Java (C e C++) o operador = (igual) tem a
função de atribuição e o operador == (igual igual) tem
a função de comparação entre valores, retornando o
valor booleano verdadeiro se estes valores forem
idênticos.
… Em JAVA é permitido escrever:
int i, j, k;
i = 0;
j = k = i+3;
//final, j vale 3, k vale 3 e i continua valendo 0
… Essas atribuições em cadeia permitem escrever código
mais compacto.
Linguagens e Ambientes de Programação
Antonio L. Bajuelos 30

10
A Linguagem de Programação JAVA
„ Tipos básicos e Constantes:
… char - Caractere UNICODE 16-bit
O tipo char (caracter unicode) é representado com
„
16-bits sem sinal, o que permite endereçar de 0 a
65535.
„O objectivo desta opção é permitir
internacionalização da linguagem, bem como a
padronização.
„ Constantes do tipo caracter aparecem entre
apóstrofes: ‘a’, ‘1’, ‘$’.
… boolean - Valor true ou false
boolean pertenceAoConjunto; //declara variavel
pertenceAoConjunto=true; //exemplo
Linguagens e Ambientes de Programação
Antonio L. Bajuelos 31

A Linguagem de Programação JAVA


„ Tipos básicos e Constantes:
… byte - Inteiro 8-bit , faixa:-128 até 127
… short - Inteiro 16-bit, faixa:-32768 até 32767
… int - Inteiro 32-bit, faixa:-2147483648 até
2147483647
… Long - Inteiro 64-bit, faixa:-
9223372036854775808 até 9223372036854775807
„ Se quiser atribuir uma constante a um long,
faça o type cast explicitamente:
long a;
a=(long)299792458;
a= 299792458L;

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 32

A Linguagem de Programação JAVA


„ Tipos básicos e Constantes:
… float - Ponto flutuante 32-bit
… double - Ponto flutuante 64-bit
„ Um valor como 3.14159265 é considerado double
como padrão, se quiser atribuir esta constante a um
float, faça o type cast explicitamente:
float a;
a=(float)3.14159265;
„ Ou então usar uma terminação em f para indicar que o
número deve ser representado como float:
float a=3.14159265f
„ Expoentes podem ser escritos usando o caracter e ou
E: 6,02E23 ou 1.380658e-23.
„ O separador de casas decimais é o ponto.
Linguagens e Ambientes de Programação
Antonio L. Bajuelos 33

11
A Linguagem de Programação JAVA
„ Tipos básicos e Constantes: Resumo

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 34

A Linguagem de Programação JAVA


„ Conversões:
… Automáticas: as conversões para tipos superiores são
automáticas.
„ byte -> short -> int -> long

„ float -> double

… Conversões para tipos menores só explicitamente.

Exemplos:
„ long i=15; //conversão automática
„ int i=15L; //erro de compilação
„ float f=(float)3.14; //conversão explícita

„ float f=3.14f; //ok

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 35

A Linguagem de Programação JAVA


„ Declarações:
…A declaração de tipos primitivos é feita utilizando-se o
tipo seguido do nome da variável
… Diversas variáveis podem ser declaradas juntas desde
que separadas por vírgulas
… Na declaração já é possível inicializar as variáveis.
… Caso não sejam inicializadas assumem o valor
default (zero). No caso de boolean o valor default é
false.
… Exemplos:
„ int numero;
„ double n1,n2,n3;
„ int a=10,b,c=5;
„ char sexo = ‘F’;

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 36

12
A Linguagem de Programação JAVA
„ Constantes:
… Constantessão definidas no escopo de uma classe, não
de um método
… São chamadas de constante de classe
… Para definir uma constante utiliza-se os
modificadores static final
… Exemplo de uso de constante:
public class ExemploConstante {
public static final double TAXA_DE_JUROS=0.2;
public void main (String args[]) {
System.out.println(“A taxa de juros mensal é ”
+TAXA_DE_JUROS);
}
}

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 37

A Linguagem de Programação JAVA


„ Convenções de Codificação:
… Variáveis:
„ Começam com letra minúscula. Palavras são separadas por letras
maiúsculas. Ex.: saida, valorFinal, str1, etc.
… Constantes:
„ Devem ser todas com letras maiúsculas. Palavras são separadas
por caracteres de sublinhado. Ex.: PI, COR_DE_FUNDO, etc.
… Classes e Interfaces:
„ Devem ser substantivos com a primeira letra maiúscula. Palavras
são separadas por letras maiúsculas. Ex.: Mensagem, ChatClient,
etc.
… Métodos:
„ Devem ser verbos com a primeira letra minúscula. Letras
maiúsculas separam palavras. Ex.: run, paint, abreArquivo, etc.
Linguagens e Ambientes de Programação
Antonio L. Bajuelos 38

A Linguagem de Programação JAVA


„ Blocos em JAVA:
… Um bloco é definido por ({}) e pode conter um grupo de outros
blocos.
… As variáveis definidas dentro de um bloco só podem ser vistas
internamente a este, e são terminadas ou extintas no final da
execução deste (}).
… Exemplo:
void testblock() {
int x = 10, w=1;
if (x> w)
{ // inicio do bloco
int y=50;
System.out.println(“dentro do bloco”);
System.out.println(“x:” + x);
System.out.println(“y:” + y);
} // final do bloco
System.out.println(“w:” + w);
System.out.println(“y:” + y); // erro variável não conhecida
}
Linguagens e Ambientes de Programação
Antonio L. Bajuelos 39

13
A Linguagem de Programação JAVA
„ Atributos e Métodos:
… Os métodos determinam o comportamento dos
objectos de um classe.
… Quando um método é invocado, se diz que o objecto
está recebendo uma mensagem (para executar uma
acção).
… O programa a seguir exemplifica chamadas de
métodos, para tal define um objecto que serve como
contador, a implementação representa a contagem no
atributo num que é um número inteiro.
… Os métodos são simples:
… No exemplo a seguir:
„ incrementa adiciona um ao contador em qualquer estado e
comeca inicializa a contagem em zero. Decrementa faz o
oposto de incrementa.
Linguagens e Ambientes de Programação
Antonio L. Bajuelos 40

A Linguagem de Programação JAVA


„ Atributos e Métodos:
//Classe Contador, Contador.Java
public class Contador { public void comeca(int n)
public int num; //comeca a contar
public void incrementa() {
num=n;
//incrementa contador
}
{
}
num=num+1;
}
public void decrementa()
//decrementa contador
{
num=num-1;
}

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 41

A Linguagem de Programação JAVA


„ Atributos e Métodos (cont ...):
//Classe principal, Princ.Java
public class Principal {
public static void main(String args[ ]) {
//declaracao de atributo contador
Contador umcont;
//alocacao
umcont=new Contador();
umcont.comeca(0);
System.out.println(umcont.num);
umcont.incrementa();
System.out.println(umcont.num); Resultados:

} 0
} 1

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 42

14
A Linguagem de Programação JAVA
„ A palavra reservada this:
this
… this é uma palavra chave (reservada) utilizada num método
como referência para o objecto corrente, ela tem o significado
de: “o objecto para o qual este trecho de código está sendo
executado”.
… Exemplo:
„ Suponha uma classe que possui a seguinte declaração de atributo:
public int qualquer;
„ Se quisermos em um método desta classe alterar o atributo
qualquer para o valor 3, basta escrever qualquer=3; , mas este
código escrito dentro de um método da classe que declara
qualquer, é totalmente equivalente a this.qualquer=3;
„ Esta última é uma opção mais clara e é capaz de eliminar
ambiguidades entre os nomes dos atributos de uma classe e os
nomes dos argumentos de um dos métodos desta (quando estes
nomes forem iguais).
„ O uso de this também é válido fazer para chamadas de métodos
para o objecto corrente.

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 43

A Linguagem de Programação JAVA


„ Nova versão do programa Circulo:
//Classe circulo
public class Circulo {
public float raio;
public float x;
public float y;
public void move(float dx,float dy)
//move o circulo de lugar
{
this.x+=dx;
y+=dy;
}
public void mostra()
//imprime na ecrã o estado do objeto
{
System.out.println("("+x+","+y+","+raio+")");
}
} //fim da declaracao da classe
Linguagens e Ambientes de Programação
Antonio L. Bajuelos 44

A Linguagem de Programação JAVA


„ Nova versão do programa Circulo (cont...):
//Classe principal, Principal.Java
class Principal {
public static void main(String args[ ]) {
Circulo umcirc;
//declaracao de atributo circulo
umcirc=new Circulo();
umcirc.x=0;
umcirc.y=0;
umcirc.raio=12;
umcirc.mostra();
umcirc.move(10,10);
umcirc.mostra(); Resultados:
umcirc.x=100;
umcirc.mostra(); (0,0,12)
} (10,10,12)
}
(100,10,12)
Linguagens e Ambientes de Programação
Antonio L. Bajuelos 45

15
A Linguagem de Programação JAVA
„ Comparação JAVA e Pascal
//Classe circulo versao JAVA public void move(float
public class Circulo { dx,float dy)
public float raio,x,y; {
public void inicializa(float this.x+=dx; this.y+=dy;
ax,float ay,float ar) }
{ public void mostra()
this.x=ax; this.y=ay; {
this.raio=ar; System.out.println("("+
} this.x+","+
public void altera_raio(float a) this.y+","+
{ this.retorna_raio()+")");
this.raio=a; }
} } //declaração da classe.....
public float retorna_raio()
{
return this.raio;
}
Linguagens e Ambientes de Programação
Antonio L. Bajuelos 46

A Linguagem de Programação JAVA


„ Comparação JAVA e Pascal (cont...)

//Classe principal, Principal.Java


public class Principal {
public static void main(String args[ ]) {
Circulo ac;
ac=new Circulo();
ac.inicializa(0,0,10);
ac.mostra();
ac.move(1,1);
ac.mostra();
ac.x=100;
ac.altera_raio(12);
ac.mostra();
}
}

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 47

A Linguagem de Programação JAVA


„ Comparação JAVA e Pascal PROCEDURE AlteraRaio (var
PROGRAM Comparacao; altereme:Circulo;ar:real);
{COMPARACAO JAVA vs Pascal} BEGIN
TYPE Circulo=RECORD altereme.r:=ar;
x:real; END;
y:real; FUNCTION RetornaRaio
r:real; (copieme:Circulo):real;
END; BEGIN
var ac:circulo; Retorna_Raio:=copieme.r;
leitura:integer; END;
PROCEDURE Inicializa(var PROCEDURE Move (var
altereme: Circulo; altereme:Circulo;
ax,by,cr:real); dx,dy:real);
BEGIN BEGIN
altereme.x:=ax; altereme.x:=altereme.x+dx;
altereme.y:=by; altereme.y:=altereme.y+dy;
altereme.r:=cr; END;
END; Cont....
Linguagens e Ambientes de Programação
Antonio L. Bajuelos 48

16
A Linguagem de Programação JAVA
„ Comparação JAVA e Pascal (cont...)
...cont...
PROCEDURE Mostra(copieme:Circulo);
BEGIN
writeln('X:',copieme.x,' Y:',copieme.y,' R:',copieme.r);
END;

BEGIN
Inicializa(ac,0.0,0.0,10.0);
Mostra(ac);
Move(ac,1.0,1.0);
Mostra(ac);
ac.x:=100.0;
AlteraRaio(ac,12.0);
Mostra(ac);
read(leitura);
END.

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 49

A Linguagem de Programação JAVA


„ Comparação JAVA e Pascal (cont...)
… Observações gerais
„ As classes em JAVA são compostas de atributos e
métodos.
„ Em Pascal os procedimentos e os dados são criados de
forma separada, mesmo que só tenham sentido juntos. A
junção entre os dados e procedimentos se dá através de
passagem de parâmetros.
„ No caso de uma linguagem procedural, o que
normalmente é feito se assemelha ao código seguinte:
Move(ac,1.0,1.0);. Nesse caso ac é um record. O
parâmetro é passado por referência e o procedimento é
definido a parte do registro, embora só sirva para aceitar
argumentos do tipo Circulo e mover suas coordenadas.

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 50

A Linguagem de Programação JAVA


„ Construtores
… Construtores são métodos especiais chamados pelo sistema no
momento da criação de um objecto.
… Construtores representam uma oportunidade de inicializar
seus dados de forma organizada.
… Um construtor tem sempre o mesmo nome da classe a qual
pertence.
„ Exemplo: Para a classe String, pré-definida na linguagem, o
construtor tem a forma String(“Constante do tipo String”);
… Exemplos:
String a;
//alocacao e inicializacao atraves do construtor
a=new String(“Texto”);
a.mostra();

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 51

17
A Linguagem de Programação JAVA
„ Construtores (cont...)
//Classe Ponto //Classe principal, Principal.java
public class Ponto { public class Principal {
public float x,y; public static void main(String
public Ponto(float ax,float ay) args[ ]) {
{ Ponto ap;
this.x=ax; this.y=ay; ap=new Ponto((float)0.0,(float)0.0);
} ap.mostra();
public void move(float dx,float ap.move(1,1);
dy) ap.mostra();
{ ap.x=100;
this.x+=dx; this.y+=dy; ap.mostra();
} }
public void mostra() }
{ Resultados:
System.out.println("("+this.x+ (0,0)
","+this.y+")"); (1,1)
} (100,1)
}
Linguagens e Ambientes de Programação
Antonio L. Bajuelos 52

A Linguagem de Programação JAVA


„ Construtores: ATENÇÃO!
… Em Java é possível criar mais de um método com o
mesmo nome, mas que diferem nos argumentos.
Isso é designado por overloading de métodos.
… Exemplo:

class Point {
Point p = new Point(10,20);
int x,y; Point p2 = new Point();
Point( int x, int y ) {
this.x = x;
this.y = y; }
Point( ) {
this(0,0); }
}

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 53

A Linguagem de Programação JAVA


„ Herança
… As classes descendentes herdam as variáveis e
métodos dos antecessores para além de poderem
criar novos. A classe pai é designada por
superclass
… Exemplo:
class Point3D extends Point { Point p = new Point3D(10,20,5);
int z; Point p2 = new Point3D();
Point3D( int x, int y, int z ) {
super(x,y);
this.z = z; }
Point3D( ) { Atenção: é possível utilizar super
para chamar outro método da
this(0,0,0); }
super-classe: super.metodo(x,y);
}

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 54

18
A Linguagem de Programação JAVA
„ VECTORES e MATRIZES
… Vectores são objectos, eles possuem papel importante no
estilo de programação desta linguagem que exclui ponteiros.
… Por serem objectos, vectores são obrigatoriamente alocados
de maneira dinâmica.
… Exemplo:
class VectorTest {
public static void main (String args[ ]) {
int vector[ ]=new int[3];
vector[0]=0; vector[1]=10; vector[2]=20;
System.out.println(vector[0]+" "+
vector[1]+" "+ vector[2]+" ");
} Resultados:
} 0 10 20
Linguagens e Ambientes de Programação
Antonio L. Bajuelos 55

A Linguagem de Programação JAVA


„ VECTORES e MATRIZES (cont...)
Resumo da sintaxe:
int a[ ]; //declara vector de inteiros a
a=new int[10]; //aloca vector a com dez posicoes
//as duas linhas anteriores podem ser abreviadas por:
int a[ ]=new int[10];
//o vector pode ser inicializado ja na declaracao:
int a[3]={0,10,20};
O análogo para matrizes é:
int a[ ][ ]; //declara matriz de inteiros a
a=new int[3][3]; //aloca matriz 3x3 Æ 9 celulas
//as duas linhas anteriores podem ser abreviadas por:
int a[ ][ ]=new int[3][3];
//a matriz pode ser inicializada ja na declaracao:
int a[3][3]={{0,10,20},{30,40,50},{60,70,80}};
Linguagens e Ambientes de Programação
Antonio L. Bajuelos 56

A Linguagem de Programação JAVA


„ Diagrama de um VECTOR
… A faixa útil do vector vai de 0 até (n-1) onde n é o valor dado
como tamanho do vector no momento de sua criação.
… Se ocorrer um acesso ao vector[i] onde i é um índice inválido, o
JAVA emitirá uma mensagem do tipo:
java.lang.ArrayIndexOutOfBoundsException...
… a.length; //armazena o numero de elementos do vector a
… Declarar um vector de objectos, por exemplo objectos da classe
Ponto, não implica que os objectos de cada posição do vector já
estarão inicializados, para inicializar os elementos é preciso
escrever um código do tipo:
Ponto a[ ];
a = new Ponto[3]; //alocacao
for (int i = 0; i < a.length(); i++)
{ a[i] = new Ponto(0,0); }

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 57

19
A Linguagem de Programação JAVA
„ Aritmética do JAVA
… No JAVA, podem ser realizadas cinco operações
aritméticas (OA) (básicas:
„ Adição +
„ Substracção -
„ Multiplicação *

„ Divisão /
„ Módulo (resto) %

… As OA podem ser realizadas sobre variáveis de tipo


inteiro ou de tipo float.
… O resultado será um inteiro caso de os operandos
serem inteiros e float se um deles ou ambos forem à
partida float.
Linguagens e Ambientes de Programação
Antonio L. Bajuelos 58

A Linguagem de Programação JAVA


„ Operações lógicas, Comparações e Condicionais
… Existem variados operadores em JAVA para a
realização de comparações e operações lógicas. Em
termos de comparação podem ser utilizados os
seguintes:

Significado Sintaxe Exemplo


igual a == x == y
diferente de != x != y
menor que < x<y
menor ou igual <= x<= y
maior que > y>y
maior ou igual >= x >= y

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 59

A Linguagem de Programação JAVA


„ Operações lógicas, Comparações e Condicionais (cont...)
… As condicionais em JAVA escrevem-se da seguinte
forma:
if (condição)
acção principal;
else
acção alternativa;
… Naturalmente que o else é facultativo
… Também podem ser executadas várias acções dentro
de um bloco de expressões
if (condição)
{ .... acções diversas; ... }
else
{ .... acções diversas alternativas ... }

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 60

20
A Linguagem de Programação JAVA
„ Operações lógicas, Comparações e Condicionais (cont...)
… As operações lógicas também podem ser utilizadas em conjunto
( “e” e “ou”).
… Sintacticamente, estas operações efectuam-se em JAVA como a
seguir se exemplifica:
„ Exemplo de operação “e” (AND):
if ((x < 5) && (x >1))
System.out.println(“x esta entre 1 e 5”);
else
System.out.println(“x e maior que 5 ou menor que 1”);
„ Exemplo de operação “ou” (OR):
if ((x > 5) || (x < 1))
System.out.println(“x e maior que 5 ou menor que 1”);
else
System.out.println(“x esta entre 1 e 5”);

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 61

A Linguagem de Programação JAVA


„ Operações lógicas, Comparações e Condicionais (cont...)
… Em JAVA utilizam-se três operadores lógicos que operam sobre
valores boleanos e dão como resultados boleanos:
„ E (AND) &&
„ OU (OR) ||
„ Negação (NOT) !
… Os operadores podem ser combinados para gerar expressões
lógicas complicadas, como por exemplo:
!( (( x != 0) && (y >6 )) || (z ==3))
… A avaliação da expressão lógica dará sempre um valor true ou
false, consonante os valores das variáveis.
„ Exemplo;
int x = 0, y = 1, z = 2;
if ((x !=0) && (y == 1) && (z != 0))
System.out.println(“Condição verdadeira”);
else
System.out.println(“Condição falsa”);
Linguagens e Ambientes de Programação
Antonio L. Bajuelos 62

A Linguagem de Programação JAVA


„ Operações lógicas, Comparações e Condicionais (cont...)
… Operadores Bit-a-bit: &, |, ^ e ~
„ E (&)
Exemplo: 10 & 6 = 2 (1010 & 0110 = 0010)
„ OU (|)
Exemplo: 10 | 6 = 14 (1010 | 0110 = 1110)
„ OU exclusivo (^)
Exemplo: 10 ^ 6 = 12 (1010 ^ 0110 = 1100)
„ Negação (~)
Exemplo: ~10 = -11 (~00001010 = 11110101)

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 63

21
A Linguagem de Programação JAVA
„ Operações lógicas, Comparações e Condicionais (cont...)
… Exemplo de um shift à direita de 1 posição (x >> 1):
class Teste {
public static void main (String args[])
{
int x = 30; y;
y = (x >> 1);
System.out.println (“y = “+y);
}
}
Resultados: em binário: 0001 1110 Æ 0000 1111
em decimal: y = 15

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 64

A Linguagem de Programação JAVA


„ Operações lógicas, Comparações e Condicionais (cont...)
… Quanto as operações aritméticas e incremento de variáveis, elas
também podem ser realizadas com uma sintaxe compacta que a
seguir se descreve:
x += y x=x+y
x -= y x=x-y
x *= y x=x*y
x /= y x=x/y
x %= y x=x%y

… Igualmente, é utilizada uma sintaxe compacta para incremento


ou decremento, variáveis inteiras:
x ++ x=x+1
x -- x = x -1
Linguagens e Ambientes de Programação
Antonio L. Bajuelos 65

A Linguagem de Programação JAVA


„ Operações lógicas, Comparações e Condicionais (cont...)
… Note-se que também são utilizadas as formas:
++x e --x
„ No entanto, enquanto que uma expressão y = x++, a variável y fica
igual a x antes de x ser mudado, em y = ++x, y fica com o valor de x
após a mudança.
„ Este facto pode por vezes induzir erros e prestar-se a confusões,
como o seguinte exemplo demonstra:
class Teste {
public static void main (String args[ ]) {
int x = 0, y, z;
y = x++;
z= ++x;
System.out.println(“y = “+y+”, z=“ + z);
}
} Resultados: y = 0, z = 2
Linguagens e Ambientes de Programação
Antonio L. Bajuelos 66

22
A Linguagem de Programação JAVA
„ Operações lógicas, Comparações e Condicionais
(cont...)
… O operador “+”, quando aplicado a Strings,
concatena-as numa só String resultante final.
… De acordo com as regras de sintaxe curta que
vimos atrás, podemos aplicar as mesmas
expressões, mas agora com Strings de texto.
… Exemplo:
String s = “Nome = Pedro Alexandre ”;
s += “Coelho”;
System.out.println(s);

Resultado: Nome = Pedro Alexandre Coelho


Linguagens e Ambientes de Programação
Antonio L. Bajuelos 67

A Linguagem de Programação JAVA


„ Controle de Fluxo e Ciclos
… Como escrever um programa em JAVA para colocar
no écran os números entre 1 e 1000?
… Possível solução:
class ProgramaN {
public static void main (String args [ ]) {
int k = 1;
while (k <= 1000)
{
System.out.println(k);
k++;
}
}
}

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 68

A Linguagem de Programação JAVA


„ Controle de Fluxo e Ciclos (cont...)
… Expressões if ... else:
„ É a mais comum forma de expressão condicional que existe.
Sintaxe:
if (condição)
{ ... }
else
{ ... }
… Expressões ?:
„ É uma sintaxe curta para um caso especial de expressões de
tipo if ... else. Sintaxe:
expressão_lógica ? valor_verdadeiro : valor_falso
„ Se for true, a expressão condicional devolve o valor que
estiver em valor_verdadeiro, caso contrário devolve
valor_falso. Exemplo:
int x =2, y =3;
(x < y) ? x : y;
Linguagens e Ambientes de Programação
Antonio L. Bajuelos 69

23
A Linguagem de Programação JAVA
„ Controle de Fluxo e Ciclos (cont...)
… O Switch (para substituir ifs):
class Teste {
public static void main (String args [ ])
throws java.io.IOExeption {
boolean concorda;
System.out.println (“Você concorda ou não (S/N)?”);
char c = (char) System.in.read();
switch (c) {
case ‘s’:
case ‘S’:
System.out.println(“Você respondeu SIM”);
concorda = true; break;
case ‘n’:
case ‘N’:
System.out.println(“Você respondeu NÃO”);
concorda = false; break;
default: System.out.println(“Resposta não válida”);
break;
}
}
}
Linguagens e Ambientes de Programação
Antonio L. Bajuelos 70

A Linguagem de Programação JAVA


„ Ciclo While
class Teste { System.out.println(
public static void main “Para sair teclar q”);
String args [ ]) System.out.println(
throws java.io.IOExeption { “Introduzca a tecla:”);
char c = 0; }
boolean sair =false; }
System.out.println( else
“Introduzca a tecla:”); {
while (!sair) sair = true;
{ }
c = (char) System.in.read(); }
if (c != ‘q’) }
{ }
if (c !=10) /* 10 – CR */
{
System.out.println(
“Tecla errada!”);
Linguagens e Ambientes de Programação
Antonio L. Bajuelos 71

A Linguagem de Programação JAVA


„ Ciclo do ... while
… Um tipo de ciclo muito semelhante ao ciclo while.
…A única diferença é que a condição é avaliada no final
da primeira execução da instrução ou bloco de
instruções. Sintaxe:
do
{
.....
}
while (condição lógica)
… Neste tipo de ciclo o bloco de código é sempre
executado pelo menos uma vez, independentemente
do valor da condição lógica.

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 72

24
A Linguagem de Programação JAVA
„ Ciclo for
… Trata-se de um ciclo vocacionado para utilizações que
envolvam variações de uma variável, dentro de um
determinado intervalo. Sintaxe:
for (valor_inicial; valor_final; variação)
{
.....
}
… Exemplo: Escrever os primeiros 1000 números no
écran:
int k;
for (k = 1; k <= 1000; k++)
System.out.println(k);

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 73

A Linguagem de Programação JAVA


„ Ciclo for (cont ...)
… Exemplo:
int k;
for ( k = 20; k >=0; k = k - 2)
{
if ( k == 10 )
k = k-2;
System.out.print(k);
}

Resultados: 20 18 16 14 12 8 6 4 2 0

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 74

A Linguagem de Programação JAVA


„ Break, Continue e Labels
… Break pode ser utilizado para forçar a saída
de qualquer ciclo, mesmo antes de este
terminar.
„ Exemplo:
int k;
while (k <= 100)
{
System.out.print(k);
k++;
if (k == 50) break;
}

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 75

25
A Linguagem de Programação JAVA
„ Break, Continue e Labels (cont ...)
… Quando continue é encontrado, a parte restante do
código para aquela iteração é ignorada. Contudo, na
iteração seguinte, o código prossegue normalmente.
„ Exemplo:

int k;
for (k = 20; k >=0; k = k - 2)
{
if (k == 10) continue;
System.out.print(k);
}

Resultados: 20 18 16 14 12 8 6 4 2 0

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 76

A Linguagem de Programação JAVA


„ Break, Continue e Labels (cont ...)
… Uma label é uma instrução que é usada para marcar
uma determinada secção de código JAVA. Isto
permite que ao utilizar break ou continue, se diga
para onde se pretende sair ou continuar a próxima
iteração de um ciclo.
„ Exemplo:
ciclo: for (k = 0; k <= 10000; k++)
for (i = 0; i <=10000; i++)
{
if (i == 300) break ciclo;
}

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 77

A Linguagem de Programação JAVA


„ Exemplo:
class Factorial {
for ( k = n; k>=1; k-- )
public static void main
total *=k;
(String args [ ])
System.out.println(n +”!=“+total);
throws java.io.IOException
}
{
}
String s = “”;
int k;
char c;
long total = 1;
System.out.println (“Qual e o
numero?”);
while ((c = (char) System.in.
Read() !=10)
s += c;
int n = Integer.valueOf(s).
intValue();

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 78

26

You might also like