renata araujo projeto e construção de sistemas com ambientes de programação unirio 2002.1...

71
Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programaç UNIR 2002 Linguagem Java

Upload: internet

Post on 17-Apr-2015

111 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

Renata Araujo

Projeto e Construção de Sistemas com Ambientes de ProgramaçãoUNIRIO2002.1

Linguagem Java

Page 2: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

2

Palavras reservadas

abstract boolean break

byte case catch char

class const continue default

do double else extends

final finally float for

goto if implements importinstanceof int interface long

native new null package

private protected public

return short static super

switch synchronized this throw

throws transient try void

volatile while

Page 3: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

3

Tipos básicos

byte ( 8 bits ) Variação: -128...+127

short ( 16 bits ) Variação: -32768...+32767

int ( 32 bits ) Variação: -

2.147.483.648...+2.147.483.647

long ( 64 bits ) Variação: -

9.223.372.036.854.775.808...

+9.223.372.036.854.775.807

float( 32 bits - Precisão simples) Variação:-3,4E-38... +3,4E+38

double ( 64 bits - Precisão dupla) Variação:-1,7E-308... +1,7E+308

char( 16 bits sem sinal) Variação: 0... 65535 Inclui UNICODE ( alfabetos latino,

grego, cirílico, ideogramas japoneses, etc )

boolean ( 1 bit - tipo lógico ) Variação: true ou false

Page 4: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

4

Comentários

/* .............*/ // ...............

Page 5: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

5

Organização de um programa Java

class <nome da classe 1>{ ...} ...class <nome da classe n>{ ... public static void main(String args[]){ ... }}

Page 6: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

6

Estrutura básica de uma classe

Classe em um programa Java é considerada um tipo de dados.

