java introdução (c)ab,20001 java linguagem orientada por objectos (similar ao c++ mas mais...

79
Java Introdução (c)AB,200 0 1 JAVA guagem orientada por objectos milar ao C++ mas mais simples) lizada para desenvolvimento de aplicações stand-alo lets,… envolvida pela Sun Microsystems A Sun desenvolveu um browser específico para Java: HotJava O Netscape Navigator 2.0 passou a suportar Java (outros browsers passaram de igual modo a suportar Java)

Upload: internet

Post on 22-Apr-2015

103 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 1

JAVA

Linguagem orientada por objectos (similar ao C++ mas mais simples)

Utilizada para desenvolvimento de aplicações stand-alone,applets,…

Desenvolvida pela Sun Microsystems

A Sun desenvolveu um browser específico para Java: HotJava

O Netscape Navigator 2.0 passou a suportar Java (outros browsers passaram de igual modo a suportar Java)

Page 2: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 2

JAVAAmbientes de desenvolvimento

Java Development Kit (JDK) - SUNDesenvolvido pela SUNContém (entre outros):

Bibliotecas de classes pré-definidas (JFC - Java Foundation Classes)Compilador (javac)Interpretador (java)Ferramenta de documentação (javadoc)

Visual J++ (Microsoft) Forte/NetBeans (Sun)Jbuilder (Borland)Visual Cafe (Symantec)

Exemplos

Page 3: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 3

JAVA

Aplicação Java que pode ser incorporada em páginas HTML

A utilização de uma applet num ficheiro HTML é efectuadaatravés da marca <APPLET>

Nota: no HTML 4.0 a marca <APPLET> está a ser substituídapela marca <OBJECT> que serve para qualquer objecto. Osparâmetros a usar são os mesmos, no entanto não existeuma grande generalização a nível de programação paraconcretizar esta nova recomendação...

Applet

Page 4: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 4

JAVA

A utilização de uma applet num ficheiro HTML é efectuadaatravés da marca <APPLET>

Exemplo:

<APPLET CODE=“Exemplo.class” WIDTH=100 HEIGHT=50></APPLET>

Applet

Page 5: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 5

JAVA<APPLET>

Atributos obrigatórios

CODE, nome do ficheiro que contém a classe principal da appletWIDTH, largura inicial da applet em pixeisHEIGHT, altura inicial da applet em pixeis

Atributos opcionaisCODEBASE, define o URL da applet. Se for omitido é considerado o URL da página em que a applet for chamadaNAME, nome lógico da applet. Pode ser utilizado por outras applets da mesma página para a localizarALIGN, alinhamento da appletVSPACE, espaço vertical à volta da appletHSPACE, espaço horizontal à volta da applet

Applet

Page 6: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 6

JAVA

Parâmetros adicionais da applet delimitados por uma marca<PARAM>

NAME, especifica um nome de um determinado atributoVALUE, valor correspondente para o atributo especificado

<APPLET CODE=“Exemplo.class” WIDTH=100 HEIGHT=50><PARAM NAME=texto VALUE=“linha de texto”></APPLET>

Exemplo:

Applet

Page 7: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 7

JAVAApplet

Ciclo de vida das applets

init start stop destroy

A appleté criada

A página éacedida

Regressoà página

Abandonoda página

Os recursos da appletsão libertados

Page 8: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 8

JAVAApplet

Uma applet é uma subclasse da classe Applet em que se podem redefinirmétodos, que são invocados automaticamente pelo browser WWW

init () - Inicializa a applet (load da página)

start () - Arranca a execução da applet (load/entrar na página, por back, forward ou hyperlink)

stop () - Pára a execução (sair da página, minimizar browser)

destroy () - Destrói a applet (sair do browser)

Page 9: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 9

JAVA

Ficheiros .java Ficheiros de códigode byte .class

Máquina Virtual JAVA(Ex:browser que compreende JAVA)

código-fonte

Máquina Virtual JAVA

Page 10: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 10

JAVAMáquina Virtual Java (JVM)

Independência da máquina Emuladores diferentes de máquinas virtuais Java em função da plataforma em uso

Segurança Código java é executado dentro de máquinas virtuais java que verificam o comportamento do programa

