Professional Documents
Culture Documents
Lap Trinh Huong Doi Tư NG
Lap Trinh Huong Doi Tư NG
NG
IT
NG
PGS.TS. Tr n
nh Qu
Cc khi ni m c
b n c a L p trnh h
L p trnh h
ng
i t
ng
i t
ng
ng v i Java
GI I THI U
Trong nh ng n m g n y, l p trnh h ng i t ng tr nn g n g i nh s ra i lin ti p
c a cc ngn ng l p trnh h ng i t ng. S c m nh c a ph ng php l p trnh h ng i
t ng th hi n ch kh n ng m hnh ho h th ng d a trn cc i t ng th c t , kh n ng
ng gi v b o v an ton d li u, kh n ng s d ng l i m ngu n
ti t ki m chi ph v ti
nguyn; c bi t l kh n ng chia s m ngu n trong c ng ng l p trnh vin chuyn nghi p.
Nh ng i m m nh ny h a h n s thc y pht tri n m t mi tr ng l p trnh tin ti n cng v i
n n cng nghi p l p rp ph n m m v i cc th vi n thnh ph n c s n.
Ti li u ny nh m gi i thi u cho cc sinh vin m t ci nhn t ng quan v ph ng php l p trnh
h ng i t ng cng cung c p nh ng ki n th c, cc k thu t c b n cho pht tri n cc ng d ng
c a mnh d a trn ngn ng l p trnh Java - m t trong nh ng ngn ng l p trnh h ng i t ng
thng d ng nh t hi n nay.
N i dung c a ti li u ny bao g m hai ph n chnh:
Ph n th nh t trnh by nh ng khi ni m v cc v n
c b n c a l p trnh h ng i
t ng bao g m t ng quan v cch ti p c n h ng i t ng v cc khi ni m i t ng,
l p, k th a, ng gi, a hnh
Ph n th hai trnh by chi ti t ph
trnh Java.
N i dung c a ti li u bao g m 6 ch
ng php l p trnh h
ng
it
ng v i ngn ng l p
ng:
Ch
Ch
Ch
Ch
Ch
Ch
ng 6: L p trnh giao di n trn Java. Trnh by cc k thu t l p trnh giao di n trn Java:
L p trnh v i cc giao di n c b n trong th vi n AWT, l p trnh giao di n v i Applet
v HTML, l p trnh giao di n nng cao v i th vi n SWING.
c ban u c a ngn ng
t tn bi n, ki u d li u,
Ti li u ny
c vi t nh m ph c v mn h c L p trnh h ng i t ng gi ng d y ti p theo
sau mn h c Ngn ng l p trnh C++ v nh v y khi h c mn h c ny sinh vin s d n m b t
c nh ng c tr ng khc bi t c a ngn ng Java so v i C++.
2
Cu n sch ny cn c km theo m t
v bi t p trong cu n sch.
a CD ch a ton b m cc ch
ng trnh ci
t lm v d
PH N 1
NH NG KHI NI M C
C A L P TRNH H
NG
B N
IT
NG
CH
NG 1
T NG QUAN V CCH TI P C N
H
NG
IT
NG
ng
it
ng. N i
ng
it
ng.
1.1 PH
ng hi n nay c a l p trnh h
ng
it
ng
ng c u trc.
c th c
c tr ng
L p trnh tuy n tnh c hai
n gi n: ch
c tr ng:
ng trnh
c ti n hnh
n gi n theo l i tu n t , khng ph c t p.
c th c hi n tu n t
Tnh ch t
u i m: Do tnh n gi n, l p trnh tuy n tnh c u i m l ch ng trnh
hi u. L p trnh tuy n tnh
c ng d ng cho cc ch ng trnh n gi n.
Nh c i m: V i cc ng d ng ph c t p, ng
gi i quy t.
n gi n, d
ng php
c th c
c tr ng
c tr ng c b n nh t c a l p trnh c u trc th hi n
Ch
m i quan h :
Trong :
C u trc d li u l cch t ch c d li u, cch m t bi ton d
trnh
Gi i thu t l m t quy trnh
Trong ch
th c hi n m t cng vi c xc
i d ng ngn ng l p
nh
M t c u trc d li u ch ph h p v i m t s h n ch cc gi i thu t.
N u thay
i c u trc d li u th ph i thay
M t gi i thu t th
i gi i thu t cho ph h p.
ng ph i i km v i m t c u trc d li u nh t
nh.
Tnh ch t
M i ch
ng trnh con c th
c g i th c hi n nhi u l n trong m t ch
ng trnh chnh.
Cc ch ng trnh con c th
cg i n
th c hi n theo m t th t b t k, tu thu c
vo gi i thu t trong ch ng trnh chnh m khng ph thu c vo th t khai bo c a cc
ch ng trnh con.
Cc ngn ng l p trnh c u trc cung c p m t s c u trc l nh i u khi n ch
ng trnh.
u i m
Ch
Nh
c i m
L p trnh c u trc khng h tr vi c s d ng l i m ngu n: Gi i thu t lun ph thu c ch t
ch vo c u trc d li u, do , khi thay i c u trc d li u, ph i thay i gi i thu t,
ngh a l ph i vi t l i ch ng trnh.
Khng ph h p v i cc ph n m m l n: t duy c u trc v i cc gi i thu t ch ph h p v i
cc bi ton nh , n m trong ph m vi m t modul c a ch ng trnh. V i d n ph n m m
l n, l p trnh c u trc t ra khng hi u qu trong vi c gi i quy t m i quan h v m gi a
cc modul c a ph n m m.
V n
V n
c b n c a l p trnh c u trc l b ng cch no
phn chia ch ng trnh chnh thnh cc
ch ng trnh con cho ph h p v i yu c u, ch c n ng v m c ch c a m i bi ton.
Thng th ng, phn r bi ton trong l p trnh c u trc, ng
trn xu ng (top-down).
i ta s d ng ph
ng php thi t k
6
Ph
c t,
c, c m m c,
L u :
Cng s d ng ph ng php top-down v i cng m t bi ton, nh ng c th cho ra nhi u
k t qu khc nhau. Nguyn nhn l do s khc nhau trong tiu ch phn r m t bi ton
thnh cc bi ton con.
V d , v n p d ng ph ng php top-down
gi i quy t bi ton xy nh, nh ng n u s d ng
m t cch khc phn chia bi ton, ta c th thu
c k t qu khc bi t so v i ph ng php ban
u:
m c th nh t, chia bi ton xy nh thnh cc bi ton nh h n nh : lm ph n g , lm
ph n s t, lm ph n b tng v lm ph n g ch.
m c th hai, phn r cc cng vi c m c th nh t: vi c lm g c th chia thnh cc
cng vi c nh : x g , gia cng g , t o khung, l p vo nh. Vi c lm s t c th chia nh
thnh
R rng, v i cch lm m n th ny, ta s thu
hi n ph n trn.
1.2 PH
1.2.1 Ph
NG PHP TI P C N H
ng php l p trnh h
ng
it
c m t k t qu khc h n v i cch th c th c
NG
IT
NG
ng
Khng qu n l
c s thay i d li u khi c nhi u ch ng trnh cng thay i m t bi n
chung. V n ny c bi t nghim tr ng khi cc ng d ng ngy cng l n, ng i ta khng
th ki m sot
c s truy nh p n cc bi n d li u chung.
Khng ti t ki m
c ti nguyn con ng i: Gi i thu t g n li n v i c u trc d li u, n u
thay i c u trc d li u, s ph i thay i gi i thu t, v do , ph i vi t l i m ch ng
trnh t
u.
kh c ph c
c hai h n ch ny khi gi i quy t cc bi ton l n, ng i ta xy d ng m t
ph ng php ti p c n m i, l ph ng php l p trnh h ng i t ng, v i hai m c ch chnh:
ng gi d li u
h n ch s truy nh p t do vo d li u, khng qu n l
c th c hi n theo ph
it
ng php tr u t
c.
u cho cc ch
ng ho
it
it
ng trnh.
ng thnh l p t
ng t
ng ng.
Vi c truy nh p d li u
c th c hi n thng qua cc ph
Khng
c truy nh p t do tr c ti p n d li u.
ng th c
it
ng tr
c trang b cho l p.
c k th a nhau
ng th c c a nhau.
Trong l p d n xu t (l p
c k th a) c th s d ng l i cc ph ng th c c a l p c s
(l p b l p khc k th a) m khng c n thi t ph i ci t l i m ngu n.
Ngay c khi l p d n xu t nh ngh a l i cc ph ng th c cho mnh, l p c s c ng khng
b nh h ng v khng ph i s a l i b t k m t o n m ngu n no.
Ngn ng l p trnh h ng i t ng ph bi n hi n nay l Java v C++. Tuy nhin, C++ m c d
c ng c nh ng c tr ng c b n c a l p trnh h ng i t ng nh ng v n khng ph i l ngn ng
l p trnh thu n h ng i t ng. Java th t s l m t ngn ng l p trnh thu n h ng i t ng.
c tr ng
L p trnh h
ng
it
ng c hai
c tr ng c b n:
ng gi d li u: d li u lun
c t ch c thnh cc thu c tnh c a l p
truy nh p n d li u ph i thng qua cc ph ng th c c a i t ng l p.
it
ng. Vi c
S d ng l i m ngu n: vi c s d ng l i m ngu n
c th hi n thng qua c ch k
th a. C ch ny cho php cc l p i t ng c th k th a t cc l p i t ng khc. Khi
, trong cc l p k th a, c th s d ng cc ph ng th c (m ngu n) c a cc l p b k
th a, m khng c n ph i nh ngh a l i.
u i m
L p trnh h
ng
it
ng c m t s
u i m n i b t:
c ng
ng th c
1.2.2 Ph
ng
it
ng
M tv n
c b n t ra cho ph ng php h ng i t ng l t m t bi ton ban u, lm sao
thu
c m t t p cc i t ng, v i cc ch c n ng
c ph i h p v i nhau, p ng
c yu
c u c a bi ton t ra?
Ph ng php phn tch thi t k h ng i t ng ra i nh m tr l i cho cu h i ny. M c ch l
xy d ng m t t p cc l p i t ng t ng ng v i m i bi ton, ph ng php ny ti n hnh theo
hai pha chnh:
Pha phn tch: Chuy n
Pha thi t k : Chuy n i
th c th ci t
c.
M t bi ton
c t yu c u
Trch ch n
it
ng
M hnh ho l p
it
ng
Thi t k t ng quan
Thi t k chi ti t.
c 1: M t bi ton
Bi ton ban
c pht bi u d
M c ch, ch c n ng chung
Cc yu c u v thng tin d li u
Cc yu c u v ch c n ng th c hi n
c 2:
c t yu c u
Cc yu c u
c hnh th c ho ln m t m c cao h n b ng cch s d ng ngn ng ki u k ch b n
(scenario)
m t . Trong m t k ch b n, m i ch c n ng, m i ho t ng
c m t b ng m t
k ch b n, bao g m:
Cc tc nhn tham gia vo k ch b n.
Vai tr c a m i tc nhn trong k ch b n.
Th t cc hnh ng m m i tc nhn th c hi n: khi no th c hi n, tc
no, thng tin no
c trao i.
Qu trnh trn
ng vo tc nhn
c ti n hnh v i t t c cc ch c n ng yu c u c a h th ng.
c 3: Trch ch n
c ny s ti n hnh
it
ng
xu t cc
it
ng c th c m t trong h th ng:
D a vo cc k ch b n
c m t trong b
xu t thnh cc i t ng.
L a ch n cc
trng l p.
it
Cu i cng, ta thu
c t p cc
c 4: M hnh ho l p
c ny ti n hnh tr u t
c hai, ch n ra cc tc nhn c xu t hi n
it
ng ho
it
ng c a h th ng.
ng
it
ng thnh cc l p:
ng v a thu th p
c, d a vo yu c u v
Thu th p cc hnh ng m m i i t ng c n th c hi n, d a vo cc k ch b n m
t ng t ng ng c tham gia (trong b c 2).
Nhm cc
it
ng t
it
ng trong nhm.
c m t t p cc l p
it
ng ban
u c a h th ng.
c 5: Thi t k t ng qut
K t qu thu
cc ab
c ny l m t s
c 6: Thi t k chi ti t
B c ny s th c hi n thi t k
t ng:
cc ab
u, ta thu
ng php ti p c n
u / nh
ng gi
c i m khc nhau.
L nh v c ng d ng khc nhau.
Khc nhau v ph
ng php m hnh
Hai ph ng php ny khc nhau hon ton cch ti p c n v m hnh bi ton, ph ng php
h ng i t ng ti n hnh theo ph ng php t d i ln trn, t th p ln cao, t c th
n tr u
t ng. Trong khi , ph ng php c u trc ti p c n theo ph ng php t trn xu ng d i, t t ng
quan n chi ti t:
Ph ng php h ng i t ng b t u b ng nh ng i t ng c th , t p h p cc thu c
tnh c a t ng i t ng. Sau , nhm cc i t ng t ng t nhau thnh nhm, lo i b
cc thu c tnh qu c bi t, ch gi l i cc thu c tnh chung nh t, nhm thnh l p. Cho nn,
qu trnh hnh thnh l p l qu trnh i t th p ln cao, t c th
m c th p n tr u
t ng ho m c cao.
11
Khc nhau v
Hai ph
c tr ng ng gi
ng php ti p c n ny c ng c nh ng
Ph ng php h ng i t ng c c tr ng l d li u
c ng gi h n ch truy nh p
t do tr c ti p vo d li u. Th hai l cho php s d ng l i m ngu n
ti t ki m ti
nguyn v cng s c l p trnh.
Trong khi , c tr ng c a ph ng php c u trc l c u trc d li u v gi i thu t v m i
quan h ph thu c ch t nh c a gi i thu t vo c u tr c d li u.
Khc nhau v
Hai ph
u nh
c i m
ng php ny c ng c nh ng u nh
c i m tri ng
c nhau:
Ph ng php h ng i t ng c u i m l b o v
c d li u trnh b truy nh p tr c
ti p t do t bn ngoi, ti t ki m
c ti nguyn v cng s c l p trnh do c th dng l i
m ngu n. Tuy nhin, ph ng php ny l i kh ph c t p, kh theo di
c lu ng d li u
v h n n a, gi i thu t khng ph i l v n tr ng tm c a ph ng php ny.
Tri l i, ph ng php h ng c u trc l i c u i m l t duy gi i thu t r rng, d
di lu ng d li u, ch ng trnh n gi n v d hi u. Tuy nhin, khng b o v
ton d li u trong ch ng trnh. H n n a, h n ch l n nh t l s ph thu c ch t ch
gi i thu t vo c u trc d li u, khi n cho khi thay i c u trc d li u, th ng ph i
i gi i thu t, v do , ph i vi t l i m cho ch ng trnh.
theo
c an
c a
thay
Khc nhau v l nh v c p d ng
Do s khc nhau v cc c tr ng v s khc nhau v u nh
ny c ng c s khc nhau ng k trong l nh v c p d ng:
c i m, cho nn hai ph
ng php
Ph ng php h ng i t ng th ng
c p d ng cho cc bi ton l n, ph c t p, c
nhi u lu ng d li u khc nhau, khng th qu n l
c b ng ph ng php c u trc. Khi
, ng i ta dng ph ng php h ng i t ng
t n d ng kh n ng b o v d li u
trnh b truy nh p t do. H n n a, t n d ng kh n ng dng l i m ngu n c a ph ng php
ny ti t ki m ti nguyn v cng s c.
Trong khi , ph ng php c u trc th ng ph h p v i cc bi ton nh , c lu ng d li u
r rng, c n ph i t duy gi i thu t r rng v ng i l p trnh v n c kh n ng t qu n l
c m i truy nh p n cc d li u c a ch ng trnh.
1.4 XU H
L p trnh h
NG
IT
NG
ng thnh ph n
Xu t pht t l p trnh h ng
programming) theo t ng:
it
ng thnh ph n (component-oriented
c
12
ng thnh ph n, ng
thu
c m t ph n m m tho mn m t
ng php sau:
nh.
ng php ny c nh ng u i m r t l n:
L p trnh vin c th chia s v i nhau nh ng thnh ph n mnh xy d ng cho nhi u
ng i khc dng chung.
Khi c n, l p trnh vin c th l p ghp cc thnh ph n c s n khc nhau
t o thnh cc
ch ng trnh c ch c n ng khc nhau. T t c ch c n d a trn cng ngh l p ghp thnh
ph n, ti t ki m
c r t nhi u cng s c l p trnh.
Trong xu h ng l p trnh h
ang pht tri n m nh m :
ng thnh ph n, m t s ph
L p trnh h
L p trnh h
L p trnh h
ng agent
ng agent c hai
c tr ng c b n:
Th nh t l kh n ng t ch c a m i agent
L p trnh h
ng aspect
ng aspect c
c tr ng c b n:
T NG K T CH
c th c hi n lin
NG 1
N i dung ch ng 1 trnh by cc v n
i t ng trong l p trnh:
Cc ph
n ph
ng php ti p c n h
ng
Ph ng php ti p c n h
d ng l i m ngu n.
L p trnh h
ng
it
ng
ng, ph
it
ng v i hai
c tr ng c b n:
ng gi d li u v s
ng
it
ng.
ng aspect ti n
14
CH
N i dung ch
NG 2
NH NG KHI NI M C
B NC A
L P TRNH H
IT
NG
NG
it
ng
it
ng:
c coi l cc
it
ng
L p
it
ng
Vi c tr u t
Tr u t
ng ho
ng ho
it
it
ng theo ch c n ng
ng theo d li u
K th a
ng gi
a hnh
Ph
ng php ci
tl p
it
ng
2.1 CC KHI NI M C
2.1.1
it
ng
it
ng thng d ng hi n nay.
B N
ng
ng
V d :
1. Trong bi ton qu n l bun bn xe h i c a m t c a hng kinh doanh, m i chi c xe ang
c m t trong c a hng
c coi l m t i t ng. Ch ng h n, m t chi c xe nhn hi u
Ford, mu tr ng, gi 5000$ l m t i t ng.
2. Trong bi ton qu n l nhn vin c a m t v n phng, m i nhn vin trong v n phng
c
coi l m t i t ng. Ch ng h n, nhn vin tn l Vinh, 25 tu i lm phng hnh chnh
l m t i t ng.
M t
it
ng l m t th c th
ang t n t i trong h th ng v
nh danh i t ng: xc
cc i t ng v i nhau.
nh duy nh t cho m i
it
c xc
nh b ng ba y u t :
Tr ng thi c a
c.
it
Ho t
it
ng: l cc hnh
ng c a
Tr ng thi hi n t i c a i t ng qui
trong v d trn c tr ng thi l:
ng m
nh tnh ch t
it
it
ng c kh n ng th c hi n
c tr ng c a
it
ng ang
c.
Tn l Vinh
Tu i l 25
V tr lm vi c l phng hnh chnh.
15
ng. V d ,
it
ng xe h i c kh n ng th c hi n
ng.
D ng l i.
Ch y.
bi u di n i t
nn khi ni m l p
2.1.2 L p
it
ng trong l p trnh h
i t ng.
ng
it
ng, ng
i ta tr u t
ng ho
it
ng
t o
ng
c
ch
L u :
L p l m t khi ni m, mang tnh tr u t
it
L p
bi u di n m t t p cc
it
ng.
ng l m t th hi n c th c a l p, l m t th c th t n t i trong h th ng.
c dng
bi u di n
Thu c tnh c a l p t
Ph
ng, dng
ng th c c a l p t
V d , l p xe t
it
ng ng v i thu c tnh c a cc
ng ng v i cc hnh
ng c a
c m t b ng cc thu c tnh v ph
it
ng th c:
ng.
it
ng.
ng th c:
L p Xe t
Thu c tnh:
Nhn hi u xe
Mu xe
Gi xe
Cng su t xe (m l c)
Ph
ng th c:
Kh i
ng xe
Ch y xe
16
D ng xe
T t my
L u :
M t l p c th c m t trong cc kh n ng sau:
Ho c ch c thu c tnh, khng c ph
Ho c ch c ph
Ho c c c thu c tnh v ph
ng th c, tr
ng h p ny l ph bi n nh t.
ng th c no l cc l p tr u t
L p v
L p v
ng th c.
it
it
ng. Cc l p ny
ng
ng, m c d c m i lin h t
L p l s tr u t
l p.
ng ho c a cc
it
ng l m t th hi n c a
it
M t l p l m t nguyn m u c a m t i t ng. N xc
thu c tnh c n thi t cho m t nhm cc i t ng c th .
nh cc hnh
ng th c.
ng kh thi v cc
2.1.3 Tr u t
ng ho
it
ng.
ng theo ch c n ng
ng c th c c a cc
Nhm cc i t ng c cc ho t
thnh m t nhm chung.
M i nhm
it
ng
Cc hnh
ng.
ng chung c a nhm
ng t
xu t m t l p t
it
it
ng.
ng t nhau, lo i b b t cc ho t
ng c bi t, t o
ng ng.
ng s c u thnh cc ph
ng th c c a l p t
ng
ng my.
C th ch y.
C th d ng l i.
C th t t my.
17
ng c bi t nh :
C th gi u n pha
C th t b t n pha
C th t
ng pht tn hi u bo
ng.
ng th c:
Kh i
ng xe
Ch y xe
D ng xe
T t my
2.1.4 Tr u t
ng ho
it
ng theo d li u
it
ng
xu t m t l p t
it
it
ng.
ng ng c a l p
u c nhn hi u.
Cc xe
u c mu s c
Cc xe
u c gi bn
Cc xe
u c cng su t
ng c
18
L p Xe t
Thu c tnh:
Nhn hi u xe
Mu xe
Gi xe
Cng su t xe (m l c)
u i m c a vi c tr u t
ng ha
Nh ng u i m c a vi c tr u t
T p trung vo v n
Xc
nh nh ng
ng ha l:
c n quan tm
c tnh thi t y u v nh ng hnh
ng c n thi t
2.1.5 Khi ni m k th a
Xt tr ng h p bi ton qu n l nhn s v sinh vin c a m t tr
i t ng chnh l l p Nhn vin v l p Sinh vin:
L p Nhn vin
i h c. Khi , ta c hai l p
L p Sinh vin
Thu c tnh:
Ph
ng
Thu c tnh:
Tn
Tn
Ngy sinh
Ngy sinh
Gi i tnh
Gi i tnh
L p
ng
ng th c:
Ph
ng th c:
Nh p/xem tn
Nh p/xem tn
Nh p/xem gi i tnh
Nh p/xem gi i tnh
Nh p/xem l
Nh p/xem l p
ng
c qu n l trong h
19
trnh r c r i do cc v n
n y sinh nh v y, l p trnh h ng i t ng s d ng k thu t k
th a nh m nhm cc ph n gi ng nhau c a cc l p thnh m t l p m i, sau cho cc l p ban u
k th a l i l p
c t o ra. Nh v y, m i l p th a k (l p d n xu t, l p con) u c cc thu c tnh
v ph ng th c c a l p b th a k (l p c s , l p cha).
Quay l i v i bi ton qu n l tr
vin v l p Sinh vin l:
ng
i h c, cc thu c tnh v ph
ng th c chung gi a l p Nhn
Tn,
Ngy sinh,
Gi i tnh,
Nh p/xem tn,
Nh p/xem ngy sinh
Nh p/xem gi i tnh.
Ta tch ph n chung ny thnh m t l p m c tr u t ng cao h n, l p Ng
l p cha c a l p Nhn vin v l p Sinh vin. Khi , cc l p tr thnh:
L p Ng
i. L p Ng
i s lm
Thu c tnh:
Tn
Ngy sinh
Gi i tnh
Ph
ng th c:
Nh p/xem tn
Nh p/xem ngy sinh
Nh p/xem gi i tnh
L p Nhn vin k th a t l p Ng
L p Sinh vin k th a t l p Ng
Thu c tnh:
L
Ph
Thu c tnh:
ng
L p
ng th c:
Nh p/xem l
Ph
ng
ng th c:
Nh p/xem l p
t ph
ng th c
ng th c c a l p c s t
m t l p c s , m c th s d ng
t trng l p m ngu n c a ch
i m t l n khi c n ph i thay
ng
t t
ng trnh.
i d li u c a cc l p.
2.1.6 Khi ni m ng gi
Xt v d bi ton qu n l nhn vin v n phng v i l p Nhn vin nh sau:
20
L p Nhn vin
Thu c tnh:
Tn
Ngy sinh
Gi i tnh
Phng ban
H
Ph
ng
ng th c:
Tnh l
ng nhn vin
ng> = <H
ng> * <L
i v i m i ng
ng c
b n> * <T
i:
l
ph n tr m>
tnh
ng th c show c a l p Ng
i s gi i thi u tn v tu i c a ng
u k th a t
i .
21
Ph
Ph
L p Ng
ng l bao nhiu
l p no.
Thu c tnh:
Tn
Ngy sinh
Gi i tnh
Ph
ng th c:
Nh p/xem tn
Nh p/xem ngy sinh
Nh p/xem gi i tnh
show
L p Nhn vin k th a t l p Ng
L p Sinh vin k th a t l p Ng
Thu c tnh:
L
Ph
Thu c tnh:
ng
L p
ng th c:
Ph
Nh p/xem l
ng
ng th c:
Nh p/xem l p
show
show
Khi , n u trong h th ng c cc
Khi ta g i hm show t
it
it
ng c th t
ng c a l p Ng
ng ng v i ba l p, th:
i, s nh n
c tn v tu i c a ng
Khi ta g i ph ng th c show t
c a nhn vin .
it
ng c a l p Nhn vin, s nh n
Khi ta g i ph
sinh vin .
it
ng c a l p Sinh vin, ta s bi t
ng th c show t
i .
c s ti n l
ng
cl ph cc a
u v nh
c i m
22
So snh
m c khi ni m
ng
it
ng; n
c dng
bi u di n m t
So snh v m c ch v ch c n ng
V m c ch, L p v C u trc u c chung m t m c ch ban u, l nhm m t t p h p cc
d li u l i v i nhau
x l ng b v th ng nh t: C u trc nhm cc d li u hay ph i i km
v i nhau l i thnh m t nhm cho d x l. T ng t , L p l t p h p m t s thu c tnh chung c a
i t ng x l.
Tuy nhin, L p v C u trc c ng c m t s khc bi t trn kha c nh ny:
L p ngoi m c ch nhm cc thu c tnh d li u c a
c a i t ng thnh cc ph ng th c c a L p.
it
ng, cn nhm cc ho t
ng
So snh v
u nh
c i m
u i m m C u trc khng c:
23
cb ov ,
Thnh ph n private
Thnh ph n private l khu v c dnh ring cho l p, khng chia s v i b t k l p khc t bn ngoi.
Thnh ph n private ch cho php truy nh p trong ph m vi n i b l p: T ph ng th c vo cc
thu c tnh ho c gi a cc ph ng th c c a l p v i nhau. Cc thnh ph n private khng th truy
nh p t bn ngoi l p, c ng nh t
i t ng khc.
Trong m t l p, thng th
ng cc thnh ph n sau s
t vo khu v c private c a l p:
t vo vng
Thnh ph n public
Thnh ph n public l khu v c m L p c th chia s v i t t c cc ch ng trnh v
ngoi. Thnh ph n public c th
c truy nh p t bn trong l n bn ngoi l p:
it
ng bn
ng trnh bn ngoi ho c cc
ng cc thnh ph n sau s
it
ng khc vo cc ph
ng th c
Cc ph ng th c
nh p/xem (set/get) cc thu c tnh d li u c a l p. Cc ph ng th c
ny s cho php cc i t ng bn ngoi truy nh p vo cc thu c tnh d li u c a l p m t
cch gin ti p.
Cc ph ng th c cung c p ch c n ng ho t ng, cch c x c a
tr ng bn ngoi. Cc ph ng th c ny th hi n ch c n ng c a cc
2.4 M T S
NGN NG
L P TRNH H
NG
ng
IT
it
i t ng i v i mi
i t ng l p.
NG
ng thng d ng hi n nay:
2.4.1 C++
C++, ra i vo gi a nh ng n m 1980, l m t ngn ng l p trnh h ng i t ng
t ngn ng l p trnh c u trc C. Cho nn, C++ l ngn ng l p trnh n a h ng
h ng c u trc.
Nh ng
c tr ng h
Cho php
ng
it
nh ngh a l p
c m r ng
i t ng, n a
ng c a C++
it
ng.
Cho php ng gi d li u vo cc l p i t
d li u c a l p b ng cc t kho ph m vi.
nh ngh a ph m vi truy nh p
Nh ng vi ph m h
nh ngh a ch ng ph
ng
it
ng th c c a l p b k th a (trong ph m vi quy
ng th c trong l p k th a.
ng c a C++
nh ngh a v s d ng cc bi n d li u t do.
Cho php
nh ngh a v s d ng cc hm t do.
Ngay c khi d li u
c ng gi vo l p, d li u v n c th truy nh p tr c ti p nh d
li u t do b i cc hm b n, l p b n (friend) trong C++.
c i m c a ngn ng .NET:
L m t ngn ng hon ton h ng i t ng: T t c cc thnh ph n, cc th c th trong
ch ng trnh u
c m hnh d i d ng m t l p nh t nh. Khng c d li u t do v
hm t do trong ch ng trnh.
Cung c p giao di n l p trnh
cho ng d ng c a mnh.
ho : l p trnh vin ch c n ko v th cc
it
ng
ho
25
2.4.3 Java
Java l m t ngn ng l p trnh
c Sun Microsystems gi i thi u vo thng 6 n m 1995. Java
c xy d ng trn n n t ng c a C v C++: Java s d ng c php c a C v c tr ng h ng i
t ng c a C++.
M ts
c i m c a Java:
Java l m t ngn ng l p trnh hon ton h ng i t ng: T t c cc th c th
u
c
coi l m t i t ng, l m t th hi n c th c a m t l p xc nh. Khng c d li u t do
v hm t do trong Java, t t c
u
c ng gi vo cc l p xc nh.
Java l ngn ng v a bin d ch v a thng d ch. u tin m ngu n
c bin d ch thnh
d ng bytecode; sau
c th c thi trn t ng lo i my nh trnh thng d ch. i u ny t o
ra kh n ng ho t ng c l p v i n n t ng ph n c ng c a cc ng d ng Java.
Java cho php ng i dng t t o cc i t ng th vi n JavaBeans c a mnh (t ng t
nh cc thnh ph n UserControl c a .NET). Cc i t ng Bean s
c s d ng l i nh
cc thnh ph n c s n trong cc ng d ng khc. i u ny m ra kh n ng to l n
ti t
ki m cng s c vi t m ngu n v kh n ng xy d ng cc k thu t cho m t n n cng nghi p
l p rp ph n m m.
Ngn ng l p trnh h
trnh ny.
ng
T NG K T CH
N i dung ch
it
ng Java s
NG 2
Khi ni m
i t ng.
it
ng, dng
ng
it
ng:
ch cc th c th t n t i th c t trong cc ng d ng h
ng
hnh thnh cc ph
ng th c c a l p, th hi n
ng th c, nh ng v i cc
it
i m
d ng
ng khc
26
CU H I V BI T P CH
1. Trong s cc nh n
ng
it
NG 2
a.
it
ng l m t th c th c th , t n t i th c t trong cc ng d ng.
b.
it
ng l m t th hi n c th c a L p.
c. L p l m t khi ni m tr u t
d. L p l m t s tr u t
ng dng
ng ho c a
it
bi u di n cc
it
ng.
ng.
e. L p v
it
f. Tr u t
ng ho
it
g. Tr u t
ng ho
it
ng theo ch c n ng t o ra cc ph
h. Tr u t
ng ho
it
i. Tr u t
ng ho
it
ng theo d li u t o ra cc ph
ng c b n ch t gi ng nhau.
ng th c c a l p.
ng th c c a l p.
i m ngu n.
it
ng khc nhau.
ng c a
it
ng Xe t.
xu t l p Car ( t).
ng c a
it
ng Xe but.
xu t l p Bus.
27
PH N 2
L P TRNH H
NG
IT
NG V I JAVA
28
CH
NG 3
GI I THI U V JAVA
N i dung c a ch
ng ny t p trung trnh by cc v n
L ch s ra
Ki n trc t ng qut m t ch
3.1 L CH S
3.1.1 Java
N m 1991, m t nhm k s c a Sun Microsystems mu n l p trnh
i u khi n cc thi t b i n
t nh tivi, my gi t, l n ng Ban u, h
nh dng C v C++ nh ng trnh bin d ch C/C++
l i ph thu c vo t ng lo i CPU. Do , h b t tay vo xy d ng m t ngn ng ch y nhanh,
g n, hi u qu , c l p thi t b v ngn ng Oak ra i v vo n m 1995, sau
c i tn
thnh Java.
Ngn ng l p trnh Java
c Sun Microsystems a ra gi i thi u vo thng 6 n m 1995 v
nhanh chng tr thnh m t ngn ng l p trnh c a cc l p trnh vin chuyn nghi p. Java
c
xy d ng d a trn n n t ng c a C v C++ ngh a l Java s d ng c php c a C v c tr ng
h ng i t ng c a C++. Java l ngn ng v a bin d ch v a thng d ch.
u tin m ngu n
c bin d ch thnh d ng bytecode. Sau
c th c thi trn t ng lo i my nh trnh thng
d ch. M c tiu c a cc nh thi t k Java l cho php ng i l p trnh vi t ch ng trnh m t l n
nh ng c th ch y trn cc n n ph n c ng khc nhau.
Ngy nay, Java
c s d ng r ng ri, khng ch
vi t cc ng d ng trn my c c b hay trn
m ng m cn xy d ng cc trnh i u khi n thi t b di ng, PDA,
3.1.2
c tr ng c a ngn ng Java
Ngn ng Java c nh ng
c tr ng c b n sau:
n gi n
H
ng
it
ng
c l p ph n c ng v h
i u hnh
M nh m
B om t
Phn tn
a lu ng
Linh
ng
n gi n
Nh ng ng i thi t k mong mu n pht tri n m t ngn ng d h c v quen thu c v i a s ng
l p trnh. Do v y Java lo i b cc c tr ng ph c t p c a C v C++ nh :
i
29
ng
it
ng
ng trnh
ng
u
it
ng:
c coi l m t
it
ng, t c l m t th hi n c th c a
u ph i n m trong m t class nh t
nh.
c l p ph n c ng v h
i u hnh
compiler
IB
compiler
Sparc
compiler
Macintosh
30
IB
Trnh
thng d ch Java
Bytecode
Sparc
(Java Interpreter)
Trnh bin d ch
Macintosh
cl pn n
(Platform
independent)
Hnh 3.2 D ch ch
ng trnh Java
M nh m
Java l ngn ng yu c u ch t ch v ki u d li u:
Ki u d li u ph i
c khai bo t
ng minh.
m b o r ng cc truy nh p
ng, nh d ch v thu
n gi n ha qa trnh x l l i v h i ph c sau l i.
B om t
Java cung c p m t mi tr
ton:
ng qu n l th c thi ch
ng trnh v i nhi u m c
ki m sot tnh an
m c th nh t, d li u v cc ph ng th c
c ng gi bn trong l p. Chng ch
truy xu t thng qua cc giao di n m l p cung c p.
m c th hai, trnh bin d ch ki m sot
nguyn t c c a Java.
M c th ba
c m b o b i trnh thng d ch. Chng ki m tra xem bytecode c
cc qui t c an ton tr c khi th c thi.
M c th t ki m sot vi c n p cc l p vo b nh
xu t tr c khi n p vo h th ng.
mb o
gim st vi c vi ph m gi i h n truy
Phn tn
Java
c thi t k
h tr cc ng d ng ch y trn m ng b ng cc l p M ng (java.net). H n n a,
Java h tr nhi u n n ch y khc nhau nn chng
c s d ng r ng ri nh l cng c pht tri n
trn Internet, n i s d ng nhi u n n khc nhau.
31
a lu ng
Ch ng trnh Java cung c p gi i php a lu ng (Multithreading)
ng th i v ng b gi a cc lu ng.
Linh
ng
Java
c thi t k nh m t ngn ng
ng
p ng cho nh ng mi tr ng m . Cc ch ng
trnh Java ch a r t nhi u thng tin th c thi nh m ki m sot v truy nh p i t ng lc ch y. i u
ny cho php kh n ng lin k t ng m.
3.1.3 Ci
t Java
Qu trnh ci
t mi tr
Copy b ci
Ch y ch
ng trnh ci
C p nh t bi n mi tr
Copy b ci
C th copy t
c:
t
ng
t
a CD ho c t i xu ng mi n ph t i
http://www.java.sun.com/downloads/
Ch y ch
ng trnh ci
t, th m c m c
nh l:
C p nh t bi n mi tr
ng
32
3.2 KI N TRC CH
3.2.1 Ki n trc ch
ng trnh Java
// Khai bo tn th
class className
// Khai bo tn l p
vi n s n c, n u c n dng
{
/*
y l dng ghi ch */
int var;
// Khai bo bi n
ng th c
{
/* Ph n thn c a ph
ng th c */
statement (s); // L nh th c hi n
}
}
Khai bo Package
Package
c dng
m t cch h u hi u
th ng nh t.
33
Tn modul trong d n
Tn cc ch c n ng trong modul.
V d :
Tn mi n c a cng ty l syz.com
Tn d n l pro
D n c hai modul l mod1 v mod2
Modul mod1 c hai ch c n ng l k t n i c s d li u connection v bi u di n d li u
bean.
Modul mod2 c hai ch c n ng l giao ti p interface v x l yu c u process.
c m t nh hnh 3.3
Khi , c u trc kh i c a d n
com
syz
pro
mod1
connection
mod2
bean
interface
process
u i m c a package:
Cho php nhm cc l p vo v i nhau thnh cc
v kh i s g n h n thao tc trn m t t p cc l p.
n v nh h n. Vi c thao tc trn cc
c dng
ng trnh thnh cc
L u :
Dng l nh khai bo tn kh i ph i
ng trnh.
34
Ch
c khai bo t i a m t tn kh i
i v i m i t p m ngu n Java.
Cc t p tin c a cc l p n m cng gi ng d ng ph i
th m c l tn kh i) theo c u trc kh i c a d n.
Tn kh i nn t theo ch th ng v tn kh i s l tn th m c t
trnh nh m l n v i tn cc t p tin l tn cc l p c a ch ng trnh.
Khi khng phn chia ch ng trnh thnh kh i (ch
ph i khai bo tn kh i
u ch ng trnh.
ng trnh
ng ng trong
a,
Khai bo th vi n
Khai bo th vi n ch ra nh ng th vi n
c nh ngh a s n m ch
t i. C php khai bo th vi n v i t kho import nh sau:
import <Tn th
ng trnh s tham kh o
vi n>;
ng 6).
ho v i cc thnh ph n giao
n cc ki u d li u c c u trc
i d li u t
ng minh (t ki u
import java.lang.*;
L u :
N u mu n khai bo tham kh o nhi u th vi n, ph i khai bo tham kh o m i th vi n v i
m t t kho import.
N u ch tham kh o m t vi l p trong m t th vi n, nn ch r tham kh o l p no, thay v
ph i khai bo tham kh o c gi (b ng k hi u *) v tham kh o c gi s t ng kch c t p
tin class sau khi bin d ch.
N u khng tham kh o th vi n no, khng c n thi t ph i khai bo cc tham kh o v i t
kho import.
Khai bo l p
Ph n th ba l ph n khai bo l p v n i dung c a l p, ph n ny lun b t bu c ph i c
t p m ngu n Java:
iv im t
Khai bo cc ph
ng th c c a l p
3.2.2 Ch
Ch
ng trnh Java
ng th c s
ng 4.
u tin
Ch
ng trnh 3.1
package vidu.chuong3;
//
y l ch
ng trnh First.java
class First
{
public static void main(String args[])
{
System.out.println(Hello World);
}
}
ng trnh
u tin
Trong Java, t t c m l nh u ph i
c t ch c vo trong m t l p nh t nh. Do , m i t p tin
m ngu n xc nh t nh t m t l p Java v tn t p tin ph i trng v i tn l p. Java phn bi t ch
hoa v ch th ng, cho nn tn t p tin c a ch ng trnh trn ph i trng v i tn l p: First.java.
package vidu.chuong3;
y l dng khai bo tn kh i c a ch
m c:
ng trnh, v tn kh i c a ch
ng trnh
t theo hai
36
V y l v d , n m ch ng 3 nn thu c vo gi vidu.chuong3.
n m trong th m c: ../vidu/chuong3/.
Ch
ng th i, t p tin First.java s
y l ch
ng trnh First.java
K hi u // dng ch thch dng l nh. Trnh bin d ch s b qua dng ch thch ny. Java h
tr hai lo i ch thch:
Lo i ch thch trn m t dng, dng //. Trnh bin d ch s b qua n i dung b t
hi u // cho n h t dng l nh ch a n.
u t k
u v i t kho class, k
n l tn l p
class First
y l ph
d ng java
ng th c chnh, t
u s d ng m t ph
main(String args[ ])
y ch ng trnh b t
ng th c main ny.
u vi c th c thi c a mnh. T t c cc ng
c truy
ng th c s khng tr l i b t c gi tr
Truy n
i s trong dng l nh
c ti p nh n nh th no
37
Ch
ng trnh 3.2
package vidu.chuong3;
class
PassArgument{
Bin d ch ch
ng trnh:
>javac PassArgumet.java
Th c thi ch
S thu
c trn mn hnh k t qu :
This is what the main method received
A
123
B1
3.3 CC KI U D
LI U V TON T
B N TRN JAVA
3.3.1 Khai bo bi n
C php khai bo bi n:
dataType varName;
cb t
u b ng m t k t (ch ), ho c m t d u g ch d
t tn bi n
i , ho c m t k t dollar
Khng c kho ng tr ng gi a tn
B t
ng
38
Ph m vi ho t
ng c a bi n
M t bi n c ph m vi ho t ng trong ton b kh i l nh m n
u b ng d u { v k t thc b ng d u }:
c khai bo. M t kh i l nh b t
N u bi n
c khai bo trong m t c u trc l nh i u khi n, bi n c ph m vi ho t
trong kh i l nh t ng ng.
ng
N u bi n
c khai bo trong m t ph ng th c (Khng n m trong kh i l nh no), bi n
c ph m vi ho t ng trong ph ng th c t ng ng: c th
c s d ng trong t t c cc
kh i l nh c a ph ng th c.
N u bi n
c khai bo trong m t l p (Khng n m trong trong m t ph ng th c no),
bi n c ph m vi ho t ng trong ton b l p t ng ng: c th
c s d ng trong t t
c cc ph ng th c c a l p.
3.3.2 Ki u d li u
Trong Java, ki u d li u
Cc ki u d li u c b n
Cc ki u d li u
it
ng
Ki u d li u c b n
Java cung c p cc ki u d li u c b n nh sau:
byte:
char:
boolean:
Dng
l u d li u ch c hai tr ng thi ng ho c sai ( l n ch c 1 bt). Ph m vi
bi u di n gi tr l {True, False}. Gi tr m c nh l False.
short:
Dng
l u d li u c ki u s nguyn, kch c 2 byte (16 bt). Ph m vi bi u di n gi
tr t - 32768 n 32767. Gi tr m c nh l 0.
int:
Dng
l u d li u c ki u s nguyn, kch c 4 byte (32 bt). Ph m vi bi u di n gi
tr t -2,147,483,648 n 2,147,483,647. Gi tr m c nh l 0.
float:
Dng
double:
Dng
0.00d
l u d li u c ki u s th c c kch th
long:
Dng
l 0l.
l u d li u c ki u s nguyn c kch th
Ki u d li u
it
c ln
c ln
nh l 0.0f.
n 8 byte. Gi tr m c
n 8 byte. Gi tr m c
nh l
nh
ng
Trong Java, c 3 ki u d li u
Array:
c m t byte (8 bt). Ph m vi bi u di n
it
ng:
M t m ng c a cc d li u cng ki u
39
class:
D li u ki u l p
ph ng th c.
it
ng do ng
interface: D li u ki u l p giao ti p do ng
ti p.
i dng
i dng
nh ngh a. Ch a cc ph
ng th c c a giao
p ki u (Type casting)
V d , nhi u khi g p tnh hu ng c n c ng m t bi n c d ng integer v i m t bi n c d ng float.
x l tnh hu ng ny, Java s d ng tnh n ng p ki u (type casting) c a C/C++. o n m sau
y th c hi n php c ng m t gi tr d u ph y ng (float) v i m t gi tr nguyn (integer).
float c = 35.8f;
int b = (int)c + 1;
u tin gi tr d u ph y ng c
c
k t qu l gi tr 36
c l u vo b.
c c ng v i 1 v
3.3.3 Cc ton t
Java cung c p cc d ng ton t sau:
Ton t s h c
Ton t bit
Ton t quan h
Ton t logic
Ton t
i u ki n
Ton t gn
Ton t s h c
Cc ton h ng c a cc ton t s h c ph i d ng s . Cc ton h ng ki u boolean khng s d ng
c, song cc ton h ng k t cho php s d ng lo i ton t ny. M t vi ki u ton t
c li t
k trong b ng d i y.
Ton t
M t
C ng.
Tr v gi tr t ng hai ton h ng
Tr
40
Tr v k t qu c a php tr .
*
Nhn
Tr v gi tr l tch hai ton h ng.
Chia
Tr v gi tr l th
ng c a php chia
Php l y modul
Gi tr tr v l ph n d c a php chia
++
T ng d n
T ng gi tr c a bi n ln 1. V d a++ t
--
ng
ng v i a = a + 1
Gi m d n
Gi m gi tr c a bi n 1
+=
n v . V d a-- t
ng
ng v i a = a - 1
C ng v gn gi tr
C ng cc gi tr c a ton h ng bn tri vo ton h ng bn ph i v gn gi tr
tr v vo ton h ng bn tri. V d c += a t ng
ng c = c + a
-=
Tr v gn gi tr
Tr cc gi tr c a ton h ng bn tri vo ton ton h ng bn ph i v gn gi
tr tr v vo ton h ng bn tri. V d c -= a t ng
ng v i c = c - a
*=
Nhn v gn
Nhn cc gi tr c a ton h ng bn tri v i ton ton h ng bn ph i v gn gi
tr tr v vo ton h ng bn tri. V d c *= a t ng
ng v i c = c*a
/=
Chia v gn
Chia gi tr c a ton h ng bn tri cho ton ton h ng bn ph i v gn gi tr
tr v vo ton h ng bn tri. V d c /= a t ng
ng v i c = c/a
%=
L y s d v gn
Chia gi tr c a ton h ng bn tri cho ton ton h ng bn ph i v gn gi tr
s d vo ton h ng bn tri. V d c %= a t ng
ng v i c = c%a
B ng 3.1 Cc ton t s h c
Ton t
Bit
Cc ton t d ng bit cho php ta thao tc trn t ng bit ring bi t trong cc ki u d li u nguyn
thu .
Ton
t
M t
Ph
nh bit (NOT)
Tr v gi tr ph
&
nh c a m t bt.
Ton t AND bt
Tr v gi tr l 1 n u cc ton h ng l 1 v 0 trong cc tr
ng h p khc
Ton t OR bt
Tr v gi tr l 1 n u m t trong cc ton h ng l 1 v 0 trong cc tr
ng h p khc.
41
Ton t Exclusive OR bt
ng
D ch sang ph i bt
>>
<<
Cc ton t quan h
Cc ton t quan h ki m tra m i quan h gi a hai ton h ng. K t qu c a m t bi u th c c dng
cc ton t quan h l nh ng gi tr Boolean (logic ng ho c sai). Cc ton t quan h
c
s d ng trong cc c u trc i u khi n.
Ton
t
M t
==
So snh b ng
Ton t ny ki m tra s t
!=
ng
ng c a hai ton h ng
So snh khc
Ki m tra s khc nhau c a hai ton h ng
>
L nh n
Ki m tra gi tr c a ton h ng bn ph i l n h n ton h ng bn tri hay khng
<
Nh h n
Ki m tra gi tr c a ton h ng bn ph i c nh h n ton h ng bn tri hay khng
>=
L n h n ho c b ng
Ki m tra gi tr c a ton h ng bn ph i c l n h n ho c b ng ton h ng bn tri hay
khng
<=
Nh h n ho c b ng
Ki m tra gi tr c a ton h ng bn ph i c nh h n ho c b ng ton h ng bn tri hay
khng
B ng 3.3 Cc ton t quan h
Cc ton t logic
Cc ton t logic lm vi c v i cc ton h ng Boolean. M t vi ton t ki u ny
y
Ton t
M t
&&
V (AND)
c ch ra d
Ho c (OR)
||
Tr v gi tr True n u t nh t m t gi tr l True
XOR
c l i.
Cc ton t
i u ki n
Ton t i u ki n l m t lo i ton t
i u ki n. C php:
nh l True
bi u th c 3: L gi tr tr v n u <bi u th c 1> xc
nh l False
Ton t gn
Ton t gn (=) dng
gn m t gi tr vo m t bi n v c th gn nhi u gi tr cho nhi u bi n
cng m t lc. V d o n l nh sau gn m t gi tr cho bi n var v gi tr ny l i
c gn cho
nhi u bi n trn m t dng l nh n.
int var = 20;
int p,q,r,s;
p=q=r=s=var;
Dng l nh cu i cng
sau gi tr c a s
Th t
bi n var
c gn cho s,
u tin c a cc ton t
Cc bi u th c
c vi t ra ni chung g m nhi u ton t . Th t u tin quy t nh tr t t th c
hi n cc ton t trn cc bi u th c. B ng d i y li t k th t th c hi n cc ton t trong Java
Th t
Ton t
1.
Cc ton t
2.
3.
4.
5.
Cc ton t gn nh =,*=,/=,+=,-=
n nh +,-,++,--
B ng 3.5 Th t
Thay
thay
i th t
i th t
u tin cc ton t
u tin
u tin trn m t bi u th c, b n c th s d ng d u ngo c
n ():
43
Ph n
c gi i h n trong ngo c
c th c hi n tr
c.
n th quy t c th t
n pha trong s th c
if-else
M nh
swich-case
Vng l p (Loops)
Vng l p while
Vng l p do-while
Vng l p for
3.4.1 Cu l nh if-else
Cu l nh if-else ki m tra gi tr d ng boolean c a i u ki n. N u gi tr i u ki n l True th ch
c kh i l nh sau if s
c th c hi n, n u l False th ch c kh i l nh sau else
c th c hi n. C
php:
if (conditon)
{
action1 statements;
}
else
{
action2 statements;
}
c th c thi khi gi tr
action 2: Kh i l nh
c th c thi n u i u ki n tr v gi tr False
o n ch
Ch
i u ki n l True
ng trnh 3.3
package vidu.chuong3;
class CheckNumber
{
public static void main(String args[])
44
{
int num = 10;
if(num%5 == 0)
System.out.println (num + is divisable for 5!);
else
System.out.println (num + is indivisable for 5!);
}
}
o n ch
num %5 tr
ra. L u r
ph i
c
3.4.2 Cu l nh switch-case
Kh i l nh switch-case c th
c s d ng thay th cu l nh if-else trong tr
th c cho ra nhi u k t qu . C php:
ng h p m t bi u
swich (expression)
{
case value1: action 1 statement;
break;
case value2: action 2 statement;
break;
default_action statement;
expression - Bi n ch a m t gi tr xc
nh
ng h p t
ng ng c gi tr True
default: T kha tu ch n
c s d ng
c cc tr ng h p nh n gi tr False
default - action: Kh i l nh
c th c thi khi tr
ch r cc cu l nh no
c th c hi n ch khi t t c cc tr
c th c hi n ch khi t t
ng h p nh n gi tr False
Ch
ng trnh 3.4
package vidu.chuong3;
class SwitchDemo
{
public static void main(String agrs[])
{
int day = 2;
switch(day)
{
case 0 : System.out.println(Sunday);
break;
case 1 : System.out.println(Monday);
break;
case 2 : System.out.println(Tuesday);
break;
case 3 : System.out.println(Wednesday);
break;
case 4 : System.out.println(Thursday);
break;
case 5:
System.out.println(Friday);
break;
case 6 : System.out.println(Satuday);
break;
default:
System.out.println(Invalid day of week);
}
}
}
N u gi tr c a b n day l 2, ch
ng trnh s hi n th Tuesday, v c ti p nh v y .
c th c hi n n u condition nh n gi tr True
46
Ch
ng trnh 3.5
package vidu.chuong3;
class WhileDemo
{
public static void main(String args[])
{
int a = 5, sum = 1;
while
(a >= 1)
{
sum +=a;
a--;
}
System.out.println(The sum is + sum);
}
}
v d trn, vng l p
c th c thi cho n khi i u ki n a>=1 l True. Bi n a
c khai bo
bn ngoi vng l p v
c gn gi tr l 5. Cu i m i vng l p, gi tri c a a gi m i 1. Sau n m
vng gi tr c a a b ng 0. i u ki n tr v gi tr False v vng l p k t thc. K t qu s
c hi n
th The sum is 15
ng trnh 3.6
package vidu.chuong3;
class DoWhileDemo
{
public static void main(String args[])
{
int a = 1, sum = 0;
do{
47
sum += a;
a++;
}while
(a <= 5);
System.out.println(Sum of 1 to 5
is + sum);
}
}
Bi n a
c kh i t o v i gi tr 1, sau n v a
c dng lm bi n ch y (t ng ln 1 sau m i l n
l p) v a
c dng c ng d n vo bi n sum. T i th i i m k t thc, ch ng trnh s in ra Sum
of 1 to 5 is 15.
n khi no i u ki n c gi tr False.
Ch
ng trnh 3.7
package vidu.chuong3;
class ForDemo
{
public static void main(String args[])
{
int sum = 0;
for (int i=1; i<=5; i++)
sum += i;
System.out.println (The sum is + sum);
}
}
48
n
c
n. Ti p
c ki m
gi tr
Ph i ki m tra x, y l cc s nguyn d
ng hay khng tr
49
Ch
ng trnh 3.8
package vidu.chuong3;
import java.awt.*;
import java.lang.*;
class RectangleDemo
{
public static void main(String args[])
{
//khai bo cc bi n l u gi
kch th
c c a hnh ch
nh t
int x = 0, y = 0;
/*
c cc kch th
//n u truy n
c t
tham s
hai tham s
dng l nh*/
th m i tnh ti p
if(args.length >= 2)
{
//chuy n ki u t
x = Integer.parseInt(args[0]);
y = Integer.parseInt(args[1]);
}
/*Tinh chu vi v di n tch hnh ch
//n u c
hai tham s
u d
nh t*/
ng th m i tnh
khng
ng!);
}
}
>java RectangleDemo 10 20
50
S thu
c k t qu :
Chu vi l: 60
Di n tch l: 200
N u ch g
c a s dng l nh:
>java RectangleDemo
Th s nh n
c m t thng bo l i:
Cc tham s
khng
T NG K T CH
N i dung ch
ng!
NG 3
T t c cc l nh c a java ph i
ngu n ph i trng v i tn l p.
L nh package
c dng
L nh import
L nh class
c t ch c vo trong m t l p nh t
khai bo tn gi c a l p.
c s d ng trong ch
c dng
Tn l p, tn ph
c a java.
nh. Tn t p tin m
ng trnh
truy c p cc gi th vi n Java.
khai bo tn l p
t tn
c truy n vo
Cc ton t s h c
Cc ton t bit
Cc ton t quan h
Cc ton t logic
Ton t
Ton t gn
u ki n
if-else
switch
for
while
do while
CU H I V BI T P CH
NG 3
_123
b.
a$
51
c.
1abc
d.
class
e.
vi du
f.
$123
2. Mu n l u gi m t bi n s nguyn d
li u no l ti t ki m b nh nh t?
ng m c gi tr l n nh t l m t tri u th dng ki u d
3. Mu n l u gi m t bi n s nguyn m m c gi tr nh nh t l m m t t th dng ki u d li u
no l ti t ki m b nh nh t?
4. Trong c u trc l nh if-else n (1 if v 1 else) th c t nh t m t kh i l nh (c a if ho c c a
else)
c th c hi n. ng hay sai?
5. Trong c u trc l nh switch-case, khi khng dng default th c t nh t m t kh i l nh
th c hi n. ng hay sai?
6. Trong c u trc l nh switch-case, khi dng default th c t nh t m t kh i l nh
hi n. ng hay sai?
c th c
c th c hi n t nh t m t l n ngay c khi i u ki n c
c th c hi n t nh t m t l n ngay c khi i u ki n
c th c hi n t nh t m t l n ngay c khi i u ki n c gi
c khi th c hi n o n ch
ng trnh sau?
class me{
public static void main(String args[]){
int sales = 820;
int profit = 200;
System.out.println((sale +profit)/10*5);
}
}
11. Cho bi t o n ch
class me{
public static void main(String args[]){
int i = 0;
int sum = 0;
do{
sum += i;
i++;
}while(i <= 10);
System.out.println(sum);
}
}
12. Cho bi t o n ch
class me{
52
class me1{
public static void main(String args[]){
int i = 0;
int sum = 0;
for(i=0; i<5; i++){
sum += i;
}
System.out.println(sum);
}
}
v:
class me2{
14. Vi t ch
n 100.
15. Vi t ch
ng trnh hi n th t ng cc b i s c a 7 n m gi a 1 v 100.
16. Vi t ch
c nh p t tham
c s chung l n nh t c a m v n (m,n>0), m v n
c nh p t tham
18. Vi t ch ng trnh tm
s dng l nh.
53
CH
NG 4
ng ny t p trung trnh by cc
c tr ng h
ng
it
ng c a ngn ng Java:
K th a kp
Cc l p tr u t
ng
a hnh
4.1 K TH A
4.1.1 L p
Java coi l p l m t khun m u (Template) c a m t
cc ph ng th c ho t ng c a i t ng.
it
Khai bo l p
M tl p
c khai bo v i c php:
c tr ng b i ba t kho:
ng v i ki u m c
ng trnh 4.1
package vidu.chuong4;
class Person
{
}
S d ng l p
L p
c s d ng khi ch ng trnh c n m t
khai bo d a vo ton t new:
<tn l p> <tn
i t
it
ng c ki u c a l p . Khi ,
it
ng
54
V d , mu n t o m t
it
ng c ki u l l p Person trong ch
Ki u d li u: c th l cc ki u d li u c b n s n c c a java, c th l cc l p do ng
dng t
nh ngh a.
Tn thu c tnh:
t tn theo quy t c
t tn bi n c a java.
Ch
Ch
c tr ng b i cc
public: c th
c truy c p t bn ngoi l p
protected: ch
c truy c p t l p
private: ch
static:
c dng chung cho m t th hi n c a l p, c th
c truy c p tr c ti p
b ng <tn l p>.<tn thu c tnh> m khng c n kh i t o m t th hi n c a l p.
nh ngh a.
nh ngh a v cc l p k th a t l p .
nh ngh a ch ng
nh ngh a.
cc l p k th a.
t ph thu c mi tr
ng trong m t ngn
ng c a cc
i (Person).
ng trnh 4.2
package vidu.chuong4;
class Person
{
public String
name;
public int
age;
Khai bo ph
Ph
ng th c c a l p
ng th c c a l p
v > <tn ph
55
Tnh ch t: c tr ng b i cc t kho t
nh l public.
Ki u tr v : Ki u d li u tr v c a ph ng th c, c th l ki u d li u s n c c a java
ho c l ki u do ng i dng t
nh ngh a.
Tn ph
t tn bi n c a java.
Cc ngo i l : l m t i t ng c bi t
c t o ra khi ch ng trnh g p l i. Java s tr
l i cho ch ng trnh ngo i l ny theo t kho throws. Cc ngo i l , n u c,
c phn
cch nhau b i d u ph y.
Cc tham s : cc tham s c a ph ng th c,
c li t k theo c p <ki u tham s >
c phn bi t b i d u ph y.
<tn tham s >, cc tham s
Ch ng trnh 4.3 m t vi c khai bo ph
Person.
Ch
ng th c show()
ng trnh 4.3
package vidu.chuong4;
class Person
{
public String
name;
public int
age;
Ph
ng th c kh i t o c a l p
Ph ng th c kh i t o (Constructor)
c dng kh i t o m t th hi n c th c a m t l p, ngh a
l gn cc gi tr kh i u cho cc thu c tnh, n u c, v t o ra m t i t ng c th . Ph ng th c
kh i t o ph i cng tn v i l p.
L u :
Ph
ng th c kh i t o ph i c tn trng v i tn c a l p
Ph
ng th c kh i t o khng c gi tr tr v
Ph
ng th c kh i t o c tnh ch t public
C th c nhi u ph
ng th c kh i t o c a cng m t l p
ng trnh 4.4a
package vidu.chuong4;
56
class Person
{
public String
name;
public int
age;
// Ph
ng th c kh i d ng
Ch ng trnh 4.4b minh ho cch dng l p Person m chng ta v a nh ngh a trong ch ng trnh
4.4a. Ch ng trnh ny s t o ra m t i t ng myPerson c a l p Person v i cc thu c tnh c gi
tr kh i t o: name = Minh v age = 21. Sau , ch ng trnh s d ng ph ng th c show() c a
i t ng myPerson in ra dng thng bo Minh is 21 years old!.
Ch
ng trnh 4.4b
package vidu.chuong4;
class PersonDemo
{
public static void main(String args[])
{
Person myPerson = new Person(Minh, 21);
myPerson.show();
}
}
Bi n this
Bi n this l m t bi n n c bi t lun t n t i trong cc l p java: m t l p c ng m t bi n n this.
Bi n ny
c s d ng trong khi ch y v n tr
n b n thn l p ch a n. Bi n this th ng
c
s d ng trong cc hm kh i t o c a l p.
Ch ng trnh 4.4c khai bo m t l p hon ton gi ng v i l p
c khai bo trong ch
4.4a, nh ng ch khc l c dng bi n this trong hm kh i t o c a l p.
ng trnh
57
Ch
ng trnh 4.4c
package vidu.chuong4;
class Person
{
public String
name;
public int
age;
// Ph
ng th c kh i d ng
4.1.2 S k th a
S k th a
c s d ng khi mu n t o m t l p m i t m t l p bi t. Khi , t t c cc thu c
tnh v ph ng th c c a l p c
u tr thnh thu c tnh v ph ng th c c a l p m i. L p c
c g i l l p cha, l p m i
c g i l l p con.
Khai bo l p k th a
Khai bo l p k th a
c th c hi n b i t kho extends:
Ch
Ch
c k th a t l p Person
ng trnh 4.5a
package vidu.chuong4;
class Employee extends Person
{
58
ng th c kh i d ng
ng trnh 4.5b
package vidu.chuong4;
class EmployeeDemo1
{
public static void main(String args[])
{
Employee myEmployee = new Employee(Minh, 21, 300f);
myEmployee.show();
}
}
Khai bo ph
ng th c n p ch ng
ng trnh 4.6a
package vidu.chuong4;
class Employee extends Person
{
public float salary;
// Ph
ng th c kh i d ng
59
this.salary = salary;
}
// Khai bo n p ch ng
public void show()
{
System.out.println( name + has a salary of
+ salary + $/month);
}
}
Khi , o n ch ng trnh 4.6b s in ra dng thng bo Minh has a salary of 300$/month thay
v dng thng bo Minh is 21 years old! nh trong ch ng trnh 4.5b. L do l lc ny, i
t ng myEmployee s g i ph ng th c show() c a l p Employee m khng g i ph ng th c
show() c a l p Person n a.
Ch
ng trnh 4.6b
package vidu.chuong4;
class EmployeeDemo2
{
public static void main(String args[])
{
Employee myEmployee = new Employee(Minh, 21, 300f);
myEmployee.show();
}
}
nh kh n ng truy nh p c a l p con
i v i cc thu c tnh v ph
private: ch
c truy nh p trong ph m vi l p cha, l p con khng truy nh p
cc l p ngoi l p cha u khng truy nh p
c.
protected: l p con c th truy nh p
khng truy nh p
c.
final: l p con c th s d ng
ng th c
c. T t c
c. T t c cc l p khng k th a t l p cha
c nh ng khng th khai bo n p ch ng
public: l p con c th s d ng v n p ch ng
c.
c.
c. T t c cc l p bn ngoi
u s d ng
4.2 K TH A B I
Nh m trnh nh ng nh p nh ng c a tnh ch t a k th a c a C++, Java khng cho php k th a
tr c ti p t nhi u h n m t l p cha. Ngh a l Java khng cho php a k th a tr c ti p, nh ng cho
60
c th th a h
ng th c
4.2.1 Giao ti p
Khai bo giao ti p
C php khai bo m t giao ti p nh sau:
[public] interface <tn giao ti p> [extends <danh sch giao ti p>]
{
}
ng minh th
t tn bi n c a java.
c k th a t cc
package vidu.chuong4;
public interface Product
{
}
Khai bo ph
ng th c c a giao ti p
C php khai bo m t ph
ng th c c a giao ti p nh sau:
[public] <ki u gi tr
tr
v > <tn ph
t tn ph
i dng
ng th c c a l p
Cc tham s : n u c th m i tham s
c xc nh b ng m t c p <ki u tham s > <tn
tham s >. Cc tham s
c phn cch nhau b i d u ph y.
Cc ngo i l : n u c th m i ngo i l
L u :
Cc ph ng th c c a giao ti p ch
c khai bo d i d ng m u m khng c ci t chi
ti t (c d u ch m ph y ngay sau khai bo v khng c ph n ci t trong d u {}). Ph n
ci t chi ti t c a cc ph ng th c ch
c th c hi n trong cc l p (class) s d ng giao
ti p .
Cc thu c tnh c a giao ti p lun c tnh ch t l h ng (final), t nh (static) v public. Do ,
c n gn gi tr kh i u ngay khi khai bo thu c tnh c a giao ti p.
Ch ng trnh 4.8 minh ho vi c khai bo m t thu c tnh v m t ph ng th c c a giao ti p
Product
c khai bo trong ch ng trnh 4.7: thu c tnh l u nhn hi u c a nh s n xu t s n
ph m; ph ng th c dng truy xu t gi bn c a s n ph m.
Ch
ng trnh 4.8
package vidu.chuong4;
public interface Product
{
public static final String MARK = Adidas;
public float getCost();
}
4.2.2 S d ng giao ti p
V giao ti p ch
c khai bo d i d ng cc ph ng th c m u v cc thu c tnh h ng nn vi c s
d ng giao ti p ph i thng qua m t l p c ci t giao ti p . Vi c khai bo m t l p c ci t
giao ti p
c th c hi n thng qua t kho implements nh sau:
<tnh ch t> class <tn l p> implements <cc giao ti p>
{
}
Tnh ch t v tn l p
ng.
t giao ti p Product v i cc
ng trnh 4.9
package vidu.chuong4;
public class Shoe implements Product
{
62
// Ci
t ph
ng th c
ng th c truy nh p nhn hi u s n ph m
ng th c main
Ch ng trnh 4.9 s in ra dng: This shoe is Adidas having a cost of $10. Hm getMark() s tr
v nhn hi u c a s n ph m, l thu c tnh
c khai bo trong giao ti p. Hm getCost() l ci
t ring c a l p Shoe i v i ph ng th c
c khai bo trong giao ti p Product m n s
d ng, ci t ny tr v gi tr 10 i v i l p Shoe.
4.3 L P TR U T
NG
L p tr u t ng l m t d ng l p c bi t, trong cc ph ng th c ch
c khai bo d ng
khun m u (template) m khng
c ci t chi ti t. Vi c ci t chi ti t cc ph ng th c ch
c th c hi n cc l p con k th a l p tr u t ng .
L p tr u t ng
c s d ng khi mu n nh ngh a m t l p m khng th bi t v
c cc thu c tnh v ph ng th c c a n.
nh ngh a ngay
4.3.1 Khai bo
Khai bo l p tr u t
ng
L p tr u t ng
c khi bo nh cch khai bo cc l p thng th
abstract trong ph n tnh ch t:
Tnh ch t: m c
l p tr u t ng.
xc
nh y l m t
63
t tn l p thng th
ng c a java.
L u :
L p tr u t ng c ng c th k th a m t l p khc, nh ng l p cha c ng ph i l m t l p tr u
t ng. (Khai bo k th a thng qua t kho extends nh khai bo k th a thng th ng).
Ch
Ch
ng l l p
ng trnh 4.10
package vidu.chuong4;
abstract class Animal
{
}
Khai bo ph
ng th c c a l p tr u t
ng
li u tr
v > <tn ph
ng th c>
ng lun l
Ki u d li u tr v : c th l cc ki u c b n c a java, c ng c th l ki u do ng
t
nh ngh a (ki u i t ng).
Tn ph
t tn ph
i dng
ng th c c a l p
Cc tham s : n u c th m i tham s
c xc nh b ng m t c p <ki u tham s > <tn
tham s >. Cc tham s
c phn cch nhau b i d u ph y.
Cc ngo i l : n u c th m i ngo i l
L u :
Tnh ch t c a ph ng th c tr u t ng khng
c l private hay static. V ph ng th c
tr u t ng ch
c khai bo chi ti t (n p ch ng) trong cc l p d n xu t (l p k th a) c a
l p tr u t ng. Do , n u ph ng th c l private th khng th n p ch ng, n u ph ng
th c l static th khng th thay i trong l p d n xu t.
Ph ng th c tr u t ng ch
c khai bo d i d ng khun m u nn khng c ph n d u
mc {} m k t thc b ng d u ch m ph y ;.
Ch ng trnh 4.11 khi bo hai ph ng th c c a l p tr u t ng Animal trong ch ng trnh 4.10:
Ph ng th c getName() tr v tn loi ng v t, d ch a bi t tn c th loi no nh ng ki u tr v
l String. Ph ng th c getFeet() tr v s chn c a loi ng v t, c ng ch a bi t c th l bao
nhiu chn nh ng ki u tr v l int.
64
Ch
ng trnh 4.11
package vidu.chuong4;
abstract class Animal
{
abstract String getName();
abstract int getFeet();
}
4.3.2 S d ng l p tr u t
ng
L p tr u t ng
c s d ng thng qua cc l p d n xu t c a n. V ch c cc l p d n xu t m i
ci t c th cc ph ng th c
c khai bo trong l p tr u t ng.
Ch ng trnh 4.12a khai bo l p v loi chim (Bird) k th a t l p Animal trong ch ng trnh
4.11. L p ny ci t chi ti t hai ph ng th c
c khai bo trong l p Animal: ph ng th c
getName() s tr v tn loi l Bird; ph ng th c getFeet() tr v s chn c a loi chim l 2.
Ch
ng trnh 4.12a
package vidu.chuong4;
public class Bird extends Animal
{
// Tr
tn loi chim
ng trnh 4.12b
package vidu.chuong4;
public class Cat extends Animal
{
// Tr
tn loi mo
65
chn c a loi mo
Ch
Ch
Ch
ng trnh 4.12c
package vidu.chuong4;
public class AnimalDemo
{
public static void main(String args[])
{
Bird myBird = new Bird();
System.out.println(The + myBird.getName() + has
+ myBird.getFeet() + feets);
Cat myCat = new Cat();
System.out.println(The + myCat.getName() + has
+ myCat.getFeet() + feets);
}
}
4.4 A HNH
4.4.1 N p ch ng
Java cho php trong cng m t l p, c th khai bo nhi u ph ng th c c cng tn. N p ch ng l
hi n t ng cc ph ng th c c cng tn. C hai ki u n p ch ng trong Java:
Cc ph ng th c c a cng m t l p c cng tn. Khi hai ph
tn th b t bu c chng ph i c:
ng th c c a m t l p c cng
- Ho c k t h p hai i u ki n trn.
N u khng, java s khng phn bi t
// Ch p nh n
4.4.2 a hnh
a hnh l vi c tri u g i n cc ph ng th c n p ch ng c a i t ng. Khi m t ph
ch ng
c g i, ch ng trnh s d a vo ki u cc tham s v ki u tr v
g i ph
i t ng cho ph h p.
Ch
t .
Ch
ng th c n p
ng th c c a
c ng hai s ho c c ng hai xu k
ng trnh 4.13
package vidu.chuong4;
public class Operator
{
// C ng hai s
nguyn
th c
67
Ch
ng, ch c m t ph
ng th c duy nh t l show().
68
4.5.1 L p Human
L p Human l m t l p tr u t
t p tin Human.java.
Ch
ng, ch c m t ph
ng th c duy nh t l show().
y l n i dung
ng trnh 4.14a
package vidu.chuong4;
abstract class Human
{
abstract void show();
}
4.5.2 L p Person
L p Person l l p k th a t l p Human:
C hai thu c tnh l tn (name) v tu i (age) c d ng private
Cc ph ng th c truy nh p cc thu c tnh name (getName() v setName(String)) v age
(getAge() v setAge(int)).
Ci
t ch ng ph
ng th c show() k th a t l p tr u t
ng Human.
ng trnh 4.14b
package vidu.chuong4;
class Person extends Human
{
private String name;
private int age;
// Ph
ng th c kh i d ng khng c tham s
public Person()
{
super();
name = ;
age = 0;
}
69
// Ph
ng th c kh i d ng c tham s
4.5.3 L p Employee
L p Employee l l p k th a t l p Person:
C thm thu c tnh l l ng (salary) c ng c d ng private
ph ng th c truy nh p get/set.
L p ny ci
t l i ph
ng gi d li u v c n cc
ng th c show().
70
ng trnh 4.14c
package vidu.chuong4;
class Employee extends Person
{
private float salary;
// Ph
ng th c kh i d ng khng c tham s
public Employee()
{
super();
salary = 0f;
}
// Ph
ng th c kh i d ng c tham s
71
/* Ph
ng th c t ng l
ng */
4.5.4 Ch
ng trnh demo
ng trnh 4.14d
package vidu.chuong4;
public class Casestudy2
{
// Hm main
public static void main(String args[])
{
// S
d ng l p Person
d ng l p Employee
ng theo m c
nh
myEmployee.addSalary();
myEmployee.show();
// T ng l
ng ln $50
myEmployee.addSalary(50f);
myEmployee.show();
72
}
}
Ch
$300/month!
$330/month!
$380/month!
T NG K T CH
NG 4
c b n lin quan
n k thu t l p trnh
Khi khai bo m t l p l tr u t ng th cc ph ng th c c a n c ng
c khai bo l tr u
t ng v ch khai bo d ng khun m u m khng
c khai bo chi ti t.
Khng th t o ra m t
it
ng t m t l p tr u t
ng.
nh ngh a l i (n p ch ng) cc ph
ng th c
c k th a t
CU H I V BI T P CH
NG 4
ng th c c a m t l p (khng tr u t
Trong cc khai bo ph
ng th c c a m t l p tr u t
6.
public interface
Binterface{}
MyInterface
extends
Ainterface,
extends
Xt o n ch
ng trnh ci
t m t l p s d ng m t giao ti p sau:
74
}
// Khai bo l p s
d ng giao ti p
ng th c show c a
Xt o n ch
ng trnh ci
ng trnh s g i ph
ng th c no?
a. add(int, int)
b. add(float, float)
c. add(double, double)
d. add(String, String)
e. Thng bo l i
10. C ng v i l p MyOperator trong bi 9, khi ta g i l nh MyOperator.add(5.0d, 100f), ch
trnh s g i ph ng th c no?
ng
a. add(int, int)
b. add(float, float)
c. add(double, double)
d. add(String, String)
e. Thng bo l i
11. C ng v i l p MyOperator trong bi 9, khi ta g i l nh MyOperator.add(abcd, 100f), ch
trnh s g i ph ng th c no?
ng
a. add(int, int)
b. add(float, float)
c. add(double, double)
d. add(String, String)
e. Thng bo l i
12. V s khc nhau gi a l p v giao ti p trong java, nh ng nh n
nh no sau y l ng:
75
a. L p
t
c k th a t i a t
nhi u giao ti p khc.
b. L p c th
t
th a t
m t l p khc, giao ti p c th
th a
c k
th a
cc l p.
c. Thu c tnh c a l p c th
ti p ph i l h ng s
d. Ph
ng th c c a l p c th
giao ti p ch
c khai bo
13. Xt o n ch
c ci
t chi ti t, ph
d ng khun m u.
ng th c c a
v:
public class Employee extends Person {
public void show(int x){
System.out.println(This is the employee + x);
}
}
Khi , o n ch
a. This is a person!.
b. This is the employee 0.
c. Thng bo l i.
d. Khng hi n thi g c .
14. C ng v i hai l p Person v Employee trong bi 14.
bo no?
o n ch
a. This is a person!.
b. This is the employee 10.
c. Thng bo l i.
d. Khng hi n thi g c .
76
77
CH
NG 5
BI U DI N V CI
CC C U TRC D
LI U TR U T
ng php duy t v
Ph
ng php s p x p v tm ki m
Cc c u trc d li u tr u t
Ng n x p v hng
T
NG TRN JAVA
t m t s gi i thu t v cc c u trc d li u tr u
qui
ng bao g m:
i
5.1 PH
NG PHP DUY T V
5.1.1 Cc ph
QUI
ng php duy t
i ta s
Duy t trn m ng
Duy t trn cy
Duy t trn
th
Cc ph ng php duy t ny s
c trnh by trong cc m c t
sch tuy n tnh (duy t trn m ng), cy nh phn (duy t trn cy),
ng ng v cc
th (duy t trn
i t ng danh
th ).
78
5.1.2 Ph
ng php
qui
Ph ng php
qui:
c nh ngh a theo qui n p ton h c, m t
chnh n v i m t ph m vi nh h n.
V d ,
it
ng
c bi u di n qua
nh ngh a s Fibonacy th n:
l m t
qui.
Gi i thu t
qui: l ph ng php gi i bi ton b ng cch rt g n bi ton thnh m t (ho c m t
s ) bi ton con t ng t nh v y nh ng v i d li u nh h n v i tr ng thi d ng t n t i.
V d , th t c tnh s Fibonacy th n:
int Fibo(int n){
if(n == 1 || n == 2) return 1;
return (Fibo(n-1) + Fibo(n-2));
}
5.2 PH
c n l
NG PHP S P X P V TM KI M
5.2.1 Cc ph
ng php s p x p
Hi n nay, c r t nhi u ph
S p x p n i b t (bubble sort)
S p x p chn (insertion sort)
S p x p ch n (selection sort)
S p x p vun
ng (heap sort)
S p x p tr n (merge sort)
S p x p nhanh (quick sort)
N i dung ph n ny s trnh by vi c ci t gi i thu t s p x p nhanh (quick sort). V vi c s p x p
th ng g n li n v i m t m ng cc ph n t c th so snh
c, cho nn gi i thu t ny s
c ci
t trong l p m ng cc ph n t (Array). Vi c ci t cc gi i thu t s p x p cn l i
c coi nh
m t bi t p c a ph n ny.
L p m ng cc ph n t Array
L p ny c thu c tnh l m t m ng cc ph n t . Cc ph n t c a m ng c th c ki u b t k,
nh ng ph i tho mn i u ki n l c th so snh
c, khi , m ng c th s p x p
c. Trong
ph n ny, ta s ci t m ng cc ph n t c ki u int.
class Array{
private int *elements;
}
79
n cu i m ng, tm ph n t
i t cu i m ng ln
ph n t th j.
N u i<j,
u m ng, tm ph n t
u tin l n h n kho ch t, nh d u n l
u tin nh h n kho ch t, nh d u n l
i ch ph n t th i v th j.
i ch , n u c, cho
n khi i=j.
i ch ph n t th i (c ng l j vo th i i m ny) v i ph n t ch t. Khi , ph n t ch t
l ng v tr c a n trong m ng s p x p.
L p l i gi i thu t trn v i hai o n c a m ng: o n tr
c ch t v o n sau ch t.
ng trnh 5.1a ci
Ch
t th t c s p x p nhanh c a l p Array.
ng trnh 5.1a
package vidu.chuong5;
class Array{
private int[] elements;
/* Ph
ng th c truy nh p cc ph n t
c a m ng */
ng th c s p x p */
ng th c s p x p nhanh */
// Qut xui
80
//
i ch
// Qut ng
hai ph n t
tmp = elements[i];
elements[i] = elements[j];
elements[j] = tmp;
}
}while (i<=j);
if(left < j)
quick(left, j);
// S p x p
o n tr
c ch t
quick(i, right);
// S p x p
o n sau ch t
}
}
5.2.2 Cc ph
ng php tm ki m
Ph ng php tm ki m s tr v ch s c a m t ph n t n u n c m t trong m ng tm ki m, tr v
-1 n u khng c ph n t trong m ng. Cc ph ng php tm ki m c b n bao g m:
Tm ki m tu n t (tuy n tnh)
Tm ki m nh phn
Tm ki m trn cy
N i dung ph n ny s trnh by ph ng php tm ki m nh phn. Cc ph ng php cn l i
c
coi nh l bi t p c a ph n ny. Ph ng php tm ki m nh phn
c th c hi n trn m ng s p
x p. Cc b c ti n hnh nh sau:
L y kho c n tm so snh v i ph n t
ki m.
gi a m ng s p x p. N u b ng, k t thc tm
N u nh h n, tm ki m kho trong n a
u c a m ng (v n theo ki u nh phn).
ng trnh 5.1b
package vidu.chuong5;
class Array{
private int[] elements;
/* Ph
ng th c truy nh p cc ph n t
c a m ng */
81
}
/* Ph
ng th c tm ki m */
// Ch
gi a
// Tm n a sau
// Tm n a
// Tm th y
}
return -1;
// Khng tm th y
}
/* Ph
ng th c s p x p */
ng th c s p x p nhanh */
// Qut xui
// Qut ng
if(i<=j){
//
i ch
hai ph n t
tmp = elements[i];
elements[i] = elements[j];
elements[j] = tmp;
}
}while (i<=j);
c ch t
if(left < j)
quick(left, j);
// S p x p
o n tr
quick(i, right);
// S p x p
o n sau ch t
}
}
82
5.3 NG N X P V HNG
5.3.1 Ng n x p
Ng n x p (stack) c cc thu c tnh c c b :
M ng l u cc nt c a ng n x p
Cc thao tc
i v i ng n x p:
Thm vo m t nt
L y ra m t nt
nh ngh a m t nt
n gi n, ta ch
Ch
nh ngh a m t nt c gi tr ki u int:
ng trnh 5.2a
package vidu.chuong5;
public class Node{
private int value;
/* Cc ph
ng th c kh i d ng */
public Node(){
value = 0;
}
public Node(int value){
this.value = value;
}
/* Ph
Ci
t ng n x p
Ta coi nh ng n x p l cu i m ng l u gi cc nt. Do , cc thao tc thm vo v l y ra
s thm vo cu i m ng ho c l y nt cu i m ng ra.
M ng cc gi tr
c khai bo
ng
ti t ki m b nh .
83
Ch
ng trnh 5.2b
package vidu.chuong5;
public class MyStack{
private Node[] values;
/* Cc ph
ng th c kh i d ng */
public MyStack(){}
public MyStack(Node[] values){
this.values = values;
}
/* Ph
ng th c l y ra m t node t
stack */
node cu i cng
ang r ng
// Ng n x p
c d
li u
84
5.3.2 Hng
Hng
Cc thao tc v i hng
i:
Thm vo m t nt vo cu i hng
L y ra m t nt t
Ch
ng trnh 5.3 ci
Ch
u hng
t l p hng
i
i.
ng trnh 5.3
package vidu.chuong5;
public class MyQueu{
private Node[] values;
/* Cc ph
ng th c kh i d ng */
public MyQueu(){}
public MyQueu(Node[] values){
this.values = values;
}
/* Ph
ng th c l y ra m t node t
u queu */
node
u hng
ang r ng
// Hng
c d
li u
85
tmpNode[i] = values[i];
tmpNode[values.length] = node;
this.values = tmpNode;
}
}
}
n bao g m:
Gi tr c a nt, c d ng l m t
trnh 5.2a
it
ng ki u Node
nh ngh a trong ch
ng
Nt ti p theo c a nt .
M t nt c a danh sch lin k t
Ch
c ci
t trong ch
ng trnh 5.4a.
ng trnh 5.4a
package vidu.chuong5;
public class SimpleNode{
private Node value;
// Gi tr
c a node l m t
i t
ng ki u Node
ng th c kh i d ng */
public SimpleNode(){
value = new Node();
next = null;
}
public SimpleNode(Node value){
this.value = value;
next = null;
}
/* Ph
86
nh ngh a
nh tiu
n nt th c s
Ch
L u gi s l
Ch
ng trnh 5.4b ci
Ch
it
ng khc v i m t nt thng th
ng c a danh
nh tiu
c a danh sch.
ng trnh 5.4b
package vidu.chuong5;
public class HeaderSimpleNode{
private int nodeNumber;
private SimpleNode header;
private SimpleNode tailer;
/* Ph
ng th c kh i d ng */
public HeaderSimpleNode(){
nodeNumber = 0;
header = null;
tailer = null;
}
/* Ph
87
}
/* Ph
Ci
n c thu c tnh c c b l m t
it
ng ki u HeaderSimpleNode. V c cc
di
ng trnh 5.4c ci
Ch
n.
ng trnh 5.4c
package vidu.chuong5;
public class SimpleList{
private HeaderSimpleNode myList;
/* Cc ph
ng th c kh i d ng */
public SimpleList(){
myList = new HeaderSimpleNode();
}
88
/* Ph
tr @position */
newNode.setNext(myList.getHeader());
myList.setHeader(newNode);
if(myList.getNodeNumber() == 0) // Danh sch ban
u r ng
myList.setTailer(newNode);
}else if(position >= myList.getNodeNumber()){ // Chn vo cu i
if(myList.getNodeNumber() == 0){ // Danh sch ban
u r ng
myList.setHeader(newNode);
myList.setTailer(newNode);
}else{ // Danh sch khng r ng
myList.getTailer().setNext(newNode);
myList.setTailer(newNode);
}
}else{ // Chn vo gi a
int index = 0;
SimpleNode prev = null;
SimpleNode current = myList.getHeader();
while(index < position){
index++;
prev = current;
current = current.getNext();
}
newNode.setNext(current);
prev.setNext(newNode);
}
// C p nh t s
myList.setNodeNumber(myList.getNodeNumber() + 1);
}
/* Ph
ng th c lo i b
m t node
tr @position */
result = myList.getHeader();
myList.setHeader(myList.getHeader().getNext());
89
c 1 ph n t
myList.setTailer(null);
}else if(position==myList.getNodeNumber()-1){ // Lo i ph n t
cu i
result = myList.getTailer();
SimpleNode current = myList.getHeader();
while(!current.getNext().equals(myList.getTailer()))
current = current.getNext();
current.setNext(null);
myList.setTailer(current);
}else{ // Lo i ph n t
n m gi a danh sch
int index = 0;
SimpleNode prev = null;
SimpleNode current = myList.getHeader();
while(index < position){
index++;
prev = current;
current = current.getNext();
}
prev.setNext(current.getNext());
result = current;
}
// C p nh t s
myList.setNodeNumber(myList.getNodeNumber() - 1);
result.setNext(null);
return result;
}
/* Ph
ng th c duy t ton b
danh sch */
90
}
return result;
}
}
it
ng ki u Node
nh ngh a trong ch
ng
Nt ti p theo c a nt .
Nt tr
c c a nt .
c ci
t trong ch
ng trnh 5.5a.
ng trnh 5.5a
package vidu.chuong5;
public class DoubleNode{
private Node value;
private DoubleNode prev;
private DoubleNode next;
/* Cc ph
ng th c kh i d ng */
public DoubleNode(){
value = new Node();
prev = null;
next = null;
}
public DoubleNode(Node value){
this.value = value;
prev = null;
next = null;
}
/* Ph
91
nh ngh a
nh tiu
n nt th c s
Ch
L u gi s l
Ch
ng trnh 5.5b ci
Ch
it
ng khc v i m t nt thng th
ng c a danh
nh tiu
c a danh sch.
ng trnh 5.5b
package vidu.chuong5;
public class HeaderDoubleNode{
private int nodeNumber;
private DoubleNode header;
private DoubleNode tailer;
/* Ph
ng th c kh i d ng */
public HeaderDoubleNode(){
nodeNumber = 0;
header = null;
tailer = null;
}
/* Ph
92
}
public void setNodeNumber(int nodeNumber){
this.nodeNumber = nodeNumber;
}
/* Ph
Ci
it
ng ki u HeaderDoubleNode. V c cc
di
ng trnh 5.5c ci
ng trnh 5.5c
package vidu.chuong5;
public class DoubleList{
private HeaderDoubleNode myList;
/* Cc ph
ng th c kh i d ng */
public DoubleList(){
93
tr @position */
newNode.setNext(myList.getHeader());
myList.getHeader().setPrev(newNode);
myList.setHeader(newNode);
if(myList.getNodeNumber() == 0) // Danh sch ban
u r ng
myList.setTailer(newNode);
}else if(position >= myList.getNodeNumber()){ // Chn vo cu i
if(myList.getNodeNumber() == 0){ // Danh sch ban
u r ng
myList.setHeader(newNode);
myList.setTailer(newNode);
}else{ // Danh sch khng r ng
newNode.setPrev(myList.getTailer());
myList.getTailer().setNext(newNode);
myList.setTailer(newNode);
}
}else{ // Chn vo gi a
int index = 0;
DoubleNode current = myList.getHeader();
while(index < position){
index++;
current = current.getNext();
}
newNode.setNext(current);
newNode.setPrev(current.getPrev());
current.getPrev().setNext(newNode);
current.setPrev(newNode);
}
// C p nh t s
myList.setNodeNumber(myList.getNodeNumber() + 1);
}
/* Ph
ng th c lo i b
m t node
tr @position */
94
result = myList.getHeader();
myList.setHeader(myList.getHeader().getNext());
if(myList.getHeader() != null)
myList.getHeader().setPrev(null);
if(myList.getNodeNumber() == 1) // Danh sch ch
c 1 ph n t
myList.setTailer(null);
}else if(position==myList.getNodeNumber()-1){ // Lo i ph n t
cu i
result = myList.getTailer();
myList.setTailer(myList.getTailer().getPrev());
myList.getTailer().setNext(null);
}else{ // Lo i ph n t
n m gi a danh sch
int index = 0;
DoubleNode current = myList.getHeader();
while(index < position){
index++;
current = current.getNext();
}
current.getPrev().setNext(current.getNext());
current.getNext().setPrev(current.getPrev());
result = current;
}
// C p nh t s
myList.setNodeNumber(myList.getNodeNumber() - 1);
result.setPrev(null);
result.setNext(null);
return result;
}
/* Ph
ng th c duy t ton b
danh sch */
95
int index = 0;
while(current != null){
result[index] = current.getValue();
index++;
current = current.getNext();
}
return result;
}
}
5.5 CY NH PHN
Ci
t nt c a cy nh phn
Ch
ng ki u Node
Ch
n nt con bn tri c a n.
Ch
n nt con bn ph i c a n.
ng trnh 5.6a ci
Ch
it
t m t nt c a cy nh phn.
ng trnh 5.6a
package vidu.chuong5;
public class BinaryTreeNode{
private Node value;
private BinaryTreeNode left;
private BinaryTreeNode right;
/* Cc ph
ng th c kh i d ng */
public BinaryTreeNode(){
value = new Node();
left = null;
right = null;
}
public BinaryTreeNode(Node value){
this.value = value;
left = null;
right = null;
}
/* Ph
96
Ci
t cy nh phn
n cc
nh
Duy t cy theo th t gi a
Duy t cy theo th t sau
Ch
Ch
ng trnh 5.6b ci
t l p cy nh phn.
ng trnh 5.6b
package vidu.chuong5;
public class BinaryTree{
private BinaryTreeNode root;
/* Cc ph
ng th c kh i d ng */
97
public BinaryTree(){
root = null;
}
public BinaryTree(Node value){
root = new BinaryTreeNode(value);
}
/* Ph
ng th c tr
node c gi tr
@value */
ng th c tm ki m
qui m t node c gi tr
@value
98
treeNode.setRight(newNode);
return true;
}
/* Ph
ng th c duy t cy theo th
tr
c */
v k t qu
tr
tr
n m trong @result */
99
addNode(result, treeNode.getValue());
preOrder(treeNode.getLeft(), result);
preOrder(treeNode.getRight(), result);
}
}
/* Ph
u r ng
ng th c duy t cy theo th
gi a */
v k t qu
tr
gi a
n m trong @result */
ng th c duy t cy theo th
sau */
100
/* Ph
v k t qu
tr
sau
n m trong @result */
5.6
TH
5.6.1 Bi u di n
th
i v i nh c a
th ,
n gi n, ta nh s
nh t 0 n n-1 cho
th c n
c nh, ta s s d ng ng th i hai cch bi u di n l ma tr n k v danh sch c nh:
nh.
iv i
t l p bi u di n m t c nh c a
th t ng qut (c tnh
n tr ng s ) theo
ng trnh 5.7a
package vidu.chuong5;
public class Bridge{
private int start;
private int end;
private int weight;
/* Cc ph
ng th c kh i d ng */
101
/* Ph
5.6.2 Ci
M t
th khng c tr ng s
ng cc
nh. T s l
ng cc
nh c th suy ra t p cc nhn c a cc
Ma tr n k bi u di n cc c nh. A[i,j]=1 th c c nh t i
c nh t i n j.
Danh sch c nh khng c n tnh
ng b v i nhau.
Cc thao tc c b n trn
n tr ng s . Danh sch c nh v ma tr n k
ng i gi a hai
ng trnh 5.7b ci
c c p nh t
th
nh b t k
n j, n u A[i,j]=0 th khng c
th khng c tr ng s :
nh.
tl p
th
th khng c tr ng s .
102
Ch
ng trnh 5.7b
package vidu.chuong5;
public class Graph{
private int nodeNumber; // S
ng
nh
private int[][] A;
// Ma tr n k
private Bridge[] B;
// Danh sch c nh
/* Cc ph
ng th c kh i d ng */
ng b
danh sch c nh
int lengthB = 0;
for(int i=0; i<nodeNumber; i++)
for(int j=0; j<nodeNumber; j++)
if(A[i][j] == 1) lengthB ++;
if(lengthB > 0){
B = new Bridge[lengthB];
int index = 0;
for(int i=0; i<nodeNumber; i++)
for(int j=0; j<nodeNumber; j++)
if(A[i][j] == 1){
B[index] = new Bridge(i,j);
index ++;
}
}
}
public Graph(int nodeNumber, Bridge[] B){
this.nodeNumber = nodeNumber;
this.B = B;
//
ng b
ma tr n k
A = new int[nodeNumber][];
for(int i=0; i<nodeNumber; i++)
A[i] = new int[nodeNumber];
for(int i=0; i<nodeNumber; i++)
for(int j=0; j<nodeNumber; j++)
A[i][j] = 0;
if(B != null){
103
th
*/
// Ban
u ch a c c nh no
B = new Bridge[1];
B[0] = bridge;
}else{
Bridge *tmp = new Bridge[B.length + 1];
for(int i=0; i<B.length; i++)
tmp[i] = B[i];
tmp[B.length] = bridge;
}
// C p nh t ma tr n k
A[bridge.getStart()][bridge.getEnd()] = 1;
}
/* Ki m tra tnh lin thng c a
th
*/
nh
u duy t node
// Hng
i, duy t BFS
// S
ng
nh lin thng
queue[0] = 0;
visited[0] = true;
// Kh i t o hng
//
m s
nh lin thng
int u = queue[front];
front++;
104
th
l lin thng
ng
i gi a hai
nh b t k */
nh
u duy t node
// M ng l u v t
// Hng
ng
i, duy t BFS
// Kh i t o hng
ng
int u = queue[front];
front++;
for(int j=0; j<nodeNumber; j++)
if(A[u][j] == 1)&&(!visited[j]){
tail++;
queue[tail] = j;
visited[j] = true;
prev[j] = u;
}
}
// n u ch a
ng
ng h p c
ng
i, L u v t vo m t stack */
105
top++;
stack[top] = v;
}
/*
c k t qu
stack */
th
*/
th
if(!isConnected())
return null;
// Kh i t o cy bao trm, c ng l m t
th
c @nodeNumber node
// Ch a c c nh no
nh d u duy t node
// Hng
i, duy t BFS
// Kh i t o hng
// Tm c nh c a CBT
int u = queue[front];
front++;
for(int j=0; j<nodeNumber; j++)
if(A[u][j] == 1)&&(!visited[j]){
tail++;
106
queue[tail] = j;
visited[j] = true;
result.addBridge(new Bridge(u,j));// B
sung c nh vo CBT
}
}
return result;
}
}
5.6.3 Ci
M t
th c tr ng s
ng cc
nh. T s l
ng cc
nh c th suy ra t p cc nhn c a cc
nh.
th c tr ng s :
th
ng i ng n nh t gi a hai
nh b t k
ng trnh 5.7c ci
tl p
th
th c tr ng s .
ng trnh 5.7c
package vidu.chuong5;
public class WeightedGraph{
private int nodeNumber; // S
ng
nh
private int[][] A;
// Ma tr n k
private Bridge[][] B;
// Danh sch c nh
ng th c kh i d ng */
ng b
danh sch c nh
int lengthB = 0;
for(int i=0; i<nodeNumber; i++)
for(int j=0; j<nodeNumber; j++)
if(A[i][j] < maxWeight) lengthB ++;
107
ng b
ma tr n k
A = new int[nodeNumber][];
for(int i=0; i<nodeNumber; i++)
A[i] = new int[nodeNumber];
for(int i=0; i<nodeNumber; i++)
for(int j=0; j<nodeNumber; j++)
A[i][j] = maxWeight;
if(B != null){
for(int i=0; i<B.length; i++){
A[B[i].getStart()][B[i].getEnd()] = B[i].getWeight();
}
}
}
/* Ph
th
*/
// Ban
u ch a c c nh no
108
B = new Bridge[1];
B[0] = bridge;
}else{
Bridge[] tmp = new Bridge[B.length + 1];
for(int i=0; i<B.length; i++)
tmp[i] = B[i];
tmp[B.length] = bridge;
}
// C p nh t ma tr n k
A[bridge.getStart()][bridge.getEnd()] = bridge.getWeight();
}
/* Ki m tra tnh lin thng c a
th
*/
nh
u duy t node
// Hng
i, duy t BFS
// S
ng
nh lin thng
queue[0] = 0;
visited[0] = true;
// Kh i t o hng
//
m s
nh lin thng
int u = queue[front];
front++;
for(int j=0; j<nodeNumber; j++)
if(A[u][j] < maxWeight)&&(!visited[j]){
tail++;
queue[tail] = j;
visited[j] = true;
size++;
}
}
// N u s
th
l lin thng
ng
i ng n nh t gi a hai
nh b t k, Ford-Bellman */
// M ng l u v t
// Kho ng cch
ng
n cc node
109
ng
ng h p c
ng
i, L u v t vo m t stack */
c k t qu
stack */
nh t c a
th
*/
th
if(!isConnected())
return null;
// Kh i t o cy bao trm, c ng l m t
th
c @nodeNumber node
110
// Ch a c c nh no
ng
th .
c ci
t trong ch
ng ny: ng n x p,
ng trnh 5.8
package vidu.chuong5;
public class CaseStudy3{
public static void main(String[] args) {
try{
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
111
while (true) {
System.out.println("**********************************");
System.out.println("
CASE STUDY 3
");
System.out.println("
----------o0o----------
");
");
");
");
System.out.println(" 10.Thoat!
");
System.out.println("**********************************");
System.out.print(" |==> Chon chuc nang: ");
int function = Integer.parseInt(br.readLine());
CaseStudy3 ob3 = new CaseStudy3();
switch(function){
case 1:
// Thao tc v i ng n x p
ob3.stack(br);
break;
case 2:
// Thao tc v i hng
ob3.queue(br);
break;
case 3:
ob3.list(br);
break;
case 10: // Thot kh i ch
ng trnh
System.exit(1);
}
}
}
catch(Exception ex)
{
System.out.println("Loi o ham 'main': ");
ex.printStackTrace();
}
}
/* Thao tc v i ng n x p */
public void stack(BufferedReader br){
MyStack stack = new MyStack();
try{
while (true) {
System.out.println("**********************************");
System.out.println("
");
112
System.out.println("
----------o0o----------
");
");
");
System.out.println("**********************************");
System.out.print(" |==> Chon chuc nang: ");
int function = Integer.parseInt(br.readLine());
switch(function){
case 1:
// Thm m t ph n t
vo ng n x p
// L y m t ph n t
ra kh i ng n x p
// L y t t c
cc ph n t
c a ng n x p
ng trnh con
return;
}
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
113
/* Thao tc v i hng
i */
");
System.out.println("
----------o0o----------
");
");
");
System.out.println("**********************************");
System.out.print(" |==> Chon chuc nang: ");
int function = Integer.parseInt(br.readLine());
switch(function){
case 1:
// Thm m t ph n t
vo hng
// L y m t ph n t
ra kh i hng
// L y t t c
cc ph n t
c a hng
ng trnh con
return;
}
}
114
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
/* Thao tc v i danh sch lin k t
n */
");
System.out.println("
--------------o0o-------------
");
");
");
");
System.out.println(" 10.Thoat!
");
System.out.println("**********************************");
System.out.print(" |==> Chon chuc nang: ");
int function = Integer.parseInt(br.readLine());
switch(function){
case 1:
// Thm m t ph n t
vo danh sch
// L y m t ph n t
ra kh i danh sch
// L y t t c
cc ph n t
c a danh sch
115
ng trnh con
return;
}
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
}
T NG K T CH
NG 5
N i dung ch ng 5 trnh by vi c bi u di n v ci
Java, bao g m cc gi i thu t:
Ph
ng php duy t
Ph
ng php
Ph
ng php s p x p
Ph
ng php tm ki m.
t m t s c u trc d li u tr u t
ng trn
qui
V cc c u trc d li u tr u t
ng:
Ng n x p (stack)
Hng
i (queue)
th khng tr ng s v
th c tr ng s .
CU H I V BI T P CH
1. Ci
t b sung cc ph
it
ng tr u t
ng trong
NG 5
a. S p x p n i b t
b. S p x p ch n.
c. S p x p vun
ng
d. S p x p tr n
2. Chuy n l p MyStack trong m c 5.3.1 thnh m t ng n x p c a cc k t . Sau , dng l p
ng n x p m i
o ng c m t xu k t do ng i dng nh p vo t bn phm.
116
3. Dng l p MyQueue
hnh:
M i ti n trnh
m ph ng ch
ng trnh qu n l ti n trnh
n gi n c a h
i u
c m ho b ng m t k hi u c ki u int.
Khi m t ti n trnh xu t hi n, n s
a vo m t hng
is
i.
c l y ra th c hi n.
ng trnh:
Thm m t ti n trnh
L y m t ti n trnh ra
Xem t t c cc ti n trnh ang c m t trong hng
i.
4. Thay i c u trc l p Node c a danh sch lin k t, sao cho value c ki u l l p Employee
c nh ngh a trong ch ng 4.
5. Dng danh sch lin k t n v i c u trc m i trong bi 4
qu n l nhn vin c a m t
cng ty: Thm vo m t nhn vin, xo i m t nhn vin, tm ki m m t nhn vin theo m t
tiu ch c th (ti n l ng, tu i), duy t t t c cc nhn vin.
6. Dng danh sch lin k t kp
th c hi n bi s 5.
7. Vi t ch ng trnh (d ng menu)
p d ng th c hi n cc thao tc trn cy nh phn, s
d ng l p BinaryTree trong m c 5.5.
8. Vi t ch ng trnh (d ng menu)
p d ng th c hi n cc thao tc trn
s , s d ng l p Graph trong m c 5.6.1.
th khng tr ng
9. Vi t ch ng trnh (d ng menu)
p d ng th c hi n cc thao tc trn
s d ng l p WeightedGraph trong m c 5.6.2.
th c tr ng s ,
117
CH
NG 6
it
n l p trnh giao di n, v i s h
ng c b n v v i cc
it
ng multimedia.
6.1 GIAO DI N V I CC
IT
NG C
B N
it
ng c b n c a l p trnh giao di n
Cc
it
Cc
it
Cc s ki n c b n c a cc
Mu n s d ng cc
it
it
ng.
import java.awt.*;
6.1.1 Cc
it
ng container c b n
Cc i t ng container
c dng
ch a cc
ny c m t s ph ng th c chung nh sau:
it
it
ng thnh ph n khc. Cc l p
it
ng
add(Object):
Thm m t
remove(Object):
Lo i b m t
removeAll():
Lo i b t t c cc
getComponent(int):
Tr v
i t ng thnh ph n c ch s l tham s
u vo.
Container qu n l cc i t ng ch a trong n d i d ng m ng.
Ch s c a cc thnh ph n l s th t khi thnh ph n
c
thm vo container.
getComponents():
Tr v m ng t t c cc
countComponents():
Tr v s l
it
ng cc
ng ra kh i container.
it
ng m container ang ch a.
it
it
ng m container ang ch a.
ng m container ang ch a.
Frame
Frame l m t i t ng c th dng m t cch c l p, ho c
c g n vo m t i t ng khc nh
m t i t ng conponent bnh th ng. Thng th ng, Frame
c dng nh m t c a s c a m t
ch ng trnh c l p. Cc ph ng th c c b n c a l p Frame:
Frame():
Kh i t o khng tham s .
Frame(String):
c a frame.
setSize(int, int):
ng ng l chi u r ng v chi u
118
setVisible(boolean):
c a frame.
i kch c frame.
Ch
it
gc trn (bi u t
ng) c a frame.
ng c a l p Frame.
ng trnh 6.1
package vidu.chuong6;
import java.awt.*;
public class FrameDemo{
public static void main(String[] args) {
// Khai bo v kh i t o frame c tiu
Frame myFrame = new Frame(This is my Frame!);
myFrame.setSize(300,150);
//
nh kch c
myFrame.setVisible(true);
// Hi n th
frame
frame
}
}
Panel
Panel c ng l m t dang khung ch a, nh ng kh n gi n. Panel ch dng
nhm cc i t ng
giao di n v i nhau. Thng th ng, panel
c dng trong m t c a s c a Frame ho c m t ng
d ng khc. Cc ph ng th c c b n c a l p Panel, ngoi cc ph ng th c chung c a container:
Panel():
Ch
Ch
Kh i t o khng tham s .
package vidu.chuong6;
import java.awt.*;
public class PanelDemo{
public static void main(String[] args) {
// Khai bo v kh i t o frame c tiu
Frame myFrame = new Frame(Frame has a panel!);
myFrame.setSize(300,150);
//
nh kch c
frame
myFrame.setVisible(true);
// Hi n th
frame
119
}
}
Dialog
Dialog l m t i t ng c a s con c a m t c a s ch
s d ng km v i m t Frame. C hai d ng Dialog:
i dng v n c th
ng th c c b n c a l p Dialog:
Dialog(Frame, boolean):
setSize(int, int):
setLayout(Layout):
Thi t l p ch
hi n th cc
c a
ng ng l chi u r ng
c a dialog.
it
i kch c c a dialog.
ng ch a trong dialog.
it
ng thnh ph n no)
ng trnh 6.3
package vidu.chuong6;
import java.awt.*;
public class DialogDemo{
public static void main(String[] args) {
// Khai bo v kh i t o frame c tiu
Frame myFrame = new Frame(Frame has a dialog!);
myFrame.setSize(300,150);
//
nh kch c
frame
// Khai bo v kh i t o dialog
Dialog myDialog = new Dialog(myFrame, An empty dialog!, true);
myDialog.setSize(300,150); //
nh kch c
dialog
120
myDialog.setVisible(true); // Hi n th
dialog
}
}
6.1.2 Cc
it
ng component c b n
Cc i t ng component
c dng lm thnh ph n c a cc i t ng khung ch a, chng
khng th dng c l p, m lun ph i g n vo trong m t i t ng khung ch a container.
Label
Label (nhn) l m t i t ng
thay i tr c ti p
c. Cc ph
hi n th v n b n t nh, nh ng v n b n m ng
ng th c c b n c a Label:
i dng khng th
Label():
Kh i t o m t nhn r ng.
Label(String):
Label(String, int):
u vo.
nh d ng phng ch c a nhn.
package vidu.chuong6;
import java.awt.*;
public class LabelDemo{
public static void main(String[] args) {
// Khai bo v kh i t o frame c tiu
Frame myFrame = new Frame(Frame has a label!);
myFrame.setSize(300,150);
//
nh kch c
frame
// Khai bo v kh i t o label
Label myLabel = new Label();
myLabel.setText(This is a label!);//Gn n i dung v n b n
myLabel.setAlignment(Label.CENTER);// C n l
myFrame.add(myLabel);
gi a
// G n label vo frame
121
myFrame.setVisible(true);
// Hi n th
frame
}
}
TextField v TextArea
y l hai i t ng dng
bi u di n v n b n v ng i dng c th thay i n i dung v n b n
ch a trong chng. i m khc bi t l TextField ch cho php m t dng v n b n, trong khi
TextArea cho php ch a nhi u dng v n b n. Cc ph ng th c chung c a hai l p ny:
setText(String)/getText(): Truy nh p thu c tnh n i dung v n b n ch a trong .
getSelectedText():
Tr v chu i v n b n
getSelectedStart():
Tr v v tr k t
u trong vng
c nh d u ch n (tnh t 0).
getSelectedEnd():
Tr v v tr k t cu i trong vng
c nh d u ch n (tnh t 0).
selectAll():
setEditable(boolean):
Cc ph
c bi en ( nh d u ch n) trong .
nh d u ch n ton v n b n.
Xc
nh vng v n b n c th edit
c hay khng.
ng th c khc c a l p TextField:
TextField():
Kh i t o m t v n b n r ng.
TextField(int):
Kh i t o m t v n b n r ng,
TextField(String):
Kh i t o m t v n b n c n i dung xc
r ng xc
nh b i tham s vo.
nh b i tham s
r ng xc
u vo.
nh.
Tr v
r ng c a v n b n.
ng th c khc c a l p TextArea:
TextArea():
Kh i t o m t vng v n b n r ng.
TextArea(int, int):
TextArea(String):
Kh i t o m t vng v n b n c n i dung xc
vo.
nh b i tham s
r ng xc
nh.
nh (tham s th hai) c a
122
Ch
t cc
it
ng v n b n v vng v n b n vo m t frame.
ng trnh 6.5
package vidu.chuong6;
import java.awt.*;
public class TextDemo{
public static void main(String[] args) {
// Khai bo v kh i t o frame c tiu
Frame myFrame = new Frame(Frame has some texts!);
myFrame.setSize(300,150);
//
nh kch c
frame
// Khai bo v kh i t o textField
TextField myTextField = new TextField(A text field!);
myFrame.add(myTextField);
// G n vo frame
// Khai bo v kh i t o textArea
TextArea myTextArea = new TextArea(5, 40);
String
str=The
+myTextField.getColumns();
TextFields
columns
is:
// Thi t l p n i dung
myFrame.add(myTextArea);
// G n vo frame
myFrame.setVisible(true);
// Hi n th
frame
}
}
Button
Button l i t
c a nt nh n:
ng nt l nh, dng
Button(String):
th c hi n m t nhi m v xc
Kh i t o nt nh n v i tn xc
nh. Cc ph
ng th c c b n
nh trn nt.
123
setLabel(String)/getLabel(): Truy nh p tn c a nt nh n.
Ch
Ch
ng trnh 6.6
package vidu.chuong6;
import java.awt.*;
public class ButtonDemo{
public static void main(String[] args) {
// Khai bo v kh i t o frame c tiu
Frame myFrame = new Frame(Frame has a button!);
myFrame.setSize(300,150);
//
nh kch c
frame
// Khai bo v kh i t o button
Button myButton = new Button(Click!);
myFrame.add(myButton);
// G n vo frame
myFrame.setVisible(true);
// Hi n th
frame
}
}
6.1.3 Cc s ki n c b n c a
it
t
i
ng
it
ng . Java cung
import java.awt.event.*;
Cc l p s ki n c b n c a cc
it
ng bao g m:
ActionEvent:
ComponentEvent:
FocusEvent:
ItemEvent:
c ch n,
c ch n ho c b , khi checkbox ho c
124
WindowEvent:
Xu t hi n khi m t c a s
ra.
TextEvent:
Xu t hi n khi gi tr v n b n c a cc
TextArea b thay i.
MouseEvent:
Xu t hi n khi chu t
KeyEvent:
Xu t hi n khi c
Cc giao ti p
c ci
ng TextField v
u vo t bn phm.
x l cc s ki n trn:
ActionListener.
ComponentListener
FocusListener
ItemListener
WindowListener
TextListener
MouseListener v MouseMotionListener
KeyListener
Khi ci
t cc giao ti p ny, c n ci
t l i ph
// Ci
i t
ng th c x l s ki n:
ng l p s
ki n>){
t l i m l nh
xc
Ch
ng trnh 6.7 ci
i t
ng s
ki n>.getSource();
cho hai v n b n.
Hai v n b n,
nh p s li u vo.
B n nt nh n t
hai v n b n.
ng ng
ng th c getSource():
ng trnh (ch
ng trnh k t thc).
ng trnh 6.7
package vidu.chuong6;
import java.awt.*;
import java.awt.event.*;
public class EventDemo extends Frame implements ActionListener{
Label lbl1, lbl2, lblKq;
TextField txt1, txt2;
Button btnCong, btnTru, btnNhan, btnChia, btnThoat;
public EventDemo(){
super(Event demo!);
this.setLayout(new GridLayout(6,2)); //Ch
hi n th
6 dng, 2 c t
125
th
nh t
this.add(lbl1);
txt1 = new TextField();
// v n b n s
th
nh t
this.add(txt1);
lbl2 = new Label(So thu hai:); // Nhn s
th
hai
this.add(lbl2);
txt2 = new TextField();
// v n b n s
th
hai
this.add(txt2);
lblKq = new Label();
// Nhn k t qu
this.add(lblKq);
this.add(new Label());
// Cc nt nh n
btnCong = new Button(Cong);
// Nt c ng
btnCong.addActionListener(this); // B t s
ki n
this.add(btnCong);
btnTru = new Button(Tru);
// Nt tr
btnTru.addActionListener(this);
this.add(btnTru);
btnNhan = new Button(Nhan);
// Nt nhn
btnNhan.addActionListener(this);
this.add(btnNhan);
btnChia = new Button(Chia);
// Nt chia
btnChia.addActionListener(this);
this.add(btnChia);
btnThoat = new Button(Thoat);
// Nt thot
btnThoat.addActionListener(this);
this.add(btnThoat);
// Ph
ng th c b t s
ki n click vo nt
ng frame
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
/* Ph
ng th c x
l s
ki n nt
c nh n */
126
kq = x + y;
if(ae.getSource() == btnTru)
// Tr
hai s
kq = x - y;
if(ae.getSource() == btnNhan) // Nhan hai s
kq = x*y;
if(ae.getSource() == btnChia)&&(y != 0) // Chia hai s
kq = x/y;
if(ae.getSource() == btnThoat) // Thot kh i ch
ng trnh
System.exit(0);
// Thay
i n i dung k t qu
i t
ng demo
//
nh kch c
myFrame.setVisible(true);
// Hi n th
frame
frame
}
}
6.2 GIAO DI N V I CC
IT
NG MULTIMEDIA
it
ng multimedia, bao g m:
n (Menu)
6.2.1 nh d u v nt ch n
Checkbox v Radio button l cc i t ng dng
nh d u, ho c ch n thng tin. S khc bi t
gi a chng l checkbox cho php ch n ng th i nhi u cng lc, trong khi , trong m i nhm
radio button, ch cho php ch n m t thng tin.
Ph
Cc ph
n tr ng thi c a nt.
ng th c kh i t o Checkbox:
Checkbox():
Kh i t o m t nh d u r ng.
Checkbox(String):
Kh i t o nh d u c nhn xc
nh.
nh.
i tr ng thi nt ch n:
Ki u s ki n:
ItemEvent
Ci
ItemListener
Ph
t giao ti p:
ng th c x a l: itemStateChange(ItemEvent)
ng trnh 6.8
package vidu.chuong6;
import java.awt.*;
import java.awt.event.*;
public class RadioDemo extends Frame implements ItemListener{
Checkbox cbxRed, cbxBlue, cbxGreen;
public RadioDemo(){
super(Radio demo!);
//Ch
hi n th
3 dng, 1 c t
this.setLayout(new GridLayout(3,1));
CheckboxGroup cbxg = new CheckboxGroup(); // Nhm radio
cbxRed = new Checkbox(Red, cbxg, true); // Nt red
cbxRed.addItemListener(this);
// B t s
ki n
this.add(cbxRed);
cbxBlue = new Checkbox(Blue, cbxg, false);// Nt blue
cbxBlue.addItemListener(this);
// B t s
ki n
this.add(cbxBlue);
cbxGreen = new Checkbox(Green, cbxg, false);// Nt green
cbxGreen.addItemListener(this);
// B t s
ki n
this.add(cbxGreen);
// Ph
ng th c b t s
ki n click vo nt
ng frame
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
/* Ph
ng th c x
l s
ki n thay
i tr ng thi nt */
128
if(item.equals(Red))
//
i mu red
//
i mu blue
//
i mu green
this.setBackground(Color.red);
if(item.equals(Blue))
this.setBackground(Color.blue);
if(item.equals(Green))
this.setBackground(Color.green);
this.repaint();
// V
l i mu n n
}
}
public static void main(String[] args) {
// Khai bo
i t
ng demo
//
nh kch c
myFrame.setVisible(true);
// Hi n th
frame
frame
}
}
6.2.2 L a ch n
Choice l i t ng menu s xu ng, hi n thi m t danh sch cc item v cho php ng i dng
ch n m t trong s cc item (t ng t
i t ng dropdown list c a window). Cc ph ng th c
c b n c a l p Choice:
Choice():
Kh i t o
it
ng choice.
addItem(String):
remove(int):
Xo item
removeAll():
u l v tr 0).
c ch n.
getSelectedItem(): Tr v tn c a item
c ch n.
getItem(int):
ng ng v i s th t
X l s ki n thay
Tr v tn c a item t
a vo.
i tr ng thi nt ch n:
Ki u s ki n:
ItemEvent
Ci
ItemListener
t giao ti p:
129
Ph
ng th c x a l: itemStateChange(ItemEvent)
ng trnh 6.9
package vidu.chuong6;
import java.awt.*;
import java.awt.event.*;
public class ChoiceDemo extends Frame implements ItemListener{
Choice myChoice;
public ChoiceDemo(){
super(Choice demo!);
myChoice = new Choice();
// Kh i t o
myChoice.addItem(Red);
myChoice.addItem(Blue);
myChoice.addItem(Green);
myChoice.addItemListener(this);
// B t s
this.add(myChoice);
// G n vo frame
// Ph
ng th c b t s
ki n click vo nt
ki n
ng frame
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
/* Ph
ng th c x
l s
ki n thay
i tr ng thi item */
//
i mu red
//
i mu blue
//
i mu green
this.setBackground(Color.red);
if(item.equals(Blue))
this.setBackground(Color.blue);
if(item.equals(Green))
this.setBackground(Color.green);
this.repaint();
// V
l i mu n n
}
}
public static void main(String[] args) {
130
// Khai bo
i t
ng demo
//
nh kch c
myFrame.setVisible(true);
// Hi n th
frame
frame
}
}
List(int):
ng t , nh ng c qui
nh s dng
i dng
c ch n m t item.
c nhn th y.
c nhn th y xc nh, ch
nh b i tham s th hai.
add(String):
add(String, int):
Xo item
v tr xc
removeAll():
X l s ki n khi thay
i item
ItemEvent
Ci
ItemListener
Ph
n ch n).
n ch n).
c ch n:
Ki u s ki n:
t giao ti p:
c ch n (danh sch
c ch n (danh sch
getSelectedIndexs(): Tr v ch s cc item
getSelectedItems(): Tr v cc item
ng th c x l: itemStateChange(ItemEvent);
131
Ch
ng trnh 6.10
package vidu.chuong6;
import java.awt.*;
import java.awt.event.*;
public class ListDemo extends Frame implements ItemListener{
List myList;
Label lbl;
public ListDemo(){
super(List demo!);
// Kh i t o list
a ch n, ch
nhn
c m t dng
ki n
this.setLayout(new FlowLayout());
this.add(myList);
// G n vo frame
// Kh i t o nhn
this.add(lbl);
// G n vo frame
// Ph
ng th c b t s
ki n click vo nt
ng frame
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
/* Ph
ng th c x
l s
ki n thay
i tr ng thi item */
132
}
}
public static void main(String[] args) {
// Khai bo
i t
ng demo
//
nh kch c
myFrame.setVisible(true);
// Hi n th
frame
frame
}
}
6.2.4 Trnh
Trnh n (menu)
c dng trn cc thanh cng c c a cc c a s ho c l popup menu xu t hi n
khi ta click chu t ph i vo m t i t ng. Java cung c p m t s l p trnh n:
Menubar:
Thanh trnh
Menu:
Trnh
PopupMenu:
Trnh
MenuItem:
Cc m c ch n c a trnh
xu ng
n.
Menubar
Menubar l thanh cng c dng
Menubar:
ch a cc trnh
Menubar():
add(Menu):
Thm m t trnh
i t
ng frame>.setMenuBar(<
ng th c c b n c a l p
t m t menubar c a m t frame, ta g i ph
<
n menu. Cc ph
n menubar.
ng th c c a frame:
i t
ng menubar>);
Menu v PopupMenu
Trnh
cn
Kh i t o m t menu, v i tn xc
nh.
add(MenuItem):
add(Menu):
addSeparator():
Thm m t
X l s ki n c a l p Menu:
Ki u s ki n:
Giao ti p ci
Ph
ActionEvent
t:
ActionListener
ng th c x l: actionPerformed(ActionEvent);
MenuItem
MenuItem l i t ng item trong cc trnh n menu. M i item, khi
d ng nh m t nt l nh. Cc ph ng th c c b n c a l p MenuItem:
c click vo s c tc
MenuItem(String): Kh i t o m t item.
CheckboxMenuItem(String): Kh i t o m t item c m c ch n nh checkbox.
getState():
enable():
disable():
ng (l ch
m c
nh).
X l s ki n c a l p MenuItem:
Ki u s ki n:
Giao ti p ci
Ph
Ch
ActionEvent
t:
ActionListener
ng th c x l: actionPerformed(ActionEvent);
Ch
ng trnh 6.11
package vidu.chuong6;
import java.awt.*;
import java.awt.event.*;
public class MenuDemo extends Frame
implements ActionListener, MouseListener{
Menubar myBar;
Menu myMenu;
PopupMenu myPopup;
Label lbl;
public MenuDemo(){
super(Menu demo!);
134
// Thanh trnh
this.setMenuBar(myBar);
// menu File
myBar.add(myMenu);
myMenu.addActionListener(this);// B t s
ki n
myMenu.add(new MenuItem(New));
myMenu.add(new MenuItem(Open));
myMenu.addSeparator();
myMenu.add(new MenuItem(Save));
myMenu.add(new MenuItem(Save As));
myMenu.addSeparator();
myMenu.add(new MenuItem(Exit));
myPopup = new PopupMenu(Options);// Menu popup
myPopup.addActionListener(this);// B t s
ki n
myPopup(new MenuItem(Cut));
myPopup(new MenuItem(Copy));
myPopup(new MenuItem(Paste));
lbl = new Label();
// Kh i t o nhn
this.add(lbl);
// G n vo frame
// Ph
ng th c b t s
ki n click vo nt
ng frame
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
/* Ph
ng th c x
l s
ki n */
// Khng x
135
i t
ng demo
//
nh kch c
myFrame.setVisible(true);
// Hi n th
frame
frame
}
}
Kh i t o
it
ng trnh by.
FlowLayout(int):
Kh i t o
it
ng trnh by v i cch c n l xc
nh.
C n l tri, l gi tr m c
nh.
FlowLayout.CENTER: C n l gi a.
136
FlowLayout.RIGHT:
C n l ph i.
ng trnh 6.12
package vidu.chuong6;
import java.awt.*;
public class FlowLayoutDemo{
public static void main(String[] args) {
// Khai bo v kh i t o frame c tiu
Frame myFrame = new Frame(Frame has somes buttons!);
myFrame.setSize(300,150);
//
nh kch c
frame
// Hi n th
frame
}
}
it
ng theo d ng b ng,
c xc
nh s hng v s
GridLayout(int, int):
u vo l n
L u :
Khi s l ng i t ng
c chn nhi u h n vo frame, ta mu n ch
hng, ho c t tnh s c t hi n th , th ta tham s t ng ng l 0.
ng trnh t tnh s
V d :
setLayout(new GridLayout(3,0));
s c
it
ng trong frame.
137
setLayout(new GridLayout(0,2));
s c
nh s c t l 2, s dng l m m d o theo s cc
it
ng trong frame.
ng trnh 6.13
package vidu.chuong6;
import java.awt.*;
public class GridLayoutDemo{
public static void main(String[] args) {
// Khai bo v kh i t o frame c tiu
Frame myFrame = new Frame(Frame has somes buttons!);
myFrame.setSize(300,150);
//
nh kch c
frame
// Hi n th
frame
}
}
East:
nh v t
ng ko dn cc vng sao
i.
chnh gi a frame.
ng th c c b n c a l p BorderLayout:
BorderLayout(): Kh i t o m t
it
Khi m t frame
c trnh by theo cch border, ta c th dng ph
t ng vo cc vng c a frame:
ng th c sau
g n cc
138
<
i t
i t
ng component>);
V d :
myFrame.add(Center, new Button(Click));
it
ng vo cng m t vng, ch c
nh.
it
ng g n sau l nhn th y
c.
N u mu n trong m t vng ch a
c nhi u i t ng, ta c th g n vo m i vng m t
Panel. Sau trong panel, ta ch n cch trnh by ring cho panel v g n cc i t ng vo
panel.
Ch ng trnh 6.14 minh ho cch trnh by border: Ta s g n vo n m vng c a frame n m nt
nh n khc nhau.
Ch
ng trnh 6.14
package vidu.chuong6;
import java.awt.*;
public class BorderLayoutDemo{
public static void main(String[] args) {
// Khai bo v kh i t o frame c tiu
Frame myFrame = new Frame(Frame has somes buttons!);
myFrame.setSize(300,150);
//
nh kch c
frame
myFrame.setLayout(new BorderLayout());
//
nh cch trnh by
// Khai bo v kh i t o button
myFrame.add(West, new Button(West));
// G n vo vng west
// G n vo vng east
// Hi n th
frame
}
}
139
Kh i t o m t
it
setConstraints(Component, GridBagConstraints):
t v tr v kch th c c a
component theo cc rng bu c trong gridbagConstraints.
it
ng
y l l p ch a cc rng bu c cho cc i t ng
c trnh by theo cch GridBag. Cc ph
th c v thu c tnh c b n c a l p GridBagConstraints:
ng
GridBagConstraints
GridBagConstraints(): Kh i t o m t
gridx/gridy:
it
ng rng bu c c a GridBag.
V tr c a cell m ta mu n
chi u Y).
it
Xc
nh cch
GridBagConstraints.NONE:
chi m.
it
GridBagConstraints.VERTICAL:
GridBagConstraints.HORIZONAL:
GridBagConstraints.BOTH:
n chi m.
it
it
ng vo (theo chi u X v
it
ng (Theo chi u r ng v
ng khng thay
it
i kch th
c theo cc cell n
ipadx/ipady:
insets:
anchor:
weightx/weighty:
nh kho ng cch l n ra t
ng
i gi a cc
it
ng: Trn, d
i,
ng v i nhau.
ng trnh 6.15
package vidu.chuong6;
import java.awt.*;
public class GridBagLayoutDemo{
public static void main(String[] args) {
140
//
nh kch c
frame
i t
//
nh cch trnh by
ng rng bu c
tr (1,1), kch th
c (1,1)
//
myFrame.add(btn1);
// G n vo frame
// Button2: v
tr (2,2), kch th
nh rng bu c
c (1,1)
//
myFrame.add(btn2);
// G n vo frame
// Button3: v
tr (3,3), kch th
nh rng bu c
c (1,1)
//
nh rng bu c
myFrame.add(btn3);
// G n vo frame
myFrame.setVisible(true);
// Hi n th
frame
}
}
141
it
i t
nh kch th
<
i t
ng b ng ph
i t
ng th c setLocation():
ng>.setLocation(Point);
it
ng b ng ph
ng th c setSize():
ng>.setSize(int, int);
Ngoi ra, c th v a
<
u do
nh v , v a
nh kch th
c cho
it
ng thng qua ph
ng th c:
nh v
it
nh kch th
it
ng.
ng trnh 6.16
package vidu.chuong6;
import java.awt.*;
public class NullLayoutDemo{
public static void main(String[] args) {
// Khai bo v kh i t o frame c tiu
Frame myFrame = new Frame(Frame has somes buttons!);
myFrame.setSize(300,150);
//
nh kch c
myFrame.setLayout(null);
//
nh cch trnh by
// Button1: v
tr (10,30), kch th
frame
c (100,40)
tr (70,120), kch th
// G n vo frame
c (50,20)
// G n vo frame
142
myFrame.setVisible(true);
// Hi n th
frame
}
}
// Cc thu c tnh
// Cc ph
ng th c khc
Cc ph
ng th c c b n c a m t applet:
init():
Kh i t o cc tham s , n u c, c a applet.
start():
Applet b t
stop():
Ch m d t ho t
destroy():
Th c hi n cc thao tc d n d p tr
u ho t
ng.
ng c a applet.
c khi thot kh i applet.
L u :
Khng ph i t t c cc applet
Applet cn c th ci
t m t s ph
u ph i ci
4 ph
ng th c c b n trn.
ng th c tu ch n (khng b t bu c) sau:
Dng
v l i cc i t ng trong applet. Ph
ng g i ph ng th c update().
ng th c ny s t
143
update(Graphics): Ph ng th c ny
c g i sau khi th c hi n ph ng th c paint nh m
t ng hi u qu v . Ph ng ny s t
ng g i ph ng th c paint().
Ch ng trnh 6.17 ci t m t applet
ang trong th i i m t ng ng.
Ch
n gi n, m i ph
ng th c s in ra thng bo r ng applet
ng trnh 6.17
package vidu.chuong6;
import java.awt.*;
import java.applet.*;
public class SimpleApplet extends Applet{
private StringBuffer buffer;
// Chu i thng bo
// Kh i t o
// Kch ho t
addBuffer(starting);
}
public void stop(){
// D ng
addBuffer(stopping);
}
public void destroy(){
// Thot
addBuffer(unloading);
}
private void addBuffer(String newBuffer){
buffer.append(newBuffer);
// Thm thng bo
repaint();
}
public void paint(Graphics g){
g.drawString(buffer.toString(), 5, 15); // Hi n thng bo
}
}
6.4.2 S d ng applet
Applet khng th ch y nh m t ng d ng Java c l p (n khng c hm main), m n ch ch y
c khi
c nhng trong m t trang HTML ( ui .htm, .html) v ch y b ng m t trnh duy t web
thng th ng.
Cc b
c xy d ng v s d ng m t applet bao g m:
Ci
t ch
Trong :
Tn applet l tn file m ngu n bin d ch thnh file ch y c ui .class c a Java.
Chi u r ng v chi u cao l kch th
t vo.
s nhng applet
c nh ngh a trong ch ng trnh 6.17 vo m t vng c kch th c
200*20 trong trang myHtml. By gi , ta c th ki m nghi m ch ng trnh applet c a mnh b ng
cch m trang myHtml trn cc trnh duy t thng th ng.
Ch ng trnh 6.18 ci t m t applet c ch c n ng t ng t nh ch ng trnh 6.7, th c hi n cc
thao tc tnh ton c b n trn hai s . Ngo i tr vi c y l m t applet, nn c th ch y trn m t
trang html.
Ch
ng trnh 6.18
package vidu.chuong6;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class AppletDemo extends Applet implements ActionListener{
Label lbl1, lbl2, lblKq;
TextField txt1, txt2;
Button btnCong, btnTru, btnNhan, btnChia, btnThoat;
public void init(){
this.setLayout(new GridLayout(6,2)); //Ch
lbl1 = new Label(So thu nhat:); // Nhn s
hi n th
th
6 dng, 2 c t
nh t
this.add(lbl1);
145
// v n b n s
th
nh t
this.add(txt1);
lbl2 = new Label(So thu hai:); // Nhn s
th
hai
this.add(lbl2);
txt2 = new TextField();
// v n b n s
th
hai
this.add(txt2);
lblKq = new Label();
// Nhn k t qu
this.add(lblKq);
this.add(new Label());
// Cc nt nh n
btnCong = new Button(Cong);
// Nt c ng
btnCong.addActionListener(this); // B t s
ki n
this.add(btnCong);
btnTru = new Button(Tru);
// Nt tr
btnTru.addActionListener(this);
this.add(btnTru);
btnNhan = new Button(Nhan);
// Nt nhn
btnNhan.addActionListener(this);
this.add(btnNhan);
btnChia = new Button(Chia);
// Nt chia
btnChia.addActionListener(this);
this.add(btnChia);
btnThoat = new Button(Thoat);
// Nt thot
btnThoat.addActionListener(this);
this.add(btnThoat);
}
/* Ph
ng th c x
l s
ki n nt
c nh n */
// Tr
hai s
kq = x - y;
if(ae.getSource() == btnNhan) // Nhan hai s
kq = x*y;
if(ae.getSource() == btnChia)&&(y != 0) // Chia hai s
kq = x/y;
if(ae.getSource() == btnThoat) // Thot kh i ch
ng trnh
System.exit(0);
146
// Thay
i n i dung k t qu
// V
l i cc
i t
ng
}
}
// Cc tham s
khc
</APPLET>
ng th c getParameter()
c gi tr cc tham s
getParameter(Tn_bi n);
ng trnh 6.19
package vidu.chuong6;
import java.awt.*;
import java.applet.*;
public class ParamDemo extends Applet{
Label lbl;
TextField txt;
Button btn;
147
hi n th
6 dng, 2 c t
// Ti ng Vi t
th
nh t
// Nt c ng
// Ti ng Php
// Ti ng Anh, m c
nh
Khi , applet ph i
th y
c cc ch
6.5.1 M r ng cc
it
JFC m r ng cc i t
J
u m i tn l p:
ng component
ng c b n c a java thnh cc l p t
Button
JButton
Label
JLabel
TextField
JTextField
TextArea
JTextArea
Checkbox
JCheckbox
List
JList
148
Menu
JMenu
Cc l p m r ng ny c
java.awt. Ngoi ra, chng
y
cc ph ng th c c a cc i t ng l p c b n c a th vi n
c b sung m t s ph ng th c t o hi u ng giao di n.
it
ng JButton.
it
ng JButton
c m r ng
nh n n
it
ng trnh 6.20
package vidu.chuong6;
import javax.swing.*;
public class JButtonDemo extends JFrame{
public static void main(String[] args) {
// Khai bo v kh i t o frame c tiu
JFrame myFrame = new JFrame(Frame has somes buttons!);
myFrame.setSize(300,150);
// Gi
ta c file
//
nh kch c
frame
m c
nh
nh
149
myFrame.setVisible(true);
// Hi n th
frame
}
}
6.5.2 M r ng cc
it
ng container
T ng t nh cc i t ng component, cc i t ng container c ng
thnh cc l p c tn t ng ng v thm k t J
u:
Frame
JFrame
Panel
JPanel
Dialog
JDialog
c m r ng trong JFC
ch a cc
it
ng component
ch a cc tooltip c a cc i t ng trong
i t ng, tooltip s t
ng
c add vo
ng th c c tn:
V d :
JFrame myFrame = new JFrame(My JFrame);
myFrame.getContentPane().add(Center, new JButton(Test));
it
ng vo cc t ng khc nhau:
G n m t nt nh n vo t ng ContentPane.
G n m t thanh Menubar c ch a m t menu File vo t ng MenubarPane.
Ch
ng trnh 6.21
package vidu.chuong6;
import javax.swing.*;
import java.awt.event.*;
public class JFrameDemo extends JFrame implements ActionListener{
150
ng th c b t s
ki n click vo nt
ng frame
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
/* Ph
ng th c x
l s
ki n */
//
nh kch c
myFrame.setVisible(true);
// Hi n th
frame
frame
151
}
}
L u :
V cc i t ng m r ng c a th vi n JFC
c b sung kh nhi u tnh n ng, c bi t l cc tnh
n ng
ho , do , cc i t ng ny c nh c i m l r t c ng k nh. V l do n ng t i, cho nn
hi n nay, cc i t ng c a th vi n JFC v n t
c ph bi n trong cc ng d ng applet.
ng trnh, tiu
ho c a th vi n chu n AWT
l Java Calculator
nhm cc nt
Dng 2: cc nt 4, 5, 6, tr , lu th a.
o.
ng ng
c hi n ln trn
ng trnh 6.22 ci
t chi ti t ch
ng trnh ny.
ng trnh 6.22
package vidu.chuong6;
import java.awt.*;
import java.awt.event.*;
import java.lang.Math;
public class CalculatorDemo extends Frame implements ActionListener{
private boolean operatorState; // Tr ng thi c a php ton
private int operator;
// Ton t
th c hi n
152
// S
h ng tr
this.setLayout(null);
// Thi t l p layout
// Nhn k t qu
i size
lbl.setAlignment(2);
lbl.setSize(240, 30);
lbl.setLocation(5, 25);
this.add(lbl);
Panel pnl = new Panel();
// Panel ch a cc nt
pnl.setSize(240, 190);
pnl.setLocation(5, 55);
pnl.setLayout(new GridLayout(4, 5)); // Thi t l p layout
this.add(pnl);
btn7 = new Button(7);
// Nt s
btn7.addActionListener(this);
// B t s
ki n click chu t
pnl.add(btn7);
// G n vo panel
// Nt s
// Nt s
btn8.addActionListener(this);
pnl.add(btn8);
btn9 = new Button(9);
btn9.addActionListener(this);
pnl.add(btn9);
btnAdd = new Button(+);
// Nt php ton c ng
btnAdd.addActionListener(this);
pnl.add(btnAdd);
btnReset = new Button(C);
// Nt reset
btnReset.addActionListener(this);
153
pnl.add(btnReset);
btn4 = new Button(4);
// Nt s
// Nt s
// Nt s
btn4.addActionListener(this);
pnl.add(btn4);
btn5 = new Button(5);
btn5.addActionListener(this);
pnl.add(btn5);
btn6 = new Button(6);
btn6.addActionListener(this);
pnl.add(btn6);
btnSub = new Button(-);
// Nt php ton tr
btnSub.addActionListener(this);
pnl.add(btnSub);
btnPow = new Button(x^y);
// Nt php ton lu
th a
btnPow.addActionListener(this);
pnl.add(btnPow);
btn1 = new Button(1);
// Nt s
// Nt s
// Nt s
btn1.addActionListener(this);
pnl.add(btn1);
btn2 = new Button(2);
btn2.addActionListener(this);
pnl.add(btn2);
btn3 = new Button(3);
btn3.addActionListener(this);
pnl.add(btn3);
btnMul = new Button(*);
btnMul.addActionListener(this);
pnl.add(btnMul);
btnRev = new Button(1/x);
btnRev.addActionListener(this);
pnl.add(btnRev);
btn0 = new Button(0);
// Nt s
154
btn0.addActionListener(this);
pnl.add(btn0);
btnPoint = new Button(.);
// Nt d u th p phn
btnPoint.addActionListener(this);
pnl.add(btnPoint);
btnResult = new Button(=);
// Nt k t qu
btnResult.addActionListener(this);
pnl.add(btnResult);
btnDiv = new Button(/);
btnDiv.addActionListener(this);
pnl.add(btnDiv);
btnSqrt = new Button(Sqrt);
btnSqrt.addActionListener(this);
pnl.add(btnSqrt);
operatorState = true;
operator = -1;
oldIterator = 0;
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
/* Ph
ng th c x
l s
ki n */
155
case 2:
result = oldIterator * newIterator;
lbl.setText(String.valueOf(result));
break;
case 3:
if(newIterator != 0){
result = oldIterator/newIterator;
lbl.setText(String.valueOf(result));
}
break;
case 4:
result = (float)Math.pow(oldIterator, newIterator);
lbl.setText(String.valueOf(result));
break;
}
operator = -1;
operatorState = true;
return;
}
if(ae.getSource() == btnRev){
newIterator = Float.parseFloat(lbl.getText());
if(newIterator != 0){
result = (float)1/newIterator;
lbl.setText(String.valueOf(result));
}
operator = -1;
operatorState = true;
return;
}
if(ae.getSource() == btnSqrt){
newIterator = Float.parseFloat(lbl.getText());
if(newIterator >= 0){
result = (float)Math.sqrt(newIterator);
lbl.setText(String.valueOf(result));
}
operator = -1;
operatorState = true;
return;
}
if(ae.getSource() == btnPoint){
lbl.setText(lbl.getText() + .);
return;
}
156
if(ae.getSource() == btnAdd){
operator = 0;
operatorState = true;
oldIterator = Float.parseFloat(lbl.getText());
return;
}
if(ae.getSource() == btnSub){
operator = 1;
operatorState = true;
oldIterator = Float.parseFloat(lbl.getText());
return;
}
if(ae.getSource() == btnMul){
operator = 2;
operatorState = true;
oldIterator = Float.parseFloat(lbl.getText());
return;
}
if(ae.getSource() == btnDiv){
operator = 3;
operatorState = true;
oldIterator = Float.parseFloat(lbl.getText());
return;
}
if(ae.getSource() == btnPow){
operator = 4;
operatorState = true;
oldIterator = Float.parseFloat(lbl.getText());
return;
}
if(ae.getSource() == btnReset){
operator = -1;
operatorState = true;
oldIterator = 0;
lbl.setText("0");
return;
}
// Tr
ng h p click vo nt s
if(operatorState){
// B t
u s
m i
lbl.setText(ae.getActionCommand());
operatorState = false;
}else
// G ti p s
lbl.setText(lbl.getText() + ae.getActionCommand());
157
}
public static void main(String[] args) {
// Khai bo v kh i t o frame
CalculatorDemo myFrame = new CalculatorDemo();
myFrame.setVisible(true);
// Hi n th
frame
}
}
Ch
T NG K T CH
NG 6
N i dung ch ng 6 trnh by ph
chu n AWT c a Java:
Cc i t
Dialog.
ng c ch c n ng lm v t ch a cho cc
it
it
ng trong th vi n
ng php n m b t v x l cc s ki n
c th c a t ng
it
ng giao di n.
Cch t o ra m t applet v i cc ph
ng th c c b n.
CU H I V BI T P CH
1. Vi t ch
ng trnh thay
NG 6
i mu n n c a frame theo l a ch n c a ng
i dng:
i theo mu .
159
NG D N TR L I CU H I V BI T P
Ch
ng 1
Khng c bi t p.
Ch
ng 2
1.
p n:
a. ng.
b. ng.
c. ng.
d. ng.
e. Sai.
f. Sai.
g. ng.
h. ng.
i. Sai.
j. ng.
k. ng.
l. ng.
m. ng.
n. ng.
2. G i :
Xe t:
Nhn hi u xe
Cng su t xe
Mu s c xe
Gi bn xe
Nh p/xem nhn hi u xe
Nh p/xem cng su t xe
Nh p/xem mu s c xe
Nh p/xem gi bn xe
3. G i :
Xe bus:
Cng su t xe
S hi u tuy n xe
Nh p/xem cng su t xe
Nh p/xem s hi u tuy n xe
4. G i :
160
Engine:
Cng su t
ng c
Nh p/xem cng su t
ng c
Xe t k th a t Engine:
Nhn hi u xe
Mu s c xe
Gi bn xe
Nh p/xem nhn hi u xe
Nh p/xem mu s c xe
Nh p/xem gi bn xe
Xe bus k th a t Engine:
S hi u tuy n xe
Nh p/xem s hi u tuy n xe
Ch
ng 3
1.
p n: a, b v f.
2. Dng ki u int.
3. Dng ki u int.
4.
ng
5. Sai.
6.
ng.
7. Sai.
8.
ng
9. Sai.
10. 660.
11. Th c hi n 12 l n, k t qu l 55
12. Th c hi n 1 l n, k t qu 5.
13. Gi ng nhau.
14. G i :
Dng vng l p for ch y t 1
n 100
V i m i s , ki m tra xem s
l ch n hay l b ng cch xt s d c a php chia s
cho 2: n u d 0 l s ch n, d 1 l s l .
N u l s ch n th c ng d n vo t ng.
int sum = 0;
for(int i = 1; i<=100; i++)
if(i%2 == 0) sum += i;
System.out.println(T ng: + sum);
15. G i :
161
int sum = 0;
for(int i = 1; i<=100; i++)
if(i%7 == 0) sum += i;
System.out.println(T ng: + sum);
16. G i :
S d ng vng l p for, ch y t 1
n n, nhn d n vo tch:
long fact = 1;
for(int i = 1; i<=n; i++)
fact *= i;
System.out.println(Giai th a: + fact);
Ch
ng 4
1. a v c.
2. b.
3. d.
4. c.
5. a.
6. a v d.
7. b v d.
8. c.
9. a.
10. c.
11. e.
12. a ng, b ng, c ng, d ng.
13. a.
14. b.
15. G i :
class Rectangle{
private int width;
private int lenth;
public Rectangle(int value){
this.width = value;
this.length = value;
}
public Rectangle(int width, int length){
this.width = width;
this.length = length;
}
162
16. G i :
interface Operator{
puclic int add(int, int);
puclic float add(float, float);
puclic double add(double, double);
puclic long add(long, long);
puclic string add(string, double);
puclic string add(string, string);
}
class OperatorImpl implements Operator{
puclic int add(int x, int y){
return x+y;
}
puclic float add(float x, float y){
return x+y;
}
puclic double add(double x, double y){
return x+y;
}
puclic long add(long x, long y){
return x+y;
}
puclic string add(string x, double y){
return x+y;
}
puclic string add(string x, string y){
return x+y;
}
}
17. G i (t b sung cc ph
ng th c kh i t o l p):
163
}
class Rectangle extends FlatObject{
private float width;
private float length;
public float chvi(){
return 2*(width + length);
}
public float dientich(){
return width*length;
}
}
class Circle extends FlatObject{
private static float PI = 3.14;
private float ray;
public float chuvi(){
return 2*PI*ray;
}
public float dientich(){
return PI*ray*ray;
}
}
Ch
ng 5
2. G i , ch c n s a l p Node
l u ki u char. Sau s a l i ch
l i l p MyStack (xem case study 4, ph n thao tc v i stack).
ng trnh, khng c n s a
i.
4. G i :
public class Node{
164
Ch
ng 6
1. G i (t vi t hm main
test ch
ng trnh):
ng th c b t s
ki n click vo nt
ng frame
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
/* Ph
ng th c x
l s
ki n nt
c nh n */
165
ng
ng
return;
}
}
}
2. G i (t vi t hm main
test ch
ng trnh):
ng th c b t s
ki n click vo nt
ng frame
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
/* Ph
ng th c x
l s
ki n nt
c nh n */
ng
ng
return;
}
}
}
3. G i (t vi t hm main
test ch
ng trnh):
166
this.setLayout(new FlowLayout());
CheckboxGroup cbxg = new CheckboxGroup();
for(int i=0; i<colors.length; i++){
chx[i] = new Checkbox(colors[i], cbxg, false);
chx[i].addItemListener(this);
this.add(chx[i]);
}
// Ph
ng th c b t s
ki n click vo nt
ng frame
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
/* Ph
ng th c x
l s
ki n nt
c nh n */
ng
ng
return;
}
}
}
}
4. G i (t vi t hm main
test ch
ng trnh):
167
// Ph
ng th c b t s
ki n click vo nt
ng frame
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
/* Ph
ng th c x
l s
ki n nt
c nh n */
ng
ng
return;
}
}
}
}
5. G i (t vi t hm main
test ch
ng trnh):
ng th c b t s
ki n click vo nt
ng frame
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
168
});
}
/* Ph
ng th c x
l s
ki n nt
c nh n */
ng
ng
return;
}
}
}
6. T
7. Lm t
ng t cc bi t 1
169
TI LI U THAM KH O
Ti li u ti ng Anh
1. Advanced Java. Aptech Worldwide Express.
2. An Introduction to Object-Oriented Programming with Java. C. Thomas Wu. McGrawHill Inc, 1999.
3. Big Java. Cay Horstmann. John Wiley & Sons Inc, 2002.
4. Core Java. Aptech Worldwide Express.
5. Data Structures and Algorithms in Java, second edition. Michael T. Goodrich and
Roberto Tamassia. John Wiley & Sons Inc, 2001.
6. Introduction to Programming in Java, first edition. J.N. Patterson Hume and Christine
Stephenson. 2000.
7. Java Algorithms. Scott Robert Ladd. McGraw-Hill Inc, 1997.
8. Java Distributed Objects. Bill McCarty and Luke Cassady-Dorion. A Division of
Macmillan Computer Publishing.
9. Java How to Program, fifth edition. H.M.Deitel and P.J. Deitel. Prentice Hall Inc, 2003.
10. Java Language Reference, second edition. Mark Grand. Oreilly Inc, 1997.
11. Java Software Solutions Foundations of Program Designe. John Lewis and William
Loftus. Addison-Weslay Inc, 1998.
12. Objects, Abstractions, Data Structures and Designe using Java. Elliot B. Koffman and
Paul A.T. Wolfgang. John Wiley & Sons Inc, 2005.
13. The JavaTM Class Libraries An Annotated Reference, the Java series. Patrick Chan and
Rosanna Lee. Addison-Wesley Inc, 1996.
Ti li u ti ng Vi t
1. Gio trnh L thuy t v Bi t p Java. Tr n Ti n D ng. NXB Gio d c, 1999.
2. L p trnh Java. NXB Th ng K, 2000.
170
M CL C
GI I THI U..................................................................................................................................... 2
PH N 1 ............................................................................................................................................ 4
NH NG KHI NI M C B N ..................................................................................................... 4
C A L P TRNH H
CH
NG
IT
NG..................................................................................... 4
NG 1...................................................................................................................................... 5
NG
IT
NG .................................................................................................................... 5
NG 2.................................................................................................................................... 15
NH NG KHI NI M C B N C A.......................................................................................... 15
L P TRNH H
NG
IT
NG ............................................................................................ 15
NG
IT
NG V I JAVA ......................................................................... 28
NG 3.................................................................................................................................... 29
NG 4.................................................................................................................................... 54
4.1 K TH A
N............................................................................................................. 54
4.1.1 L p........................................................................................................................... 54
4.1.2 S k th a ................................................................................................................ 58
4.2 K TH A B I............................................................................................................... 60
4.2.1 Giao ti p .................................................................................................................. 61
4.2.2 S d ng giao ti p..................................................................................................... 62
4.3 L P TR U T NG .....................................................................................................63
4.3.1 Khai bo................................................................................................................... 63
4.3.2 S d ng l p tr u t ng............................................................................................ 65
4.4 A HNH ....................................................................................................................... 66
4.4.1 N p ch ng................................................................................................................ 66
4.4.2 a hnh .................................................................................................................... 67
4.5 CASE STUDY II ............................................................................................................ 68
4.5.1 L p Human.............................................................................................................. 69
4.5.2 L p Person............................................................................................................... 69
4.5.3 L p Employee .........................................................................................................70
4.5.4 Ch ng trnh demo..................................................................................................72
T NG K T CH NG 4 ..................................................................................................... 73
CU H I V BI T P CH NG 4 ................................................................................. 73
CH
NG 5.................................................................................................................................... 78
BI U DI N V CI
CC C U TRC D
T ............................................................................................................ 78
LI U TR U T
NG TRN JAVA........................................................ 78
NG 6.................................................................................................................................. 118
6.1 GIAO DI N V I CC
I T NG C B N ......................................................... 118
6.1.1 Cc i t ng container c b n............................................................................. 118
6.1.2 Cc i t ng component c b n .......................................................................... 121
6.1.3 Cc s ki n c b n c a i t ng.......................................................................... 124
6.2 GIAO DI N V I CC
I T NG MULTIMEDIA .............................................. 127
6.2.1 nh d u v nt ch n ......................................................................................... 127
6.2.2 L a ch n ................................................................................................................ 129
6.2.3 Danh sch .............................................................................................................. 131
6.2.4 Trnh n ............................................................................................................... 133
6.3 CC K THU T T O TABLES ............................................................................... 136
6.3.1 Trnh by Flow Layout .......................................................................................... 136
6.3.2 Trnh by Grid Layout........................................................................................... 137
6.3.3 Trnh by Border Layout ....................................................................................... 138
6.3.4 Trnh by GridBag Layout ....................................................................................140
6.3.5 Trnh by Null Layout ........................................................................................... 142
6.4 HTML & APPLET .......................................................................................................143
6.4.1 C u trc c a m t Applet........................................................................................143
6.4.2 S d ng applet .......................................................................................................144
6.4.3 Truy n tham s cho Applet ................................................................................... 147
6.5 GI I THI U V SWING ............................................................................................148
6.5.1 M r ng cc i t ng component........................................................................148
6.5.2 M r ng cc i t ng container .......................................................................... 150
6.6 CASE STUDY IV ........................................................................................................ 152
T NG K T CH NG 6 ................................................................................................... 158
CU H I V BI T P CH NG 6 ............................................................................... 159
H NG D N TR L I CU H I V BI T P .......................................................... 160
Ch ng 1 ........................................................................................................................ 160
Ch ng 2 ........................................................................................................................ 160
Ch ng 3 ........................................................................................................................ 161
Ch ng 4 ........................................................................................................................ 162
Ch ng 5 ........................................................................................................................ 164
Ch ng 6 ........................................................................................................................ 165
TI LI U THAM KH O .................................................................................................. 170
M C L C .......................................................................................................................... 171
173