class < nome da classe >{

//atributos < tipo1 > atributo1; < tipo2 > atributo 2;

.... //métodos void método1( ); void método2(<parâmetros>); < tipo > método3( ); < tipo > método4(<parâmetros>);}

Page 7: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

7

Exemplos de declaração de classes

class MinhaClasse {}

public class Cachorro { String nome, corOlhos; int idade; boolean temRabo;}

public class Cachorro { String nome, corOlhos; int idade; boolean temRabo;

public void fala() {

JOptionPane.showMessageDialog(null, “Au!Au!");

}

}

Page 8: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

8

Exemplos de declaração de classes

class numero_racional{ //atributos int numerador; // Numerador do número int denominador; // Denominador do número

//métodos float racional_para_float(); // Converte números racionais para ponto

flutuante}

Page 9: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

9

Construtores

Toda classe em Java deve ter um método especial chamado “construtor”

O objetivo deste método é o de criar objetos de uma classe.

O construtor possui o mesmo nome da classe.

Construtores também podem inicializar os valores dos atributos do objeto sendo criado.

public class Cachorro { //atributos String nome, corOlhos; int idade; boolean temRabo;

//métodos public Cachorro( ) { nome = "Snoopy"; corOlhos = "Brown"; idade = 2; temRabo = true; }}

Page 10: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

10

Construtores

Sempre que um construtor é chamado em um programa, um objeto da classe correspondente é criado e armazenado em uma variável.

A chamada a um construtor em Java é feita utilizando-se o comando new.

...

Cachorro novoCachorro;

novoCachorro = new Cachorro( );

...

Page 11: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

11

Destrutores

Todo objeto criado é armazenado em memória.

Na maioria das linguagens de programação, é necessário invocar procedimentos para liberar espaço de memória que não esteja mais em uso.

No caso de programação orientada a objetos, quando um objeto não é mais necessário, ele precisa ser destruído.

Para ser destruído, um método precisa ser criado para cada classe, denominado destrutor, responsável por destruir quaisquer instâncias de seus objetos.

Em Java, não há a necessidade de destrutores, uma vez que a linguagem se encarrega de eliminar os objetos que não estejam mais em uso. Este mecanismo é denominado de coleta automática de lixo.

Page 12: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

12

Acesso a atributos

O acesso aos atributos de um objeto em java é realizado através do operador “.”

public class Cachorro { //atributos String nome, corOlhos; int idade; boolean temRabo;

//métodos public Cachorro( ) { nome = "Snoopy"; corOlhos = "Brown"; idade = 2; temRabo = true;

}

public AbanarRabo(){

}

public chorar() {

}

}

...

meuCachorro = new Cachorro();

meuCachorro.idade = 5;

...

if meuCachorro.temRabo

meuCachorro.abanarRabo();

else

meuCachorro.chorar();

...

Page 13: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

13

Chamada de Métodos - Mensagens

Para ativar um método de um objeto, ou seja, para enviar-lhe uma mensagem, o operador “.” também deve ser utilizado.

public class Cachorro { //atributos String nome, corOlhos; int idade; boolean temRabo;

//métodos public Cachorro( ) { nome = "Snoopy"; corOlhos = "Brown"; idade = 2; temRabo = true;

}

public AbanarRabo(){

}

public chorar() {

}

}

...

meuCachorro = new Cachorro();

meuCachorro.idade = 5;

...

if meuCachorro.temRabo

meuCachorro.abanarRabo();

else

meuCachorro.chorar();

...

Page 14: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

14

Operadores

Em Java, trabalha-se com quatro conjuntos de operadores:

básicos aritméticos relacionais lógicos e binários

Page 15: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

15

Operadores básicos

. referência a método, função ou atributo

de um objeto

, separador de identificadores

; separador de declarações e comandos

[ ] declarador de matrizes e delimitador

de índices

{ } separador de blocos e escopos locais

( ) precedência de operadores, listas de parâmetros

Page 16: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

16

Operadores aritméticos (I)

+ adição x=x + 3

- subtração x=x - 3

/ divisão x=y / 4

% resto da divisão x=y % 5

++ incremento de 1 x++

++x

-- decremento de 1 x--

--x

Page 17: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

17

Operadores aritméticos (II)

+= atribuição aditiva x+=3

Tem o mesmo efeito de x=x+3

-= atribuição subtrativa x-=3

*= atribuição multiplicativa x*=3

/= atribuição divisiva x/=3

%= atribuição de resto x%=3

Page 18: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

18

Operadores relacionais

= = igual x = = y

!= diferente x!=y

> maior x>y

< menor x<y

>= maior ou igual x>=y

<= menor ou igual x<=y

Page 19: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

19

Operadores lógicos e binários (I)

~ negação bit a bit ~x

>> shift right x>>3

>>> shift right sem sinal x>>>3

<< shift left x<<3

>>= atribuição c/ shift right x>>=3

<<= atribuição c/ shift left x<<=3

>>>= atribuição c/ shift right x>>>=3

sem sinal

Page 20: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

20

Operadores lógicos e binários (II)

& and lógico bit a bit x&y

| or lógico bit a bit x|y

^ xor lógico bit a bit x^y

&= atribuição com & x&=y

|= atribuição com | x|=y

^= atribuição com ^ x^=y

Page 21: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

21

Operadores lógicos e binários (III)

? : if-then-else lógico x =((y>3)?5:6)

|| or dinâmico (x>y) || (z>=6)

&& and dinâmico (x>y) && (z<4)

! not dinâmico !(x>y)

Page 22: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

22

Precedência de operadores

( ) [] . ; ,

++ -- !* / %+ ->> << >>>> < >= <=== !=&^|&&||?:=

Aumentaprioridade deresolução

Diminui prioridadede resolução

Page 23: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

23

Comandos de controle (I)

Condicional

if ( expressão booleana )

bloco 1;

else bloco2;

Page 24: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

24

Comandos de controle (II)

Exemplo de condicional

if ((x>5) && (y!=70)){

x=x+5;

y=z+48;

}

else if (x<=5)

x=48;

else x=20;

Page 25: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

25

Comandos de controle (III)

Seleção

switch (expressão){

case valor1: bloco1;

break;

...

case valorN: blocoN;

break;

default: bloco N+1;

}

Page 26: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

26

Comandos de controle (IV)

Exemplo de seleção clicado%=4;

switch(clicado){

case 0: saida=3;

break;

case 1: saida=2;

break;

default: saida=0;

}

System.out.println(saida);

Page 27: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

27

Comandos de controle (V)

Repetição com while

while( expressão booleana ){

bloco;

}

Page 28: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

28

Comandos de controle (VI)

Exemplo de repetição com whilewhile(x>6){

while(y>9){

while((z>=6) && (m!=10)){

z++;

m%=10;

}

y=z+m;

}

x+=y;

}

Page 29: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

29

Comandos de controle (VII)

Repetição com do-while

do{

Bloco;

} while(expressão booleana);

Page 30: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

30

Comandos de controle (VIII)

Exemplo de repetição com do-while do{

do{

do{

z++;

m%=10;

} while((z>=6) && (m!=10));

y=z+m;

} while(y>9);

x+=y;

} while(x>6);

Page 31: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

31

Comandos de controle (IX)

Repetição com for

for(inicialização;condição-limite;iteração){

Bloco;

}

Page 32: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

32

Comandos de controle (X)

Exemplo de repetição com for

for(x=0,y=0;((x<100) && (y<=20));x++,y++){

for (int z=-5;z<10;z+=3)

System.out.println(z);

System.out.println(y);

}

Page 33: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

33

Herança

public class Homem {

String nome, corOlhos;

int idade;

boolean casado;

public Homem( ) {

nome = “José”;

corOlhos = “azul”;

idade = 35;

casado = true;

}

}

public class Cachorro { String nome, corOlhos; int idade; boolean temRabo; public Cachorro( ) { nome = “Snoopy”; corOlhos = “marrom”; idade = 4; temRabo = true;

}

}

• Similaridades entre classes justificam o uso da herança

Page 34: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

34

Herança public class Homem extends Mamifero{

boolean casado;

public Homem( ) {

nome = “José”;

corOlhos = “azul”;

idade = 35;

casado = true;

}

}

public class Cachorro extends Mamifero{ boolean temRabo; public Cachorro( ) { nome = “Snoopy”; idade = 4; temRabo = true;

}

}

public class Mamifero {

String nome, corOlhos;

int idade;

public Mamífero( ) {

nome = “nome”;

corOlhos = “marrom”;

idade = 0;

}

}

Page 35: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

35

Herança - Construtores

public class Cachorro extends Mamifero{ boolean temRabo; public Cachorro( ) { //chamada automática e implícita ao construtor da classe //Mamífero. Repare que eu não preciso inicializar a cor dos //olhos do cahorro pois a mesma já foi feita na chamada do //construtor de sua superclasse.

nome = “Snoopy”; idade = 4; temRabo = true;

}

}

public class Mamifero {

String nome, corOlhos;

int idade;

public Mamífero( ) {

nome = “nome”;

corOlhos = “marrom”;

idade = 0;

}

}

• O primeiro comando dos construtores das subclasses é sempre a chamada ao construtor de sua superclasse.

Page 36: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

36

Herança - Métodos

public class Homem extends Mamifero {

boolean casado;

public Homem( ) {

nome = “José”;

corOlhos = “azul”;

idade = 35;

casado = true;

}

public int InformarIdade( ) {

return idade;

}

}

public class Cachorro extends Mamifero { boolean temRabo; public Cachorro( ) { nome = “Snoopy”; idade = 4; temRabo = true;

}

public int InformarIdade( ) {

return idade;

}

}

Page 37: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

37

Herança public class Homem extends Mamifero{

boolean casado;

public Homem( ) {

nome = “José”;

corOlhos = “azul”;

idade = 35;

casado = true;

}

}

public class Cachorro extends Mamifero{ boolean temRabo; public Cachorro( ) { nome = “Snoopy”; idade = 4; temRabo = true;

}

}

public class Mamifero {

String nome, corOlhos;

int idade;

public Mamífero( ) {

nome = “nome”;

corOlhos = “marrom”;

idade = 0;

}

public int InformaIdade() {

return idade;

}

}

Page 38: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

38

Herança - Métodos

...

Cachorro filhote;

Homem dono;

Int idade;

filhote = new Cachorro();

dono = new Homem();

Idade = filhote.InformarIdade();

Idade = dono.InformarIdade();

...

//Métodos da superclasse

Page 39: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

39

Herança - Métodos public class Homem extends Mamifero{ boolean casado; public Homem( ) { nome = “José”; corOlhos = “azul”; idade = 35; casado = true; } public fala( ) { JoptionPane.showMessageDialog(null,

“Olá!”); }}

public class Cachorro extends Mamifero{ boolean temRabo; public Cachorro( ) { nome = “Snoopy”; idade = 4; temRabo = true;

}

public fala( ) { JoptionPane.showMessageDialog(null, “Au-Au!”);

}

}

public class Mamifero {

String nome, corOlhos;

int idade;

public Mamífero( ) {

nome = “nome”;

corOlhos = “marrom”;

idade = 0;

}

public int InformaIdade() {

return idade;

}

}

Page 40: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

40

Polimorfismo

...

Cachorro filhote;

Homem dono;

filhote = new Cachorro();

dono = new Homem();

filhote.fala();

dono.fala();

...

//Método da classe Cachorro

//Método da classe Homem

Page 41: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

41

Herança – Métodos e Polimorfismo public class Homem extends Mamifero{

boolean casado; public Homem( ) { nome = “José”; corOlhos = “azul”; idade = 35; casado = true; } public fala( ) { JoptionPane.showMessageDialog(null,

“Olá!”); }}

public class Cachorro extends Mamifero{ boolean temRabo; public Cachorro( ) { nome = “Snoopy”; idade = 4; temRabo = true;

}

public fala( ) { JoptionPane.showMessageDialog(null, “Au-Au!”);

}

}

public class Mamifero {

String nome, corOlhos;

int idade;

public Mamífero( ) {

nome = “nome”;

corOlhos = “marrom”;

idade = 0;

}

public int InformaIdade() {

return idade;

}

public fala() {

JoptionPane.showMessageDialog(null, “...!”);

}

}

Page 42: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

42

Polimorfismo

...

Cachorro filhote;

Homem dono;

Mamífero mamiferoDesconhecido;

filhote = new Cachorro();

dono = new Homem();

mamiferoDesconhecido = new Mamifero;

filhote.fala();

dono.fala();

mamiferoDesconhecido.fala()

...

//Método da classe Cachorro. Retorno?

//Método da classe Homem. Retorno?

//Método da classe Mamífero. Retorno?

Page 43: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

43

HerançaClasses abstratas

public class Homem extends Mamifero{ boolean casado; public Homem( ) { nome = “José”; corOlhos = “azul”; idade = 35; casado = true; } public fala( ) { JoptionPane.showMessageDialog(null, “Olá!”); }}

public class Cachorro extends Mamifero{ boolean temRabo; public Cachorro( ) { nome = “Snoopy”; idade = 4; temRabo = true;

} public fala( ) { JoptionPane.showMessageDialog(null, “Au-Au!”); }}

abstract public class Mamifero {

String nome, corOlhos;

int idade;

public Mamífero( ) {

nome = “nome”;

corOlhos = “marrom”;

idade = 0;

}

abstract public fala(){

}

}

Page 44: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

44

Polimorfismo

...

Cachorro filhote;

Homem dono;

Mamífero mamiferoDesconhecido;

filhote = new Cachorro();

dono = new Homem();

mamiferoDesconhecido = new Mamifero; //ERRO (classes abstratas não podem ser instanciadas!!!)

filhote.fala();

dono.fala();

...

//Método da classe Cachorro

//Método da classe Homem

Page 45: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

45

“super”

Java possui uma palavra reservada utilizada para referenciar membros de superclasses a partir de objetos de sua subclasse

class Pai {

int valor = 1;

int umMetodo( ){

return valor;

}

}

class Filho extends Pai { int valor; //este valor é membro desta classe

int umMetodo( ){ //este método sobreescreve o método do pai

valor = super.valor + 1; //acesso a valores e métodos do pai

return super.umMetodo( ) + valor;

}

}

Page 46: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

46

“super”

class Pai {

int valor = 1;

int umMetodo( ){

return valor;

}

}

class Filho extends Pai{ int valor; //este valor é membro desta classe

int umMetodo( ){ //este método sobreescreve o método do pai

valor = super.valor + 1; //acesso a valores e métodos do pai

return super.umMetodo( ) + valor;

}

}...int valorFilho, valorPai;

Pai meuPai = new Pai( );valorPai = meuPai.umMetodo( );

Filho meuFilho = new Filho ( );valorFilho = meuFilho.umMetodo( );...

Qual o valor de valorPai e

valorFilho ?

Page 47: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

47

Herança Múltipla e Interfaces

Java não oferece suporte à Herança Múltipla.

No entanto, oferece um recurso – Interface – que permite simulá-la.

Page 48: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

48

Coleções

Considere o seguinte exemplo:

Ao codificarmos estas classes, precisamos decidir como iremos implementar os relacionamentos em Java. Para isto, será necessário colocar novos atributos nas classes. Estes novos atributos são chamados de Atributos Implícitos.

A grande questão é como são implementados os relacionamentos n-ários. Uma primeira idéia é utilizarmos arrays para isto.

Alessandro Cerqueira

Departamento Empregado1 aloca 1..*

0..1 é gerenciado por 1SiglaNome

CPFNome

Page 49: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

49

Coleçõesclass Departamento{ private: char Sigla[];

String Nome; Empregado EmpregadosAlocados[]; Empregado EmpregadoGerente;

public: Departamento(char[] _sigla, String _nome) {

Sigla = _sigla; Nome = _nome; EmpregadosAlocados = new Empregado[100]; }

...}

class Empregado{ private: char CPF[];

String Nome; Departamento AlocadoNoDepatamento;

public: Empregado(char[] _cpf, String _nome,

Departamento _depto) {

CPF = _cpf; Nome = _nome; AlocadoNoDepartamento = _depto }

...}

Page 50: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

50

Coleções

A implementação de atributos n-ários com arrays não é adequada. Uma idéia melhor é utilizar a classe Vector. Arrays

Tamanho fixo e definido na criação do array. Procura pelo índice. Elementos do mesmo tipo. Arrays de tipos nativos e de instâncias de uma classe específica.

Vectors O tamanho inicial é definido quando o vector é criado. Este pode ser

modificado manualmente ou automaticamente. Procura pelo índice ou conteúdo. Elementos de qualquer classe. Vectors de instâncias de qualquer classe.

Page 51: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

51

Coleções

class Departamento{ private: char Sigla[];

String Nome; Vector EmpregadosAlocados; Empregado EmpregadoGerente;

public: Departamento(char[] _sigla, String _nome) {

Sigla = _sigla; Nome = _nome; EmpregadosAlocados = new Vector(1,1); }

...}

class Empregado{ private: char CPF[];

String Nome; Departamento AlocadoNoDepatamento;

public: Empregado(char[] _cpf, String _nome,

Depatamento _depto) {

CPF = _cpf; Nome = _nome; AlocadoNoDepartamento = _depto }

...}

Page 52: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

52

Coleções Alguns construtores e métodos importantes e úteis da classe Vector são:

Vector():Cria uma nova instância sem elementos e com capacidade inicial para 10 elementos.

Vector(int capacidade): Cria uma nova instância sem elementos e com capacidade inicial especificada pelo parâmetro.

addElement(Object elem): adiciona um objeto no final do Vector. insertElementAt(Object elem,int índice): adiciona um objeto na

posição especificada que deve estar entre 0 e o tamanho do Vector. setElementAt(Object elem,int índice): coloca o objeto em

determinada posição, removendo o objeto que estiver lá anteriormente. removeElement(Object elem): remove a primeira ocorência do objeto no

Vector. Retorna true caso tenha sido possível a remoção. removeElementAt(int índice): remove o objeto na posição

especificada. size(): retorna o número de objetos presentes no Vector.

Page 53: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

53

Coleções

elementAt(int índice): Retorna o objeto presente na posição especificada.

firstElement(): Retorna o objeto presente na primeira posição. lastElement(): Retorna o objeto presente na última posição. indexOf(Object elem): retorna o índice da primeira ocorrência do

objeto no Vector ou -1 se o objeto não estiver presente. indexOf(Object elem,int índice): retorna o índice da primeira

ocorrência do objeto no Vector a partir da posição especificada. Retorna -1 se o objeto estiver presente.

lastIndexOf(Object elem): retorna o índice da última ocorrência do objeto no Vector ou -1 se o objeto não estiver presente.

lastIndexOf(Object elem,int índice): retorna o índice da última ocorrência do objeto no Vector a partir da posição especificada. Retorna -1 se o objeto estiver presente.

contains(Object elem): Informa se o objeto está presente no Vector.

Page 54: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

54

Visibilidade

Para cada propriedade da classe (atributo ou método) é associado um tipo de visibilidade. Os modificadores de visibilidade indicam o nível de acesso ao método ou atributo. Private: a propriedade só pode ser utilizada dentro da classe. Sem modificador: a propriedade só pode ser utilizada nas classes do

mesmo pacote. Protected: a propriedade só pode ser utilizada nas classes do mesmo

pacote e em suas subclasses Public: a propriedade pode ser utilizada em qualquer classe.

Para que possamos implementar o encapsulamento conforme é proposto pelo modelo OO, os atributos devem ser declarados como private ou protected e seus métodos devem ser declarados como public.

Page 55: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

55

Visibilidade

Como os atributos devem ser privados, é necessária a implementação de métodos que permitam o acesso de leitura e escrita a estes métodos.

Estes métodos são exemplos de Métodos Implícitos, uma vez que não devem aparecer na especificação de requisitos da classe. Os construtores também são exemplos de métodos implícitos.

Page 56: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

56

Implementação de Pacotes

Em Java, cada arquivo pode conter várias classes, sendo que somente uma poderá ser public (e esta terá que ter o mesmo nome do arquivo). Cada arquivo pode pertencer somente a um pacote, mas um pacote pode conter vários arquivos. Para declarar o nome do pacote, deve-se utilizar a seguinte sintaxe na primeira linha de código do arquivo:

package MeuPacote; Pacotes podem ser vistos como bibliotecas de classes. Para

incluir classes de um pacotes em um arquivo, deve ser utilizada a seguinte sintaxe:

import MeuPacote.*; Pacotes são vistos pelo sistema operacional como diretórios.

Page 57: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

57

Java.lang

Pacote default de Java (Não precisa de import) Além dos tipos básicos (não OO, ex. char, int, long,

float, double, etc.), Java implementa classes para tratamento OO de valores numéricos, lógicos e caracteres

São definidas as seguintes classes no pacote java.lang: Object, Math, Integer,Float, Character, Boolean, Long, Double, String, StringBuffer

Page 58: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

58

Java.lang

Math Implementa uma biblioteca matemática

public final class Math extends Object Não pode ser derivada (final) Não pode ser instanciada (construtor private) Dados (constantes):

public final static double E = 2.71828...;public final static double PI = 3.14159..;

Page 59: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

59

Java.lang

Métodos:

public static int abs (int) // long,float,doublepublic static double sqrt(double) **public static double pow(double,double) **public static double random()public static long round (double)

** throws ArithmeticException

Page 60: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

60

Java.lang

Character Implementa métodos de teste e conversão

public final class Character extends Object

Pode ser instanciada. Métodos:

public Character (char)public static boolean isLowerCase(char)public static boolean isUpperCase(char)public static boolean isDigit(char)public static boolean isWhiteSpace(char)public static char toLowerCase(char)...public static String toString(char)

Page 61: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

61

Java.lang

Integer Implementa métodos de conversão

public final class Integer extends Number

Pode ser instanciada. Dados (constantes): MIN_VALUE, MAX_VALUE Métodos:

public Integer (int) / (String)public static String toString(int) public static int parseInt(String)public static Integer valueOf(String)public int intValue() // long,float,doublepublic String toString()public static String toBinaryString (int)

Page 62: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

62

Java.lang

Float Implementa métodos de teste e conversãopublic final class Float extends Number Pode ser instanciada. Dados: MIN_VALUE, MAX_VALUE, NEGATIVE_INFINITY, POSITIVE_INFINITY, NaN.

Métodos:public Float(float) // (double),(String)public boolean isNaN()public boolean isInfinite()public static Float valueOf(String)public float floatValue() //int,long,double

Page 63: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

63

Java.lang

Long e Double Similares a Integer e Float

Booleanpublic final class Boolean extends Object Pode ser instanciada. Dados:

public final static Boolean FALSE, TRUE;

Métodos:public Boolean(boolean) // (String)public boolean booleanValue()

Page 64: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

64

Java.lang

String e StringBuffer Implementam manipulação de cadeias de caracteres String é constante, StringBuffer variável

String Métodos:public String(String) / (char[])public int length()public char charAt(int)public int compareTo(String)public boolean equalsIgnoreCase(String)public boolean equals(Object)public String subString (int)

Page 65: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

65

Java.lang

Diferença entre == e equals...String x = “abc”;String y = new String(“abc”);String z = “abc”;

if (x == y) System.out.println(“x==y”);else if (x.equals(y)) System.out.println(“x equals y”);if (x == z) System.out.println(“x==z”);...Imprimirá:x equals yx==z

Page 66: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

66

Java.lang

StringBuffer Métodos:

public StringBuffer()public StringBuffer(int)public StringBuffer(String)public void setLength(int)public int capacity()public void setCharAt(int,char)public StringBuffer append(String)public StringBuffer append(char[])public StringBuffer insert(int,String)

Operador +:String s = “AB”+“CD”; // equivale a:String s = new StringBuffer(“AB”).append(“CD”).toString();

Page 67: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

67

Exceções

Um grande número de possíveis condições de erro podem ser tratadas nos programas em Java como exceções.

Exceções comuns: . Divisão por zero (ArithmeticException) . Acesso a objeto não instanciado (NullPointerException) . Acesso a um índice inválido de array (ArrayIndexOutOfBoundsException) . Erro de acesso a dispositivo de E/S (IOException)

Exceções são classes derivadas da classe Exception

Page 68: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

68

Exceções

class Teste { public static void main (String args[]) { int i=0; String frases[] = { “um”, “dois”, “tres” }; while (i<4) { // o indice vai de 0 a 2 ! System.out.println(frases[i]); i++; } }}

Provoca o erro:java.lang.ArrayIndexOutOfBoundsException: 3at Teste.main(Teste.java:6)

Page 69: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

69

Exceções

Para tratar exceções usam-se as instruções try, catch e finally:

try { // codigo que possa gerar exececao} catch (Exception e) { // codigo para tratar ocorrencia da excecao} finally { // codigo executado caso a excecao ocorra ou não}

A cláusula finally é opcional, mas assegura a execução do código correspondente

Podem existir diversas cláusulas catch

Page 70: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

70

Exceções

Exemplo;class Teste{ public static void main (String args[]) { int i=0; String frases[] = { “um”, “dois”, “tres” }; while (i<4) { // o indice vai de 0 a 2 ! try { System.out.println(frases[i]); } catch (ArrayIndexOutOfBoundsException e){ i = -1; } i++; } }}

Page 71: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java

71

Exceções

Podem ser tratadas novas exceções derivando-se a classe Exception

public class MinhaExcecao extends Exception { ...}

Para provocar a nova exceção usa-se: throw new MinhaExcecao();