Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1...
Transcript of Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1...
![Page 1: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/1.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/2.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/3.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/4.jpg)
4
Comentários
/* .............*/ // ...............
![Page 5: Renata Araujo Projeto e Construção de Sistemas com Ambientes de Programação UNIRIO 2002.1 Linguagem Java.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/5.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/6.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/7.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/8.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/9.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/10.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/11.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/12.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/13.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/14.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/15.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/16.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/17.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/18.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/19.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/20.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/21.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/22.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/23.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/24.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/25.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/26.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/27.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/28.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/29.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/30.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/31.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/32.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/33.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/34.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/35.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/36.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/37.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/38.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/39.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/40.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/41.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/42.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/43.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/44.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/45.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/46.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/47.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/48.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/49.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/50.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/51.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/52.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/53.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/54.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/55.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/56.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/57.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/58.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/59.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/60.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/61.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/62.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/63.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/64.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/65.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/66.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/67.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/68.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/69.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/70.jpg)
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.](https://reader035.fdocument.pub/reader035/viewer/2022062307/552fc105497959413d8c04b1/html5/thumbnails/71.jpg)
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();