You are on page 1of 171

© Ademar Aguiar

■ ! "# $ % & ' ( &) * +$ &(, - . / $*


0* / &# &1$ & ( "+ (* & 2 &. 3&$ &
& 4 2 . 2 + & 566
■ 0* & 7 & , 8 & + - (+ &
(( &%) (+ . & & 5669 3:/; % 5%<5 =%=
■ , & ; (* ++, + & & ' ! >4 ++. ?
(( $ ( @
■ , A + ( & ; (* ++, + & & ' <
& ! >4 ++. ? (( $ ( @

© Ademar Aguiar
!

© Ademar Aguiar

# $
: $ B C
■ 3 & $ ( + & ( &$ (
■ ' ($ D + $* & E D F
■ 2 +B $ &(
+$ G (
■ 3 & $ ($ & & ( &$ ( ' + &
8 E ' 8F
■ ' ($ ( G ( &( + E + . &F

© Ademar Aguiar

"
# & ' (
■ 2 &$ " + : & + $ H& $ $ &( (
& +$ & )))
■ +& & "# $ ( $ &# &
" "+ $ ( $+ (( ( E I(F
■ +B JK & + A $ (

© Ademar Aguiar

*
■ 7& & "# $ (
■ 3& & & & +
■ ' &L $ ( " M
■ + %*
■ 4 " ( B ( &

© Ademar Aguiar

)
■ ! $H N B & & $* #
■ # N$ + $* ( $+ ((
■ /. $ (( & ( A $

Compile JVM
(javac) (java)

movie.java movie.class
executar
programa
© Ademar Aguiar

Linguagem e Compilador

Verificador de Bytecode

Carregador de Classes

Interfaces específicas

© Ademar Aguiar

,
■ ($ +B &$ + &
■ D $ $ & +B J & ( O0 7
■ &$+ $ & P ( $ (E ( J &(
M F
■ $ & $ &$ $ (

© Ademar Aguiar

0
■ 3&( + & + $+ &
Q D $ +$ G ( H& (
Q; & $ (( $ $+ (( ( +

■ 3&( + + (
Q ( P+ + ( $+ & ( (
Q &$ A " $ + ( + %$ $ &
3& &

© Ademar Aguiar

/
*1 2 * 1 3

Operating system Browser

JVM JVM

Application Applet

© Ademar Aguiar

4 *1
■ ! D $+ (( + $ ( ( $+ (( ( & $ ((J (
■ ! D $ ( ". $ ( + (
■ ! ( H D +" H +
((

© Ademar Aguiar
4 2 25 6 57
■ +* &$
■ : P (( ( ( ( A $ (
( B (
■ 0 B ". $ ( &( G (& (
■ ! B $H ($ $ $+ (

© Ademar Aguiar

4
■ $ & 3& & $ &( ( R(
& ($ (C

Client Application Data server


server
■ ( ( ( ( ($ (

© Ademar Aguiar

"
8
■ ! $H N$ + & & & (
+
■ !( ( & ( D
■ ( $ & " ( & $+ &
■ ( +$ G ( ( A $ ( H&
& & $+ & $ & (

© Ademar Aguiar

© Ademar Aguiar

)
# $
■ 2 &* $ ( + & ( &$ (
■ 2 &* $ (M& A "J( $
■ ' ($ $* ( # $+ ((

© Ademar Aguiar

59
■ 2 & & (
■ 2 & & G (
■ 2+ (( ( "# $ ( N (
■ +B $
■ 2 + A $ (

© Ademar Aguiar

,
:; 2 : ;
! '8 : & & $ C
■ 2 + E# $F
■ D( +B E + F
■ 3& E# F
■ - $ & E# $F

© Ademar Aguiar

:; 2 : ;
! '8 : & & $ $ (( & C
■ +&
■ :( # & + (
■ 2 & +
■ & 1: M
■ 2 &$ 4

© Ademar Aguiar

/
:; 2 : ;
! '8 : & & $ ( $ & C
■ 2 &J (
Q3 + &
Q' $ &

■ - ' $ &

© Ademar Aguiar

4 0 <
($ & & G ( &$+ C
■ ; ( $* (
Q2 ( # 4 & +3 #

■ ; ( 2+ (( (
Q2 ( 4 & +3 3& & .3

■ ; ( N (
Q 2 ( ; EF ( 4 & +3 $ EF

© Ademar Aguiar
4 0 < ===
■ : & J (
Q$ ( ; $ ( 2 7

■ : & $ &( & (


Q 3;S) 3' 0O TS; / 4S! S30 :

■ +B $ $ ( P($ + ( &P($ + (
■ ;P ( $ $ ( ( $ (

© Ademar Aguiar

: 4
■ & $+ (( ( & + & &$+ C
Q $ $ (( C
Q + %$*
Q2 ( ( &( L&$ (
Q 2 &( $ (
Q N ( ( &( L&$ (
Q2 ( $+ ((
Q N ( $+ ((

© Ademar Aguiar

"
: 4 ===

public class Customer { Declaraç


Declaração
// Instance variáveis
String customerName;
String customerPostalCode; Variá
Variável
de
float customerAmountDue;
Instância

// Instance métodos
float getAmountDue (String cust) { Método
da

Instância
}

}

© Ademar Aguiar

: 1'
■ : & $+ ((
■ ( $ $ C
Q $ $ ((
Q + %$*
Q & (
Q0 &

[access-modifiers] [static] <return-type>


<method-name> ([arguments]) <java code block>

© Ademar Aguiar

)
: 1'

float getAmountDue (String cust) { Declaraç


Declaração
// método variáveis
int numberOfDays;
Variá
Variáveis
float due;
float lateCharge = 1.50; de mé
método
String customerName;
// método body
numberOfDays = this.getOverDueDays(); Instruç
Instruções
due = numberOfDays * lateCharge; de mé
método
customerName = getCustomerName(cust);
return due; Retorno
}

© Ademar Aguiar

* 4
■ ' ( $+ ( & ( ( +B (
■ $+ + &*
■ ; &M$ "+ $ $H
■ ! "+ $ $H & L "
■ 3& $ + B

© Ademar Aguiar

,
* 4

float getAmountDue (String cust) {


float due = 0; Variá
Variáveis
de mé
método
int numberOfDays = 0;
float lateFee = 1.50;
{int tempCount = 1; // new code block
due = numberOfDays * lateFee;
tempCount++; Variá
Variáveis
temporá
temporárias

} // end code block
return due;
}

© Ademar Aguiar

4 9
■ ( ( $+ G ( $+ ((
■ ( ( $+ G ( N (
■ (( & ( $H + $ & & (

public class SayHello {


public static void main(String[] args) {
System.out.println("Hello world");
}
}

© Ademar Aguiar

/
4 0
■ ( &( G ( & ( $ & % % M + EUF
■ 3&( G ($ ( (( & ( & $* (VW
■ +B $* ( &( G ( $ & +

© Ademar Aguiar

4 > 0
■ $ + $* # C

$aaguiar> javac SayHello.java


… compiler output …

■ A $ $* $+ ((C
$aaguiar> java SayHello
Hello world
prompt>

■ & X( P($ + ( &P($ + (Y

© Ademar Aguiar
8
■ ! '8 & $ ( & ( (( &$ (
■ ! '8 & $ $ &# & + ( $+ (( ( N (
N% & (
■ !( ( ( $ &( M ( $+ (( ( "# $ (
N (
■ & ( $+ +
+B $H

© Ademar Aguiar

5 : #

© Ademar Aguiar

"
# $
: $ B C
■ ' ($ ( ( ( (
■ ' $+ &$ +B J ( (
■ +B ( & + + J +

© Ademar Aguiar

59
■ ! $ ( ( ( ( "J( $ (
■ ( (( & B & +B
&
■ ' $+ &$ +B (N " ( $ &(
( & ( + +B

© Ademar Aguiar

)
59
■ !( ( & + ( "# $ (
■ $ ( & ( B +
■ $ @@ ( & (
■ + &( ( + + &

© Ademar Aguiar

*
■ J +N & "J( $ B & &
■ ( J ( ( $+ ( A +$ &
■ 2 J + & $ L "
■ ( J ( ( &$ +B (

Tipo

int myAge; Identificador


boolean isAMovie;
float maxItemCost = 17.98;

© Ademar Aguiar

,
< *
■ !( & ( ( J ( $ +
+ " Z
■ !( ($ $ ( &$+ (
■ ' %( +B & ( + $ ( ( J (U
A +
$ ( (; ; A / * .

a item_Cost item#Cost item-Cost


itemCost _itemCost item*Cost abstract
item$Cost itemCost2 2itemCost

© Ademar Aguiar

boolean abstract break class


byte final case extends
char native catch implements
double private continue interface
float protected default throws
int public do
long static else import
short synchronized finally package
void transient for
volatile if
instanceof
false return
new
null switch
super
true throw
this
try
while

© Ademar Aguiar

"/
5 *
■ ! ( ( (C
Q: ( (& N $ (
Q0 $ $ (
Q0 / + & + ( +(

■ 0 ( & ( + +B
Q 2+ (( (
Q 3& $ (
Q .(

© Ademar Aguiar

"

5 :

Integer Floating Character True


Point False

byte float char boolean


short double
int
long

1,2,3,42 3.0 'a' true


07 .3337 '\141' false
0xff 4.022E23 '\u0061'
'\n'

© Ademar Aguiar

"
: *
■ "J( $ $+ J +C

tipo identifier [ = valor]


public static void main(String[] args) {
int itemsRented;
float itemCost;
int i, j, k;
double interestRate;
}

■ ( J ( ( &$ +B (K & $+ (

© Ademar Aguiar

"

: *
■ ( J (+ $ ( ( $ & ( & (& N
"+ $ $H
■ ( J (+ $ ( ( &$ +B ( & ( (
( (

class Rental {
private int instVar; // instance variável
public void addItem() {
float itemCost = 3.50; // local variável
int numOfDays = 3; // local variável
}
}

© Ademar Aguiar

""
? <@

0 1 42 -23795 (decimal)
02 077 0123 (octal)
Literais Inteiros
0x0 0x2a 0X1FF (hex)
365L 077L 0x1000L (long)

1.0 4.2 .47


Literais
1.22e19 4.61E-9
Floating-
Floating-point 6.2f 6.21F

© Ademar Aguiar

"%

? 2<@

Literais Booleanos true false

Literais Caracter 'a' '\n' '\t' '\077'


'\u006F'

Literais String
"Hello, world\n"

© Ademar Aguiar

")
> A !:
■ &$ & ( ( & $H " A $ %+ (

1 byte sizeof = 200;


2 short mom = 43;
3 short hello mom;
4 int big = sizeof * sizeof * sizeof;
5 long bigger = big + big + big // ouch
6 double old = 78.0;
7 double new = 0.1;
8 boolean consequence = true;
9 boolean max = big > bigger;
10 char maine = "New England state";
11 char ming = 'd';

© Ademar Aguiar

"+

#
2 &$ ( (C
■ "
■ N $ (
■ & + " (
■ 4 + $ & (
■ / + & (

© Ademar Aguiar

",
#
■ A (( N " M X J + (K C
int var1 = 0, var2 = 0;
var1 = 50; // var1 now equals 50
var2 = var1 + 10; // var2 now equals 60

■ A (( N( + & (
"
■ ( " G ( ( (C

var1 = var2 = var3 = 50;

© Ademar Aguiar

".

# '
■ 4 +B G ( N $ ( "J( $ (
■ ! ( " J ( + ( &P $ (

int a, b, c, d;
a = 2 + 2; // addition
b = a * 3; // multiplication
c = b - 2; // subtraction
d = b / 2; // division
e = b % 2; // returns the remainder of division

© Ademar Aguiar

%/
# ' ===
■ ( G ( ( + & & + & C
byte b1 = 1, b2 = 2, b3;
b3 = b1 + b2; // error: result is an int
// b3 is byte

■ D + ( ". $* (* ( ( & & (

■ : + & + & N + &


( + N+ &

© Ademar Aguiar

4 0 4
■ ! $ & $ & + (
& N $

byte
short
int
long
■ ! & B $ & &$ (

byte short int long

© Ademar Aguiar

%
:
■ ! [[ &$ & 5 & C

int var1 = 3;
var1++; // var1 now equals 4

■ ! [[ ( ( ( & (C
int var1 = 3, var2 = 0;
var2 = ++var1; // Prefix: Increment var1 first,
// then assign to var2.
var2 = var1++; // Postfix: Assign to var2 first,
// then increment var1.

■ ! %% $ & 5 &

© Ademar Aguiar

4 0
■ ! ( + $ & ( + C

> greater than


>= greater than or equal to
< less than
<= less than or equal to
== equal to
!= not equal to

int var1 = 7, var2 = 13;


boolean res = true;
res = (var1 == var2); // res now equals false
res = (var2 > var1); // res now equals true

© Ademar Aguiar

%"
# ?9
■ !( ( + ( A ((G ( / + & ( (
$ "& ( ( & ( +H $ (C

&& & e (with / without short-circuit evaluation)


|| | or (with / without short-circuit evaluation)
^ exclusive or
! not

int var0 = 0, var1 = 1, var2 = 2;


boolean res = true;
res = (var2 > var1) & (var0 == 3); // now false
res = !res; // now true

© Ademar Aguiar

%%

4
■ ! " ( $ "& $
K +K " &J $ & &$ & +C

double total=0, num = 1;


double percentage = .50;

total = total + num; // total is now 1
total += num; // total is now 2
total -= num; // total is now 1
total *= percentage; // total is now .5

© Ademar Aguiar

%)
B #
Order Operadores Comments Assoc.
1 ++ -- + - ~ Unary operadores R
!(tipo)
2 * / % Multiply, divide, remainder L
3 + - + Add, subtract, add string L
4 << >> >>> Shift (>>> is zero-fill shift) L
5 < > <= >= Relational, tipo compare L
instanceof
6 == != Equality L
7 & Bit/logical e L
8 ^ Bit/logical exclusive OR L
9 | Bit/logical inclusive OR L
10 && Logical e L
11 || Logical OR L
12 ?: Conditional operador R
13 = op= Assignment operadores R

© Ademar Aguiar

%+

B
■ $ R&$ & +
K + ( (( A $ (C
int var1 = 0;
var1 = 2 + 3 * 4; // var1 now equals 14
■ ! ($ ( $ R&$ ( A $ (
(K E & FC
int var1 = 0;
var1 = 12 - 6 + 3; // var1 now equals 9

■ !( & (( + &

© Ademar Aguiar

%,
4 - C
■ ! [$ $ &$ & ( & (C

String name = "Jane ";


String lastName = "Hathaway";
String fullName;
name = name + lastName; // name is now
//"Jane Hathaway"
// OR
name += lastName ; // same result
fullName = name;

© Ademar Aguiar

%.

8
■ ! ( ( (
■ J + ( $+ & ( ( (
■ ! ( G " $ &# & (
■ 2 ( & A +M$ ( ( & $ ((J (( +B (
( & ( K &
■ !( ( [ [\ ( ( ( $
$ &$ & ( & (

© Ademar Aguiar

)/
!

4 D

© Ademar Aguiar

0 4 D >

© Ademar Aguiar

)
# $
: $ B C
■ +B $ &( G ( $ (G (
■ 4 +B $ $+ ( G (

© Ademar Aguiar

59
■ ! $H A $ ( K &$ + &
■ 2H ($ + A A A $ $ & $ & +
■ A( &( G (K & $ (( ( A $ (
&
■ ! ( G $ &( ( $ & + ( &

© Ademar Aguiar

)"
5 4
■ 2 & + + A ( $ B K (C

Sequencial

Selecç
Selecção

Iteraç
Iteração

Transferência

© Ademar Aguiar

)%

4 D >
■ &( G ( +B & $* (
&( $ ( "+ $
■ 2 "+ $ N A $ $ P& $ &( &
( $ & + + A

{
boolean finished = true;
System.out.println("i = " + i);
i++;
}

© Ademar Aguiar

))
===

if ( boolean_expr )
Forma geral: statement1;
[else]
statement2;

if (i % 2 == 0)
System.out.println("Even");
Exemplos: else
System.out.println("Odd");
… if (i % 2 == 0) {
System.out.println(i);
System.out.println(" is even");
}
© Ademar Aguiar

)+

=== === === ===


if (speed >= 25)
if (speed > 65)
System.out.println("Speed over 65");
else
System.out.println("Speed over 25");
else
System.out.println("Speed under 25");

if (speed > 65)


System.out.println("Speed over 65");
else if (speed >= 25)
System.out.println("Speed over 25");
else
System.out.println("Speed under 25");

© Ademar Aguiar

),
# 4 6 ( !7
■ E" + &S A ] A 5C A F
boolean_expr ? expr1 : expr2

■ ^ + & P + _ +( C
■ : " + &S A \ ( + N A 5 ( &
( + N A C

int val1 = 120, val2 = 0;


int highest;
highest = (val1 > val2) ? 100 : 200;
System.out.println("Highest value is " + highest);

© Ademar Aguiar

).

> A !: E

int x = 3, y = 5; 1
if (x >= 0)
if (y < x)
System.out.println("y is less than x");
else
System.out.println("x is negative");
int x = 7; 2
if (x = 0)
System.out.println("x is zero");

int x = 15, y = 24; 3


if ( x % 2 == 0 && y % 2 == 0 );
System.out.println("x and y are even");

© Ademar Aguiar

+/
F 3===

■ ^P + ( + $$ & switch ( integer_expr ) {


& J ( + (
& ( + & ( case constant_expr1:
statement1;
break;
case constant_expr2:
statement2;
break;
[default:
statement3;
break;]
}

© Ademar Aguiar

F 3===
■ ( K (
$ ( ( switch (choice) {
$ &( & ( case 37:
System.out.println("Coffee?");
■ +B " I break;
( +
( $* case 45:
System.out.println("Tea?");
■ ' ( break;
+ & +
default:
System.out.println("???");
break;
}
© Ademar Aguiar

+
4
■ A( R( ( $ $+ (C
Q *+
Q _ *+
Q

■ 0 ( ( $ $+ ( R K (C
Q 3& $ + B
Q3
Q2
Q0 &

© Ademar Aguiar

F3 ===
■ ! *+ N (( + ( ( ( $ $+ (C
■ A + C

while ( boolean_expr )
statement;

int i = 0;
while (i < 10) {
System.out.println("i = " + i);
i++;
}

© Ademar Aguiar

+"
GF 3
■ ! ( $ $+ ( _ *+ R ( & $ $+ C
■ A + C
do
statement;
while ( termination );

int i = 0;
do {
System.out.println("i = " + i);
i++;
} while (i < 10);

© Ademar Aguiar

+%

===
■ ! ( $ $+ ( ( ( ($ &(C

for ( initialization; termination; iteration )


statement;

■ A + C

for (i = 0; i < 10; i++)


System.out.println(i);

■ ` + $ $+ K + & ]

© Ademar Aguiar

+)
===
■ ( $+ ( J (& &$ +B
$ $+ C

for (int i = 0; i < 10; i++)


System.out.println("i = " + i);

■ ( ( &$ +B $ &( (
+( A ((G ( ( ( M + (C

for (int i = 0, j = 10; i < j; i++, j--) {


System.out.println("i = " + i);
System.out.println("j = " + j);
}

© Ademar Aguiar

++

> A !: E

int x = 10; 1
while (x > 0);
System.out.println(x--);
System.out.println("We have lift off!");

int x = 10; 2
while (x > 0)
System.out.println("x is " + x);
x--;

int sum = 0; 3
for (; i < 10; sum += i++);
System.out.println("Sum is " + sum);

© Ademar Aguiar

+,
H
■ 3& $ $+ &( ( $*C
■ 0 &( $ & + &( (
$ $ $+ &( ( $*
■ ( + $ $H


while (age <= 65) {
balance = (balance+payment) * (1 + interest));
if (balance >= 250000)
break;
age++;
}

© Ademar Aguiar

+.

■ & ( ( ( $ $+ (
■ " & & $ ( ( + HA
$ $+


for (int year = 2000; year < 2099; year++) {
if ((year % 100 == 0) && (year % 400 != 0))
continue;
if (year % 4 == 0)
System.out.println(year);
}

© Ademar Aguiar

,/
H
■ ( ( ( + $ $+ ( &$ A (
$ & & $ $+ A $ $+ $ &

outer_loop:
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 5; j++) {
System.out.println(i, j);
if (i + j > 7)
break outer_loop;
}
}

© Ademar Aguiar

8
■ & +( N &$ + + &
$ (G (
■ "N ( G &( ( $*
■ $ R( &( G ( $ $+ (C
Q *+
Q _ *+
Q

■ +B " I $ & & (


$ ( &

© Ademar Aguiar

,
A
# # $

© Ademar Aguiar

# $
: $ B C
■ ' ($ a "( $ b
■ ' ($ $ &$ ( & "# $ (C * &
&$ ( + & + (
■ 3 & $ "# $ ( $+ (( ( ( + (

© Ademar Aguiar

,"
# # $
■ !! N & ( &*
(
■ !! " ( %( & $ &( + ( "# $ ( (
■ !! $ (K ( + BJ ( $+ &
J (
■ ! ( "# $ ( ( H& ( &$+ &
$ &

© Ademar Aguiar

,%

# & ' # $ (
■ ' & + (H $ C & K (
& $
■ ; & +
Q !!C "( $ "# $ +
Q ( +C & + & M& +$
Q( C ( ( ( & G ( (( $ (

© Ademar Aguiar

,)
# # $ > # 0
■ "# $ A( $ & " $ &$ & +
E$ & F ((
■ 2 $ & ( & N &

Objecto: Operaç
Operação:
A minha caneta azul escrever

Objecto: Operaç
Operação:
Caixa Multibanco levantamento
© Ademar Aguiar

,+

# # $ I *
■ ! ( "# $ ( R $ &* $ & E& F( " (
( $ +
■ 2 + & & N &

Tinta

Objecto: Atributo:
A minha caneta azul Volume de tinta

Objecto: Atributo:
Caixa Multibanco Dinheiro levantado
© Ademar Aguiar

,,
# # $ 0
■ ; + "# $ & ( N & $ ((J &$+
0 " (K ( & (
"+ K (

Exemplo de uma operaç


operação que não interessa incluir:
• apontar-
apontar-a

Exemplos de atributos que não interessam incluir:


• comprimento do bico
• fabricante da tinta
• idade

© Ademar Aguiar

,.

■ ! &$ ( + & $ + $ ($ ( (
&$ & K ( ( " +N & $ c (
G ( "# $
■ $ A + " &$ N "# $ K & &*
(( ( +B (C
Q $ A / &$ ( + ( (( ( +B (
QD + &$ ( + & N $ &( " " &$

■ D + &$ ( + & &


"# $ ( N ((M +

© Ademar Aguiar

./
: 0 E

© Ademar Aguiar

J & $
■ ! ( "# $ ( ( $ ( ( ( "# $ (
■ ! ( "# $ ( B ( "# $ (
■ ( + & "# $ ( N $ &* $

Um banco pode Um banco pode ter


ser um objecto. uma caixa MB que
Uma caixa MB pode ter um també
também pode ser um
teclado, leitor de cartões, objecto.
dispensador de notas, todos
podendo ser objectos.
© Ademar Aguiar

.
# & ' 4 (
■ $+ (( N ( $ $ "# $ (
■ & $+ (( ( $ $ ( G (
" ( ( ( &( L&$ ( $+ ((

Quando se cria a ‘minha caneta azul’


azul’, não é necessá
necessário
especificar as suas operaç
operações e atributos.
Basta simplesmente indicar a classe a que pertence.

© Ademar Aguiar

& (
■ $+ (( ($ "# $
■ $+ (( & $ & E G (F
( E " (F "# $ (C
Q %( B $ + A +B & $+ (( (
Q; & A( &( ( "# $ ( B + K + ( (( ( (
(
Q: ( $ & %( + $J%+ J ( "# $ (

© Ademar Aguiar

."
4 (
■ 3 & $ ( $ & $
"# $ (
■ 3 & $ P& $ $ &$ $ &
■ " ( "# $ ( &$ X $+ (( 2 &

A minha caneta azul ops: escrever, recarregar


atribs: volume de tinta
côr da tinta

A tua caneta azul ops: escrever, recarregar


atribs: volume de tinta

© Ademar Aguiar

.%

4 # $
■ ( $+ (( ( ( & G ( ( J $ (K & (
$ & ( ( "# $ ( $+ ((
■ ! ( "# $ ( ( ( & ( &L $ (K A( &
& + ( (( + G (
■ ; c ! ! ( (( ( K & & +B " ( (
+ ( $+ (( ( "# $ ( & & UN
& $ ((J +B $ & A ( & & ( (
( & $ ( ((M (

© Ademar Aguiar

.)
J
■ A( ( +* & ( & $+ (( ( ( & (
■ ' %( & ( ($ &( E " (
G (F & $+ (( ( & ( $+ (( $

Conta

Conta Poupanç
Poupança Conta Depó
Depósitos à Ordem

■ ( ( "$+ (( ( +B * & &$+ ( (


$ &( & + (

© Ademar Aguiar

.+

8 K 2 2; 2 L
■ "# $ ( "$+ (( N% % % "# $
( $+ ((
■ ( "$+ (( $ &
( $+ ((

Conta Caneta

Conta Poupanç
Poupança Lápis © Ademar Aguiar

.,
■ ! + ( N $ $ P& $ &
"# $ ( $+ (( ( & ( ( + $ & (
( $+ (( $
■ ! + ( ( K & +&
( + & & ( * & (( $ &L $
(E F

© Ademar Aguiar

..

===
■ ! + ( K (( A(
& ( $+ (( (
■ 2 ( ( & $ (N A $
$ +

Transportar passageiros

© Ademar Aguiar

//
8
■ "# $ N "( $ "# $ +
■ $+ (( N a + b ad b "# $ (
■ ( $+ (( ( J ( * & U ( G (
& (& $+ (( ( * ( ( (( (
( "$+ (( (
■ ! + ( +" K & $
$ &* $ $+ (( A $ "# $ K J $ "

© Ademar Aguiar

1
4 # $

© Ademar Aguiar

/
# $
: $ B C
■ +B $I ( $+ (( ( + $ & (
■ ' & J ( N ( &( L&$ (
■ 2 "# $ ( & $ N (
■ +B ( + ( "+ $ $
■ 4 & N ( $+ (( E + & F
■ ($ $ &( (
■ +B J ( N ( $+ (( (

© Ademar Aguiar

4 '
■ ( $+ (( ( & ( $ $ M( $ ( " (
$ & ( "# $ (
■ 0 $H ( $+ (( (
■ 0 & ( "# $ ( N B &
J (
■ !( $I ( A+ $ & + $ (( $+ (( (
■ ! a + & b & $ (( + (
■ ! ( $ &( ( & $ &( ( R&$ & $
"# $ (

© Ademar Aguiar

/"
4

Objectos Métodos

Package

Atributos
Referências
para Objectos

© Ademar Aguiar

/%

H
AcmeVideo

Copy Title Rental

AcmeVideo

Game Member Movie

© Ademar Aguiar

/)
4
AcmeVideo AcmeTools

protected

private

public

public

© Ademar Aguiar

/+

4 # $

Movie
Cada objecto é
uma instância de public void displayDetails()
uma classe.
public void setRating()

private String title;

private String rating;

title: “Gone with…” title: “Last Action…”


rating: “PG” rating: “PG-13”

© Ademar Aguiar

/,
4 # $
■ ! ( "# $ ( ( $ ( + & C
objectRef = new ClassName();

■ A + $ ( "# $ ( C

Movie mov1 = new Movie("Gone ...");


Movie mov2 = new Movie("Last ...");

title: “Gone with…” title: “Last Action…”


rating: “PG” rating: “PG-13”

© Ademar Aguiar

/.

F
■ ! a& b +B ( & C
Q + $ H & "# $
Q 3& $ N ( $ + $+ (( &$ +B "# $ (
$ &( $
Q4 & R&$ & "# $

Movie mov1 = new Movie("Gone...");

mov1 title: “Gone...”


rating: PG

© Ademar Aguiar

/
# $
■ ( J ( (
( B & ■ ( J ( (
+ ( $+ (( ( B &
R&$ ( "# $ (
int i; Movie mov1;

mov1
i 0 null

int j = 3; Movie mov1 = new Movie();

j 3 mov1
title: null
rating: null

© Ademar Aguiar

■ ( R&$ ( "# $ ( R + & ++ N(


&$ +B (
■ ^ ((M +$ R&$ ( "# $ ( & ++
■ %( + & "# $ + " +
& ++ R&$

Movie mov1 = null; //Declare object reference



if (mov1 == null) //Ref not initialized?
mov1 = new Movie(); //Create a Movie object

mov1 = null; //Forget the Movie object
© Ademar Aguiar
8 B
■ " R&$ ( + (
R&$ ( ( "# $ C

Movie mov1 = new Movie("Gone...");

mov1
title: “Gone ...”
Movie mov2 = mov1; rating: PG

mov2

© Ademar Aguiar

* M
■ ( J ( &( L&$ ( $+ ( & $+ (( C

public class Movie {


public String title;
public String rating;

}
mov1 title: null
■ 2 J (a bC rating: null

mov2 title: null


Movie mov1 = new Movie();
Movie mov2 = new Movie(); rating: null

© Ademar Aguiar

"
M
■ ( J ( P"+ $ ( &( L&$ ( $ (
N( abC

public class Movie {


public String title;
public String rating;
… Movie mov1 = new Movie();
} mov1.title = "Gone ...";

if ( mov1.title.equals("Gone ... ") )
mov1.rating = "PG";

Será
Será isto interessante? NÃO!
© Ademar Aguiar

4 $

public class Movie {


public String title;
public class MovieTest { }
public static void main(String[] args) {
Movie mov1, mov2;
?
mov1.title = "Gone with the Wind";
mov2 = mov1;
mov2.title = "Last Action Hero";
System.out.println("Movie 1 is " + ? );
System.out.println("Movie 2 is " + ? );
}
}

© Ademar Aguiar

)
1'
■ N N K + & & ( " &
(+& &(C

modifier returnType methodName (argumentList) {


// method body

}

■ N & ( ( & & &


$+ ((

© Ademar Aguiar

1'

public void setRating(String newRating) {


rating = newRating;
}

public void displayDetails() {


System.out.println("Title is " + title);
System.out.println("Rating is " + rating);
}
© Ademar Aguiar

,
8 '

public class Movie {


private String rating;

public String getRating () {
return rating;
}
public void setRating (String r) {
this.rating = r;
}
}

© Ademar Aguiar

' M

public class Movie {


private String title, rating;
public String getRating(){
return rating;
}
public void setRating(String newRating){
rating = newRating;
}
Movie mov1 = new Movie();
}

Operador ‘.’ : if (mov1.getRating().equals("G"))

© Ademar Aguiar

/
■ ( J ( &( L&$ ( $+ (
■ & ( N ( &( L&$ $ (( J (
&( L&$
■ ! &$ ( + & ( + & $ $+ ((
( + & & &

Movie mov1 = new Movie();



if ( mov1.rating.equals("PG") ) // Error
mov1.setRating("PG"); // OK

© Ademar Aguiar

'
■ ` & + N (( N N
$H + C

int num = 150; num


150
anObj.aMethod(num);
System.out.println("num: " + num);

public void aMethod(int arg) { arg


if (arg < 0 || arg > 100) 150
arg = 0;
System.out.println("arg: " + arg);
}

© Ademar Aguiar
$ '
■ ` & "# $ N (( N &
"# $ & +C

Movie mov1 = mov1 title: "Gone…"


new Movie("Gone…");
rating: "R"
mov1.setRating("PG");
anObj.aMethod(mov1);
ref2
public void aMethod(Movie ref2) {
ref2.setRating("R");
}

© Ademar Aguiar

N# C '
■ ' ( ( N ( $+ (( ( &
■ !( N ( & ( (( & (

public class Movie {


public void setPrice() {
price = 3.50;
}
public void setPrice(float newPrice) {
price = newPrice; Movie mov1 = new Movie();
} … mov1.setPrice();
} mov1.setPrice(3.25);

© Ademar Aguiar

"
I
■ ( J ( &( L&$ ( &$ +B (& (
$+
public class Movie {
private String title;
private String rating = "G";
private int numOfOscars = 0;

■ &$ +B N & $ "# $


■ 3& $ + B G ( ($ + A ( ( $ + $ (&
N $ &(

© Ademar Aguiar

4
■ &$ +B K $+ (( & $
$ &( (
■ ! $ &( N & $ $ & K &
"# $ N $ C
Q; + & $+ a "+ $b
Q0 ( & $+ ((
Q; ( $ $ & &* &

■ ! $ + $ & & $ $ &(


( & (

© Ademar Aguiar

)
: 4

public class Movie {


private String title;
private String rating = "PG";

public Movie() { A classe Movie fornece


title = "Last Action …"; dois construtores
}
public Movie(String newTitle) {
title = newTitle;
} Movie mov1 = new Movie();
} Movie mov2 = new Movie("Gone …");
Movie mov3 = new Movie("The Good …");

© Ademar Aguiar

B N3 C
■ !( N ( &( L&$ $ " & $
& a * (b K "# $ $ &

public class Movie {


public void setRating(String newRating) {
this.rating = newRating; this
}

title : null
void anyMethod() { mov1 rating: “PG”
Movie mov1 = new Movie();
Movie mov2 = new Movie(); title: null
mov1.setRating("PG"); … mov2 rating: null

© Ademar Aguiar

,
3 9

public class Movie { Um construtor


private String title; pode invocar
outro atravé
através de
private String rating; this()

public Movie() {
this("G");
}
public Movie(String newRating) {
rating = newRating;
}
}
Movie mov2 = new Movie();

© Ademar Aguiar

* 4
■ ( J ( $+ (( &$ $+ (( (
$ &( ( ( &( L&$ ( (( $+ ((
■ ( J ( $+ (( ( $+ ($ a( $b &
& $+ ((

public class Movie {


private static double minPrice; // class var
private String title, rating; // inst vars

title title title


minPrice
rating rating rating

classe Movie objectos Movie


© Ademar Aguiar

/
I
■ ( J ( $+ (( ( &$ +B (&
$+
■ &$ +B N +B K & $+ (( N $

public class Movie {


private static double minPrice = 1.29;

private String title, rating;


private int length = 0;

© Ademar Aguiar

1' 4
■ !( N ( $+ (( ( +* ( ( (
&( L&$ (
■ : P ( & + J ( $+ (( C

public static void increaseMinPrice(double inc) {


minPrice += inc;
}

■ N $+ (( ( & $ +B & &


$+ (( R&$ "# $
Movie.increaseMinPrice(.50);
mov1.increaseMinPrice(.50);
© Ademar Aguiar
1' M (

public class Movie {

private static float price = 3.50f;


private String rating;

public static void setPrice(float newPrice) {
price = newPrice;
}
public float getPrice() {
return price; Movie.setPrice(3.98f);
} Movie mov1 = new Movie(…);
} mov1.setPrice(3.98f);
float a = Movie.getPrice();
float b = mov1.getPrice();

© Ademar Aguiar

>
■ A + ( N ( J ( a( $bC
Q &EF
Q * (K EF
Q :.( & +&EF

public class MyClass {

public static void main(String[] args) {


double num, root;

root = Math.sqrt(num);
System.out.println("Root is " + root);
} …

© Ademar Aguiar

"
*
■ J + $+ a & +b N $ &( &
■ J + a & +b & ( $
■ J + a & +b ( &$ +B
■ J + a & +b N & + & P"+ $
$ (( A &

public final class Color {

public final static Color black=new Color(0,0,0);



}
© Ademar Aguiar

O 4
■ ` & ( ( R&$ "# $ (
+ & ( "# $ N $ ( ( M
Q- " $ ++ $ &+" H +B + "# $

■ - " $ ++ $ &N J $
Q; A ( & $ (( & & (&
(( K +K $ & + ( " K & "# $ N + &
( M

© Ademar Aguiar

)
# ' I 67
■ : "# $ +B $ ( E $* F
"# $ + " J%+
■ ( & $ N & + B EF
■ ! N & + B EF N & $ & ( "# $ (
( M

public class Movie {



public void finalize() {
System.out.println("Goodbye");
}
}
© Ademar Aguiar

8
■ & $+ (( ( $ $ ($ $ M( $ ( $ &(
$ &# & "# $ (
■ "# $ N &( L&$ $+ (( $ + C
Q2 %( "# $ ( N( a& b
Q & + %( "# $ N( & $ N ( P"+ $ (
&( L&$
■ !( N ( &( L&$ $ " R&$ a * (b
■ !( N ( & ( + & G (
■ ( $+ (( ( & $ ( $ &( ( &$ +B "# $ (
■ ( & ( J ( N ( + &
$ & ( + " ( X $+ ((

© Ademar Aguiar

,
!

1 3

© Ademar Aguiar

# $
: $ B C
■ A +$ ( $ &$ ( "J( $ ( a + * & b
■ 2 * ( P+ + (
■ +$ + ( a(.&$* & B b
■ ' ($ $ $+ *
■ ( EF & . ++EF

© Ademar Aguiar

"/
4 @

Threads mú
múltiplos Prioridade
de espera e
Trabalhador de regresso

Afectaç
Afectação

Trabalhador Escalonamento pela JVM

© Ademar Aguiar

"

# & ' 53 (
■ N A $ ( K &$ +
■ 2 + & (
■ 2 ( H +* $ &# &
( ( (
■ !( ( " $ &
( " ( & & & (

© Ademar Aguiar

"
# '& 53 (
■ : ( ( + & ( ($ (C
Q ( +$ G (E F
Q ($ " ( ( 3& &
Q " ( ( (
Q; ((

■ !( ( & + & ( (( ( $ " (


+ +B

© Ademar Aguiar

"

& 53 (
■ +* ($ $ ( $
E +B 2 &K & ( B & 1( M (F
■ +B & +E & $
( & $ F
■ D & &( E( + $ +H $
+ $ $ & +F

© Ademar Aguiar

""
# 53 (
■ ; Y
■ + C
Q +B P& $ (( ( " $*
Q:( ( + % $ ((
Q:( ( + %
Q:( ( + %*
Q:( ( + % $ ((

© Ademar Aguiar

"%

4 53
■ &N ( *
■ & $ ( ( $ &( (
■ & $ ( ( N (
Q 0* $ & 0* EF
Q 0* (+ EF
Q 0* ( ; EF
Q 0* ( + EF

■ ($ + & ( + D
■ +B (( $I * (

© Ademar Aguiar

")
> I 53
■ 2 $ & *
■ $ * N N$& $ K K
( * ( A $

public static void main (args[] s) {


System.out.println("I am thread " +
Thread.currentThread().getName());
try {Thread.sleep(5000)}
catch (InterruptedException e){}

}

© Ademar Aguiar

"+

4 53
■ 5 2 & $+ ((
Q ' & ( "$+ (( 0*
Q" 4 & ( N &EF

■ 3&( &$ A $ *
Q 2 &( L&$ $+ ((
Q " 3& $ N ( EF

■ < ! ($ + & & $ N &EF

© Ademar Aguiar

",
4 4

public class SleepingThread extends Thread {


public void run () {
Date startTime = new Date();
try {Thread.currentThread().sleep
((int) (1000 * Math.random()));}
catch (Exception es) {}
long elapsedTime =
new Date().getTime() - startTime.getTime();
System.out.println(
Thread.currentThread().getName() +
": I slept for " + elapsedTime +
"milliseconds"); }}

© Ademar Aguiar

".

>

public static void main(String[] args) {


new SleepingThread().start();
new SleepingThread().start();
System.out.println("Started two threads…");
}

Started two threads…


Thread-1: I slept for 78 milliseconds
Thread-2: I slept for 428 milliseconds

© Ademar Aguiar

%/
8 3
■ !( ( $ $ (( $ ( J (
* (C

public class BankAccount {


private double balance;
public void withdraw(double amt) {
balance -= amt;
}

• Utilizar a palavra synchronized para evitar


conflitos de recursos partilhados.

© Ademar Aguiar

4 * 53

sleep()
start()
Ready to wait()
New thread run
other

Escalonado pelo JVM


notify()

Dead Running Blocked


I/O block

© Ademar Aguiar

%
& 53
■ +B EF "+ K * $ +
■ ! * $ & & "# $ (
( &$ & B E(.&$* & B F
■ ! & ( J ("+ K K & EF & $
■ ! * ( & & & M
A
■ & . ++EF $ ( ( * ( "+ K (

© Ademar Aguiar

1' P 3 I
■ : * & $ N (.&$* & B & &*
* A $ N ( &$ & B &
( "# $ N * $ + (

public class CheckOutFrame extends JFrame {


public synchronized void updateElapsedTime() {

}
public synchronized void
computeAverageTime(Date old) {

}
© Ademar Aguiar

%"
1' P 3 I

public class BankAccount {


private double balance;
public synchronized void withdraw(double amt) {
balance -= amt;
}
public synchronized void deposit(double amt) {
balance += amt;
} …

© Ademar Aguiar

%%

4 P 3 I E
■ 2 + $I( & K ( (
N (( # (.&$* & B

void FinishButton(ActionEvent e) {

finished = true;
while(elapsedTime == 0) {}
jText.setText("…");
}

© Ademar Aguiar

%)
# 53
■ 3 + & 4 && "+
■ 3 + & N &EF
■ 2 &( L&$ $+ (( E "# $ + F
■ 2 &( L&$ 0* (( & "# $ +
$ L
■ 3& $ ( EF & "# $ 0*
■ ! ($ + & & $ &EF ( " "# $ +

© Ademar Aguiar

%+

> 8
public class MyApplet extends Applet
implements Runnable{
private Thread t;
public void startApplet(){ // called by
browser
t = new Thread(this); // creates a new
// runnable Thread
t.start(); // starts the new Thread
}
public void run(){ // The new runnable Thread
… // calls run() and the
// method runs in a
} … // separate thread

© Ademar Aguiar

%,
■ 2 * E5 5 F
■ ! ($ + & & N & & ((
Q * + & " A %

Q 0* ( + & $ ((
Q 0* ( R& $ ( ($ + & (
$ $ +

© Ademar Aguiar

%.

"!

4 D F H 6 4 D7

© Ademar Aguiar

)/
5 :
■ ( ([ + (
■ : &
■ J$ + $ &
■ $ &
■ A + (
Q : $I K + &I +(

© Ademar Aguiar

: 3
■ : & & $ + &
■ ( $ $ & $ &( M +&
■ + (
% 7( +\& 7 &I 7 ( EFU
Q+ EF & $ N EF $+ (( 7 &I 7(

© Ademar Aguiar

)
D F H 4
■ 3& "+ & 3( & (
■ 4 B ( & B 3(
■ 4 B ( ( &* + & 3(
■ +B (

© Ademar Aguiar

# $ 4 D F H
■ 3 K &
Q ;P & $ (
Q ;P N ( & $
Q $ ( $ &$ (

■ 0 $ " ( ($ + $ G ( ED $ O (* "+ F
■ $ & ( .(

© Ademar Aguiar

)"
: 4D
■ 3&$+ M ( '8 5
■ * C11# ( &$ 1 $(1" I(1 +1$ ++ $ &(1

© Ademar Aguiar

)%

: 3
interface List {…}
class LinkedList implements List {…}

List l = new LinkedList();
l.add( new Date() );
Date d = (Date)l.get(0);

© Ademar Aguiar

))
■ 2 ++ $ &
■ :
■ 7(

■ : :
■ :

© Ademar Aguiar

)+

4 Q
■ 3& $ (
Q2
Q3

■ 2+ (( (
Q 2 ++ $ &(
Q .(

© Ademar Aguiar

),
4
■ "# $ (
■ &$ ( N (C
- int size();
- boolean isEmpty();
- boolean contains(Object);
- Iterator iterator();
- Object[] toArray();
- boolean add(Object);
- boolean remove(Object);
- void clear();

© Ademar Aguiar

).

-
■ : * 2 ++ $ &
■ $ + $ "# $ ( & & (
■ ; + & ( +$ (
■ !( ( ( N ( 2 ++ $ &
Q ( L& $ N & U " +B & $ &

■ 3 + & "( $: O (*: 0 : _

© Ademar Aguiar

+/
?
■ 7( * 2 ++ $ &
■ $ + $ "# $ ( & & (
■ + & ( +$ (
■ &$ ( N (C
- Object get(int);
- Object set(int, Object);
- int indexOf(Object);
- int lastIndexOf(Object);
- void add(int, Object);
- Object remove(int);
- List subList(int, int);
- add() inserts
- remove() deletes

■ 3 + & "( $ 7( .7 ( 7 &I 7( D $

© Ademar Aguiar

1
■ & * 2 ++ $ &
■ "# $ K $* ( + (
■ 2 $* + (( $
■ D ( "( & $ # +'$ & .
■ ! & ( & $ $+ (( ( + &
■ &$ ( N (C
- int size();
- boolean isEmpty();
- boolean containsKey(Object);
- boolean containsValue(Object);
- Object get(Object);
- Object put(Object, Object);
- Object remove(Object);
- void putAll(Map);
- void clear();
■ 3 + & O (* O (* "+ " ( 0 _

© Ademar Aguiar

+
1
■ N (
- Set keySet();
- Collection values();
- Set entrySet();

■ & .
Q ! "# $ K $ &N $* % +
- getKey(), getValue()

■ 0* ( .
Q ($ + $ G ( & (( $ ( +
% ` & N + $ + $ "N N +

© Ademar Aguiar

■ 4 ( & $ $+
■ 2 2 ++ $ & EF
■ : + X & &
Q; ( +* (
Q EF & $ &

■ &$ ( N (C
- boolean hasNext() devolve true se a iteração tem mais
elementos
- Object next() devolve o próximo elemento na iteração
- void remove() remove o elemento corrente da colecção

© Ademar Aguiar

+"
?
■ & $ 7( 3 * 3
■ 2 7( +( 3 EF
■ $ & N (
QD ( 7( K +K $
Q $ 7( &

■ N ( $ & (C
- hasPrevious(), previous()
- nextIndex(), previousIndex()
- set(Object), add(Object)

© Ademar Aguiar

+%

- ! 0
■ O (*:
Q : " ( & * (* "+

■ 0 :
Q + & " ( & J " &J " + &$
Q3 G & ( + & (

© Ademar Aguiar

+)
? ! 0
■ .7 (
Q + & &(.&$* & B ( N (+ (
" ( & . &* &L $ +$ D $

■ 7 &I 7(
Q + & " ( & +( + & +
Q +* &$ K .7 ( ( ( + & (
K & & &( (1 (& +(
Qe + K ( "+ % & K (E K (F

■ D $
Q + & (.&$* & B " ( & . &*
&L $ $ N (+ ( $ & (

© Ademar Aguiar

++

1 ! 0
■ O (*
Q + & $ " ( & " + * (*
Q 3 R& $ O (* "+ (( $* ( + ($ & ++

■ 0
Q + & " ( & J " &J " + &$
Q3 G & ( + & (

■ O (* "+
Q + & (.&$* & B " ( & " + * (*
$ N ( ,+ ( $ & (

© Ademar Aguiar

+,
#
■ ' ( &"+B 2 ++ $ &( ( EF
■ .( ( E! "# $ fgF & .(
■ : : : & $ (
Q 2 ++ $ &( K & (( ( + & ( & (
Q !( ( & ( &

■ ! 2 ++ $ &3 + & &(


Q0 : 0

© Ademar Aguiar

+.

# G
■ 2 "+ & $
Q' ( + & ( ( + & ( : :
Q' ( + & ( ( $* (:
• int compareTo(Object o)
Q' & & + ( "# $ ( $+ ((

■ 2 & $
Q' & & K $ ( "# $ (
Q (K ( & ( (
• int compare(Object o1, Object o2)

© Ademar Aguiar

,/
# 0
■ $+ (( + & $ & (
& G N & $ & &
A$ A $
&( ! & A$ &

© Ademar Aguiar

1 4 0
■ "+ 1 & "+
Q "+ C $ + $ G ( K ( G (
$ C EF EF $+ EF
Q & "+ C $ + $ G ( K & ( G (
$

■ "+ 13 "+
Q3 "+ C $ + $ G ( K & K & &*
$ J( $ G (
& C EF ( B EF $ & &(EF
Q "+ C $ + $ G ( K & & ( J (

© Ademar Aguiar

,
53 P
■ ( 2 ++ $ &( (( ;h! ( * %(
( &$ ( +$
■ : + G (C
Q &$ ( + 2 ++ $ &(
Q :.&$* & B 2 ++ $ &(
- List list = Collections.synchronizedList(new ArrayList(...));

Q & "+ 2 ++ $ &(


- List list = Collections.unmodifiableList(new ArrayList(...));

Q +% ( (

© Ademar Aguiar

4 Q
■ 2 ++ $ &(
- sort(List)
- binarySearch(List, Object)
- reverse(List)
- shuffle(List)
- fill(List, Object)
- copy(List dest, List src)
- min(Collection)
- max(Collection)
- synchronizedX, unmodifiableX factory methods

© Ademar Aguiar

,"
4 Q G
■ .( E N ( + $J ( .(F
• sort
• binarySearch
• equals
• fill
• asList – retorna um ArrayList com os conteúdos do
array

© Ademar Aguiar

,%

%!

-F

© Ademar Aguiar

,)
4 ? P

© Ademar Aguiar

,+

# $
■ & $ & $ ( J $ ($ +B
( & : &
■ 2 &* $ * K $ & & ( J $ (
■ & + & (

© Ademar Aguiar

,,
OQ E
■ # A( & ! & &
Q; "
Q; ( E & (( + ($ A ( J+ F

© Ademar Aguiar

,.

#
■ $ &# & $ A ( J+ ( + ( & 1( M (
Q "+ $ ( $ (* (( ' + E2 & & & ! "# $ (( F
Q ( &( & $ A J+ $ " !8

Q "+ $ ( $ (* 2 & ' + E2 & & & ! "# $ (( F


Q ( &( +( G ( i ( ; 2 &$ +

Q "+ $ ( $: & (* 3& ' + E2 & & & ! "# $ (( F


Q ( &( $ A & + & B
$ : &

© Ademar Aguiar

./
■ 2 & & (C $ ( ( ( &* ( & N$ &
Q A + (C " $ A A K

■ 2 & & (C ( +H $ ( $ & & (


Q A + C & +

■ 0 %+ +$ & & (C + & ( &$ ( (I


Q A + (C $ A ( J+

© Ademar Aguiar

OQ ! R 5 -F
■ 3 &$ + : & E '8 5 5 5F
Q2 $ &# & $+ (( (1 N ( ( & + - 3b(
+ % + E "( $ ) & & 0 +I ) 0F
Q "+ ) 0C & ( $ & & ( U+

■ : & E ' 8 5 FC : &


Q & " "+ $ ($ " % K
( & + & J $ ( - 3b( ( ( (

■ : & )0
Q " ( A( & $ +
Q: J$ ( ( U B ( & ( R K ( " (

© Ademar Aguiar

.
-F !3 &
$ = =# $
S22$ = F =4
S22$ = F =4
S22$ >= F = 4
T S22$ >= F =
T S22$ >= F = ?
T S22$ >= F = 1
T S22$ >= F = #
T S22$ >= F =
T S22$ >= F = 5 > D
T
S22$ = F =R F
S22$ = F =D
S22$ >= F = D

© Ademar Aguiar

4 -F ! '
■ 1( :B
■ 1( : B
■ 1( 7 $ &
■ 7 & *1) *
■ &
■ ( / $I & E2 + F
■ ( & E &F
■ ( & "+ 1( & "+ E" + &F
■ (D ( "+ 1 ( D ( "+ E" + &F
© Ademar Aguiar

."
D
■ N # & + J $ K ( (
$ & ($ & & (
■ "+ $ ( 0 + E: & + F
Q & M + " # & +
■ "+ $ ( ' + 2+ ( ! &E & F
Q' & $ A $ K & $*
QD + $ C T30S! ;S27! :
■ "+ $ 2 & & 2 & & & EF
Q4 & J $ & + # & + & ($ & & ( (
$ & (
■ "+ $ $IEF
Q4 &( & K ($ & & ($ "
■ "+ $ (* EF
Q ( & N$ &
© Ademar Aguiar

.%

■ ! $ & & ($
Q N$ & K +B (( & & $
A $ $ &

■ "+ $ / &E: & A F


Q2 & " $ A

■ "+ $ : & 0 A EF
Q4 & A ( & "

■ "+ $ ( 0 A E: & A F
Q' & A "

© Ademar Aguiar

.)
?
■ K A N ( + (( & A
( +B & N$ & J $ & $
& ( " ($ & & (
■ "+ $ 7 " +E: & AF
Q2 & K $ A

■ "+ $ : & 0 A EF
Q4 & A $ + K

■ "+ $ ( 0 A E: & A F
Q' & A K

© Ademar Aguiar

.+

5 > D
■ $ A N$ K ( A
( + +B
■ "+ $ 0 A + E& $ + &(F
Q2 & $ A $ &P $ + & (

■ "+ $ : & 0 A EF
Q4 & A $ + & B & & $

■ "+ $ ( 0 A E: & A F
Q' & A $

© Ademar Aguiar

.,
4 (
■ 2 NK ( $ $ & $
$ & & ( ($ & K + &* K
(( K & # & + N ( &* N
+ E & B A B $F]
■ ($ & & "( + E2[[ 2j $F ( $ $ (
$ & ( A $ ( $ $ & &
■ 7 . & (E F( "# $ ( ( $ (K
$ & ($ & ($ & & ($ " (
$ N (" & (

© Ademar Aguiar

..

? P 1 E

© Ademar Aguiar

//
4
■ $ & & N "# $ K ($ & & (U B
( ( ($ & & &* ( $ N (
&( & &
■ "+ $ E2 & & $ F
■ "+ $ E2 & & $ ! "# $ & F
Q $ & $ & & $ & & & + & & &
( " & ($ &
■ "+ $ E2 & & $ F
■ "+ $ ( 7 . E7 . & F
Q' & + . & +B ($ & ($ & & (&
$ & &
■ "+ $ + EF
Q 3& + . & K % ($ & ( "# $ ( & $ & &

© Ademar Aguiar

■ & +N $ & & ( (


■ "+ $ & +EF
Q 2 &( H & & +$ + + . & ((

■ "+ $ & +E7 . & F


Q 2 &( H & & +$ + . &

■ "+ $ &2 & & E- * $( F


Q ' ( &* & + & N$ &

■ "+ $ + EF
Q & $ ($ & & ($ & & (& & +

© Ademar Aguiar

/
? P
■ ' $ & & $ &$ G (C ;! 40O :! 0O
) :0 :0 2 ;0 4
■ ;! 40O :! 0O A & &$* &
* B & + +B &( $ +
■ ) :0 :0 A & &$* & $ +
+B &( * B & +
■ 2 ;0 4 +B ( & $ + ( ( & (
$ & & (

© Ademar Aguiar

D F? P
■ 0 $ & & $ J & J
&$* (K $
" A
■ !( $ & & ( (( ( &(G ( $ (
* B & ( (
■ !( $ & & (( ($ & ( + K (
$ & (
■ ` & & $ ((J ($ & & ( (( + &*
( &

© Ademar Aguiar

/"
O ? P
■ 0 $ & & $ +* + &* ( $ + & (
&* ( (
■ !( $ & & (( &( & ( + &
E* B & +1 $ + & F & & & & (( (
&(G ( (
■ %( ( $ $ + &* (1$ + & ( & $
A &( & $ ( #

© Ademar Aguiar

/%

>? P
■ + &* ($ & & (& $ & & & P& $ + &*
$ + &
■ !( $ & & ( ( (( ( &(G ( ( (
+ &* ( $ $ ( + &* &
■ $ &( $ & & $ " A
+ . NC
Q/ A $ O B & +/ AEF
Q / A$ D $ +/ AEF

© Ademar Aguiar

/)
# ? P
■ 2 7 . C$ ( $ ( +* (U & (
N (M + $ &( &

■ - / 7 . C + $ +$ (" ( & ( (
( $ & & & &

■ 2 ( 1 & ++ + . C & ( G ( "( + (


+B & ( :B ( 7 $ &
© Ademar Aguiar

/+

? P 1
■ 2 $ # & + $ + A $ ( +B & (
+ . & ( ( & (]

© Ademar Aguiar

/,
- !4 ? P
■ 2 J& ( & J& (
■ 2 J& + ( + . & $ "&
$ (+ . ( $ &( %( " + . ( (
$ + A ( ( (
■ A +
Q` & ( J & (]
Q` + + . ( $ + (]

■ &C 2 ( &
© Ademar Aguiar

/.

4 ? P 4 >
2 & & & *\& & +E& + 7 . EFFU
& * E& / &E,/ & 5,FFU
& * E& / &E,/ & ,FFU

2 & & ( *\& & +E& / 7 . EFFU


( * E& 7 " +E,: * ( ,F / 7 . ) :0FU
( * E& 7 " +E,: * ( ,F / 7 . :0FU

2 & & $ \ 2 & & & EFU


$ E& * / 7 . ;! 40O FU
$ E& / &E,2 & / &,F / 7 . 2 ;0 4FU
$ E( * / 7 . :! 0O FU
© Ademar Aguiar

/
? H D
■ : & : & " "+ $ + % +
- 3b( + (( & ( ( $ ( E+ I? +F
■ 7 I? + (( C +
.V
3 & ( 7 I & +E
3 & :.( 7 I & +2+ ((; EFFU
W $ $* E A$ & FVW

© Ademar Aguiar

8 B
■ 0* 0 +C D ( + 3& A * : & 2 & &(
Q* C11# ( & $ 1 $(1" I(1 +1
( & 1$ & & (1$ & &(* +

■ 0* 0 +C 7 . & ! 2 & &() *&


2 & &
Q * C11# ( &$ 1 $(1" I(1 +1 ( & 1
+ . 1& A* +

© Ademar Aguiar
1

© Ademar Aguiar

■ A $ N & &
■ !( $ & & ( J $ ( & & ( N(
$ G ( +B ( K ( ( ( (
■ !( & (( $ " ( ( ($
" ( $ N ( N% & ( &$ &* & (
& (
■ ! ( & ( & (E & %
& F

© Ademar Aguiar

"
J 3P
# + & ! "# $
[%%# + & ! "# $
[%%# )0 &
[%%# & $ & &
[%%# & 0 A &
[%%# & 2 & & &
[%%# & $ ( &
[%%# & ) & &
[%%# & 3& &
[%%# & 8 . &
[%%# & ( &
© Ademar Aguiar

0 6 7
■ 0 & ( ($ & : &
■ 4 ( & $ K $ & $ & &
- 3
■ : $ ( C
Q 2+ K ( " G (
Q $ ( $ 2* $I " Ab(
Q 2+ K ( & (
Q (( & f& g $ ( A
Q $

© Ademar Aguiar

)
K L6 7
■ $ & +( & ($ & & (
■ ! N +( & ( J& $ K &
& $ E K & " N F
■ & ( $ + B %( $ &7 ( & b(

© Ademar Aguiar

> ?
11 U. &b *(
"+ $ & $ $ &7 ( & V
$ & E $ & & & FU
W

11 &( (( * & * " & ( $+ $I


"+ $ $+ (( . $ &7 ( & + &( $ &7 ( &
V
"+ $ $ & E $ & & & FV
:.( & +&E & $$ Y FU
W
W
© Ademar Aguiar

,
?
/ &" &\& / &E " & 5 FU
. $ &7 ( & +( & \& . $ &7 ( & EFU
" & $ &7 ( & E+ ( & FU

11 & " & ++ & & $$ Y * & $+ $I


11 $ &7 ( & * ( & &. $ & &(

© Ademar Aguiar

$
■ "+ $ ! "# $ : $ EF
Q4 & "# $ K & &

■ "+ $ : & $ &2 & EF


Q4 & ( & K ( & ( &

■ ` ( C & $ + $ $+ (( + ( & ]

© Ademar Aguiar

/
? K 4 L
"+ $ $+ (( ! V
$+ (( 3&& + & ( $ &7 ( & V
"+ $ $ & E $ & & & FV

W
W

"+ $ ! EF V
/ & ./ &\& / &EFU
./ & $ &7 ( & E& 3&& EFFU
W
W
© Ademar Aguiar

? K P L
"+ $ $+ (( ! V
"+ $ ! EF V
/ & ./ &\& / &EFU
./ & $ &7 ( & E
& $ &7 ( & EF V
"+ $ $ & E $ & & FV

W
W
FU
W
W

11 & &. ( && $+ (( ( ( *& Y

© Ademar Aguiar
? D
"+ $ $+ (( ! A & (
+ & ( $ &7 ( &
V
"+ $ ! EF V
/ & ./ &\& / &EFU
./ & $ &7 ( & E * (FU
W

"+ $ $ & E $ & & & FV

W
W
© Ademar Aguiar

8 B
■ 0* 0 +C O ) $ &7( & (
Q* C11# ( &$ 1 $(1" I(1 +1
( & 1 & (1 $ &+ ( & * +

© Ademar Aguiar

"
© Ademar Aguiar

# & ' (
■ ^ K ( &( & J &
" N A $ $ (( J & & " (
Q ( J & ( " $ & & $ & P (
& $ ( + N # ( $
Q ( + ( ( &(J + + (
+ &$ +

■ 3 + & C $ & & &$ + $

© Ademar Aguiar

)
F
■ ( + ($ & D + $* &
& " (

■ "+ C (" ( ( " E : 3 ; ($


@ $F & ( ( &"+B D 559
■ : + 5C ( & ( $+ (( (1 (
K #J A ( ( 559
■ : + C +B + %&
" ( $ $ +B (& ( (
© Ademar Aguiar

3 J 3P
# + & ! "# $
# 2 & &
# 2 & &
# & +
# +
javax.swing.JApplet

© Ademar Aguiar

,
$ >= F =
■ ' & ( & + & C
Q; N & $ ((J N &
Q; N & $ ((J & $ (* EF EN J $ YF
Q; N & $ ((J & ( ' + 2+ ( ! &E F
Q; N & $ ((J ( :B E F1 $IEFU &* N &
+ J & "
Q; N & $ ((J ( 0 + E: & FU M + N + J & "

© Ademar Aguiar

! 0
■ ; ( $ &( " $* ( ($ +B
■ ; ( $ &( ( " + $ + G ( $ (
$ ( +N ( J & +
■ ; N ((M + A $ (
■ ; ( $ &( ( " & ( " ((
$+ &
■ ` +K # & + " + J ( &
&

© Ademar Aguiar

/
! '
■ "+ $ & EF
Q 3& $ + " ( K & + N ($
B

■ "+ $ ( EF
Q 3& $ + " ( ( K +B ( J & "

■ "+ $ ( EF
Q 3& $ + " ( ( K +B " & & J &
" +

■ "+ $ ( .EF
Q 3& $ + " ( K & ( &

© Ademar Aguiar

F :; =
■ A + J & "C

kO 0 7l
kO ' lk0307 l .>( + k10307 lk1O 'l

k/! ' il
k 7 0$ \, . $I 1 . + $+ ((,
*\@ * * \< l k1 7 0l
k1/! ' il
k1O 0 7l

■ "+ C& ( + % &U + '8 5 5


© Ademar Aguiar
F :; =
kO 0 7l
kO ' lk0307 l A + k10307 lk1O 'l
k/! ' il
k! / 20 $+ (( \,$+( C9 ' 629@ % @@ %55' 5%/< 6% 9 @66' 6<, *\@ * * \<
$ " ( \,* C11# ( &$ 1 $ (1 + &15 < S 1# &( ++%5< S % &< $ "jD ( &\5 < ,l
k 4 & \,$ , + \, . $I 1 . + $+ ((,l
k 4 & \, . , + \, +$ &1A%# % + U ( &\5 <,l
k2! ;0l
k / ' . \, +$ &1A%# % + U ( &\5 <, $ \, . $I 1 . + $+ ((,
*\,@ ,* * \,@ , ($ "+ \ +( + &( \,* C11# ( &$ 1 $ (1 + &1
5< S 1 + &% &( ++ * +,l
k;! / ' l k1;! / 'l
k1 / 'l
k12! ;0l

k1! / 20l
k1/! ' ilk1O 0 7l
© Ademar Aguiar

J 51? 4
■ * C11# ( &$ 1 $ (1 + &15 <1$ & * +
■ 2 & J & O0 7 ( (& ( (K
$ & $ + %& (( " + & (& (
( 5 <[ ($ : &

© Ademar Aguiar

"
R H
■ ; ( ( C0 +I >( 3 E: & F
■ ( & (C + >( 3 E 47F
3 E 47 : & F N (E ( $ + $
& "F

■ ; ( ( C + 3& : +
$*
■ ( & (C & 47E + F &: EFU
E ( $ + $ $* & "F
© Ademar Aguiar

8 B
■ 0* 0 +C ) & + (
Q* C11# ( &$ 1 $(1" I(1 +1 + 1

■ O0 7 2 & &+
Q* C11# ( &$ 1 $ (1 + &15 <1$ & * +

© Ademar Aguiar

)
)!
U- A :
1 > 0

© Ademar Aguiar

5 > 0

© Ademar Aguiar

,
> 0
■ E $ $* F J + ( (K
$ & $ & A $
■ ( $ $ & ( ( &
A$ G ( ( & (
■ ! $ ( & E * F (
■ ( & $ "# $ ( ( (
K ( $ ( E A$ &( F
■ $ * K A &(M + $+ (( (
A$ G ( & ( $(

© Ademar Aguiar

5 > 0 U
■ A$ G (E ( ( + ( + FC
Q ( 31! E $+ 1 + .1 ($ 1 & (F
Q ( E& & 7 ;F
Q2 ( & + + ( &$ "# $ ( E& ++F J $
Q m& $ .1$ + $ (+ (

■ ( E& ( ( + ( $ & & & FC


Q + H
Q 1" 1 $ (* & D + $* &
Q 2+ (( ( K ( + $ (

© Ademar Aguiar

"/
J & 3 >
# + & 0* "+

0* ' *
! ! .
D + $* &
A$ &
) 0 A$ &
3! A$ &
+ ; &A$ &
+ 47 A$ &
4 A$ &
: $I A$ &
4 & A$ &
* $ A$ &
2+ ((2 ( A$ &
3++ + & A$ &
3& A! ! / & ( A$ &
; ++ & A$ &
&( ! & A$ &
© Ademar Aguiar

"

> 0 43 H =8
■ $* $I C
Q ( $ ( ( + $ & + & ((
U' D ( ( + & (( $H ( &
& $ +

■ &$* $I E & FC
Q: $ + & (( Y
QE + & F ( (( (( &
& +( ( ( & $H E $ ( G ( F
Q; $( ( ( ( $ K $ (*
& $ ( $ &

© Ademar Aguiar

"
O > 0 8
■ ( ( K +K $H +
■ ; $( ( ( E* & + F + ( $* (K (
&*

public Object get(int index) {


// verificar se argumento é válido
if (index < 0)
throw new IndexOutOfBoundsException(“indice < 0!”);

return dados[index];
}

© Ademar Aguiar

"

O K4 3 H > L
■ ; $ " +* N ( ( $ $ ( ( ( A$ G (
K + & E * ( F
■ ` & $ N K (( & A$ G ( J%+ (
& (( (( ( A$ G ( K & $

public void readFile(String fileName) throws IOException {


if (!canRead(fileName))
throw new IOException(“Can’t read file!”);
else
doSomething();
}

© Ademar Aguiar

""
-A >
try
{
codeThatMightCrash();
}
catch (KindOfException exceptionVarName)
{
// code to deal with index exception

}
// optional!
finally {
// code to execute after the “try” code,
// or exception’s “catch” code, has finished running
}

© Ademar Aguiar

"%

5 @ > 0
try {
codeThatMightCrash();
moreBadCode();
} catch (IndexOutOfBoundsException ioobe) {
// code to deal with index exception
} catch (IOException ioe) {
// optional; code to deal with i/o exception
} catch (Exception e) {
// optional; code to deal with any other exception
} finally {
// optional; code to execute after the “try” code,
// or exception’s “catch” code, has finished running
}

© Ademar Aguiar

")
5 PU4 3! >
try {
readFile(“hardcode.txt”);
} catch (IOException ioe) {
// code could throw compile-time IOException; must catch.
// I’ll handle it by printing an error message to the user
System.out.println(“Unable to read file!”);
} finally {
// whether it succeeded or not, I want to close the file

closeFile();
}

© Ademar Aguiar

"+

5 PU4 3! >
while (true) {
int index = kb.readInt();
try {
Object element = myCollection.get(index);
break; // if I get here, it must have worked!
} catch (IndexOutOfBoundsException ioobe) {
// wouldn’t have to catch this runtime exception...
System.out.print(“Bad index; try again.”);
}
}

© Ademar Aguiar

",
> 0 !K L
■ 3 &( E:.( & +&F
■ " $ A E - 3(F
■ D + & +B E ( $+ F
■ 0 & & & E "+ ( 31! F
■ 2 E& ( ((M +F
■ 4 %+ & A$ E + & + N $
$ &( J A$ F

© Ademar Aguiar

".

K1 L > 0
■ 0 .%"+ $I K & (
■ 0 .%"+ $I & (
■ /+ $ &( G ( $ $* &N $ E A$ &F
■ /+ $ &( G ( $ $* & $ B EVW ]F
■ 0 A$ & K & (
$ N E& ++ & AF

© Ademar Aguiar

%/
>
public class DeckException
extends RuntimeException {
public DeckException(String message) {
super(message);
}

public String toString() {


return “Error in deck card: “ + getMessage();
}
}

© Ademar Aguiar

0 G
■ ; ( $ &( + &( (C K R]
■ ( A$ G ( $ ( (J (C
Q 31!
Q 1 & &
Q 3& $ $H
Q 2H $ + A E + $ & F

© Ademar Aguiar

%
U:
■ !" ( N ( + & $* $I A$ &(
" % ( ( ( ( ($ (
■ 0N$& $ " & (( & C
& 4 & A$ &EF & : $I0 $ EFU
■ (( G (E : 5 @FC ( (" + & (
public void deposit(double amount) {
assert amount >= 0.0;

■ " C $+ ( 1 ' / E ' 8F


■ + & +& _
© Ademar Aguiar

8 B
■ 0* 0 +C A$ &%O & + &
Q * C11# ( &$ 1 $(1" I(1 +1# 1
& ( & " + (1 A$ &* +

■ 0* 0 +C O & + & ( * A$ &(


Q* C11# ( & $ 1 $(1" I(1 +1 (( & +1
A$ &(1 & A * +

© Ademar Aguiar

%"
U- A

© Ademar Aguiar

%%

# $
■ & + ( $* (
■ 2 & + & $ 31!
■ & ( +B "# $ (
■ 2 & " ( $ (( $ ( ( "
+ (( $

© Ademar Aguiar

%)
-
■ ( C "( $ ( &
(
■ ! ( ". ( + E& F E F( (
■ ( & P+ + ( & ( (C
Q $* ( ($
Q! $
Q J & "
Q' ( ( &
Q E $+ $F

© Ademar Aguiar

%+

J & -
■ # 3& : ■ # ! :
Q 3& : Q /. .! :
Q + 3& : Q + ! :
Q ! "# $ 3& : Q ! "# $ ! :

© Ademar Aguiar

%,
-
■ N ($ &( ( ( & ( ( C
• int read() throws IOException
+R ". E$ $ F (
• void reset() throws IOException
&$ ( K ( ( ( ". ( (( ( + (& &
• void close() throws IOException
& $ ( K + A ( (

© Ademar Aguiar

%.

# -
■ N ($ &( ( ( & ( ( C
•void write(int n) throws IOException
($ ". E$ $ F (
•void flush() throws IOException
($ ( ". ( K ( X ( ( ($ (
•void close() throws IOException
& $ ( K K + A (
(

© Ademar Aguiar

)/
> 61 Q G7
try {
InputStream in = new FileInputStream(“file.txt”);
char oneLetter = (char)in.read();

String str = “a long string”;


OutputStream out = new FileOutputStream(“file.txt”);

// write each letter of string to file


for (int ii = 0; ii < str.length(); ii++)
out.write(str.charAt(ii));

out.close();
} catch (IOException ioe) { ... }
© Ademar Aguiar

D -
■ ( K " N (( ( ( (
■ %( $ $ ( ( ( $ "& (( (
$ $ (1$ $ M( $ (
■ ( A $ & &$ & + X(
& +* ( &$ & +
■ A + ' $ &

InputStream in = new FileInputStream(“file.txt”);


DataInputStream dis = new DataInputStream(in);
double number = dis.readDouble();

© Ademar Aguiar

)
8 R
■ 2+ (( ( + J ( # +B ( (
■ 2 + +* ( N ( ( ( & %& (
( " ( (
■ ! A + : &

■ !( ( ( ($ &( K ( (

© Ademar Aguiar

K8 L
■ java.io.Reader
• public int read() throws IOException
• public boolean ready()
■ java.io.InputStreamReader
• public InputStreamReader(InputStream in)
■ java.io.FileReader
• public FileReader(String fileName)
■ java.io.BufferedReader
• public BufferedReader(Reader r)
• public String readLine() throws IOException

© Ademar Aguiar

)"
1
InputStream in = new FileInputStream(“hardcode.txt”);
InputStreamReader isr = new InputStreamReader(in);
BufferedReader br = new BufferedReader(isr);
String wholeLine = br.readLine();

// or, shorter syntax for reading files...


BufferedReader br2 = new BufferedReader(
new FileReader(“hardcode.txt”));
String anotherLine = br2.readLine();

■ ( B ' $ &
© Ademar Aguiar

)%

$ = ! U#
■ ; ( &$ & + ( &$ +* ( (
" & ( ( 31! $* ( ( $* $ %
( ( + $ A ((G ( + (
■ & 3 # & $ & &$ & + X 3 #
■ ( 3( ;3! &$+ ( & C
Q/ ( ( ( (
Q2 $ ( ($ $ ( & & ( $* $ %(
Q &% $* & N( A ((G ( + ( +
Q 2* && +( & "( $ 31!
Q & $ $* K ( + $I( &
H
Q $+ & &%"+ $I & 31! ($ ( ( ($ +J (

■ (& ( 3( ( ( ( $ ( P ( ( ( G ($ + A (
© Ademar Aguiar

))
- I
■ 7 ($ "# $ ( (
( A $ ( & ( (
■ ( H ( "# $ (
( ($ $* (
N( " $
■ $ & ( (
"# $ A +
" J

© Ademar Aguiar

)+

4 - I
■ java.io.ObjectInputStream
• public ObjectInputStream(InputStream in)
• public Object readObject() throws ...

■ java.io.ObjectOutputStream
• public ObjectOutputStream(OutputStream out)
• public void writeObject(Object o)
throws IOException

© Ademar Aguiar

),
> - I !
try {
OutputStream os = new FileOutputStream(“file.txt”);
ObjectOutputStream oos = new ObjectOutputStream(os);
oos.writeObject(someList);
oos.flush();
os.close();
} catch (IOException ioe) { ... }

© Ademar Aguiar

).

> - I !
try {
InputStream is = new FileInputStream(“file.txt”);
ObjectInputStream ois = new ObjectInputStream(is);
ArrayList someList = (ArrayList)ois.readObject();
is.close();
} catch (Exception e) { ... }

© Ademar Aguiar

+/
5 K- I L
■ / ( + & & $ # : + B "+ K
$+ (( ( # $ M +$ ( ( 31! "# $ (

public class BankAccount implements Serializable


{ ... }

■ - & K ( ( J ( &( L&$ $+ (( (


+ & ( + BJ ( J (E &( & F

© Ademar Aguiar

A - I
■ - ( "# $ (
Q` & "# $ J ( &( L&$ K ( R&$ (
( "# $ ( (( ( "# $ ( "N ( (
E "# $ * F

■ D J ( J (
Q ( J ( &( L&$ K & $( ( (E &
( ( +B (F ( $+ ($ $
&( &
private transient TextReader in;

■ &( L&$ & &

© Ademar Aguiar

+
- I V 1?
■ # " &( T 7' $ # " &( T 7 &$
Q ( +B T 7 ( $+ & " N( 3
T 7 ! "# $ : +B (

/** Save the data to disk. */


public void write(Object theGraph) throws IOException {
XMLEncoder os = new XMLEncoder(new BufferedOutputStream(
new FileOutputStream(FILENAME)));
os.writeObject(theGraph);
os.close();
}
/** Dump the data */
public void dump() throws IOException {
XMLDecoder is = new XMLDecoder(new BufferedInputStream(
new FileInputStream(FILENAME)));
System.out.println(is.writeObject());
is.close();
}
© Ademar Aguiar

8 B
■ 0* 0 +C 31!
* C11# ( & $ 1 $(1" I(1 +1
(( & +1 1 & A * +

© Ademar Aguiar

+"
+!
: : 4
$ = & =W

© Ademar Aguiar

+%

59
■ 3& ' /2 ' /2 ' (
■ : ( (( ( ( ' /2
■ A + 5C ' & " + ( ' /2
■ A + C 3&( ( ' /2
■ A + <C 3& G ( ' /2
■ 0 & A$ G ( ' /2

© Ademar Aguiar

+)
: 4 : 4 :

© Ademar Aguiar

++

: 4
■ ' /2 N 3( + ( $ (( P+ + (" ( (
( +$ G (
■ & ( + ( & & (" ( (
( & ( +$ G (
■ N 3 $ (( & ( + " ( (
( &( & ! &' " ( 2 && $ . E! ' /2F
( & + $ ( & $ (( " ( (
( ) & (
■ ' /2 3 E# (K+ n # A (K+ nF & ( (
( + ( ((M + ( + & & $ JA
+ A"+ ( (
© Ademar Aguiar

+,
: 4 :
■ + " ( (N
& $ ((J Java Application
' /2
■ ' /2 ' C $ &# & $+ (( ( JDBC Driver Manager
K B & $ $
( $M $ " ( ( JDBC- Vendor
( ODBC Specific
Bridge JDBC Driver
■ A( ( ' /2
(" ( ( (C Vendor
! $+ :` 7 : :." ( & Specific
.:` 7 ODBC Driver
Database

Database Diagram Source: Marty Hall,


Core Web Programming
(Prentice Hall.)
© Ademar Aguiar

+.

1P-X ?
■ .:` 7 A( A + .:` 7 2 && $ 1
&( $
Q* C11 .(K+ $ 1 &+ (1 %# "$ * +

■ ( .:` 7 2 && $ 1 N & $ ((J


($ ( " $ +
■ $ & ( $ 4 X 27 :: 0O C
Q .(K+%$ && $ %# %< 55%( "+ %" & #

© Ademar Aguiar

,/
- : 4

© Ademar Aguiar

- Q : 4
5 2 ' /2
( " + $ + X" ( ( E2 && $ &F
< 2 "# $ : &
@ A $ ` .
$ (( (4 ( + (
= $* +

© Ademar Aguiar

,
=4 : : 4
■ ( ' /2 N & $ ((J $
N( N 2+ (( ; EF E + $ &F
■ + $H N + $ C
Class.forName("jdbc.DriverXYZ");
K #" $ ' Tio N ' /2 K ( & $

■ : ( ( ' /2%! ' /2 $H ( J + $ C


Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

© Ademar Aguiar

4 : : 4G
■ : ( ( .:` 7 ' $H ( J + $ C
try {
Class.forName("com.mysql.jdbc.Driver");
} catch(java.lang.ClassNotFoundException e) {
System.err.print("ClassNotFoundException: ");
System.err.println(e.getMessage());
}

■ Class.forName() &
ClassNotFoundException ( 27 :: 0O & (
$ $ & &
■ ' %( & $ + $ .1$ $* +
forName().
© Ademar Aguiar

,"
= ? 64 7
■ ' ( $ ' /2 %( ( " + $
+ X" ( (
Connection con = DriverManager.getConnection(url,
"myLogin", "myPassword");

■ P& $ $ + N ( $ $ 47 $ $
■ ! 47 & + & ( & C

Q & $ K N ' /2 2 && $ &


Q! & $ K ( & (
Q! & $ & " ( ( ( + $ +B

© Ademar Aguiar

,%

Q 8 ?! > #: 4
■ ( + &* ( ( & ( ( " ' /2%! ' /2
+ X" ( ( + $ +C
String url = "jdbc:odbc:FEUP";
Connection con = DriverManager.getConnection(url,
“aaguiar", "password");

© Ademar Aguiar

,)
Q 8 ?! > 1P-X ?
■ + .:` 7C
String url = "jdbc:mysql://localhost/feup";
Connection con =
DriverManager.getConnection(url);
■ ; ( $ ( ( J%( ( .:` 7 ' /2
' + X" ( ( &
JK &
■ : ( $H A $ $ $ & (
"# $ 2 && $ & $ &$
$ & $ " ( (

© Ademar Aguiar

,+

=4 $ -
■ ! "# $ ' /2 Statement & $ & ( :` 7
" ( (
■ ! ( "# $ ( : & ( $ ( "# $ (
Connection $ (
■ A + C
Statement stmt = con.createStatement();

■ 2 "# $ : & %( & $* ( :` 7


$ & X" ( (

© Ademar Aguiar

,,
"= > X P
■ executeQuery()
Q A $ K . :` 7 & ( (& " + E4 ( + : F
Q " + ( + & ( B ( & &$ & ++

ResultSet results = stmt.executeQuery("SELECT a, b FROM table");

■ executeUpdate()
Q +B A $ &( G ( :` 7 3;: 40 ' 0 ' 7 0
Q! ( + N &P + &* ( K $ (& " (
(
Q: &( G (' ' & &7 & E' ' 7F C
% 24 0 0 /7
% ' 4! 0 /7
% 70 4 0 /7
© Ademar Aguiar

,.

- ! 1' Y
■ A4 (1( A4 (
Q' & &P + &* ( K ResultSet $ &
Q (( &P + &* ( N + E & F

■ ` .0 1( ` .0
Q ( $ $ K ( + A $
:0 0 ;0 & ( + & A$ SQLException

© Ademar Aguiar

./
)= 8
■ ResultSet $ & N ( ( + ( K . :` 7
■ N (P (
Q0 ( ( N ( + & SQLException
Q $+ (
% 7" ( $ ( ( + $ ( + ' /2
% ! $ &# & ( + (N $ & $* ( K
Statement (( $ A $ & K .
Q ' ! "# $
% 4 & "# $ ResultSetMetaData K $ &N &
( " ($ + & ( ResultSet
Q& A
%0 & HA + &* 4 ( +:
%: " ( $ N + U( & +(
% & $ & A ($ & $ ( &
+ &*

© Ademar Aguiar

8 - ! '
■ N (P ( E$ & F
Q & 2 + &
% 4 & + & $ ( & & X$ + & ( $ $ &
% ! ( &P ( ($ + & (& ( ( + (& & $ (( &
( ( ($ + & (& " ( (
Q TAA
% 4 & + $ + & ( $ $ + & M& $ $
TAA
% 4 & & ++ ( + :` 7 ; 77
% 0 ( ( ( TAA ( C

double byte int


Date String float
short long Time
Object
© Ademar Aguiar

.
)= D 3
■ $* + C
stmt.close();
connection.close();

■ ; C + &( ( ( +$ $ & ( & R $ &# &


+ G (X" ( (
Q 3( N ( $ & BK ( +$ G (& R
$ ( (( $ $ &( & & " $* + G ($
" ( (

© Ademar Aguiar

> !
4 5 : 4

© Ademar Aguiar

."
>
■ 3&( G ( :` 7C
24 0 0 /7 2! :
E2! S; D 42O 4E< F
: S3' 3;0 - 4
432 7! 0
: 7 : 3;0 - 4
0! 0 7 3;0 - 4FU

© Ademar Aguiar

.%

4
■ %( $ " + $ & & " ( (
E .:` 7F ( %( "N $ ' /2
■ ! "( G (( " " + C
Q $ + & : S3' $ & N + & & $ 3'
& $ E: + 3' F
% !( & $ (( (& " + (
% : S3' N
Q $ + & : 7 : B & + ( :` 7 3;0 - 4 & $
+ ( $ N & & ( & $ &
Q $ + & 0! 0 7 $ & N :` 7 3;0 - 4 K & $ +
( $ N & ( (

© Ademar Aguiar

.)
import java.sql.*;

public class CreateCoffees {


public static void main(String args[]) {
String url = "jdbc:mysql://localhost/feup";
Connection con;
String createString;
createString = "create table COFFEES " +
"(COF_NAME VARCHAR(32), " +
"SUP_ID INTEGER, " +
"PRICE FLOAT, " +
"SALES INTEGER, " +
"TOTAL INTEGER)";
Statement stmt;

© Ademar Aguiar

.+

try {
Class.forName("com.mysql.jdbc.Driver"); 1
} catch(java.lang.ClassNotFoundException e) {
System.err.print("ClassNotFoundException: ");
System.err.println(e.getMessage());
}

try {
con = DriverManager.getConnection(url); 2
3 stmt = con.createStatement();
4 stmt.executeUpdate(createString);
stmt.close();
6 con.close();

} catch(SQLException ex) {
System.err.println("SQLException: " + ex.getMessage());
}
}
}
© Ademar Aguiar

.,
> !
: 4

© Ademar Aguiar

..

import java.sql.*;

public class InsertCoffees {

public static void main(String args[]) throws SQLException {


System.out.println ("Adding Coffee Data");
ResultSet rs = null;
PreparedStatement ps = null;
String url = "jdbc:mysql://localhost/feup";
Connection con;
Statement stmt;
try {
Class.forName("org.gjt.mm.mysql.Driver"); 1
} catch(java.lang.ClassNotFoundException e) {
System.err.print("ClassNotFoundException: ");
System.err.println(e.getMessage());
}
© Ademar Aguiar

//
try {
con = DriverManager.getConnection(url); 2
3 stmt = con.createStatement();
stmt.executeUpdate ("INSERT INTO COFFEES " +
"VALUES(‘São Jorge', 49, 9.99, 0, 0)");
4 stmt.executeUpdate ("INSERT INTO COFFEES " +
"VALUES(‘Arábicas', 49, 9.99, 0, 0)");
stmt.executeUpdate ("INSERT INTO COFFEES " +
"VALUES(‘SICAL', 49, 10.99, 0, 0)");
stmt.executeUpdate ("INSERT INTO COFFEES " +
"VALUES(‘SICAL decaffe', 49, 10.99, 0, 0)");
6 stmt.close();
con.close();
System.out.println ("Done");
} catch(SQLException ex) {
System.err.println("-----SQLException-----");
System.err.println("SQLState: " + ex.getSQLState());
System.err.println("Message: " + ex.getMessage());
System.err.println("Vendor: " + ex.getErrorCode());
}
}
} © Ademar Aguiar

> !
0 : 4

© Ademar Aguiar

/
import java.sql.*;

public class SelectCoffees {

public static void main(String args[]) throws SQLException {


ResultSet rs = null;
PreparedStatement ps = null;
String url = "jdbc:mysql://localhost/feup";
Connection con;
Statement stmt;
try {
Class.forName("org.gjt.mm.mysql.Driver"); 1
} catch(java.lang.ClassNotFoundException e) {
System.err.print("ClassNotFoundException: ");
System.err.println(e.getMessage());
}

try {
con = DriverManager.getConnection(url); 2
3 stmt = con.createStatement();
© Ademar Aguiar

4 ResultSet uprs = stmt.executeQuery("SELECT * FROM COFFEES");


System.out.println("Table COFFEES:");
while (uprs.next()) {
5 String name = uprs.getString("COF_NAME");
int id = uprs.getInt("SUP_ID");
float price = uprs.getFloat("PRICE");
int sales = uprs.getInt("SALES");
int total = uprs.getInt("TOTAL");
System.out.print(name + " " + id + " " + price);
System.out.println(" " + sales + " " + total);
}
uprs.close();
6
stmt.close();
con.close();

} catch(SQLException ex) {
System.err.println("-----SQLException-----");
System.err.println("SQLState: " + ex.getSQLState());
System.err.println("Message: " + ex.getMessage());
System.err.println("Vendor: " + ex.getErrorCode());
}
}
} © Ademar Aguiar

/"
5 > 0 : 4

© Ademar Aguiar

/%

> 0 -X ?
■ ` ( ( ( N ( ' /2 & SQLException
( ( $ (( (
■ : ( K $ + (( &$ (
■ ( A$ G ( :` 7 $ & R C
Q ' ($ getMessage
Q ! :` 7: E! & - :` 7 ( $ $ &F & $ A$
getSQLState
Q $H ( $M $ & " ( (
getErrorCode
Q R&$ HA SQLException getNextException

© Ademar Aguiar

/)
-X ? > ! >
try {

... // JDBC statement.

} catch (SQLException sqle) {


while (sqle != null) {
System.out.println("Message: " + sqle.getMessage());
System.out.println("SQLState: " + sqle.getSQLState());
System.out.println("Vendor Error: " +
sqle.getErrorCode());
sqle.printStrackTrace(System.out);
sqle = sqle.getNextException();
}
}

© Ademar Aguiar

/+

8
■ ' ' /2 + +$ " (
( ( $M $
■ : ( (( ( ( ' /2C
Q2 '
Q ( " + $ 2 && $ &
Q2 "# $ : &
Q A $ ` .
Q $ (( 4 ( + :
Q $* 2 && $ &

■ - & K ( $* ( ' /2 ( ( "+ $ (


.1$ $*

© Ademar Aguiar

/,
8 B
■ : & ' /2 0 +
Q* C11# ( &$ 1 $(1" I(1 +1 # "$10! 2 * +

■ - 4 ( ' " ( & * ' /2 &


E! b4 ++. ? (( $ (F

© Ademar Aguiar

/.

,!
-F

© Ademar Aguiar

/
& 1* 4
■ K $ $ &( +$ G ( !! K (
( R( &(G (
Q + C &N ( ( & ( + ( ( & $
N ( $ ((
Q D ( C $ &( ( & ( + ( ( (
+
Q2 & + C ( & (

■ ` & + + (( ( ( & (K
B $ K ( $ +B ( ( &
( & ( &( $ & +
■ A( J ( ( ( $ & + ( (
+ K + &$ & + K & (
+ © Ademar Aguiar

4 1* 4
■ + & +
$ & +
actualiza actualiza
K N & ( ( Modelo
"# $ ( K ( X ($ ((
& ( &$ (
+ G (
Vista 1 vê dados vê dados Vista 2
Q $+ & ( &$ & (
& ( ( & ( altera
( +
Q $ & ( $ altera Controlador altera
+ G (& + K (
+ $ (& ( ( ( (

Evento

© Ademar Aguiar
& 1* 4 -F
■ $ & & : & + &$+ (( & ( "# $ (C
Q + K &N ( (E + D2 "J( $ F
% & $ N ( $ ((
% & $ (+( & (K & N +
Q + 3 K N ( E ( F$ +( & (E
$ & + (F
% $ "& ( ( & G ($ + $ & (+( & (# & ( "# $ (
$ & + (
% +( & (( * " + & + & ( $+ (( ( & & (
Q $ & & K ( & 2 & &
% $ & & & $ 3
% &( $ &( & $ ( ( + (U (( %+* ( (
& (
% & + &( & U (( + (
N (

■ : $ + I? +C $ & (* ) & ( © Ademar Aguiar

4 1* 4 -F
■ 2 & &
Q B + G ( + B actualiza
( + + G ( Modelo
K &* & $
Q ($ + (( actualiza Delegado IU
( & ( (( (+( & (
vê dados
Listeners alter
■ 7( & ( + 3 a
altera
Q0 & ($ + $ actualiza
$ & & Componente
Q & + altera

Q + H +

Evento

© Ademar Aguiar

"
> A ===

© Ademar Aguiar

/!
< F H $ = =W

© Ademar Aguiar

)
H $ =
■ ( G ( ( $+ (( ( & + $ ((
&
■ : ( ( ( $ &( ( "J( $ (C
Q : $I ( % $ $ ( &
Q 47 % $ &( + %&M + $ &

■ ( ( $+ (( ( (( " + $ &$ G (" ( (


( $I (C
Q & + 31! $ 31! $* (
Q ( ( $I ( ( ($ + %&M + K (( " +
+ 1 ($ 1 ( $I ( $ ( (( $* (

© Ademar Aguiar

H $ =
■ ! $I $ &N (( & ( $+ (( (C
Q 47 p &$ ( + & )))
Q 47$ && $ &p + )))
Q 3& (( p & 3 $ & * (
Q : $I p+ $+ & + + B 02
Q: : $I p ($ + & + G (
$+ & ( E + + $ 02 F
Q' : $I p ( $I ' $+ & ( ( (
Q' $I p $ & & $ ' $
& &$ &* & 3

© Ademar Aguiar

,
- H
■ ( $I N $ &( K K (
K $ ( ". ( & (
■ + & N" ( & /:' &A
■ ` & ( $I & $ ( N $ &*
($ & & ( & C
Q & K ( $ $ ( & J $
Q &P K & $ ( & J K + ( $I (
& &
■ ! ( ( $I ( & + & &$ & (C $+ &
(

© Ademar Aguiar

- H
■ $ + (
Q ! ( $I $+ & ( " + $ + ( $I (
(( K N $
Q !( $ (( $ ( J +
■ $ + (
Q +* &$ ( & ( "+
Q A + ( +B C & $ % +
■ 2
Q 02 13 +B ( $ ( & & ( E51qF
Q ' +B & ( $ E515F

© Ademar Aguiar

/
- H U

4 -
2 && $ &% & $ + : $I : : $I
2 && $ &+ (( $ + ' : $I ' : $I

© Ademar Aguiar

- H

■ ( %$H M $ ( C
Q2 "# $ : : $I $ + G (
Q` & : : $I $ + $ "# $
: $I K &$ ( + +
Q ! : $I $ "# $ ( 3& : ! : +
($ ". ( +
Q! : : $I $ & + & $ & $
+ K ( (( $ & (+ G (
&K & $ &$ $ ( $+ & (
■ ( %$H M $ $+ &
Q2 "# $ : $I K " + $ (
+B % $ &$ $ (

© Ademar Aguiar
> !- D 3
public class FileServer extends Thread {
public static void main(String[] argv) {
ServerSocket s;
try {
s = new ServerSocket(1234, 10);
}catch (IOException e) {
System.err.println("Unable to create socket");
e.printStackTrace();
return;
}
try {
while (true) {
new FileServer(s.accept());
}
}catch (IOException e) {
}
}
private Socket socket;
FileServer(Socket s) {
socket = s;
start();
}
}

© Ademar Aguiar

> !- D 3 ===
public void run() {
InputStream in;
String fileName = "";
PrintStream out = null;
FileInputStream f;
try {
in = socket.getInputStream();
out = new PrintStream(socket.getOutputStream());
fileName = new DataInputStream(in).readLine();
f = new FileInputStream(fileName);
}catch (IOException e) {
if (out != null)
out.print("Bad:"+fileName+"\n");
out.close();
try {
socket.close();
}catch (IOException ie) {
}
return;
}
out.print("Good:\n");
// send contents of file to client.
}

© Ademar Aguiar

"
> !- D 3 ===
public class FileClient {
private static boolean usageOk(String[] argv) {
if (argv.length != 2) {
String msg = "usage is: " +
"FileClient server-name file-name";
System.out.println(msg);
return false;
}
return true;
}
public static void main(String[] argv) {
int exitCode = 0;
if (!usageOk(argv))
return;
Socket s = null;
try {
s = new Socket(argv[0], 1234);
}catch (IOException e) {
//...
}
InputStream in = null;
// ...
}
}
© Ademar Aguiar

- H 4
■ ( %$H M $ ( C
Q2 "# $ ' : $I (( $ &

Q2 "# $ ' $I ' : $I


$ + $ HA "+ $ (K $ " & ' $I

■ ( %$H M $ $+ &
Q2 "# $ ' $I (( $ "+ $ (
& ( &
Q ' : $I & "+ $ ( (( $
' $I ( & (( $ ' : $I

■ A + C0 :

© Ademar Aguiar

)
# $ Q 8?
■ $+ (( 47 & $ $ (( ( ( + %
&M + K ( ( $I (
■ "# $ 47 &$ ( + & 4 ( $ 7 $
E 47F K B$ ( ( $
( & ( $ $ + 47
■ ! $ (( ( (& & $ (( ( $ $
$ + +B
■ &( + ( ( "# $ 47 ( " +
($ & P ( A + ( - & "# $
3 $ A & : &

© Ademar Aguiar

4 $ Q 8?
■ 47b( "( + (
try {
URL js = new URL("http://www.javasoft.com/index.html");
} catch (MalformedURLException e) {
return;
}

■ 47b( + (
try {
URL jdk = new URL(js,"java.sun.com/products/JDK/index.html");
}catch (MalformedURLException e) {
return;
}

■ N ( $ ((
Q $ +EF O ( EF + EF EF 4 EF
( + E 47F 2 & & EF &: EF
© Ademar Aguiar

,
8

© Ademar Aguiar

# $ K8 L
■ 4 + $ & C $ &( ($ " &
( " & + "# $ ( $+ (( (
A $
■ +B G ( ((M ( + $ & C
QD ( +B & ( " "# $
Q2 &( L&$ $+ (( $ # & & ( N $ &* $
A $
Q 3& $ N " J N( ( &

© Ademar Aguiar

/
8 ! 4
■ "# $ $+ (( # + & 2+ (( N ( &

■ 2 "# $ 2+ (( %( C
Q: " & ( " $+ ((
Q 2 &* $ ($ ( N ( (( $+ ((
Q2 &( L&$ ( E "# $ (F (( $+ ((
Q ' ($ " (( $+ (( ( ( "$+ (( ( & $ (K + &
$ + ( (( $+ ((

© Ademar Aguiar

1' 4
■ "+ $ ( $ 2+ (( ; E: & $+ ((; F
Q4 & "# $ 2+ (( "# $ K ( & $+ (( $
&

■ "+ $ : & ; EF
Q4 & & $ + $+ (( ( "# $
# 4 $ & +

■ "+ $ & (EF


Q4 & $ &# & + ($ & ( " $+ (( $
A + ( N "( $ ( N & $ $

■ "+ $ ! "# $ & 3&( &$ EF


Q4 & & &( L&$ ( & + "# $
2+ (( (( $ &( $ ( & (
© Ademar Aguiar
1 ' 4
■ "+ $ 2+ ((fg 2+ (( (EF
■ "+ $ 2 &( $ 2 &( $ E2+ ((fg (F
■ "+ $ 2 &( $ fg 2 &( $ (EF
■ "+ $ + + E: & & F
■ "+ $ + fg + (EF
■ "+ $ * * E: & & 2+ ((fg (F
■ "+ $ * fg * (EF
■ "+ $ $I $I EF
■ "+ $ 2+ (( : 2+ ((EF

© Ademar Aguiar

4
■ ; N : & C
public String toString() {
return “My type is “ + getClass().getName();
}

■ (& ( ( ( N ( $+ (( C
public void printMethods() {
Class claz = getClass();
Method[] methods = claz.getMethods();
for (int ii = 0; ii < methods.length; ii++)
System.out.println(methods[ii]);
}

© Ademar Aguiar

"
# 4 K8 L
$I # + & + $

■ +
• public Object get(Object obj)
• public <type> get<type>(Object obj)
• public void set(Object obj, Object value)
• public void set<type>(Object obj, <type> value)

■ 2 &( $
• public Object newInstance(Object[] args)

■ *
• public Object invoke(Object obj, Object[] args)

© Ademar Aguiar

# Class
■ 0 ( ( $+ (( ( R "# $ 2+ (( $ ((M + C
Q; $+ (( ( $+ (( E D $ $+ ((F
Q 3& $ & 2+ ((EF & &( L&$ E new
Vector().getClass()F
Q 3& $ & Class.forName(className) $ &
$ : & E Class.forName(“java.util.Vector”)F
Q2 $+ (( $* $+ (( ( &
"# $ 2+ ((7 C
• ClassLoader loader = ClassLoader.getSystemClassLoader();

© Ademar Aguiar

)
>
Class cl = Class.forName(“java.awt.Rectangle”);
Class[] paramTypes = new Class[] {
Integer.TYPE, Integer.TYPE};
Constructor ctor = cl.getConstructor(paramTypes);

Object[] ctArgs = new Object[] {


new Integer(20), new Integer(40)};
Object rect = ctor.newInstance(ctArgs);

Method meth = cl.getMethod(“getWidth”, null);


Object width = meth.invoke(rect, null);

System.out.println(“Object is “ + rect);
System.out.println(“Width is “ + width);

Resultado:
Object is java.awt.Rectangle[x=0,y=0,width=20,height=40]
Width is 20.0

© Ademar Aguiar

8 D P
public static Shape getFactoryShape (String s)
{
Shape temp = null;
if (s.equals (“Circle”))
temp = new Circle ();
else
if (s.equals (“Square”))
temp = new Square ();
else
if (s.equals (“Triangle”)
temp = new Triangle ();
else
// …
// continues for each kind of shape
return temp;
}

public static Shape getFactoryShape (String s)


{
Shape temp = null;
try
{
temp = (Shape) Class.forName (s).newInstance ();
}
catch (Exception e)

© Ademar Aguiar

,
8 ?
public void actionPerformed(ActionEvent e) {
String command = event.getActionCommand();
if (command.equals(“play”))
play();
else if (command.equals(“save”))
save();
else ...

public void actionPerformed(ActionEvent e) {


String command = event.getActionCommand();
Method meth = getClass().getMethod(command, null);
meth.invoke(this, null);
}

© Ademar Aguiar

# I 0 K8 L
■ / &( E$ & & ( - 3 &L $ (F
■ / ( ( ( ' /2
■ +
■ &
■ 2 1 ( $+ (( ( & ( +

© Ademar Aguiar

"/
8 B
■ C4 + $ & 3
Q* C11# ( &$ 1 $(1" I(1 +1 + $1

■ !" "
Q* C11 ++. $ 1

© Ademar Aguiar

"

You might also like