A Tecnologia Java

Propaganda
A Tecnologia Java
1
Introdução à linguagem
„
Origens do JAVA
„
Projecto “Green”, programação para a electrónica de
Consumo (Dezembro 1990):
„
„
„
„
„
Primeira abordagem: Em C++
„
„
„
„
Pouca memória disponível
Processadores fracos
Arquitecturas muito diferentes
Baixos requisitos computacionais
a linguagem era inadequada
demasiada complexa
não era multi-plataforma
Segunda abordagem: Criar uma nova linguagem multiplataforma com o melhor do C++, mas mais simples.
„
Nasceu o OAK.
2
Introdução à Linguagem
(cont.)
„
„
O projecto foi um fracasso, a electrónica de consumo não
precisava de algo tão sofisticado.
Primeiros anos da WWW
„
„
„
Páginas estáticas
todos os programas eram corridos no lado do servidor.
Massificação da WWW
„
„
correr os programas do lado do cliente
Problemas:
„
„
„
„
Diversos tipos de máquinas ligados á rede
Problemas de segurança
Independente da plataforma
A Sun viu a oportunidade e adaptou o OAK à WWW
„
Surgiu assim o JAVA (1995).
3
Arquitectura Java
Write once,
Run anywhere !
4
Arquitectura JAVA (cont.)
„
Independente da arquitectura computacional
„
„
Simples e Poderosa:
„
„
portável
Derivada do C++
Segura:
„
Não existem chamadas directas ao SO
„
„
„
para esse feito usa-se o Java Native Interface (JNI)
Não existem ponteiros explícitos
Robusta:
„
Gestão automática de memoria.
5
Arquitectura JAVA (cont.)
„
Orientada a Objectos:
„
„
Linguagem Orientada a Objectos pura
(quase…).
Multitarefa
„
Permite fazer coisas diferentes ao mesmo
tempo (Threads)
6
Plataformas JAVA
„
J2ME – Java 2 Micro Edition
„
„
J2SE – Java 2 Standard Edition
„
„
Java para Paltops e Telemóveis
Java para desktops / workstations
J2EE - Java 2 Enterprise Edition
„
Java para servidores
7
8
Linguagem Java
9
Hello World
public
public class
class HelloWorld
HelloWorld {{
public
public static
static void
void main(String[]
main(String[] args)
args) {{
System.out.println("Hello
System.out.println("Hello World");
World");
}}
}}
„
Todo o código é escrito dentro de classes
„
„
Uma Classe Executável (Main Class) tem o método
„
„
Class HelloWorld
public static void main(String[] args)
System.out.println
„
Escrita de mensagens no monitor
10
Executar um programa
„
Compilar o programa
„
Java compiler (javac)
„
Javac HelloWorld.java
„
„
HelloWorld.class
Correr o programa
„
Java Virtual Machine (java)
„
Java HelloWorld
„
“ola mundo”
11
Definição da linguagem
12
Tipos de dados básicos
„
Números Inteiros:
„
byte – 8 bits,
„
„
short – 16 bits
„
„
float – 32 bits
„
„
-3.40292347E+38 a +3.40292347E+38
double – 64 bits
„
-1.79769313486231570E+308 a +1.79769313486231570E+308
Caracteres:
„
char – 16 bits
„
„
-9.223.372.036.854.775.808 a 9.223.372.036.854.775.807
Números Reais:
„
„
-2.147.483.648 a 2.147.483.647
long – 64 bits,
„
„
-32.768 a 32.767
int – 32 bits
„
„
128 a 127
'\u0000' a '\uFFFF' (Valores em unicode)
Booleanos:
„
boolean – 1 bit
„
true ou false
13
Operadores
„
Aritméticos:
„
„
„
„
„
„
+ Adição
- Subtracção
* Multiplicação
/ Divisão
% Resto da Divisão
Comparação:
„
„
„
„
„
„
„
Atribuição:
„
„
„
= Atribuição
+= , -= , *= , /= , %=
Lógicos:
„
„
„
„
Incremento e Decremento:
„
++ , --
„
== igualdade
!= diferença
< menor que
> maior que
<= menor ou igual
>= maior ou igual
&& ( e )
|| ( ou )
! (não)
Bit a bit
„
„
>> , <<
&|^
14
Precedência e Associatividade
dos Operadores
Prioridade Operador
Associatividade
Alta
()
da esquerda para a direita
++ -- + - !
unários; da direita para a esquerda
*/%
da esquerda para a direita
+-
da esquerda para a direita
< <= > >=
da esquerda para a direita
== !=
da esquerda para a direita
&
da esquerda para a direita
^
da esquerda para a direita
|
da esquerda para a direita
&&
da esquerda para a direita
||
da esquerda para a direita
Baixa
= += -= *= /= %= da direita para a esquerda
15
Símbolos – declaração e
inicialização
„
Exemplos de declarações de variáveis:
„
„
„
„
„
„
„
„
„
„
„
„
„
„
int x;
int x = 10;
int x = 20, y, z = 30;
int a = x+y;
char um = ‘1’;
char c = ‘A’;
char newline = ‘\n’;
boolean fim;
boolean fechado = true;
long diametro;
long raio = -1.7E+5
double j = .000000123
double pi = 3.141559273269
Caso Geral
„
„
id_tipo id_variavel [ = valor ];
id_tipo id_variavel [ = valor ] , [id_variavel [ = valor ] … ];
16
Simbolos (cont.)
„
Constantes:
final id_tipo id_variavel
= valor [, id_variavel [ = valor ] … ];
NOTA: As constantes têm de ser inicializadas quando são declaradas
„
final double PI = 3.14;
„
Conversões entre tipos (Casting):
int x = 12;
double d;
d = (double) x; // d = 12.0
double x = 12;
int i;
i = (int) x;
// i = 12
double x = 12.5;
int i;
i = (int) x;
// i = 12
char c1 = ‘a’
c1 = (char) ((int) c1 + 1) // c1 = ‘b’
17
Funções matemáticas
„
Biblioteca
„
Java.lang.Math
„
double s = java.lang.math.sin(3.14)
„
„
Seno de PI
double r = java.lang.math.random()
„
Aleatorio ente 0..1
18
Input / output
„
Output
„
„
„
„
System.out.println(“mensagem”)
System.out.print(“mensagem”)
JOptionPane.showMessageDialog(null,"Este é um diálogo simples");
Input
„
„
„
System.in.read();
JOptionPane.showInputDialog("Digite o seu nome");
Teclado.java
„
„
„
„
„
readInteger()
readLong()
readDouble()
readFloat()
readString();
int
inti;i;
i i==Teclado.readInteger()
Teclado.readInteger()
19
Comentários
„
Comentar uma linha de código: //
int x;
//int x = 10;
int x = 20, y, z = 30;
int a = x+y;
„
Comentar um bloco de código: /* */
int x;
/*int x = 10;
int x = 20, y, z = 30;*/
int a = x+y;
20
Estruturas de Controlo
„
Condicionais:
„
if/else
if (numer %2 == 0)
System.out.println(“numero par”);
else
System.out.println(“numero impar”);
if ( expressão booleana)
instruções;
[else
instruções;]
21
Estruturas de Controlo (cont.)
„
switch
switch (expressão inteira) {
case valor_1: instruções; break;
case valor_2: instruções; break;
case valor_3: instruções; break;
…
case valor_n: instruções; break;
default: instruções;
};
switch (mes) {
case 2: dias = 28;
break;
case 4:
case 6:
case 9:
case 11: dias = 30;
break;
default: dias = 31;
}
22
Estruturas de Controlo (cont.)
„
Repetitivas:
„
for ( inicialização; condição_de_saída; iteração )
instruções
int a = 0;
for (int i = 0; i <= 10; i++)
a = a + i;
23
Estruturas de Controlo (cont.)
„
while
while ( condição_de_iteração ) {
instruções
}
int a = 0;
int i = 0;
while (i <= 10) {
a = a + i;
i++;
}
24
Estruturas de Controlo (cont.)
„
do/while
do {
instruções
} while ( condição_de_iteração ) ;
int a = 0;
int i = 0;
do {
a = a + i;
i++;
} while (i < 10);
25
Estruturas de Controlo (cont.)
„
break/continue
„
„
A instrução
break força a
saída do ciclo.
A instrução
continue
avança para a
proxima iteração
do cliclo.
26
Estruturas de Controlo (cont.)
int i = 0;
While (true) {
i++;
if (i % 2 == 0 )
continue;
if (i > 10)
break;
System.out.print(i);
}
27
Exercício
„
„
Construa um programa que imprima
seis números inteiros, aleatórios entre 1
e 49.
Construa um programa que solicite ao
utilizador dois números inteiros, um
operador e apresente o resultado do
operador sobre os dois números
28
Referencias
29
Referencia e objectos
„
Objectos
„
„
Exemplo
„
„
„
„
„
„
(todas os simbolos que não são do tipo básico)
Point p1;
p1 = new Point();
Point P2;
P2 = p1;
Point p3 = new Point(1,2);
p2
p1
p3
0,0
Operadores
„
„
„
„
new
=
==
!=
Todas
Todasas
asvariaveis
variaveisde
detipos
tiposprimitivos
primitivoscontêm
contêmvalores
valores
Todas
Todasas
asvariaveis
variaveisdo
dotipo
tipo“Object”
“Object”contêm
contêmreferência
referência
1,2
30
Garbage Collector
„
Em C++:
// Cria um objecto
TObject *Objecto = new TObject;
…
// Liberta o espaço ocupado em memória
// ocupado por esse objecto
delete Objecto;
„
Em Java:
// Cria um objecto
Object Objecto = new Object();
…
„
Chamar o Garbage Collector:
System.gc();
31
Garbage Collector (Cont.)
public void Cria() {
Object Objecto1 = new Object();
Object Objecto2 = new Object();
Object Objecto3 = new Object();
}
Objecto1
Objecto2
Objecto3
Objecto1
Objecto2
Objecto3
public void Funcao() {
Cria();
System.gc();
}
AAlinguagem
linguagemJava
Javapossui
possuirecolha
recolha
automática
automáticade
deLixo
Lixo
System.gc()
System.gc()
Forçar
Forçaraarecolha
recolhade
deLixo
Lixo
32
Métodos
public [static] <tipo_retorno> nome_método ( <lista_parametros> )
{
instruções;
}
public class HelloWorld {
public static void mostraMensagem(String s) {
System.out.println(s)
}
public static int soma(int n1, int n2) {
int n = n1+n2;
return n;
}
public static void main(String[] args) {
mostraMensagem ("Hello Word");
System.out.println(soma(2,3));
}
}
NOTA:
• Todos os parâmetros do
tipo básico são passados
por valor
•Todos os objectos são
passados com referencia
33
Strings
34
Strings
„
Classe String
„
Objectos imutaveis
„
„
„
s1
String s1 = “uma string”
String s2 = “Outra string”
String s3 =s2
Uma string
s2
Outra string
s3
35
Strings - concatenação
„
Operador de concatenação
„
+ e +=
„
„
„
„
String s1 = “uma string”
String s2 = “Outra string”
String s3 =s2
S2 += “ concatenada” + “!”
s2
s1
Uma string
s2
Outra string Concatenada!
Outra string
s3
36
Conversão entre numeros e
string
„
Para String
„
Classe StringValueOf(…)
„
„
Expressões que calculam Strings
„
„
„
String s = String.valueOf(10);
String s = 2 + “”
String s = 2 + 3 + “!”
De String
„
Classe Integer
„
„
int i = Integer.parseInt("2");
Classe Double
„
double i = Double.parseDouble(“1.7");
37
Métodos de String
„
„
„
„
„
„
lenght()
equals()
equalsToIgnoreCase
compareTo
compareToIgnoreCase
indexOf
„
„
„
„
„
„
„
„
hashCode()
„
„
substring()
startsWith()
endsWith()
toUpperCase()
toLowerCase()
replace()
concat
charAt()
trim
String.java
38
Exercício
„
„
„
Construa um programa que solicite o nome e
o apelido de uma pessoa e de seguida
escreva o nome completo de forma invertida.
Construa uma função que transforme uma
string para minúsculas utilizando o alfabeto
português.
Construa um programa que solicite ao
utilizador um número real, uma função
apresente o resultado da função sobre o
numero
39
Arrays
40
Arrays
„
São objectos
„
Declaração
„
„
Int [] v2 = { 1,2,3,4};
Método lenght()
„
„
v1 = new int[9];
0 0 0
0 0 0
0 0 0
Inicialização
„
„
int [] v1
Construção
„
„
v1
1 2 3
v2
Retorna a dimensão do array
Acesso indexado
„
V[0] = 10
41
Arrays
„
Arrays Unidimensionais
int[] lista = {1, 2, 3, 4};
lista[3] = lista[1]; // {1, 2, 3, 1}
int lista[] = new int[4];
lista[0] = 1;
lista[1] = 2;
int lista[4];
// erro
int lista[4] = {1, 2, 3, 4}; // erro
int lista[];
lista[0] = 1;
// erro
42
Arrays (cont.)
Arrays Bidimensionais (matrizes)
„
char galo[][]={{‘ ’,‘ ’,‘ ’},
{‘ ’,‘ ’,‘ ’},
{‘ ’,‘ ’,‘ ’}};
galo[1][1]=‘X’; // {{‘ ’,‘ ’,‘ ’},
// {‘ ’,‘X’,‘ ’},
// {‘ ’,‘ ’,‘ ’}}
galo[0][0]=‘O’; // {{‘O’,‘ ’,‘ ’},
{‘ ’,‘X’,‘ ’},
{‘ ’,‘ ’,‘ ’}}
„
Arrays de dimensão n
int array[][][]…[n]= new int[10][10][10]…[10];
array[1][3][2]…[6] = 1;
43
Arrays (cont.)
„
Calcular o tamanho de um
array;
int a[] = new int[4];
System.out.println(a.length); // mostra 4
int a[][] = new int[4][2];
System.out.println(a.length); // mostra 4
System.out.println(a[1].length); // mostra 2
44
Exercício
„
Construa um programa que calcule
imprima uma chave de totoloto.
45
Download