JAVA.Identificadores

Propaganda
Programação Orientada a Objectos
P. Fazendeiro & P. Prata
POO – TP01 / 1
JAVA.Identificadores
Não podem começar por um dígito
Podem ser constituídos por combinações de letras (língua Inglesa), dígitos
e os caracteres _ e $
É usual respeitarem-se as seguintes convenções:
− Nome de uma classe começa por maiúscula (e.g. Solido)
− Nome de um subprograma começa por minúscula (e.g. main())
− Nome de uma variável começa por minúscula (e.g. volume)
− Nome de uma constante é escrito em maiúsculas (MAX_VEC)
http://www.di.ubi.pt/~pprata/poo.htm
Programação Orientada a Objectos
P. Fazendeiro & P. Prata
POO – TP01 / 2
JAVA.TiposPrimitivos
TIPO
VALORES
boolean true|false
VALOR
#BITS GAMA DE VALORES
OMISSÃO
false
1
char
Unicode
\u0000
(compat. ASCII)
16
\u0000 a \uFFFF
byte
Inteiro c/ sinal
0
8
-128 a 127
short
Inteiro c/ sinal
0
16
-32768 a 32767
int
Inteiro c/ sinal
0
32
-2147483648 a 2147483647
long
Inteiro c/ sinal
0
64
-9223372036854775808 a
9223372036854775807
float
IEEE 754 FP
0.0
32
≈ ±3.4E+38 a ±1.4E-45
double
IEEE 754 FP
0.0
64
≈ ±1.8E+308 a ±5E-324
http://www.di.ubi.pt/~pprata/poo.htm
Programação Orientada a Objectos
P. Fazendeiro & P. Prata
POO – TP01 / 3
JAVA.DeclaraçãoDeVariáveis
id_tipo id_variável1 [ = valor1] [, id_variável2 [ = valor2] ...];
¯
int x;
int x = 10; /* declaração com inicialização */
int x = 20, y, z = 30;
int x, y = 10;
int a = x+ y;
char um = '1';
char c = 'A'; /* formato UNICODE, caracteres ASCII compatíveis */
char newline = '\n';
boolean fim;
boolean fechado = true;
byte b1 = 0x49 ; /* hexadecimal * /
long diametro;
long raio = -1.7E+5;
double d;
double small$123 = .0000000123;
double pi = 3.14159273269;
http://www.di.ubi.pt/~pprata/poo.htm
Programação Orientada a Objectos
P. Fazendeiro & P. Prata
POO – TP01 / 4
JAVA.DeclaraçãoDeConstantes
semelhante à declaração de variáveis
acrescida do atributo final
obrigatório indicar o valor da constante
¯
final float PI = 3.14159273269;
final float c = 2.99792458E8; //VLV em m/s
final float g = 9.80665; //AG em m/s^2
final float Me = 9.109389E-31; //massa electão repouso em kg
http://www.di.ubi.pt/~pprata/poo.htm
Programação Orientada a Objectos
P. Fazendeiro & P. Prata
POO – TP01 / 5
JAVA.ConversãoEntreTipos
O tipo do resultado de uma expressão aritmética depende do tipo dos operandos
Muitas expressões contêm valores de vários tipos
Os operadores aritméticos estão definidos para funcionar com operandos do mesmo
tipo
∴
O computador terá que fazer conversões de tipo automaticamente e de modo a
que não haja perda de informação
Nem todas as transformações são possíveis
Diferente tipo de representação (e.g. valor real para um tipo inteiro???)
Diferença no espaço de memória ocupado pelos valores dos diversos tipos (e.g.
um valor long num valor int )
∴
É possível converter um valor para um tipo que ocupe mais espaço, mas o
inverso não é verdadeiro
byte > short > int > long > float > double
http://www.di.ubi.pt/~pprata/poo.htm
Programação Orientada a Objectos
P. Fazendeiro & P. Prata
POO – TP01 / 6
¯
int var_int = 10; // resultado_int;
double var_double = 5.2; // resultado_double;
resultado_double = var_int + var_double;
resultado_int = var_int + var_double;
/* erro de compilação " Incompatible type for =. Explicit cast
needed to convert double to int”.*/
A conversão de tipos com perda de informação é permitida utilizando de forma
explícita o operador de coerção (cast) - tipo pretendido entre parêntesis antes da expressão a converter
¯
resultado_int = (int) (var_int + var_double);
char c1, c2; char c3 = 'a';
int x = 67; int y = 4;
c1 = (char) (x + y) ;
c2 = (char) ((int) c3 + 1 );
http://www.di.ubi.pt/~pprata/poo.htm
Programação Orientada a Objectos
P. Fazendeiro & P. Prata
POO – TP01 / 7
JAVA.Classes
Em Java os programas são constituídos por diversas classes
Algumas classes são escritas por nós, outras fazem parte da biblioteca
As classes são agrupadas em pacotes
As classes possuem campos e métodos
As classes são tipos.
Em Java cada objecto pertence a um determinado tipo. O tipo de um objecto é a sua
classe.
Algumas classes são Applets e podem ser executadas num browser
Um construtor é uma operação especial da classe
• Serve para criar um objecto da classe
• Todos os construtores de uma classe têm o mesmo nome que a classe
• Os construtores são identificados pela sua lista de parâmetros
http://www.di.ubi.pt/~pprata/poo.htm
Programação Orientada a Objectos
P. Fazendeiro & P. Prata
POO – TP01 / 8
JAVA.TiposReferenciados
OBJECTOS E ARRAYS
Designam-se por tipos referenciados entidades (objectos ou arrays) que são acedidas
através de uma variável que contém o seu endereço
¯
Veiculo carro1 = new Veiculo(1535, 2001);
carro1
pot = 1535
ano = 2001
Veiculo carro2 = new Veiculo(); Veiculo carro3;
carro3
carro2
null
null
null
carro2 = carro1;
?
carro1 = carro3;
?
carro1 = carro2;
?
carro1 == carro2;
?
Veiculo carro4 = new Veiculo(1535, 2001);
carro1 == carro4;
?
http://www.di.ubi.pt/~pprata/poo.htm
Programação Orientada a Objectos
P. Fazendeiro & P. Prata
POO – TP01 / 9
JAVA.TiposReferenciados.Arrays
Os arrays são entidades referenciadas mas não são objectos
A criação de tabelas (arrays) assemelha-se à criação de objectos
¯
int [] tabela;
tabela = new int [10];
ou
int [] tabela = new int [10];
tabela
@
@ @+1 @+2 @+3 @+4 @+5 @+6 @+7 @+8 @+9
São criados dinamicamente (em tempo de execução) e o seu espaço é
automaticamente reaproveitado quando deixam de estar referenciados
¯
int lista[]; // declaração "à la C"
int[] lista; // declaração equivalente à anterior
int[] lista = { 10, 12, 33, 23, 56, 67, 89, 12 }; /* declaração
com inicialização */
int[] lista = new int[20]; // array de inteiros com 20 componentes
byte[] pixels = new byte[600*800]; /* pixels é um array de 480000
bytes */
String[] texto = new String[200]; /* texto é um array de 200
Cadeias de caracteres */
int[] potencias2 = {2, 4, 8, 16, 32, 64, 128, 256, 512, 1024,
2048, 4096};
String[] moedas = { "Dólar", "Yene", "Euro", "Florim" }; // String
é um objecto!!!
http://www.di.ubi.pt/~pprata/poo.htm
Programação Orientada a Objectos
P. Fazendeiro & P. Prata
POO – TP01 / 10
A multidimensionalidade é implementada como aninhamento (array de arrays)
int[] [] tabela = new int[10] [20]; /* tabela é array
bidimensional de 10 linhas x 20 colunas */
int tabela[] [] = new int[10] [20]; /* declaração equivalente à
anterior */
tabela
@
@ @+1 @+2 @+3 @+4 @+5 @+6 @+7 @+8 @+9
0
0
0
0
0
0
•
•
•
•
•
•
0
0
int[][] matriz = new int[3][];
•••
•
•
•
0
?
Os elementos do tipo int[] deste array podem ter dimensões distintas...
int[][] matriz = { {1,2}, {10, 20, 30}, {19, 2, 34, 21, 16} } ;
...o que não implica perda de controlo, tendo o cuidado de utilizar array.length evita-se
assim o acesso a elementos inexistentes (ArraylndexOutOfBoundsException)
http://www.di.ubi.pt/~pprata/poo.htm
Programação Orientada a Objectos
P. Fazendeiro & P. Prata
POO – TP01 / 11
JAVA.TiposReferenciados.Arrays.Acesso
Através dum índice inteiro (valores desde 0 até length-1)
int[] a = new int[20] ;
int[][] tabela = new int[20][];
int x, y; ....
x= tabela[10][2] + a[4]*a[7];
x= a[O]; y = a[a.length-1]; a[O] = x + y;
Cópia de uma tabela
?
Assim?
int[] b;
b = a;
Ou assim?
int[] b = new int[20] ;
for(int i = 0; i< a.length ; i++ ) b[i] = a[i] ;
http://www.di.ubi.pt/~pprata/poo.htm
Download