Professional Documents
Culture Documents
MEEC AW 2004 05 Java PDF
MEEC AW 2004 05 Java PDF
© 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
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
© 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
■ +B $ $ ( P($ + ( &P($ + (
■ ;P ( $ $ ( ( $ (
© Ademar Aguiar
: 4
■ & $+ (( ( & + & &$+ C
Q $ $ (( C
Q + %$*
Q2 ( ( &( L&$ (
Q 2 &( $ (
Q N ( ( &( L&$ (
Q2 ( $+ ((
Q N ( $+ ((
© Ademar Aguiar
"
: 4 ===
© Ademar Aguiar
: 1'
■ : & $+ ((
■ ( $ $ C
Q $ $ ((
Q + %$*
Q & (
Q0 &
© Ademar Aguiar
)
: 1'
© Ademar Aguiar
* 4
■ ' ( $+ ( & ( ( +B (
■ $+ + &*
■ ; &M$ "+ $ $H
■ ! "+ $ $H & L "
■ 3& $ + B
© Ademar Aguiar
,
* 4
© Ademar Aguiar
4 9
■ ( ( $+ G ( $+ ((
■ ( ( $+ G ( N (
■ (( & ( $H + $ & & (
© Ademar Aguiar
/
4 0
■ ( &( G ( & ( $ & % % M + EUF
■ 3&( G ($ ( (( & ( & $* (VW
■ +B $* ( &( G ( $ & +
© Ademar Aguiar
4 > 0
■ $ + $* # C
■ A $ $* $+ ((C
$aaguiar> java SayHello
Hello world
prompt>
© 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
© Ademar Aguiar
,
< *
■ !( & ( ( J ( $ +
+ " Z
■ !( ($ $ ( &$+ (
■ ' %( +B & ( + $ ( ( J (U
A +
$ ( (; ; A / * .
© Ademar Aguiar
© Ademar Aguiar
"/
5 *
■ ! ( ( (C
Q: ( (& N $ (
Q0 $ $ (
Q0 / + & + ( +(
■ 0 ( & ( + +B
Q 2+ (( (
Q 3& $ (
Q .(
© Ademar Aguiar
"
5 :
© Ademar Aguiar
"
: *
■ "J( $ $+ J +C
■ ( 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)
© Ademar Aguiar
"%
? 2<@
Literais String
"Hello, world\n"
© Ademar Aguiar
")
> A !:
■ &$ & ( ( & $H " A $ %+ (
© 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
© 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
© Ademar Aguiar
4 0 4
■ ! $ & $ & + (
& N $
byte
short
int
long
■ ! & B $ & &$ (
© 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
© Ademar Aguiar
%"
# ?9
■ !( ( + ( A ((G ( / + & ( (
$ "& ( ( & ( +H $ (C
© Ademar Aguiar
%%
4
■ ! " ( $ "& $
K +K " &J $ & &$ & +C
© 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
© 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
)+
© 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
© 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");
© Ademar Aguiar
+/
F 3===
© 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
■ A + C
■ ` + $ $+ K + & ]
© Ademar Aguiar
+)
===
■ ( $+ ( J (& &$ +B
$ $+ C
■ ( ( &$ +B $ &( (
+( A ((G ( ( ( M + (C
© 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
© 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 (
© Ademar Aguiar
,.
■ ! &$ ( + & $ + $ ($ ( (
&$ & K ( ( " +N & $ c (
G ( "# $
■ $ A + " &$ N "# $ K & &*
(( ( +B (C
Q $ A / &$ ( + ( (( ( +B (
QD + &$ ( + & N $ &( " " &$
© Ademar Aguiar
./
: 0 E
© Ademar Aguiar
J & $
■ ! ( "# $ ( ( $ ( ( ( "# $ (
■ ! ( "# $ ( B ( "# $ (
■ ( + & "# $ ( N $ &* $
.
# & ' 4 (
■ $+ (( N ( $ $ "# $ (
■ & $+ (( ( $ $ ( G (
" ( ( ( &( L&$ ( $+ ((
© 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 &
© 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
© 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
AcmeVideo
© 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()
© Ademar Aguiar
/,
4 # $
■ ! ( "# $ ( ( $ ( + & C
objectRef = new ClassName();
■ A + $ ( "# $ ( C
© Ademar Aguiar
/.
F
■ ! a& b +B ( & C
Q + $ H & "# $
Q 3& $ N ( $ + $+ (( &$ +B "# $ (
$ &( $
Q4 & R&$ & "# $
© Ademar Aguiar
/
# $
■ ( J ( (
( B & ■ ( J ( (
+ ( $+ (( ( B &
R&$ ( "# $ (
int i; Movie mov1;
mov1
i 0 null
j 3 mov1
title: null
rating: null
© Ademar Aguiar
mov1
title: “Gone ...”
Movie mov2 = mov1; rating: PG
mov2
© Ademar Aguiar
* M
■ ( J ( &( L&$ ( $+ ( & $+ (( C
© Ademar Aguiar
"
M
■ ( J ( P"+ $ ( &( L&$ ( $ (
N( abC
Será
Será isto interessante? NÃO!
© Ademar Aguiar
4 $
© Ademar Aguiar
)
1'
■ N N K + & & ( " &
(+& &(C
© Ademar Aguiar
1'
,
8 '
© Ademar Aguiar
' M
© Ademar Aguiar
/
■ ( J ( &( L&$ ( $+ (
■ & ( N ( &( L&$ $ (( J (
&( L&$
■ ! &$ ( + & ( + & $ $+ ((
( + & & &
© Ademar Aguiar
'
■ ` & + N (( N N
$H + C
© Ademar Aguiar
$ '
■ ` & "# $ N (( N &
"# $ & +C
© Ademar Aguiar
N# C '
■ ' ( ( N ( $+ (( ( &
■ !( N ( & ( (( & (
© Ademar Aguiar
"
I
■ ( J ( &( L&$ ( &$ +B (& (
$+
public class Movie {
private String title;
private String rating = "G";
private int numOfOscars = 0;
© Ademar Aguiar
4
■ &$ +B K $+ (( & $
$ &( (
■ ! $ &( N & $ $ & K &
"# $ N $ C
Q; + & $+ a "+ $b
Q0 ( & $+ ((
Q; ( $ $ & &* &
© Ademar Aguiar
)
: 4
© Ademar Aguiar
B N3 C
■ !( N ( &( L&$ $ " & $
& a * (b K "# $ $ &
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 Movie() {
this("G");
}
public Movie(String newRating) {
rating = newRating;
}
}
Movie mov2 = new Movie();
© Ademar Aguiar
* 4
■ ( J ( $+ (( &$ $+ (( (
$ &( ( ( &( L&$ ( (( $+ ((
■ ( J ( $+ (( ( $+ ($ a( $b &
& $+ ((
/
I
■ ( J ( $+ (( ( &$ +B (&
$+
■ &$ +B N +B K & $+ (( N $
© Ademar Aguiar
1' 4
■ !( N ( $+ (( ( +* ( ( (
&( L&$ (
■ : P ( & + J ( $+ (( C
© Ademar Aguiar
>
■ A + ( N ( J ( a( $bC
Q &EF
Q * (K EF
Q :.( & +&EF
© Ademar Aguiar
"
*
■ J + $+ a & +b N $ &( &
■ J + a & +b & ( $
■ J + a & +b ( &$ +B
■ J + a & +b N & + & P"+ $
$ (( A &
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
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
© Ademar Aguiar
"
# & ' 53 (
■ N A $ ( K &$ +
■ 2 + & (
■ 2 ( H +* $ &# &
( ( (
■ !( ( " $ &
( " ( & & & (
© Ademar Aguiar
"
# '& 53 (
■ : ( ( + & ( ($ (C
Q ( +$ G (E F
Q ($ " ( ( 3& &
Q " ( ( (
Q; ((
© 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 $
© Ademar Aguiar
"+
4 53
■ 5 2 & $+ ((
Q ' & ( "$+ (( 0*
Q" 4 & ( N &EF
■ 3&( &$ A $ *
Q 2 &( L&$ $+ ((
Q " 3& $ N ( EF
© Ademar Aguiar
",
4 4
© Ademar Aguiar
".
>
© Ademar Aguiar
%/
8 3
■ !( ( $ $ (( $ ( J (
* (C
© Ademar Aguiar
4 * 53
sleep()
start()
Ready to wait()
New thread run
other
© 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 * $ + (
%"
1' P 3 I
© 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 & $ &
© 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
© 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 !( ( & ( &
© 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 +% ( (
© 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
© Ademar Aguiar
./
■ 2 & & (C $ ( ( ( &* ( & N$ &
Q A + (C " $ A A K
© Ademar Aguiar
OQ ! R 5 -F
■ 3 &$ + : & E '8 5 5 5F
Q2 $ &# & $+ (( (1 N ( ( & + - 3b(
+ % + E "( $ ) & & 0 +I ) 0F
Q "+ ) 0C & ( $ & & ( U+
■ : & )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 $ $ &
■ "+ $ : & 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
■ "+ $ + 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 + $ +$ (" ( & ( (
( $ & & & &
/+
? 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
/
? 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$ & &(* +
© 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
,
?
/ &" &\& / &E " & 5 FU
. $ &7 ( & +( & \& . $ &7 ( & EFU
" & $ &7 ( & E+ ( & FU
© Ademar Aguiar
$
■ "+ $ ! "# $ : $ 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
© Ademar Aguiar
? D
"+ $ $+ (( ! A & (
+ & ( $ &7 ( &
V
"+ $ ! EF V
/ & ./ &\& / &EFU
./ & $ &7 ( & E * (FU
W
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 + + (
+ &$ +
© Ademar Aguiar
)
F
■ ( + ($ & D + $* &
& " (
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
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$ + $ (+ (
© 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 (
&*
return dados[index];
}
© Ademar Aguiar
"
O K4 3 H > L
■ ; $ " +* N ( ( $ $ ( ( ( A$ G (
K + & E * ( F
■ ` & $ N K (( & A$ G ( J%+ (
& (( (( ( A$ G ( K & $
© 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);
}
© 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;
8 B
■ 0* 0 +C A$ &%O & + &
Q * C11# ( &$ 1 $(1" I(1 +1# 1
& ( & " + (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();
out.close();
} catch (IOException ioe) { ... }
© Ademar Aguiar
D -
■ ( K " N (( ( ( (
■ %( $ $ ( ( ( $ "& (( (
$ $ (1$ $ M( $ (
■ ( A $ & &$ & + X(
& +* ( &$ & +
■ A + ' $ &
© 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();
■ ( 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! "# $ (
© 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;
© Ademar Aguiar
+
- I V 1?
■ # " &( T 7' $ # " &( T 7 &$
Q ( +B T 7 ( $+ & " N( 3
T 7 ! "# $ : +B (
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
+.
1P-X ?
■ .:` 7 A( A + .:` 7 2 && $ 1
&( $
Q* C11 .(K+ $ 1 &+ (1 %# "$ * +
© 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 ( & $
© 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
© 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();
© Ademar Aguiar
,,
"= > X P
■ executeQuery()
Q A $ K . :` 7 & ( (& " + E4 ( + : F
Q " + ( + & ( B ( & &$ & ++
■ 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
.
)= D 3
■ $* + C
stmt.close();
connection.close();
© 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.*;
© 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.*;
//
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.*;
try {
con = DriverManager.getConnection(url); 2
3 stmt = con.createStatement();
© Ademar Aguiar
} 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 {
© Ademar Aguiar
/+
8
■ ' ' /2 + +$ " (
( ( $M $
■ : ( (( ( ( ' /2C
Q2 '
Q ( " + $ 2 && $ &
Q2 "# $ : &
Q A $ ` .
Q $ (( 4 ( + :
Q $* 2 && $ &
© Ademar Aguiar
/,
8 B
■ : & ' /2 0 +
Q* C11# ( &$ 1 $(1" I(1 +1 # "$10! 2 * +
© 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 (
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 + $ &
© 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 (( $ &
■ ( %$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 $ & +
© 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);
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;
}
© Ademar Aguiar
,
8 ?
public void actionPerformed(ActionEvent e) {
String command = event.getActionCommand();
if (command.equals(“play”))
play();
else if (command.equals(“save”))
save();
else ...
© 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
"