Escolar Documentos
Profissional Documentos
Cultura Documentos
d
e
r
d
a
n
s
c
e
t
t
e
s
o
u
s
-
c
l
a
s
s
e
.
*
/
p
r
o
t
e
c
t
e
d
J
R
a
d
i
o
B
u
t
t
o
n
b
u
t
t
o
n
1
,
b
u
t
t
o
n
2
,
b
u
t
t
o
n
3
;
p
r
o
t
e
c
t
e
d
J
C
o
m
b
o
B
o
x
c
o
u
l
e
u
r
;
p
r
o
t
e
c
t
e
d
J
T
e
x
t
F
i
e
l
d
t
e
x
t
;
p
r
o
t
e
c
t
e
d
J
B
u
t
t
o
n
a
j
o
u
t
;
p
r
o
t
e
c
t
e
d
J
L
i
s
t
t
e
x
t
L
i
s
t
;
p
r
o
t
e
c
t
e
d
V
e
c
t
o
r
<
S
t
r
i
n
g
>
l
i
s
t
D
a
t
a
;
p
r
o
t
e
c
t
e
d
D
e
s
s
i
n
d
e
s
s
i
n
;
p
u
b
l
i
c
E
x
I
n
t
e
r
f
a
c
e
(
)
{
s
u
p
e
r
(
"
U
n
e
x
e
m
p
l
e
d
e
f
e
n
e
t
r
e
"
)
;
/
/
l
e
p
r
o
g
r
a
m
m
e
d
o
i
t
s
e
t
e
r
m
i
n
e
r
q
u
a
n
d
l
a
f
e
n
e
t
r
e
e
s
t
f
e
r
m
e
e
t
h
i
s
.
s
e
t
D
e
f
a
u
l
t
C
l
o
s
e
O
p
e
r
a
t
i
o
n
(
J
F
r
a
m
e
.
E
X
I
T
_
O
N
_
C
L
O
S
E
)
;
/
/
c
r
e
a
t
i
o
n
d
u
p
a
n
e
l
g
a
u
c
h
e
J
P
a
n
e
l
g
a
u
c
h
e
=
n
e
w
J
P
a
n
e
l
(
n
e
w
G
r
i
d
L
a
y
o
u
t
(
6
,
1
,
0
,
5
)
)
;
/
/
c
r
e
a
t
i
o
n
d
e
s
c
a
s
e
s
a
c
o
c
h
e
r
J
L
a
b
e
l
l
a
b
e
l
=
n
e
w
J
L
a
b
e
l
(
"
F
o
r
m
e
:
"
)
;
b
u
t
t
o
n
1
=
n
e
w
J
R
a
d
i
o
B
u
t
t
o
n
(
"
C
a
r
r
e
"
,
t
r
u
e
)
;
b
u
t
t
o
n
2
=
n
e
w
J
R
a
d
i
o
B
u
t
t
o
n
(
"
C
e
r
c
l
e
"
,
f
a
l
s
e
)
;
b
u
t
t
o
n
3
=
n
e
w
J
R
a
d
i
o
B
u
t
t
o
n
(
"
T
r
i
a
n
g
l
e
"
,
f
a
l
s
e
)
;
J
L
a
b
e
l
l
a
b
e
l
2
=
n
e
w
J
L
a
b
e
l
(
"
C
o
u
l
e
u
r
:
"
)
;
c
o
u
l
e
u
r
=
n
e
w
J
C
o
m
b
o
B
o
x
(
)
;
c
o
u
l
e
u
r
.
a
d
d
I
t
e
m
(
"
B
l
e
u
"
)
;
c
o
u
l
e
u
r
.
a
d
d
I
t
e
m
(
"
R
o
u
g
e
"
)
;
c
o
u
l
e
u
r
.
a
d
d
I
t
e
m
(
"
V
e
r
t
"
)
;
/
/
l
e
g
r
o
u
p
e
d
e
b
o
u
t
o
n
p
e
r
m
e
t
d
'
i
n
t
e
r
d
i
r
e
l
a
s
e
l
e
c
t
i
o
n
/
/
d
e
p
l
u
s
i
e
u
r
s
c
a
s
e
s
e
n
m
e
m
e
t
e
m
p
s
B
u
t
t
o
n
G
r
o
u
p
g
r
o
u
p
=
n
e
w
B
u
t
t
o
n
G
r
o
u
p
(
)
;
g
r
o
u
p
.
a
d
d
(
b
u
t
t
o
n
1
)
;
g
r
o
u
p
.
a
d
d
(
b
u
t
t
o
n
2
)
;
g
r
o
u
p
.
a
d
d
(
b
u
t
t
o
n
3
)
;
/
/
r
e
m
p
l
i
s
s
a
g
e
d
u
p
a
n
e
l
g
a
u
c
h
e
g
a
u
c
h
e
.
a
d
d
(
l
a
b
e
l
)
;
g
a
u
c
h
e
.
a
d
d
(
b
u
t
t
o
n
1
)
;
g
a
u
c
h
e
.
a
d
d
(
b
u
t
t
o
n
2
)
;
g
a
u
c
h
e
.
a
d
d
(
b
u
t
t
o
n
3
)
;
g
a
u
c
h
e
.
a
d
d
(
l
a
b
e
l
2
)
;
g
a
u
c
h
e
.
a
d
d
(
c
o
u
l
e
u
r
)
;
/
/
c
r
e
a
t
i
o
n
d
u
p
a
n
e
l
b
a
s
J
P
a
n
e
l
b
a
s
=
n
e
w
J
P
a
n
e
l
(
n
e
w
B
o
r
d
e
r
L
a
y
o
u
t
(
0
,
1
0
)
)
;
/
/
c
r
e
a
t
i
o
n
e
t
r
e
m
p
l
i
s
s
a
g
e
d
u
p
a
n
e
l
d
'
a
j
o
u
t
d
e
t
e
x
t
e
J
P
a
n
e
l
t
e
x
t
P
a
n
e
l
=
n
e
w
J
P
a
n
e
l
(
n
e
w
G
r
i
d
L
a
y
o
u
t
(
3
,
1
,
0
,
5
)
)
;
l
a
b
e
l
=
n
e
w
J
L
a
b
e
l
(
"
A
j
o
u
t
e
r
u
n
t
e
x
t
e
p
o
s
s
i
b
l
e
:
"
)
;
t
e
x
t
P
a
n
e
l
.
a
d
d
(
l
a
b
e
l
)
;
t
e
x
t
=
n
e
w
J
T
e
x
t
F
i
e
l
d
(
1
6
)
;
t
e
x
t
P
a
n
e
l
.
a
d
d
(
t
e
x
t
)
;
a
j
o
u
t
=
n
e
w
J
B
u
t
t
o
n
(
"
A
j
o
u
t
e
r
"
)
;
t
e
x
t
P
a
n
e
l
.
a
d
d
(
a
j
o
u
t
)
;
/
/
c
r
e
a
t
i
o
n
d
u
m
o
d
e
l
e
d
e
l
a
l
i
s
t
e
l
i
s
t
D
a
t
a
=
n
e
w
V
e
c
t
o
r
<
S
t
r
i
n
g
>
(
)
;
l
i
s
t
D
a
t
a
.
a
d
d
E
l
e
m
e
n
t
(
"
H
e
l
l
o
W
o
r
l
d
"
)
;
l
i
s
t
D
a
t
a
.
a
d
d
E
l
e
m
e
n
t
(
"
U
n
e
b
e
l
l
e
f
i
g
u
r
e
"
)
;
l
i
s
t
D
a
t
a
.
a
d
d
E
l
e
m
e
n
t
(
"
C
h
a
m
p
i
o
n
s
d
u
m
o
n
d
e
!
"
)
;
l
i
s
t
D
a
t
a
.
a
d
d
E
l
e
m
e
n
t
(
"
A
c
i
a
o
,
b
o
n
s
o
i
r
.
.
.
"
)
;
l
i
s
t
D
a
t
a
.
a
d
d
E
l
e
m
e
n
t
(
"
C
h
a
n
g
e
z
l
a
c
o
u
l
e
u
r
"
)
;
l
i
s
t
D
a
t
a
.
a
d
d
E
l
e
m
e
n
t
(
"
J
'
a
d
o
r
e
J
a
v
a
"
)
;
l
i
s
t
D
a
t
a
.
a
d
d
E
l
e
m
e
n
t
(
"
A
l
l
e
z
l
e
s
v
e
r
t
s
!
"
)
;
l
i
s
t
D
a
t
a
.
a
d
d
E
l
e
m
e
n
t
(
"
C
a
m
a
r
c
h
e
"
)
;
l
i
s
t
D
a
t
a
.
a
d
d
E
l
e
m
e
n
t
(
"
b
l
a
b
l
a
b
l
a
"
)
;
/
/
c
r
e
a
t
i
o
n
d
e
l
a
l
i
s
t
e
t
e
x
t
L
i
s
t
=
n
e
w
J
L
i
s
t
(
l
i
s
t
D
a
t
a
)
;
t
e
x
t
L
i
s
t
.
s
e
t
S
e
l
e
c
t
i
o
n
M
o
d
e
(
L
i
s
t
S
e
l
e
c
t
i
o
n
M
o
d
e
l
.
S
I
N
G
L
E
_
S
E
L
E
C
T
I
O
N
)
;
/
/
l
'
i
n
c
l
u
s
i
o
n
d
e
l
a
l
i
s
t
e
d
a
n
s
u
n
J
S
c
r
o
l
l
P
a
n
e
p
e
r
m
e
t
/
/
d
e
l
a
f
a
i
r
e
d
e
f
i
l
e
r
p
a
r
d
e
s
a
s
c
e
n
c
e
u
r
s
J
S
c
r
o
l
l
P
a
n
e
s
c
r
o
l
l
P
a
n
e
=
n
e
w
J
S
c
r
o
l
l
P
a
n
e
(
t
e
x
t
L
i
s
t
)
;
s
c
r
o
l
l
P
a
n
e
.
s
e
t
P
r
e
f
e
r
r
e
d
S
i
z
e
(
n
e
w
D
i
m
e
n
s
i
o
n
(
2
0
0
,
1
0
0
)
)
;
/
/
r
e
m
p
l
i
s
s
a
g
e
d
u
p
a
n
e
l
b
a
s
49
Annexe A. Applications graphiques (package swing)
b
a
s
.
a
d
d
(
s
c
r
o
l
l
P
a
n
e
,
B
o
r
d
e
r
L
a
y
o
u
t
.
N
O
R
T
H
)
;
b
a
s
.
a
d
d
(
t
e
x
t
P
a
n
e
l
,
B
o
r
d
e
r
L
a
y
o
u
t
.
S
O
U
T
H
)
;
/
/
r
e
m
p
l
i
s
s
a
g
e
d
u
p
a
n
e
l
p
r
i
n
c
i
p
a
l
J
P
a
n
e
l
m
a
i
n
P
a
n
e
l
=
(
J
P
a
n
e
l
)
t
h
i
s
.
g
e
t
C
o
n
t
e
n
t
P
a
n
e
(
)
;
m
a
i
n
P
a
n
e
l
.
s
e
t
L
a
y
o
u
t
(
n
e
w
B
o
r
d
e
r
L
a
y
o
u
t
(
1
0
,
1
0
)
)
;
m
a
i
n
P
a
n
e
l
.
a
d
d
(
g
a
u
c
h
e
,
B
o
r
d
e
r
L
a
y
o
u
t
.
W
E
S
T
)
;
d
e
s
s
i
n
=
n
e
w
D
e
s
s
i
n
(
)
;
m
a
i
n
P
a
n
e
l
.
a
d
d
(
d
e
s
s
i
n
,
B
o
r
d
e
r
L
a
y
o
u
t
.
C
E
N
T
E
R
)
;
m
a
i
n
P
a
n
e
l
.
a
d
d
(
b
a
s
,
B
o
r
d
e
r
L
a
y
o
u
t
.
S
O
U
T
H
)
;
/
/
u
n
e
b
o
r
d
u
r
e
p
e
r
m
e
t
d
'
a
e
r
e
r
l
'
a
f
f
i
c
h
a
g
e
m
a
i
n
P
a
n
e
l
.
s
e
t
B
o
r
d
e
r
(
n
e
w
E
m
p
t
y
B
o
r
d
e
r
(
1
0
,
1
0
,
1
0
,
1
0
)
)
;
/
/
c
a
l
c
u
l
d
e
l
a
d
i
m
e
n
s
i
o
n
d
e
l
a
f
e
n
e
t
r
e
t
h
i
s
.
p
a
c
k
(
)
;
}p
u
b
l
i
c
s
t
a
t
i
c
v
o
i
d
m
a
i
n
(
S
t
r
i
n
g
[
]
a
r
g
s
)
{
E
x
I
n
t
e
r
f
a
c
e
m
y
I
n
t
e
r
f
a
c
e
=
n
e
w
E
x
I
n
t
e
r
f
a
c
e
(
)
;
m
y
I
n
t
e
r
f
a
c
e
.
s
e
t
V
i
s
i
b
l
e
(
t
r
u
e
)
;
}
}/
/
C
e
t
t
e
c
l
a
s
s
e
h
e
r
i
t
e
d
e
c
a
n
v
a
s
p
o
u
r
r
e
d
f
i
n
i
r
l
a
/
/
m
e
t
h
o
d
e
p
a
i
n
t
.
L
a
v
u
e
e
s
t
c
o
d
e
e
d
a
n
s
c
e
t
t
e
c
l
a
s
s
e
c
l
a
s
s
D
e
s
s
i
n
e
x
t
e
n
d
s
C
a
n
v
a
s
{
S
t
r
i
n
g
f
i
g
u
r
e
;
C
o
l
o
r
c
o
u
l
e
u
r
;
S
t
r
i
n
g
t
e
x
t
;
/
/
l
e
c
o
n
s
t
r
u
c
t
e
u
r
d
e
l
a
c
l
a
s
s
e
p
u
b
l
i
c
D
e
s
s
i
n
(
)
{
f
i
g
u
r
e
=
"
C
a
r
r
e
"
;
c
o
u
l
e
u
r
=
C
o
l
o
r
.
b
l
u
e
;
t
e
x
t
=
"
H
e
l
l
o
W
o
r
l
d
"
;
t
h
i
s
.
s
e
t
B
a
c
k
g
r
o
u
n
d
(
C
o
l
o
r
.
w
h
i
t
e
)
;
}p
u
b
l
i
c
v
o
i
d
p
a
i
n
t
(
G
r
a
p
h
i
c
s
g
)
{
/
/
u
n
r
e
c
t
a
n
g
l
e
n
o
i
r
e
n
c
a
d
r
e
l
e
c
o
m
p
o
s
a
n
t
g
.
s
e
t
C
o
l
o
r
(
C
o
l
o
r
.
b
l
a
c
k
)
;
g
.
d
r
a
w
R
e
c
t
(
0
,
0
,
t
h
i
s
.
g
e
t
W
i
d
t
h
(
)
-
1
,
t
h
i
s
.
g
e
t
H
e
i
g
h
t
(
)
-
1
)
;
/
/
l
e
t
e
x
t
e
e
s
t
a
f
f
i
c
h
e
g
.
d
r
a
w
S
t
r
i
n
g
(
t
e
x
t
,
1
0
,
1
5
)
;
/
/
l
a
c
o
u
l
e
u
r
e
s
t
c
h
o
i
s
i
e
g
.
s
e
t
C
o
l
o
r
(
c
o
u
l
e
u
r
)
;
/
/
l
a
f
i
g
u
r
e
e
s
t
a
f
f
i
c
h
e
e
i
f
(
f
i
g
u
r
e
.
e
q
u
a
l
s
(
"
C
a
r
r
e
"
)
)
{
g
.
d
r
a
w
R
e
c
t
(
5
0
,
3
0
,
1
0
0
,
1
0
0
)
;
}
e
l
s
e
i
f
(
f
i
g
u
r
e
.
e
q
u
a
l
s
(
"
C
e
r
c
l
e
"
)
)
{
g
.
d
r
a
w
O
v
a
l
(
5
0
,
3
0
,
1
0
0
,
1
0
0
)
;
}
e
l
s
e
{
g
.
d
r
a
w
L
i
n
e
(
5
0
,
1
3
0
,
1
0
0
,
3
0
)
;
g
.
d
r
a
w
L
i
n
e
(
1
0
0
,
3
0
,
1
5
0
,
1
3
0
)
;
g
.
d
r
a
w
L
i
n
e
(
5
0
,
1
3
0
,
1
5
0
,
1
3
0
)
;
}
}/
/
c
e
s
m
e
t
h
o
d
e
s
p
e
r
m
e
t
t
e
n
t
d
e
c
h
a
n
g
e
r
l
e
t
e
x
t
e
,
/
/
l
a
c
o
u
l
e
u
r
o
u
l
a
f
i
g
u
r
e
a
a
f
f
i
c
h
e
r
p
u
b
l
i
c
v
o
i
d
s
e
t
T
e
x
t
(
S
t
r
i
n
g
t
x
t
)
{
t
e
x
t
=
t
x
t
;
}p
u
b
l
i
c
v
o
i
d
s
e
t
C
o
u
l
e
u
r
(
S
t
r
i
n
g
c
o
u
l
)
{
i
f
(
c
o
u
l
.
e
q
u
a
l
s
(
"
B
l
e
u
"
)
)
{
c
o
u
l
e
u
r
=
C
o
l
o
r
.
b
l
u
e
;
}
e
l
s
e
i
f
(
c
o
u
l
.
e
q
u
a
l
s
(
"
R
o
u
g
e
"
)
)
{
c
o
u
l
e
u
r
=
C
o
l
o
r
.
r
e
d
;
}
e
l
s
e
{
c
o
u
l
e
u
r
=
C
o
l
o
r
.
g
r
e
e
n
;
}
}p
u
b
l
i
c
v
o
i
d
s
e
t
F
i
g
u
r
e
(
S
t
r
i
n
g
f
i
g
)
{
f
i
g
u
r
e
=
f
i
g
;
}/
/
L
a
r
e
d
f
i
n
i
t
i
o
n
d
e
c
e
t
t
e
m
e
t
h
o
d
e
p
e
r
m
e
t
d
e
s
p
e
c
i
f
i
e
r
/
/
l
a
t
a
i
l
l
e
p
r
e
f
e
r
r
e
e
d
u
c
o
m
p
o
s
a
n
t
p
u
b
l
i
c
D
i
m
e
n
s
i
o
n
g
e
t
P
r
e
f
e
r
r
e
d
S
i
z
e
(
)
{
r
e
t
u
r
n
n
e
w
D
i
m
e
n
s
i
o
n
(
2
0
0
,
2
0
0
)
;
}
}
50
A.3. Contrleurs dvnements
A.3 Contrleurs dvnements
Le rle des contrleurs est dintercepter certains vnements et deffectuer un traitement as-
soci au type de lvnement. Un vnement peut tre produit par un click sur un bouton, la
slection dun lment dune liste, un dplacement de souris, la pression dune touche du clavier,
etc.
A.3.1 Evnements
Un vnement graphique est reprsent dans le langage Java comme un objet dont la classe
hrite de java.awt.AWTEvent. Parmi les sous-classes de AWTEvent, on peut citer les plus couram-
ment utilises :
ActionEvent : Se produit lorsquune action est effectue sur un composant. Ex : click sur
un bouton.
ItemEvent : Se produit lorsquune slection a t effectue sur un composant. Ex : cochage
dune case.
KeyEvent : Se produit lorsque unvnement provient duclavier. Ex : pressiondune touche.
MouseEvent : Se produit lorsque un vnement provient de la souris. Ex : dplacement de
la souris.
WindowEvent : Se produit lorsquune action est effectue sur une fentre. Ex : click sur
licone de fermeture dune fentre.
Des mthodes sont attaches chacune de ces classes pour avoir accs plus de dtails sur
lvnement. On peut, par exemple, rcuprer le composant source de lvnement, la position de
la souris lors du click, etc.
A.3.2 Interface Listener
Le contrleur qui intercepte un certain type dvnement doit implmenter une des interfaces
hritant de java.util.EventListener. Linterface implmenter dpend du type dvnement
intercepter. La table A.1 prsente les interfaces correspondant aux vnements dcrits ci-dessus.
Certaines de ces interfaces demandent quun grand nombre de mthodes soient implmen-
tes (par ex, WindowListener). Des classes, appeles adapter, implmentant ces interfaces sont
proposes dans lAPI, pour lesquelles toutes les mthodes ont des implmentations vides. Cette
facilit de programmation permet de nimplmenter que la mthode souhaite. Par exemple, on
utilisera la classe WindowAdapter pour implmenter un traitement effectuer la fermeture dun
fentre (mthode windowClosing()) sans avoir crire des mthodes vides pour tous les autres
cas o aucun traitement nest requis.
Aprs la cration dun objet contrleur, il est ncessaire de le rattacher un ou plusieurs com-
posants. Le contrleur intercepte uniquement les vnements des composants auquel il est ratta-
ch. Cette opration se fait par lappel une mthode du composant de la forme add...Listener.
Par exemple, le rattachement dun contrleur myActionListener un bouton scrit :
myButton.addActionListener(myActionListener);
A.3.3 Exemple de contrleur
Dans lexemple donn plus loin, des traitements ont t associs aux diffrents composants
de linterface prsente en section A.2.3. Les contrleurs ont t volontairement crs de manire
diffrente pour illustrer plusieurs cas :
51
Annexe A. Applications graphiques (package swing)
Table A.1 Quelques interfaces pour contrleur
Contrleur Evnement Mthodes implmenter
ActionListener ActionEvent - actionPerformed(ActionEvent)
ItemListener ItemEvent - itemStateChanged(ItemEvent)
KeyListener KeyEvent - keyPressed(KeyEvent)
- keyReleased(KeyEvent)
- keyTyped(KeyEvent)
MouseListener MouseEvent - mouseClicked(MouseEvent)
- mouseEntered(MouseEvent)
- mouseExited(MouseEvent)
- mousePressed(MouseEvent)
- mouseReleased(MouseEvent)
WindowListener WindowEvent - windowActivated(WindowEvent)
- windowClosed(WindowEvent)
- windowClosing(WindowEvent)
- windowDeactivated(WindowEvent)
- windowDeiconified(WindowEvent)
- windowIconified(WindowEvent)
- windowOpened(WindowEvent)
le contrleur de la fentre est un objet instanci partir dune classe WindowControler
qui hrite de la classe WindowAdapter. Le seul traitement qui est prcis est de quitter le
programme quand lutilisateur clique sur le bouton de fermeture.
le contrleur des boutons de choix est utilis sur plusieurs composants. Il traite les vne-
ments provenant des boutons JRadioButton et JComboBox. Ce contrleur est une instance
de ChoiceControler qui implmente linterface ItemListener. Le traitement effectu est
une mise jour du dessin.
le contrleur de la liste est en fait le mme objet que celui reprsentant la fentre. Cest la
classe ExControleur qui implmente linterface ListSelectionListener et met jour le
dessin chaque fois que la slection de la liste change.
le contrleur de la zone de texte est aussi implment par lobjet fentre. Si la touche en-
tre est presse dans la zone de texte, la liste est mise jour.
le contrleur du bouton a une forme un peu spciale mais frquemment utilise. Il est
possible, en Java, de redfinir une mthode dune classe pendant une instanciation. Lors de
linstanciation du contrleur (new ActionListener()), la mthode actionPerformed()
est redfinie directement avant le point virgule de fin dinstruction. Cest le seul cas o
linstanciation dune interface est permise si toutes ses mthodes sont implmentes.
52
A.3. Contrleurs dvnements
i
m
p
o
r
t
j
a
v
a
.
a
w
t
.
e
v
e
n
t
.
*
;
i
m
p
o
r
t
j
a
v
a
x
.
s
w
i
n
g
.
*
;
i
m
p
o
r
t
j
a
v
a
x
.
s
w
i
n
g
.
e
v
e
n
t
.
*
;
p
u
b
l
i
c
c
l
a
s
s
E
x
C
o
n
t
r
o
l
e
u
r
e
x
t
e
n
d
s
E
x
I
n
t
e
r
f
a
c
e
i
m
p
l
e
m
e
n
t
s
L
i
s
t
S
e
l
e
c
t
i
o
n
L
i
s
t
e
n
e
r
,
A
c
t
i
o
n
L
i
s
t
e
n
e
r
{
p
u
b
l
i
c
E
x
C
o
n
t
r
o
l
e
u
r
(
)
{
/
/
a
p
p
e
l
a
u
c
o
n
s
t
r
u
c
t
e
u
r
d
e
E
x
I
n
t
e
r
f
a
c
e
p
o
u
r
c
r
e
e
r
l
a
/
/
f
e
n
e
t
r
e
e
t
s
e
s
c
o
m
p
o
s
a
n
t
s
s
u
p
e
r
(
)
;
/
/
a
j
o
u
t
d
'
u
n
c
o
n
t
r
l
e
u
r
l
a
f
e
n
t
r
e
t
h
i
s
.
a
d
d
W
i
n
d
o
w
L
i
s
t
e
n
e
r
(
n
e
w
W
i
n
d
o
w
C
o
n
t
r
o
l
e
r
(
)
)
;
/
/
U
n
c
o
n
t
r
l
e
u
r
u
n
i
q
u
e
e
s
t
c
r
p
o
u
r
l
e
s
b
o
u
t
o
n
s
/
/
d
e
c
h
o
i
x
C
h
o
i
c
e
C
o
n
t
r
o
l
e
r
c
o
n
t
r
o
l
e
u
r
=
n
e
w
C
h
o
i
c
e
C
o
n
t
r
o
l
e
r
(
d
e
s
s
i
n
)
;
b
u
t
t
o
n
1
.
a
d
d
I
t
e
m
L
i
s
t
e
n
e
r
(
c
o
n
t
r
o
l
e
u
r
)
;
b
u
t
t
o
n
2
.
a
d
d
I
t
e
m
L
i
s
t
e
n
e
r
(
c
o
n
t
r
o
l
e
u
r
)
;
b
u
t
t
o
n
3
.
a
d
d
I
t
e
m
L
i
s
t
e
n
e
r
(
c
o
n
t
r
o
l
e
u
r
)
;
c
o
u
l
e
u
r
.
a
d
d
I
t
e
m
L
i
s
t
e
n
e
r
(
c
o
n
t
r
o
l
e
u
r
)
;
/
/
l
e
r
o
l
e
d
e
c
o
n
t
r
l
e
u
r
p
o
u
r
l
a
l
i
s
t
e
e
t
l
e
c
h
a
m
p
d
e
/
/
t
e
x
t
e
e
s
t
a
s
s
u
r
e
p
a
r
l
'
o
b
j
e
t
c
o
u
r
a
n
t
E
x
C
o
n
t
r
o
l
e
u
r
t
e
x
t
L
i
s
t
.
a
d
d
L
i
s
t
S
e
l
e
c
t
i
o
n
L
i
s
t
e
n
e
r
(
t
h
i
s
)
;
t
e
x
t
.
a
d
d
A
c
t
i
o
n
L
i
s
t
e
n
e
r
(
t
h
i
s
)
;
/
/
L
e
c
o
n
t
r
o
l
e
u
r
d
u
b
o
u
t
o
n
e
s
t
e
c
r
i
t
d
i
r
e
c
t
e
m
e
n
t
d
a
n
s
/
/
l
a
c
l
a
s
s
e
a
j
o
u
t
.
a
d
d
A
c
t
i
o
n
L
i
s
t
e
n
e
r
(
n
e
w
A
c
t
i
o
n
L
i
s
t
e
n
e
r
(
)
{
p
u
b
l
i
c
v
o
i
d
a
c
t
i
o
n
P
e
r
f
o
r
m
e
d
(
A
c
t
i
o
n
E
v
e
n
t
e
)
{
S
t
r
i
n
g
s
t
r
=
t
e
x
t
.
g
e
t
T
e
x
t
(
)
;
i
f
(
s
t
r
.
l
e
n
g
t
h
(
)
>
0
)
{
l
i
s
t
D
a
t
a
.
a
d
d
E
l
e
m
e
n
t
(
t
e
x
t
.
g
e
t
T
e
x
t
(
)
)
;
t
e
x
t
.
s
e
t
T
e
x
t
(
"
"
)
;
t
e
x
t
L
i
s
t
.
s
e
t
L
i
s
t
D
a
t
a
(
l
i
s
t
D
a
t
a
)
;
}
}
}
)
;
}/
/
C
e
t
t
e
m
e
t
h
o
d
e
e
s
t
a
p
p
e
l
e
e
s
i
l
a
s
e
l
e
c
t
i
o
n
d
e
l
a
l
i
s
t
e
/
/
c
h
a
n
g
e
p
u
b
l
i
c
v
o
i
d
v
a
l
u
e
C
h
a
n
g
e
d
(
L
i
s
t
S
e
l
e
c
t
i
o
n
E
v
e
n
t
e
)
{
S
t
r
i
n
g
s
e
l
e
c
t
e
d
=
(
S
t
r
i
n
g
)
t
e
x
t
L
i
s
t
.
g
e
t
S
e
l
e
c
t
e
d
V
a
l
u
e
(
)
;
/
/
L
e
t
e
x
t
e
a
f
f
i
c
h
e
e
s
t
m
i
s
a
j
o
u
r
e
n
f
o
n
c
t
i
o
n
d
e
l
a
/
/
n
o
u
v
e
l
l
e
s
e
l
e
c
t
i
o
n
i
f
(
s
e
l
e
c
t
e
d
!
=
n
u
l
l
)
{
d
e
s
s
i
n
.
s
e
t
T
e
x
t
(
s
e
l
e
c
t
e
d
)
;
}
e
l
s
e
{
d
e
s
s
i
n
.
s
e
t
T
e
x
t
(
"
"
)
;
}d
e
s
s
i
n
.
r
e
p
a
i
n
t
(
)
;
}/
/
C
e
t
t
e
m
e
t
h
o
d
e
e
s
t
a
p
p
e
l
e
e
s
i
l
a
t
o
u
c
h
e
e
n
t
r
e
e
e
s
t
/
/
p
r
e
s
s
e
e
d
a
n
s
l
e
c
h
a
m
p
d
e
t
e
x
t
e
p
u
b
l
i
c
v
o
i
d
a
c
t
i
o
n
P
e
r
f
o
r
m
e
d
(
A
c
t
i
o
n
E
v
e
n
t
e
)
{
S
t
r
i
n
g
s
t
r
=
t
e
x
t
.
g
e
t
T
e
x
t
(
)
;
/
/
L
e
t
e
x
t
e
d
u
c
h
a
m
p
e
s
t
a
j
o
u
t
e
l
a
l
i
s
t
e
d
e
s
t
e
x
t
e
s
i
f
(
s
t
r
.
l
e
n
g
t
h
(
)
>
0
)
{
l
i
s
t
D
a
t
a
.
a
d
d
E
l
e
m
e
n
t
(
t
e
x
t
.
g
e
t
T
e
x
t
(
)
)
;
t
e
x
t
.
s
e
t
T
e
x
t
(
"
"
)
;
t
e
x
t
L
i
s
t
.
s
e
t
L
i
s
t
D
a
t
a
(
l
i
s
t
D
a
t
a
)
;
}
}/
/
L
e
m
a
i
n
d
o
i
t
e
t
r
e
r
e
d
e
f
i
n
i
e
p
o
u
r
c
r
e
e
r
u
n
o
b
j
e
t
d
e
l
a
/
/
c
l
a
s
s
e
E
x
C
o
n
t
r
o
l
e
u
r
e
t
n
o
n
E
x
I
n
t
e
r
f
a
c
e
p
u
b
l
i
c
s
t
a
t
i
c
v
o
i
d
m
a
i
n
(
S
t
r
i
n
g
[
]
a
r
g
s
)
{
E
x
C
o
n
t
r
o
l
e
u
r
m
y
C
o
n
t
r
o
l
e
u
r
=
n
e
w
E
x
C
o
n
t
r
o
l
e
u
r
(
)
;
m
y
C
o
n
t
r
o
l
e
u
r
.
s
e
t
V
i
s
i
b
l
e
(
t
r
u
e
)
;
}
}/
/
U
n
e
c
l
a
s
s
e
d
e
c
o
n
t
r
o
l
e
u
r
d
e
f
e
n
e
t
r
e
c
l
a
s
s
W
i
n
d
o
w
C
o
n
t
r
o
l
e
r
e
x
t
e
n
d
s
W
i
n
d
o
w
A
d
a
p
t
e
r
{
p
u
b
l
i
c
v
o
i
d
w
i
n
d
o
w
C
l
o
s
i
n
g
(
W
i
n
d
o
w
E
v
e
n
t
e
)
{
S
y
s
t
e
m
.
e
x
i
t
(
0
)
;
}
}/
/
U
n
e
c
l
a
s
s
e
p
o
u
r
l
e
c
o
n
t
r
o
l
e
d
e
s
b
o
u
t
o
n
s
d
e
c
h
o
i
x
.
/
/
C
e
t
t
e
c
l
a
s
s
e
e
s
t
u
t
i
l
i
s
e
e
p
o
u
r
l
e
s
J
R
a
d
i
o
B
u
t
t
o
n
e
t
}
/
/
l
e
J
C
o
m
b
o
B
o
x
c
l
a
s
s
C
h
o
i
c
e
C
o
n
t
r
o
l
e
r
i
m
p
l
e
m
e
n
t
s
I
t
e
m
L
i
s
t
e
n
e
r
{
D
e
s
s
i
n
d
e
s
s
i
n
;
/
/
I
l
e
s
t
n
e
c
e
s
s
a
i
r
e
q
u
e
l
e
d
e
s
s
i
n
s
o
i
t
p
a
s
s
e
e
n
p
a
r
a
m
e
t
r
e
/
/
p
o
u
r
s
a
m
i
s
e
a
j
o
u
r
a
p
r
e
s
u
n
e
v
e
n
e
m
e
n
t
.
53
Annexe A. Applications graphiques (package swing)
p
u
b
l
i
c
C
h
o
i
c
e
C
o
n
t
r
o
l
e
r
(
D
e
s
s
i
n
d
)
{
d
e
s
s
i
n
=
d
;
}/
/
C
e
t
t
e
m
t
h
o
d
e
e
s
t
a
p
p
e
l
e
e
s
i
l
a
s
e
l
e
c
t
i
o
n
d
'
u
n
b
o
u
t
o
n
/
/
c
h
a
n
g
e
p
u
b
l
i
c
v
o
i
d
i
t
e
m
S
t
a
t
e
C
h
a
n
g
e
d
(
I
t
e
m
E
v
e
n
t
e
)
{
/
/
O
n
t
e
s
t
e
q
u
e
l
'
e
v
e
n
e
m
e
n
t
e
s
t
b
i
e
n
u
n
e
s
e
l
e
c
t
i
o
n
i
f
(
e
.
g
e
t
S
t
a
t
e
C
h
a
n
g
e
(
)
=
=
I
t
e
m
E
v
e
n
t
.
S
E
L
E
C
T
E
D
)
{
/
/
t
r
a
i
t
e
m
e
n
t
e
f
f
e
c
t
u
e
r
s
i
l
'
e
v
e
n
e
m
e
n
t
s
'
e
s
t
/
/
p
r
o
d
u
i
t
s
u
r
u
n
J
R
a
d
i
o
B
u
t
t
o
n
i
f
(
e
.
g
e
t
S
o
u
r
c
e
(
)
i
n
s
t
a
n
c
e
o
f
J
R
a
d
i
o
B
u
t
t
o
n
)
{
d
e
s
s
i
n
.
s
e
t
F
i
g
u
r
e
(
(
(
J
R
a
d
i
o
B
u
t
t
o
n
)
e
.
g
e
t
I
t
e
m
(
)
)
.
g
e
t
T
e
x
t
(
)
)
;
}
/
/
t
r
a
i
t
e
m
e
n
t
a
e
f
f
e
c
t
u
e
r
s
i
l
'
e
v
e
n
e
m
e
n
t
s
'
e
s
t
/
/
p
r
o
d
u
i
t
s
u
r
u
n
J
C
o
m
b
o
B
o
x
e
l
s
e
i
f
(
e
.
g
e
t
S
o
u
r
c
e
(
)
i
n
s
t
a
n
c
e
o
f
J
C
o
m
b
o
B
o
x
)
{
d
e
s
s
i
n
.
s
e
t
C
o
u
l
e
u
r
(
(
S
t
r
i
n
g
)
e
.
g
e
t
I
t
e
m
(
)
)
;
}
e
l
s
e
{
S
y
s
t
e
m
.
e
r
r
.
p
r
i
n
t
l
n
(
"
E
r
r
e
u
r
-
c
o
m
p
o
s
a
n
t
n
o
n
v
a
l
i
d
e
"
)
;
}d
e
s
s
i
n
.
r
e
p
a
i
n
t
(
)
;
}
}
}
54
Annexe B
Diagramme de classes UML
UML (Unified Modeling Language) a t cr en 1997 pour tre le langage standard de mod-
lisation orient-objet. UML contient diffrents diagrammes utiliss pour dcrire de nombreux
aspects du logiciel. Dans le cadre de ce cours, nous utiliserons uniquement le diagramme de
classes
1
.
Le diagramme de classes reprsente la structure statique du logiciel. Il dcrit lensemble des
classes qui sont utilises ainsi que leurs associations. Il est inspir des diagrammes Entit-Relation
utiliss en modlisation de bases de donnes, en y ajoutant les aspects oprationnels (les m-
thodes) et quelques subtilits smantiques (la composition, par exemple).
B.1 Reprsentation des classes et interfaces
B.1.1 Les classes
En UML, une classe est au minimumdcrite par un nom. Graphiquement, elle est reprsente
par un rectangle, ventuellement divis en 3 parties : son nom, ses attributs et ses oprations. On
appelle membres de la classe ses attributs et mthodes (ou oprations).
Nom de
classe
Nom de
classe
Opration
Opration
Attribut
Attribut
Nom de
classe
Figure B.1 Reprsentations UML possible dune classe, avec ou sans les membres
B.1.2 Les membres de classe
Chaque attribut est dcrit au moins par un nom (unique dans une mme classe) et par un type
de donnes.
Une opration, ou mthode, est dcrite au moins par un nom, par un ensemble darguments
ncessaires son invocation et par un type de retour. Chaque argument est dcrit par un nom
et un type de donnes.
1. le langage UML pourra tre tudi en profondeur lors du cours Analyse et Conception de Systmes Informa-
tiques de laxe Ingnierie des Systmes Informatiques
55
Annexe B. Diagramme de classes UML
Un niveau de visibilit est galement attribu chaque membre. La visibilit dun membre
dune classe dfinit quelles autres classes y ont accs (en terme de lecture/criture). UML utilise 3
niveaux de visibilit :
public (not par +), le membre est visible par toutes les classes
priv (not par -), le membre nest visible par aucune classe sauf celle qui le contient
protg (not par #), le membre est visible par toutes les sous-classes de celle qui le contient
(cette visibilit est explique ultrieurement)
+ calculerDureePret() : int
+ getAge() : int
+ surnom : String
- nom : String
- prenom : String
# dateNaissance : Date
Personne
Figure B.2 Exemple de classe Personne avec attributs et oprations
La figure B.2 est un exemple dune classe Personne avec toutes les possibilits de visibilit.
B.1.3 Les classes abstraites
En UML, le mot-cl {abstrait} (ou {abstract}) est accol aux classes et mthodes abs-
traites. Une autre manire souvent usite de reprsenter ces mthodes ou classes est dcrire leur
nom en italique. Les attributs et mthodes de classe sont souligns. La classe Personne dcrite dans
la figure ci-dessous montre un exemple dattribut et de mthode de classe.
Personne
Personne
{abstract}
Figure B.3 Deux reprsentations possibles pour une classe abstraite Personne
+ calculerDureePret() : int
+ setAgeMajorite(a : int)
+ getAge() : int
+ surnom : String
- nom : String
- prenom : String
# dateNaissance : Date
- ageMajorite : int = 18
Personne
Figure B.4 Exemple dun attribut et dune mthode de classe pour la classe Personne
B.1.4 Les interfaces
En UML, une interface est dcrite par le mot-cl interface dans le bloc dentte, comme
prsent dans la figure B.5.
56
B.2. Les relations
<<interface>>
Interface
Figure B.5 Exemple dinterface
B.2 Les relations
En conception oriente objet, les relations englobent notamment les relations dhritage et de
ralisation dinterface.
B.2.1 Lhritage
En UML, lhritage se reprsente par une flche la pointe creuse. La figure B.6 dcrit deux
classes Super-classe et Sous-classe. La classe Sous-classe hrite de la classe Super-classe.
Super-classe
Sous-classe
Figure B.6 Exemple dhritage
B.2.2 La ralisation
La ralisation dune interface par une classe se reprsente par une flche pointille pointe
creuse, comme illustr dans la figure B.7.
<<interface>>
Interface
Classe
Figure B.7 Exemple de ralisation de linterface Interface par la classe Classe
B.3 Les associations
Certaines relations entre classes dun mme diagramme sont reprsentes en UML sous la
forme dassociations. Le plus souvent une association ne relie que deux classes. Une association
57
Annexe B. Diagramme de classes UML
peut tre identifie par un nom et chacune de ses extrmits dfinit le nombre dinstances des
classes relies qui sont impliques dans cette association. Onappelle multiplicit ce nombre dins-
tances qui peut prendre les valeurs suivantes :
Multiplicit Interprtation
1 un et un seul
0..1 zro ou un
N exactement N
M..N de M N
* zro ou plus
0..* zro ou plus
1..* un ou plus
Responsable Collaborateur
*
1
manage
chef subordonn
Figure B.8 Exemple dassociation manage
Lexemple de la figure B.8 dcrit une association manage entre la classe Responsable et la
classe Collaborateur. Un responsable gre plusieurs collaborateurs, ses subordonns. Un col-
laborateur est gr par un seul responsable, son chef. Les lments subordonn et chef sont des
rles dassociation.
B.3.1 Direction des associations
Les associations peuvent tre diriges, ce qui contraint la visibilit et la navigation dans le mo-
dle. La direction se reprsente par une flche classique. Par dfaut, sil ny a pas de flche, lasso-
ciation est bidirectionnelle (comme sil y avait une flche chaque extrmit de lassociation).
*
1
A B
*
1
A B
*
1
A B
Figure B.9 Exemples dassociations diriges
La figure B.10 prsente des exemples de directions, dont voici les interprtations. La premire
ligne signifie que A connat tous les B auxquels elle est associe, et rciproquement, un B connat le
A auquel il est associ. La deuxime ligne signifie que seul le A connat les B auxquels il est associ,
mais pas linverse. Finalement, dans la troisime ligne, un B connat le A auquel il est associ, mais
pas linverse. En fait, ceci va impliquer la prsence ou non dun attribut a de type A dans la classe
B ou b de type B dans la classe A en fonction de la direction. Par exemple, pour la deuxime ligne,
A possde une liste dobjet de type B mais B ne possde pas dattribut de type A.
58
B.4. Correspondance UML-Java
B.3.2 Agrgation et composition
Deux sous-types dassociations permettent de prciser un sens particulier ces relations :
lagrgation et la composition. Elles peuvent galement tre diriges.
*
1
A B
*
1
A B
*
1
A B
*
1
A B
Figure B.10 Exemples de compositions et dagrgations.
Lagrgation est une association avec relation de subordination, souvent nomme possde
reprsente par un trait reliant les deux classes et dont lorigine se distingue de lautre extrmit
(la classe subordonne) par un losange creux. Une des classes regroupe dautres classes. On peut
dire que lobjet A utilise ou possde une instance de la classe B.
La composition est une association liant le cycle de vie des deux classes concernes. Une as-
sociation de composition sinterprte comme une classe est compose de un ou plusieurs lment
de lautre classe. Elle est reprsente par un trait reliant les deux classes et dont lorigine se dis-
tingue de lautre extrmit (la classe composant) par un losange plein. On peut dire que lobjet A
est compos instance de la classe B, et donc si lobjet de type A est dtruit, les objets de type B qui
le composent sont galement dtruit. Ce sera galement souvent les objets de type A qui creront
les objets de type B.
B.4 Correspondance UML-Java
Java permet de programmer tout modle sous forme de diagramme de classe UML tel que
prsent ci-dessus. Voici quelques exemples de correspondance entre le modle UML et le codage
Java.
B.4.1 Classes et membres
+ calculerDureePret() : int
+ getAge() : int
+ surnom : String
- nom : String
- prenom : String
# dateNaissance : Date
Personne
public class Personne {
public String surnom;
private String prenom;
private String nom;
protected Date dateNaissance;
public int calculerDureePret() {...}
public int getAge() {...}
}
B.4.2 Classes abstraites
59
Annexe B. Diagramme de classes UML
+ calculerDureePret() : int
+ setAgeMajorite(a : int)
+ getAge() : int
+ surnom : String
- nom : String
- prenom : String
# dateNaissance : Date
- ageMajorite : int = 18
Personne
public abstract class Personne {
public String surnom;
private String prenom;
private String nom;
protected Date dateNaissance;
private static int ageMajorite = 18;
public int calculerDureePret() {...}
public static void setAgeMajorite(int a) {...}
public int getAge() {...}
}
B.4.3 Interfaces
+ afcher()
<<interface>>
IAfchable
interface IAffichable {
void afficher();
}
B.4.4 Hritage
- nom : String
Personne
- iD : int
Adherent
public class Adherent extends Personne {
private int iD;
}
B.4.5 Ralisation
+ afcher()
<<interface>>
IAfchable
+ imprimer()
<<interface>>
IImprimable
+ afcher()
+ imprimer()
- nom : String
- chier : File
Image
public class Image implements IAffichable, IImprimable {
private String nom;
private File fichier;
public void afficher(){...}
public void imprimer(){...}
}
B.4.6 Associations
A1 B1
public class A1 {
private B1 b1;
...
}
60
B.4. Correspondance UML-Java
A2 B2
*
public class A2 {
private ArrayList<B2> b2s;
...
}
Homme
Femme
0..1
0..1
mari
epouse
public class Homme {
private Femme epouse;
...
}
public class Femme {
private Homme mari;
...
}
Personne
1
chef
0..*
subordonne
public class Personne {
private ArrayList<Personne> subordonnes;
private Personne chef;
...
}
61
Annexe B. Diagramme de classes UML
62
Rfrences
Livres :
Programmer en Java, 7e Edition, Claude Delannoy, Eyrolles, 2011
The Java Tutorial : A Short Course on the Basics, 4th Edition, Collectif, Prentice Hall, 2006
Effective Java, 2nd Edition, Joshua Bloch, Prentice Hall, 2008
Java in a nutshell, 5th edition, David Flanagan, OReilly, 2005
Sites web :
Le site officiel Java, http://www.oracle.com/technetwork/java/index.html
Le tutorial Java, http://docs.oracle.com/javase/tutorial/
lAPI du JDK 1.7, http://docs.oracle.com/javase/7/docs/api/
Un site (franais) de dveloppeurs, http://www.javafr.com/
Le site JavaWorld, http://www.javaworld.com
Quelques autres liens :
des liens en rapport avec Java, http://www.javamug.org/mainpages/Java.html
Tutoriaux jGuru, http://java.sun.com/developer/onlineTraining/
plein dautres cours, http://java.developpez.com/cours/
63