Tamanho reduzido do código JVMs têm bibliotecas de funções incorporadas. As funções são chamadas apenas quando necessário em vez de estarem ligadas aos programas, logo, redução de tempos de transferência...

Vantagens

Page 11: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 11

JAVA

Desvantagem : decréscimo de desempenho

Compilação em tempo real

Programas em código de byte Java não são executados tãodepressa como os programas em código nativo normal (mecanismos Just In Time compilation tentam acelerar o processo)

A compliação em tempo real considera os códigos de byte Javacomo linguagem de código-fonte que é compilada comoprograma para a linguagem da máquina local

Máquina Virtual Java (JVM)

Page 12: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 12

Programação JAVAPalavras reservadas de Java

abstractbooleanbreakbytecasecatchcharclassconstcontinue

defaultdodoubleelseextendsfalsefinalfinallyfloatfor

gotoifimplementsimportinstanceofintinterfacelongnativenew

nullpackageprivateprotectedpublicreturnshortstaticsuperswitch

synchronizedthisthrowthrowstransienttruetryvoidvolatilewhile

Page 13: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 13

Programação JAVAComentários

/* zona de texto

comentada…. */

int inteiro; // comentário na linha

ou

Page 14: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 14

Programação JAVADeclaração de variáveis

Variáveis

Locais - conhecidas apenas dentro da função que as declara

Globais - conhecidas por várias funções (ex: atributos de classe)

Page 15: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 15

Programação JAVADeclaração de variáveis

Podem aparecer em qualquer ponto da função

A declaração consiste num tipo, nome da variável e opcionalmente, do operador de atribuição (=) e deuma expressão que representa o valor inicial da variável

Exemplo:

int inteiro;int outroInteiro = 40;

Nota: instruções em Java terminam com ponto e vírgula (;)

Page 16: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 16

Programação JAVADeclaração de variáveis

Tipos de dados intrínsecos

Tipode dado

booleanbytecharshortintlongfloatdouble

Tamanho(bits)

8161632643264

Valorpré-definido

false0‘x0’0000,0F0,0D

Observações

Pode tomar valores true ou falseNúmero inteiro entre -128 e 127Tipo caracter, norma Unicode 16 bitsNúmero inteiro entre -32768 e 32767Número inteiroNúmero inteiroNúmero real (vírgula flutuante)Número real (vírgula flutuante)

Page 17: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 17

Programação JAVATipos de dados intrínsecos

Todos os tipos numéricos têm sinal

O Java não suporta inteiros numéricos sem sinal

Se a variável não for inicializada pelo programador é-lhe atribuído um valor pré-definido

Os caracteres em Java ocupam 16 bits e são sempre consideradoscomo sendo Unicode

Nota: O ASCII é um subconjunto do Unicode. Os primeiros 128 caracteres são os mesmos que os do ASCII, depois o Unicode associa outros valores aos caracteres acentuados e outros

Page 18: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 18

Programação JAVA

Exemplos de utilização:

boolean resposta = true;char c = ‘A’;byte b = 80;short s = -12010;int i = 110412;long l = 2000000000;float f = 2.23;double d = 2.5e10;

Tipos de dados intrínsecos

Page 19: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 19

Programação JAVACaracteres literais especiais

Nova LinhaTabulaçãoApagar para trásRegressar ao início da linhaNova páginaApóstrofoAspasBarra Invertida

\n\t\b\r\f\’\”\\

Page 20: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 20

Programação JAVAConversão de tipos

O Java converte automaticamente um tipo numérico para outro superior (promoção) no entanto é preferível utilizar uma conversão

Exemplo:int inteiro;long longo;longo = inteiro; // O java aceitalongo = (long) inteiro; // preferível efectuar o cast

inteiro = longo; // erro na compilaçãointeiro = (int) longo; // ok

Page 21: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 21

Programação JAVA

+ Adição- Subtracção* Multiplicação/ Divisão% Módulo

Aritméticos

Operadores

++ Incremento de uma unidade-- Decremento de uma unidade

Nota:

a = a + 5;é o mesmo que a+=5;

Ex: ++numero;

Page 22: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 22

Programação JAVA

Relacionais

== Igual a…!= Diferente de …< Menor que…> Maior que…<= Menor ou igual que…>= Maior ou igual que...

Operadores

Exemplo:

if ( a > b ) { // ...}

Page 23: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 23

Programação JAVA

! Negação~ Complemento& Conjunção (AND binário)| Disjunção (OR binário)^ Disjunção exclusiva (XOR binário)<< shift binário>> shift binário>>> shift à direita com colocação de zeros à esquerda

&& AND antecipado (a expressão lógica é avaliada antes de terminada)|| OR antecipado (a expressão lógica é avaliada antes de terminada)

Operadores

Page 24: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 24

Programação JAVA

Operadores com a mesma precedência são executadosda esquerda para a direita

Exemplo:

int inteiro;inteiro = 2 + 6 + 1; // o resultado é 9inteiro = 2 + 6 * 2: // o resultado é 14 pois a precedência de // ‘*’ tem precedência superior em relação a ‘+’

Precedência de Operadores

Page 25: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 25

Programação JAVA

. [ ] ( )++ -- ! ~ instanceof* / %+ -<< >> >>>< > <= >=== !=&^|&&||?:= op =,

+

Precedência de Operadores

-

Page 26: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 26

Programação JAVA

Arrays (estruturas de dados do tipo vectorial e/ou matricial)

int vectorInteiros[] = new int[50];

int matrizInteiros[][] = new int[50][4];

Exemplo:

Criar e inicializar arrays

Exemplo: char alfabeto[] = { ‘a’, ‘b’, ‘c’, ‘d’ };int notas[] = { 20, 15, 15, 14, 11, 10, 18 };

Arrays

Page 27: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 27

Programação JAVA

Instrução ifinstrução switch

ciclo forciclo while

Controlo de fluxo

Decisõ

es

Ciclos

Page 28: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 28

Programação JAVAInstrução if

If ( condição ){ // … instruções

}else { // … instruções

}Nota: o bloco else é opcional

Page 29: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 29

Programação JAVAInstrução switch

switch ( variável ){

case valor1: // instruções… break;

case valor2: // instruções… break;

default: // instruções…

}

Page 30: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 30

Programação JAVAciclo for

for ( inicialização; condição de controlo; incremento ){ // instruções

}Exemplo:

for ( int I = 0; I < 100; I++) { // ...}

Page 31: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 31

Programação JAVAciclo while

while ( condição de controlo ) { // instruções...

}

ou

do { // instruções...

} while ( condição de controlo );

Exemplo:

int a = 0;while ( a < 100 ) { a=a+1; // ...}

Page 32: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 32

Programação JAVACriar classes em Java

modificador(es) class NomeDaClasse{ // membros da classe (atributos e métodos)

}

exemplo de modificadores:

public (acessibilidade total da classe)abstract (métodos abstractos a definir pelas subclasses)final (classe que não poderá ser base de herança)

Page 33: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 33

Programação JAVACriar classes em Java

Pontopublic class Ponto{ private int m_x;

private int m_y;

public Ponto(){ m_x = 0; m_y = 0;}

}

Atributos da classe, neste casoprivate garante o encapsulamentodos dados

Construtor por defeito da classe,é público, não devolve nenhum tipo,tem o mesmo nome da classe e não recebe argumentos

Page 34: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 34

Programação JAVACriar classes em Java

Ponto

O construtor é invocado sempre quese cria um novo objecto da classe

Ponto p1;

p1 = new Ponto();

p1 é referência para instânciasda classe Ponto

O novo objecto é criado, a sua referência fica com p1.

De acordo com o exemplo, o construtor da classe coloca zeronos atributos privados m_x e m_y

Page 35: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 35

Programação JAVACriar classes em Java

Ponto

public class Ponto{ private int m_x;

private int m_y;

public Ponto(){ m_x = 0; m_y = 0;}

public Ponto(int x, int y){ m_x = x; m_y = y;}

}

Construtor alternativo da classe Ponto

Passa a ser possível criar objectosda classe Ponto com valores iniciais

Exemplo:

Ponto p1 = new Ponto( 10, 5);

Page 36: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 36

Programação JAVACriar classes em Java

Ponto

public class Ponto{ private int m_x;

private int m_y;

public Ponto(){ m_x = 0; m_y = 0;}

public Ponto(int x, int y){ m_x = x; m_y = y;}

}

Problema

Os atributos de Ponto são privados.

Como pode o “mundo exterior” obteros valores de m_x e m_y respeitando o princípio do encapsulamento da informação?

Page 37: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 37

Programação JAVACriar classes em Java

Ponto

public class Ponto{ private int m_x;

private int m_y;

public Ponto() { m_x = 0; m_y = 0; }public Ponto(int x, int y) { m_x = x; m_y = y; }

public int X() { return m_x; }

public int Y() { return m_y; }

}

Uma solução possível:

criar métodos de acessopúblico para obtençãodos valores dos atributos

Page 38: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 38

Programação JAVACriar classes em Java

Ponto

public class Ponto{ private int m_x;

private int m_y;

public Ponto() { m_x = 0; m_y = 0; }public Ponto(int x, int y) { m_x = x; m_y = y; }

public int X() { return m_x; }

public int Y() { return m_y; }

}

Novo Problema

Possibilitar a colocaçãode valores em m_x e m_y a partir de mensagensenviadas aos objectosda classe Ponto.

Page 39: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 39

Programação JAVACriar classes em Java

Ponto

public class Ponto{ private int m_x;

private int m_y;

public Ponto() { m_x = 0; m_y = 0; }public Ponto(int x, int y) { m_x = x; m_y = y; }

public int X() { return m_x; } public int Y() { return m_y; }

public void X(int x) { m_x = x; } public void Y(int y) { m_y = y; }

}

Preparar métodos públicos deatribuiçãode valores a m_x e m_y

É uma responsabilidadeda classe efectuar estasoperações...

Page 40: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 40

Programação JAVACriar classes em Java

public class Ponto{ private int m_x;

private int m_y;

public Ponto() { m_x = 0; m_y = 0; }public Ponto(int x, int y) { m_x = x; m_y = y; }

public int X() { return m_x; } public int Y() { return m_y; }

public void X(int x) { m_x = x; } public void Y(int y) { m_y = y; }

}

Exemplo:

Ponto p1 = new Ponto();Ponto p2 = new Ponto(2,3);

p1.X(4);p1.Y(8);

int a;

a = p1.X();

p2.X( a );

p2.Y( p1.Y() );

4

8

4

Page 41: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 41

Programação JAVACriar classes em Java

Ponto p;

p = new Ponto(1,1);p = new Ponto(2,2);p = new Ponto(3,3);p = new Ponto(4,4);p = new Ponto(5,5);p = new Ponto(6,6);p = new Ponto(7,7);

p = new Ponto(8,8);

Instanciar objectos da classe Ponto

Neste caso foram criados 8 novosobjectos da classe Ponto, no entanto,fica apenas referenciado o últimoponto em p

Perdem-se todas as referências anteriores

p só guarda a última referência atribuída

O que acontece aos outros objectosque nasceram e estão perdidos?

Page 42: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 42

Programação JAVACriar classes em Java

Ponto p;

p = new Ponto(1,1);p = new Ponto(2,2);p = new Ponto(3,3);p = new Ponto(4,4);p = new Ponto(5,5);p = new Ponto(6,6);p = new Ponto(7,7);

p = new Ponto(8,8);

GC O que acontece aos outros objectosque nasceram e estão perdidos?

R: O mecanismo GC (Garbage Collection) entra em funcionamento.

O Java executa continuamente uma tarefa de segundo plano para libertar recursos de todos os objectos criados e que não estejam referenciados

Gestão automática de memória

Nota: System.gc força a execução do GC

Page 43: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 43

Programação JAVACriar classes em Java

A referência this

class Conta{ double m_saldo;

Conta() { m_saldo = 0.0; // equivalente a this.m_saldo=0.0; }

}

Sempre que um métodofaz uma referência não

qualificada a outro membroda mesma classe, existe uma referência implícita

a this.

Exemplo:

Page 44: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 44

Programação JAVAClasses em Java, Herança

class A{ // ...}

class B extends A{ // ...}

A

B

Page 45: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 45

Programação JAVAA classe Object

Object é a super-classe de todas as classes

Qualquer classe expande automaticamente a classe Object

Todas as classes herdam os métodos de Object

class A{ // ...}

ou

class A extends Object{ // ...}

Page 46: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 46

Programação JAVAA classe Object

Principais métodos de Object

protected Object clone, devolve uma cópia do objecto

public final Class getClass, devolve o objecto Class

O objecto Class descreve a classe actualClass.toString devolve o nome da classe

toString, devolve uma descrição Unicode do objecto.

Object.toString devolve o endereço do objecto, no entantooutras classes sobrecarregam toString para proporcionar uma descrição mais útil do objecto Class

Page 47: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 47

Programação JAVAA classe String

String é a classe geral para representar cadeias de caracteres Unicode

String representa uma cadeia fixa de caracteres

String oferece métodos úteis como concat, compareTo, toUpper, toLower

A classe StringBuffer

A classe StringBuffer representa uma cadeia de caracteresdinamicamente dimensionável(ex métodos: append, insert,…)

Page 48: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 48

Programação JAVAA classe System

A classe System proporciona uma interface independentedo sistema para algumas funções gerais

in, out e err são as funcionalidades mais úteis de System

Objectos padrão de E/S

ObjectoSystem.inSystem.outSystem.err

TipoBufferedInputStreamPrintStreamPrintStream

Descriçãoentrada-padrão (normalmente teclado)saída-padrão (normalmente ecrã)saída de erro (normalmente ecrã)

Page 49: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 49

Programação JAVA

Controlo/Tratamento de erros através de excepções

Blocos try/catch

try{ // instruções… a = 50; b=0; objecto.Divide(a,b);}catch (Exception e){ // visualização, situação de erro...}

class A { // ...

public double Divide(double d1, double d2) { if ( d2 == 0 ) { throw new Exception(“Divisão por zero!”); } return ( d1 / d2 ); }}

Page 50: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 50

Programação JAVAinterfaces

Uma interface permite ao programador descrever uma série de capacidades que uma classe deve implementar

interface ipersistente{ void Store(); void Restore();}

Uma classe realiza umainterface utilizandoa palavra-chave implements

Uma classe que implementa umainterface não está a herdar nadaapenas promete implementar osmétodos definidos na interface

class B extends A implements ipersistente{ // … definir na classe Store() e Restore()}

Page 51: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 51

Programação JAVAPacotes Java: packages

Por uma questão de organização é possível combinar classes em packages.

As classes estão agrupadas mas não têm que estar relacionadas, pelo menos da mesma forma que uma classe derivada se relaciona com a sua classe base.

Os nomes das packages podem conter pontos finais.

Por convenção, os nomes das packages são constituídos por várias palavras (a primeira pode indicar o nome da organização que a desenvolveu)

Page 52: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 52

Programação JAVAPacotes Java: packages

Adicionar uma classe a uma package:

package edu.escola;

public class Aluno{ // instruções….}

Page 53: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 53

Programação JAVAPacotes Java: packages

Utilizar uma classe de uma package

import edu.escola.Aluno;

Utilizar todas as classes de uma package

import edu.escola.*;

Page 54: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 54

Programação JAVAPacotes Java: packages

Packages da biblioteca Java (exemplos)

java.lang , inclui as classes mais importantes da biblioteca Java. É importado por definição. (Ex: Object,String, classes para tipos intrínsecos, …)

java.applet, inclui as classes necessárias para a criação de applets

java.awt, Abstract Window Toolkit, conjunto de ferramentas para processamento de janelas

java.util, classes de utilidade geral (Ex: Date, Random,Vector,...)

Page 55: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 55

Programação JAVAPacotes Java: packages

Packages da biblioteca Java (exemplos)

java.net, classes para operações de rede sobre TCP/IP (Ex: URL, URLConnection,…)

java.beans, especificação de objectos de tipo “Java Beans”

java.math, tipos númericos especiais

java.sql, bases de dados/SQL

java.servlet, criação de servlets

Page 56: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 56

Programação JAVA

Exemplo

O pacote java.io,a classe Systeme blocos try/catch

import java.io.*;public class Class1{

public static void main (String[] args){try {

byte cadeiaBytes[] = new byte[128];System.out.println("Digite uma frase: ");System.in.read(cadeiaBytes);String s = new String(cadeiaBytes);System.out.println(s);

}catch (IOException e)

{System.out.println(e.toString());e.printStackTrace();}

}}

Page 57: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 57

Programação JAVAAWT

Abstract Window Toolkit

Conjunto de Ferramentas para Janelas

Contém classes para componentes gráficos para qualquer plataforma de interface GUI

A própria classe Applet é membro do AWT

A super-classe da maioria das classes que compõemo package AWT é a Component

Usar package javax.swing.*

(encapsula e melhora a awt)

Page 58: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 58

Programação JAVAAWT

Component

Container

Window Panel

Dialog Frame

FileDialog

Applet

Button

Canvas

Checkbox

Label

List

ScrollbarTextComponent

TextArea TextField

Subclasses de Component (super-classe da maioria das classes do AWT)

Page 59: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 59

Programação JAVAAWT

Exemplo: import java.awt.*;import java.applet.*;

public class Applet1 extends Applet{

Label m_label = new Label("Programação em JAVA");Button m_botao = new Button("Botão 1");TextField m_campoTexto = new TextField(10);

public void init(){

add ( m_label ); add ( m_botao ); add ( m_campoTexto );

}}

Applet

Label

Button

TextField

Page 60: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 60

Programação JAVAAWT

Nota: o layout por defeito neste caso é FlowLayout

Page 61: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 61

Programação JAVAAWT

Principais formas de Layout (apresentação dos componentes)

FlowLayout

BorderLayout

GridLayout

Os componentes são posicionados daesquerda para a direita pela ordem emque estão ligados

Permite posicionar componentes relativamenteaos limites da janela (North, South, East, West e Center)

Os componentes são posicionados numa filosofiade grelha

Nota: o método setLayout da Applet permite mudar o layout

Page 62: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 62

Programação JAVAAWT

Exemplo #1:

utilização de BorderLayout

// exemplo anterior (Applet1)// ...

public void init(){ setLayout(new BorderLayout());

add ( "North", m_label ); add ( "Center", m_campoTexto ); add ( "South", m_botao );}

// ...

Aos objectos North e Southé atribuído o espaço verticalnecessário.

Aos objectos West e East éatribuído o espaço horizontalnecessário dentro de qualquerespaço vertical que ainda reste

Aos objectos Center é atribuídoo restante espaço

Page 63: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 63

Programação JAVAAWT

Exemplo #1: utilização de BorderLayout

Page 64: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 64

Programação JAVAAWT

Exemplo #2: utilização de BorderLayout

Button b1 = new Button("B1");Button b2 = new Button("B2");Button b3 = new Button("B3");Button b4 = new Button("B4");Button b5 = new Button("B5");

setLayout(new BorderLayout());

add("North", b1);add("West", b2);add("Center", b3);add("East", b4);add("South", b5);

Page 65: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 65

Programação JAVAAWT

Paineis

GridLayout ( 4, 1 )

1234

Page 66: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 66

Programação JAVAAWT

Paineis

painelm_painelTiposConta

painel m_painelValor

painel m_painelOperacoes

zona para Labelsem painelp1

Page 67: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 67

Programação JAVAAWT

Paineis

FlowLayout

FlowLayout

BorderLayout

GridLayout ( 1, 2)

Page 68: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 68

Programação JAVAAWT

Panel m_painelTiposConta;Panel m_painelValor;Panel m_painelOperacoes;

CheckboxGroup m_cbg;Checkbox m_cbContaOrdem;Checkbox m_cbContaMulti;

Label m_label1 = new Label("Valor");Label m_labelMsg = new Label("");

Button m_botaoDep = new Button("Depositar");Button m_botaoLev = new Button("Levantar");Button m_botaoSaldo = new Button("Saldo");Button m_botaoLimpar = new Button("Limpar");

TextField m_campoTexto = new TextField(15);

Painéis e outros componentes

Page 69: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 69

Programação JAVAAWT

public void init(){ m_cbg = new CheckboxGroup(); m_cbContaOrdem = new Checkbox("Conta Ordem", m_cbg, false); m_cbContaMulti = new Checkbox("Conta Multibanco", m_cbg, true);

// ...

Painéis e outros componentes

Page 70: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 70

Programação JAVAAWTPainéis e outros componentes

m_painelTiposConta = new Panel();m_painelTiposConta.setLayout(new FlowLayout(FlowLayout.CENTER));m_painelTiposConta.add(m_cbContaOrdem);m_painelTiposConta.add(m_cbContaMulti);

m_painelValor = new Panel();m_painelValor.setLayout(new FlowLayout(FlowLayout.CENTER));m_painelValor.add(m_label1);m_painelValor.add(m_campoTexto);m_painelValor.add(m_botaoLimpar);

m_painelOperacoes = new Panel();m_painelOperacoes.setLayout(new BorderLayout());

Panel p1 = new Panel();p1.setLayout(new GridLayout(1,2));p1.add(m_botaoDep);p1.add(m_botaoLev);

m_painelOperacoes.add("Center", m_botaoSaldo);m_painelOperacoes.add("South", p1);

Page 71: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 71

Programação JAVAAWTPainéis e outros componentes

setLayout(new GridLayout(4,1));

add ( m_painelTiposConta );add ( m_painelValor );add ( m_painelOperacoes );add ( m_labelMsg );

Page 72: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 72

Programação JAVAAWTInterceptar eventos em Applets

Exemplo:

O utilizador escreve livremente no componente TextField

Se carregar no Botão 1 então o texto escrito deve substituir “Programação em JAVA” na label

Nota: exemplo desenvolvido em J++ compatível com JDK

Page 73: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 73

Programação JAVAAWT

import java.applet.*;import java.awt.*;import java.awt.event.*;

public class Applet1 extends Applet implements ActionListener{

Label m_label = new Label("Programação em JAVA");Button m_botao = new Button("Botão 1");TextField m_campoTexto = new TextField(10);

// pedimos desculpa por esta interrupção, a classe continua nos próximo slides...

Interceptar eventos em Applets

Page 74: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 74

Programação JAVAAWT

//..

public void init(){

setLayout(new BorderLayout());add ( "North", m_label );add ( "Center", m_campoTexto );add ( "South", m_botao );

m_botao.addActionListener(this);

}

// ...

Interceptar eventos em Applets

Page 75: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 75

Programação JAVAAWTInterceptar eventos em Applets

public void actionPerformed(ActionEvent evento){ Object objectoAlvo = (Object) evento.getSource(); if ( objectoAlvo instanceof Button ) {

Button b = (Button) objectoAlvo; String s = b.getLabel();

if ( s.compareTo("Botão 1") == 0 ) { m_label.setText( m_campoTexto.getText() ); } }}

} // fim da classe Applet1

Page 76: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 76

Programação JAVAAWTInterceptar eventos em Applets

public void actionPerformed(ActionEvent evento){

if ( evento.getSource() == m_botaoLimpar ){ m_campoTexto.setText("");}

}} // fim da classe Applet1

Ou de uma forma mais simples...

Page 77: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 77

Programação JAVAClasse GraphicsFuncionalidades gráficas em Applets

Graphics é argumento do método paint de Applet

public void paint(Graphics g){ g.setFont(new Font( "TimesRoman", Font.BOLD, 36));

g.setColor ( Color.red );

g.drawString ( "Java", 10, 100);}

Nota: repaint() provoca uma chamada a paint

Page 78: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 78

Programação JAVAClasse GraphicsFuncionalidades gráficas em Applets

Graphics é argumento do método paint de Applet

public void paint(Graphics g){ g.setColor(Color.red); g.drawRect(10,10,110,50); g.fillRect(50,15,30,20);

g.setColor(Color.blue); g.drawOval(10,15,110,25);

g.setColor(Color.black); g.drawLine(10,25, 110, 25);

}

x

y

Page 79: Java Introdução (c)AB,20001 JAVA Linguagem orientada por objectos (similar ao C++ mas mais simples) Utilizada para desenvolvimento de aplicações stand-alone,

Java Introdução (c)AB,2000 79

Na WWW…

Sobre Java

www.sun.comwww.javasoft.com subsidiária da Sun

sunsite.unc.edu/javafaqwww.gamelan.com ligações a outros sites Java

www.programmingtutorials.com