Kho¸ luËn tèt nghiÖp §¹i häc – Chatting Program
LêI C¶M ¥N
Tríc tiªn em xin ch©n thµnh c¶m ¬n thÇy Lª V¨n
Minh ®· tËn t×nh híng dÉn vµ gióp ®ì vÒ tµi liÖu,
thiÕt bÞ ®Ó em hoµn thµnh kho¸ luËn nµy. Xin
c¶m ¬n c¸c thÇy c« trong khoa C«ng nghÖ th«ng
tin cïng c¸c thÇy c« gi¸o trêng §¹i häc Vinh ®·
truyÒn thô cho em nh÷ng tri thøc quý b¸u trong
suèt 4 n¨m häc qua. C«ng ¬n d¹y dç cña thÇy c«
chØ cã thÓ ®Òn ®¸p b»ng th¸i ®é häc tËp
nghiªm tóc vµ h¨ng say, em sÏ cè g¾ng lµm ®îc
®iÒu ®ã kh«ng chØ trong qu¸ tr×nh lµm kho¸
luËn mµ trong c¶ qu¸ tr×nh c«ng t¸c sau nµy.
Sù quan t©m gióp ®ì cña bè mÑ, gia ®×nh
vµ b¹n bÌ còng lµ mét nguån ®éng viªn lín, con
mong r»ng nh÷ng g× lµm ®îc trong qu¸ tr×nh
häc tËp nµy sÏ lµ mét phÇn nhá bÐ ®Òn ®¸p c«ng
¬n cña bè mÑ vµ lßng tin tëng cña mäi ngêi.
Vinh ngµy 26/05/2003
Sinh viªn :Ph¹m thÞ Thanh
- 71 -
Gi¸o viªn hd : ThS Lª V¨n Minh, Sinh viªn th : Ph¹m ThÞ
Thanh
Môc Lôc
Ch¬ng I : §Æt VÊn §Ò
1. Giíi thiÖu vÒ chat
2. Lùa chän c«ng cô thùc hiÖn
ch¬ng ii : ng«n ng÷ lËp tr×nh java
1. Tæng quan vÒ ng«n ng÷ java
2. LËp tr×nh giao diÖn
3. LËp tr×nh víi JFC
4. Xö lý luång vµ tËp tin
5. §iÒu khiÓn sù kiÖn
6. LËp tr×nh m¹ng
Ch¬ng iii : ph©n tÝch bµI to¸n vµ cµI ®Æt ch¬ng tr×nh
Ch¬ng iV : Híng ph¸t triÓn
Tµi liÖu tham kh¶o
-2-
Kho¸ luËn tèt nghiÖp §¹i häc – Chatting Program
Ch¬ng I : §Æt vÊn ®Ò
1.Giíi thiÖu vÒ chat
CHAT,CHAT,CHAT
Trß chyÖn trªn Net
B¹n cã rÊt nhiÒu ®iÒu cÇn ph¶i trao ®æi víi b¹n bÌ
häc hái kinh nghiÖm, t©m sù chia sÎ buån vui, trao ®æi
vÒ mét vÊn ®Ò g× ®ã..Nhng b¹n cña b¹n l¹i kh«ng ë
gÇn b¹n, hä cã thÓ ®ang häc ë Hµ Néi, ®ang ë Sµi Gßn
hay du häc bªn Mü, B¹n gäi ®iÖn tho¹i ? B¹n kh«ng thÓ
nãi ®îc nhiÒu nh mong muèn mµ l¹i rÊt tèn kÐm.
B¹n cã qu¸ nhiÒu thêi gian r¶nh rçi trong ngµy ? ChØ
cÉn ®Õn tra lµ xong hÕt viÖc, nöa ngµy cßn l¹i ch¼ng
biÕt lµm g× ? B¹n ®· qu¸ mÖt mái, kiÖt søc víi ®èng bµi
vë ë trêng? B¹n c¨ng th¼ng, lo ©u, stress v× c«ng viÖc
c«ng ty ? B¹n c« ®¬n, kh«ng t×m ra ngêi t©m sù ? B¹n
lµ mét c« g¸i rôt rÌ, khÐp kÝn, kh«ng tù tin giao tiÕp ë
chèn ®«ng ngêi ? Hay b¹n ®ang tß mß muèn kh¸m ph¸
thÕ giíi ?
Hoan h« “chat” trªn Internet : mét bíc tiÕn vît lªn c¶
e-mail
vµ
newsgroup
.V©ng,
dÜ
nhiªn
e-mail
vµ
newsgroup ®Òu rÊt tuyÖt – b¹n göi th ®i vµ nhËn th vÒ.
- 71 -
Gi¸o viªn hd : ThS Lª V¨n Minh, Sinh viªn th : Ph¹m ThÞ
Thanh
Nhng nÕu b¹n muèn ®îc håi ®¸p ngay th× sao? B¹n ph¶i
nãi chuyÖn thùc sù víi ai ®ã.
å kh«ng, kh«ng thùc sù “nãi”, mµ lµ “gâ ch÷” ®Õn ngêi kia. B¹n gâ ch÷, hä gâ tr¶ lêi tiÕp. GÇn nh lµ ®iÖn
®µm, chØ cã ®iÒu kh«ng cã tiÕng ®»ng h¾ng dän
giäng, kh«ng cã tiÕng cêi khóc khÝch, còng kh«ng cã
nhiÔu xuyªn ©m. H¬i bÞ chËm n÷a Thùc ra chat chØ lµ
mét h×nh thøc b¾t chíc nghÌo nµn cña ®iÖn ®µm nhng
dÉu sao nã còng cã nhiÒu u ®iÓm kh«ng thÓ phñ nhËn:
Tõ Vinh mµ nãi chuyÖn víi ngêi th©n ë California qua
Internet rÎ h¬n nhiÒu so víi nãi chuyÖn b»ng ®iÖn tho¹i
B¹n cã thÓ liªn hÖ víi mét ngêi mµ b¹n kh«ng n¾m sè
®iÖn tho¹i, chØ cã ®Þa chØ Internet
Nhãm ®«ng ngêi cã thÓ tæ chøc cuéc häp trùc tuyÕn
dÔ h¬n vµ rÎ tiÒn h¬n.
Víi vµi hÖ thèng, b¹n thùc sù cã thÓ truyÒn ®i mét tËp
tin m¸y tÝnh trong thêi gian ®µm tho¹i -®è b¹n lµm ®îc
trªn m¸y ®iÖn tho¹i kh«ng d©y!
NÕu tiÕp xóc víi ngêi níc ngoµi, b¹n cã dÞp trau dåi
ngo¹i ng÷ - thêng lµ tiÕng Anh -®Æc biÖt lµ tiÕng lãng,
ng«n ng÷ th«ng tôc .
Nguyªn t¾c c¬ b¶n khi chat trªn trang Web lµ chän
cho m×nh mét nichname ( biÖt hiÖu) vµ chän phßng t¸n
gÉu.
Lo¹i h×nh trß chuyÖn thø ba lµ göi th«ng ®iÖp tøc thêi
(instant messaging). §èi víi lo¹i h×nh nµy, b¹n sÏ ®îc liªn
l¹c kÝn ®¸o, tay ®«i víi ngêi nµo tuú ý. Cã thÓ lËp ra
danh s¸ch nh÷ng ngêi mµ b¹n muèn trß chuyÖn, do vËy
khi ngêi cã tªn trong danh s¸ch lªn Net, b¹n sÏ ®îc th«ng
b¸o vÒ ®iÒu ®ã, ®ång thêi nh÷ng ngêi kia còng ®îc
-4-
Kho¸ luËn tèt nghiÖp §¹i häc – Chatting Program
th«ng b¸o vÒ t×nh tr¹ng trùc tuyÕn cña b¹n . Víi nh÷ng
lîi Ých nh vËy, viÖc viÕt mét ch¬ng tr×nh chat ®Ó cã thÓ
ch¹y ®îc trªn m¹ng lµ mét c«ng viÖc kh¸ thó vÞ nã liªn
quan ®Õn nhiÒu kiÕn thøc vÒ chuyÓn th«ng tin trªn
m¹ng, giao diÖn víi ngêi dïng, lu tr÷ th«ng tin...
2. Lùa chän c«ng cô thùc hiÖn
LËp tr×nh híng ®èi tîng (OOP) lµ con ®êng míi mÎ cho
c¸c nhµ lËp tr×nh. §èi tîng lµ kh¸i niÖm c¬ së cña OOP.
Nã kh«ng chØ lµ nh÷ng con sè, còng kh«ng chØ lµ nh÷ng
cÊu tróc th«ng thêng. Nã bao gåm c¸c sè liÖu nh lµ
nh÷ng thuéc tÝnh riªng (properties) vµ c¸c hµm nh lµ c¸c
ph¬ng thøc (methods) ®Ó nã trao ®æi víi c¸c ®èi tîng
kh¸c. Thay v× ph¶i chuyÓn cho nhau nh÷ng sè liÖu trong
hÖ thèng më, nh b»ng c¸c hµm, trong OOP, c¸c ®èi tîng
dïng th«ng b¸o ®Ó göi th«ng tin, d÷ liÖu cho nhau vµ
®Ó nh¾c ®èi tîng kia ph¶i thùc hiÖn nhiÖm vô cña
m×nh.
C¸c nguyªn lý vÒ lµm viÖc víi ®èi tîng lµ nh÷ng ®iÒu
®Çu tiªn cÇn ph¶i biÕt cña lËp tr×nh viªn..
§ã lµ mét
khèi chøa c¸c d÷ liÖu (gäi lµ biÕn, vïng hay thuéc tÝnh)
biÓu diÔn nh÷ng tÝnh n¨ng cña ®èi tîng vµ ph¬ng thøc
biÓu diÔn c¸c øng xö cña ®èi tîng tríc t¸c ®éng cña c¸c
®èi tîng kh¸c hay chÝnh nã. §èi tîng cã thÓ ®îc nh©n
b¶n hay thªm tÝnh n¨ng mµ kh«ng lµm h c¸c ®Þnh
nghÜa cò. Khi mét ch¬ng tr×nh cÇn më réng, chóng ta
chØ cÇn ®Þnh nghÜa thªm c¸c thuéc tÝnh, c¸c ph¬ng
thøc cho ®èi tîng s½n cã hay cã thÓ nh©n b¶n thªm cho
phï hîp víi nh÷ng ho¹t ®éng míi.
C¸c ®èi tîng cã thÓ më réng hay dÉn xuÊt tõ mét ®èi
tîng kh¸c, do ®ã thêi gian viÕt lÖnh sÏ gi¶m ®i. Quan
- 71 -
Gi¸o viªn hd : ThS Lª V¨n Minh, Sinh viªn th : Ph¹m ThÞ
Thanh
träng h¬n lµ, còng tõ
®iÒu trªn, viÖc bÉy lçi vµ söa
ch÷a sÏ gi¶m ®i rÊt nhiÒu v× ta chØ cÇn xem xÐt trªn líp
míi t¹o mµ th«i.
Sö dông OOP, ta còng cã sù ®¬n gi¶n t¬ng tù. Ta t¹o
mét cÊu tróc chøa d÷ liÖu vµ ®Þnh nghÜa c¸c ph¬ng
thøc ®Ó lµm viÖc víi d÷ liÖu. Nh thÕ, ®èi tîng t¹o vµ kÕt
hîp d÷ liÖu b»ng m· lÖnh. Chóng ta cã mét ®èi tîng cã
®ñ ®iÒu.
Bíc ph¸t triÓn thø hai cña kh¸i niÖm ®èi tîng lµ t¹o ®îc nhiÒu ®èi tîng míi trªn nÒn cña mét ®èi tîng cao cÊp.
VÊn ®Ò thø ba lµ cÇn ph¶i lÊy ®îc ®èi tîng lµ tËp hîp
nhiÒu thùc thÓ. C¸i sai lÇm thêng m¾c ph¶i trong lËp
tr×nh thñ tôc lµ ta nghÜ r»ng d÷ liÖu lµ cè ®Þnh. VÝ dô
trong thñ tôc xuÊt d÷ liÖu ra mµn h×nh. VÊn ®Ò x¶y ra
khi ta ph¶i chän mµn h×nh, thay ®æi c¸c ®iÒu kiÖn m«i
trêng (lo¹i mµn h×nh, ®é ph©n gi¶i, card xö lý.. ) vµ
ph¶i xuÊt d÷ liÖu ra trªn nhiÒu mµn h×nh kh¸c nhau.
KÕt qu¶ viÖc xuÊt d÷ liÖu trªn mµn h×nh sÏ kh«ng gièng
nhau khi chuyÓn ch¬ng tr×nh sang mét mµn h×nh míi.
Trong trêng hîp nµy, OOP x¸c ®Þnh râ rµng lµ thñ tôc
xuÊt d÷ liÖu ra mµn h×nh lµ riªng cña mµn h×nh ®ã.
NghÜa lµ chóng ta cã nh÷ng ®èi tîng mµn h×nh kh¸c
nhau cã c¸c ph¬ng thøc xuÊt d÷ liÖu ra mµn h×nh kh¸c
nhau.
Sau hÕt, nÕu B¹n nghÜ r»ng: “ nÕu t«i cã hai mµn
h×nh kh¸c nhau th× khi t«i muèn in ra mµn h×nh, t«i
cÇn ph¶i x¸c ®Þnh ®óng vÞ trÝ cÇn in trªn tõng mµn
h×nh vµ chó ý ®Õn c¸c t¬ng t¸c víi ngêi dïng ë nh÷ng
cöa sæ kh¸c nhau”, th× B¹n cÇn nªn biÕt r»ng trong
OOP, B¹n kh«ng cÇn ph¶i lµm ®iÒu ®ã. Bëi v× sau khi
-6-
Kho¸ luËn tèt nghiÖp §¹i häc – Chatting Program
B¹n ®· trõu tîng ho¸ ®Çy ®ñ c¸c yÕu tè cña mét ®èi tîng mµn h×nh, lóc b¹n sÏ viÕt thñ tôc, c¸c yÕu tè cô thÓ
sÏ kh«ng cßn ¶nh hëng ®Õn thñ tôc b¹n viÕt ®èi tîng
mµn h×nh sÏ tÝnh to¸n giïm b¹n.
Tæ chøc m· lÖnh
LËp tr×nh híng ®èi tîng sÏ tæ chøc c¸c m· lÖnh cña b¹n
mét c¸ch gän gµng v× hai nh©n tè sau:
Khi sö dông ®óng, OOP b¾t buéc ta ph¶i tæ chøc
c¸c m· lÖnh thµnh nhiÒu ®o¹n nhá ®Ó dÔ qu¶n lý.
Vµ v× dïng OOP, mçi ®o¹n m· nhá ®ã sÏ ®îc tæ
chøc rÊt tù nhiªn, kh«ng cÇn ta ph¶i suy nghÜ nhiÒu
vÒ viÖc tè chøc.
Java híng ®èi tîng
Sù hç trî lËp tr×nh híng ®èi tîng lµ cèt lâi cña java. Mäi
ho¹t ®éng, mäi c©u lÖnh cña java ®Òu ph¶i t¸c ®éng
lªn vµ qua c¸c ®èi tîng. Mµ tîng trng cho chung lµ c¸c Líp
(class). §èi tîng lµ nh÷ng mÉu (instance) cña líp. Trong ý
nghÜa nµy, líp cã thÓ ®îc xem nh mét c¸i khu«n ®óc nªn
c¸c ®èi tîng. LÊy h×nh ch÷ nhËt lµm vÝ dô, ta cã thÓ t¹o
ra mét h×nh ch÷ nhËt víi to¹ ®é x,y cña ®Ønh thø nhÊt,
chiÒu dµi, chiÒu réng, c¸ch di chuyÓn, ph¬ng thøc ®æi
kÝch thíc t¹o ra mét líp Rectangle, vµ viÕt m· lÖnh cho
nã. Nh thÕ khi thùc hiÖn c¸c m· lÖnh, ta cÇn t¹o ra mét
mÉu cña líp nµy. MÉu Êy chÝnh lµ mét ®èi tîng Rectangle
cô thÓ
Sù kÕ thõa vµ thiÕt kÕ OOP
§Ó cã thÓ ph¸t triÓn thªm cho øng dông, cã mét c«ng
thøc cÇn theo:
+ Chia nhá m· lÖnh thµnh ®¬n vÞ nhá nhÊt:
Khi viÕt mét ch¬ng tr×nh OOP ®iÒu cÇn thiÕt ®Çu
tiªn lµ ph¶i h×nh dung ®ñ c¸c thµnh phÇn. Sau ®ã chia
nhá chóng thµnh c¸c ®¬n vÞ nhá nhÊt. VÝ dô víi yÕu tè
viªn ®¹n, ta cã c¸c ®¬n vÞ yÕu tè nhá h¬n lµ cã thÓ
ch¸y, kÝch thíc viªn ®¹n, tÇm s¸t th¬ng, sè lîng.
+ Xem xÐt c¸c tÝnh chÊt chung gi÷a c¸c ®¬n vÞ trªn:
- 71 -
Gi¸o viªn hd : ThS Lª V¨n Minh, Sinh viªn th : Ph¹m ThÞ
Thanh
Bíc kÕ tiÕp lµ xem xÐt kü mèi liªn hÖ chung gi÷a c¸c
®¬n vÞ thµnh phÇn. VÝ dô trong ch¬ng tr×nh qu¶n lý th
viÖn, thñ th vµ ngêi mîn ®Òu cã tÝnh chung lµ ngêi: cã
tªn tuæi, cã chøc vô, cã ®Þa chØ. VËy ta cã ®a c¶ hai
®èi tîng nµy vµo cïng mét líp?
+ Xem xÐt sù kh¸c nhau gi÷a c¸c ®¬n vÞ:
Ngîc l¹i trªn, ta sÏ ph©n tÝch c¸c ®¬n vÞ cã ®iÒu g×
kh¸c biÖt mµ kh«ng thÓ gom l¹i. Trë l¹i vÝ dô võa nªu, râ
rµng thñ th lµ ngêi qu¶n lý, coi nh së h÷u cuèn s¸ch, cã
nhiÖm vô ph¶i nhËn l¹i cuèn s¸ch ®· cho mîn, cßn ngêi
mîn ph¶i tr¶ l¹i cuèn s¸ch ®· mîn.
+ T×m tÝnh chÊt chung nhÊt cña tÊt c¶ c¸c ®¬n vÞ:
RÊt hiÕm khi ta kh«ng thÓ t×m thÊy mét tÝnh chÊt
nµo chung cho mäi ®¬n vÞ. Nh thÕ, cã thÓ mét ®¬n vÞ
nµo ®ã kh«ng dïng chung bÊt kú tÝnh chÊt nµo víi nh÷ng
®¬n vÞ kh¸c. Ta h·y xÐt mét ch¬ng tr×nh trß ch¬i chiÕn
®Êu, viªn ®¹n, m¸y bay, ngêi b¶o vÖ, nhµ cöa, râ rµng
lµ rÊt kh¸c nhau, tuy vËy ta cã thÓ thÊy nh÷ng c¸i chung
cña m¸y bay, ngêi, viªn ®¹n, cã thÓ di chuyÓn, m×n,
nhµ cöa, m¸y bay, ngêi cã thÓ bÞ næ, nh÷ng tÝnh chÊt
chung nµo bao trïm lªn mäi ®¬n vÞ? Cã mét ®iÒu râ
rµng mµ b¹n cã thÓ quªn lµ chóng ®Òu cã thÓ vÏ trªn
mµn h×nh. Nh vËy chóng ta cã líp Draw_Object.
+ Gom c¸c tÝnh chÊt chung vµ lÆp l¹i.
Ta s¾p xÕp c¸c ®¬n vÞ cã chung mét sè tÝnh chÊt l¹i
víi nhau vµ lÆp l¹i nhiÒu lÇn nh vËy cho ®Õn møc thÊp
nhÊt.
+ Sö dông c¸c ®èi tîng ®Ó thªm vµo theo yªu cÇu
Trong nhiÒu trêng hîp, ngêi sö dông yªu cÇu thªm c¸c
yÕu tè míi. Ta chØ nªn t¹o nh÷ng ®èi tîng míi h¬n lµ
®Þnh nghÜa nh÷ng biÕn míi. §iÒu nµy dÔ thÊy ë nh÷ng
ai ®· tõng lËp tr×nh víi c¸c ng«n ng÷ kh¸c. Ta thêng hay
t¹o ra mét biÕn míi bÊt kú lóc nµo ta cÇn. Víi OOP, khi
cÇn ta h·y t¹o h¼n mét ®èi tîng míi.
-8-
Kho¸ luËn tèt nghiÖp §¹i häc – Chatting Program
Ch¬ng II : Ng«n ng÷ lËp tr×nh java
1. tæng quan vÒ Ng«n ng÷ Java
1.1 Ghi chó
Chóng ta rÊt cÇn c¸c ghi chó ®Ó gîi nhí l¹i qu¸ tr×nh
suy nghÜ cña m×nh, kiÓm ngiÖm c¸c lËp luËn vµ nhÊt lµ
khi chóng ta cÇn bæ sung, söa ch÷a, n©ng cÊp ch¬ng
tr×nh.
Java hç trî hai c¸ch ghi chó:
B¾t ®Çu
KÕt thóc
Môc
®Ých
/*
*/
§o¹n v¨n bÞ giíi h¹n
lµ phÇn ghi chó
- 71 -
Gi¸o viªn hd : ThS Lª V¨n Minh, Sinh viªn th : Ph¹m ThÞ
Thanh
//
( kh«ng cã g×)
lµ ghi chó
/ **
*/
h¹n lµ phÇn ghi
PhÇn c©u v¨n cßn l¹i
PhÇn c©u v¨n bÞ giíi
chó dïng cho
JavaDoc
1.2 .Tõ kho¸
abstract, boolean, Break, Byte, Case, Catch, Char,
Class, const,
continue, default, do, double, else,
extends, final, finally,float, for, goto, if, implements,
import, instanceof, int, inferface, long, native,new,
package, private, protected, public, return, short, static,
super, switch, synchronized, this, throw, throws,
transient, try, void, volatile, while.
Chóng ta còng lu ý r»ng True, False dï kh«ng n»m
trong danh s¸ch c¸c tõ kho¸ cña Java, còng vÉn lµ hai gi¸
trÞ thËt sù vµ cã thÓ coi lµ tõ khãa.
1.3 . KiÓu d÷ liÖu
Java cã hai lo¹i:
1. KiÓu d÷ liÖu gèc ( chuÈn) – Primitive type
2. KiÓu d÷ liÖu dÉn xuÊt – Reference types
KiÓu d÷ liÖu gèc lµ c¸c khèi d÷ liÖu ®· ®îc x¸c ®Þnh
trong ng«n ng÷.
Nh vËt chÊt ®îc cÊu t¹o tõ c¸c nguyªn tö, th× c¸c kiÓu
d÷ liÖu phøc t¹p
®îc t¹o thµnh tõ c¸c d÷ liÖu gèc.
C¸c kiÓu d÷ liÖu gèc cña Java bao gåm c¸c nhãm sau:
sè nguyªn, sè thùc( dÊu chÊm ®éng) ký tù ( character)
gi¸ trÞ ®óng sai ( Boolean).
T¬ng tù nh C / C++ , trong java, ta khai b¸o mét biÕn
theo mÉu sau
kiÓu d÷ liÖu
tªn biªn
1.4. §Æt tªn h»ng vµ biÕn
ViÖc ®Æt trªn cho mét h»ng vµ biÕn cÇn theo nh÷ng
nguyªn t¾c sau:
- 10 -
Kho¸ luËn tèt nghiÖp §¹i häc – Chatting Program
+ ChØ b¾t ®Çu b»ng mét ký tù (ch÷), mét dÊu g¹ch
díi hay mét dÊu dollard $
+ Kh«ng cã kho¶ng tr¾ng gi÷a tªn
+ Sau ký tù ®Çu, cã thÓ dïng c¸c ký tù (ch÷), ký sè,
dÊu dollard, dÊu g¹ch díi
+ Kh«ng trïng víi c¸c tõ kho¸
Chó ý r»ng trong Java, cã ph©n biÖt ch÷ thêng vµ
ch÷ in. Ta cã thÓ dïng ch÷ in nh LONG ®Ó biÓu thÞ mét
biÕn hay h»ng dï trïng víi tõ kho¸ long. Tuy nhiªn chóng
t«i ®Ò nghÞ kh«ng dïng c¸ch nµy
1.5. M¶ng
Nh ®· nãi ë trªn, ngoµi kiÓu d÷ liÖu gèc, Java cßn cã
lo¹i d÷ liÖu dÉn xuÊt. Cã 3 kiÓu d÷ liÖu dÉn xuÊt:
1. M¶ng ( array)
2. Líp ( class)
3. Giao tiÕp ( inferface)
Chóng ta sÏ t×m hiÓu Líp vµ Giao tiÕp ë ®o¹n dµnh
riªng, cßn M¶ng th× t¬ng ®èi ®¬n gi¶n vµ cã liªn quan
nhiÒu ®Õn c¸c kiÓu d÷ liÖu gèc sÏ ®îc tr×nh bµy trong
cïng ®o¹n nµy.
1.5.1 . Khai b¸o:
§Æc trng cña m¶ng lµ ®îc ®Æt trong cÆp ngoÆc
vu«ng “[ ]” (bracket symbols). Mét m¶ng ®îc khai b¸o
b»ng hai c¸ch:
1. CÆp ngoÆc vu«ng ®Æt sau tªn biÕn
2. CÆp ngoÆc vu«ng ®Æt sau kiÓu d÷ liÖu
1.5.2 . §Þnh vÞ ( allocation)
Sau khi khai b¸o, b¶n th©n m¶ng cha ®îc x¸c ®Þnh.
M¶ng cÇn ®îc ®Þnh vÞ trong vïng nhí, nãi c¸ch kh¸c cÇn
®îc cÊp vïng nhí. Kh«ng nh c¸c ng«n ng÷ kh¸c, kÝch thíc
cña m¶ng kh«ng dîc x¸c ®Þnh ngay khi khai b¸o
1.5.3 . Khëi t¹o ( initialization)
Còng cã thÓ ®Þnh vÞ mét m¶ng b»ng c¸ch liÖt kª c¸c
phÇn tö cña nã
1.5.4 . Truy cËp mét m¶ng
- 71 -
Gi¸o viªn hd : ThS Lª V¨n Minh, Sinh viªn th : Ph¹m ThÞ
Thanh
C¸c phÇn tö trong mét m¶ng lu«n ®îc ®¸nh sè b¾t
®Çu tõ sè 0. PhÇn tö ®Çu tiªn lµ phÇn tö thø 0, vµ phÇn
tö cuèi cïng cña mét m¶ng n phÇn tö sÏ cã sè thø tù lµ n1. Ta cã thÓ tham kh¶o gi¸ trÞ cña mét phÇn tö b»ng
c¸ch g¸n sè thø tù cña phÇn tö ta muèn truy cËp vµo
gi÷a hai cÆp ngoÆc vu«ng
1.6. To¸n tö vµ BiÓu thøc
To¸n tö trong mét ng«n ng÷ thêng ®îc ®Ó t¹o ra hay
thay ®æi c¸c gi¸ trÞ cña ch¬ng tr×nh. Java cã mét tËp
hîp rÊt phong phó c¸c to¸n tö (cßn gäi lµ t¸c tö)
C¸c to¸n tö ®îc chia lµm hai lo¹i:
To¸n tö ®«i: cÇn cã 2 to¸n h¹ng, t¹o ra mét gi¸ trÞ
míi lµ kÕt cña 2 to¸n h¹ng nµy.
To¸n tö ®¬n: chØ cÇn mét to¸n h¹ng, t¹o ra mét gi¸
trÞ míi lµ kÕt cña sù thay ®æi gi¸ trÞ cña to¸n h¹ng.
1.6.1 . Tæng qu¸t
=
>
<
!
~
?
:
==
<=
>=
|=
&&
++
--
+
-
*
/
&
|
^
%
<<
>>
>>>
+=
-=
*=
/=
^=
%=
&=
|=
>>=
>>>=
1.6 .2 . §iÒu khiÓn
||
- 12 -
<<=
Kho¸ luËn tèt nghiÖp §¹i häc – Chatting Program
§iÒu khiÓn c¸c hÖ lÖnh kiÓm tra vµ ®iÒu khiÓn qu¸
tr×nh thùc hiÖn c¸c c©u lÖnh sao cho ch¬ng tr×nh thùc
hiÖn ®óng vµ ®¹t ®îc yªu cÇu ®Æt ra.
Th«ng thêng c¸c c©u lÖnh ®îc thùc hiÖn tuÇn tù
thµnh mét tiÕn tr×nh (program flow). Tuy nhiªn tïy theo
d÷ liÖu, cã nh÷ng lóc c¸c c©u lÖnh kh«ng cßn tu©n
theo quy luËt tuÇn tù. Chóng cã thÓ nh¶y sang mét híng
tiÕn tr×nh kh¸c (rÏ nh¸nh- branching, hay nh¶yjumping) hay lÆp l¹i tiÕn tr×nh (vßng lÆp- looping). §Ó
thùc hiÖn nh÷ng cÊu tróc lÖnh trªn ta cã c¸c cÊu tróc
®iÒu khiÓn sau:
1.6.3 . Lùa chän
Khi cã sù rÏ nh¸nh dùa trªn mét quyÕt ®Þnh, ta gäi
®ã lµ sù lùa chän:
1.6.3.1 . LÖnh if .. then
LÖnh if .. then lµ mét phÐp thö cña mét biÓu thøc
Boolean.
If < biÓu thøc Boolean> then < khèi lÖnh> ;
NÕu biÓu thøc Boolean ®óng, khèi lÖnh 1 sÏ ®îc thùc
hiÖn, cßn biÓu thøc ®ã sai, khèi lÖnh 1 sÏ bá qua.
Mét h×nh thøc kh¸c cña if .. then lµ if .. then .. else ..
if < biÓu thøc boolean> then < khèi lÖnh 1> else <
khèi lÖnh 2 >
NÕu biÓu thøc boolean ®óng, thùc hiÖn khèi lÖnh 1,
ngîc l¹i thùc hiÖn khèi lÖnh 2
1.6.3.2 . LÖnh Switch
Víi vÝ dô trªn chóng ta cã qu¸ nhiÒu else if lµm rÊt khã
xem xÐt l¹i qu¸ tr×nh lùa chän cña m×nh. Víi lÖnh switch
t¬ng tù nh cña C/C++ ta cã liÖt kª dÔ dµng h¬n
CÊu tróc lÖnh
Switch < biÓu thøc> {
case < gi¸ trÞ 1> : < khèi lÖnh 1 > ;
case < gi¸ trÞ 2> : < khèi lÖnh 2 > ;
case < gi¸ trÞ 3> : < khèi lÖnh 3 > ;
default : < khèi lÖnh default > ;
- 71 -
Gi¸o viªn hd : ThS Lª V¨n Minh, Sinh viªn th : Ph¹m ThÞ
Thanh
}
NÕu biÓu thøc cã gi¸ trÞ b»ng gi¸ trÞ 1, thùc hiÖn khèi
lÖnh 1
NÕu biÓu thøc cã gi¸ trÞ b»ng gi¸ trÞ i, thùc hiÖn khèi
lÖnh i
Cßn biÓu thøc kh«ng tháa m·n tÊt c¶ c¸c gi¸ trÞ ®·
liÖt kª, thùc hiÖn khèi lÖnh default.
1.6.4 . Vßng lÆp
Vßng lÆp lµ mét nguyªn lý kh«ng thÓ thiÕu trong bÊt
kú ng«n ng÷ lËp tr×nh nµo. Kh«ng cã nh÷ng vßng lÆp,
viÖc gi¶i quyÕt c¸c vÊn ®Ò thùc tÕ sÏ chØ ®¹t ®îc mét
giíi h¹n nµo ®ã. C¸c cÊu tróc vßng lÆp trong Java còng t¬ng tù nh trong C/C++
1.6.4.1 .Vßng lÆp for
CÊu tróc lÖnh:
for (< khëi t¹o> ; < biÓu thøc kiÓm tra> ; < bíc
nh¶y>)
< khèi lÖnh> ;
B¾t ®Çu víi gi¸ trÞ khëi t¹o cña biÕn ®Õm, khèi lÖnh
®îc thùc hiÖn. Sau mçi lÇn thùc hiÖn xong khèi lÖnh,
biÕn ®Õm thay ®æi gi¸ trÞ mét lîng b»ng bíc nh¶y. NÕu
gi¸ trÞ cña biÕn ®Õm tháa biÓu thøc kiÓm tra th× l¹i
thùc hiÖn khèi lÖnh. Cßn kh«ng tháa, vßng lÆp chÊm døt.
Lu ý nªn sö dông biÕn trong vßng lÆp mét c¸ch râ
rµng v× víi viÖc khai b¸o biÕn tõ tríc, ta cã thÓ sÏ kh«ng
nhí r»ng biÕn ®ã ®· ®îc khai b¸o cha vµ ®· sö dông
trong tiÕn tr×nh nµo råi .
Thø hai lµ khi khai b¸o trong lßng cña vßng lÆp, biÕn
sÏ ®îc gi¶i phãng sau khi vßng lÆp chÊm døt. §iÒu ®ã
lµm ch¬ng tr×nh s¸ng sña h¬n vµ kh«ng ph¹m nh÷ng lçi
trong khi ch¹y do sö dông biÕn kh«ng hîp lý.
Trong c¸c thµnh phÇn cña cÊu tróc loop, ta cã thÓ bá
bít mét vßng thµnh phÇn trong dßng lÖnh ®Çu. Nh cã thÓ
bá qua kh«ng ghi bíc nh¶y trong dßng thø nhÊt vµ ghi vµo
bªn trong khèi lÖnh.
1.6.4.2 . Vßng lÆp while
- 14 -
Kho¸ luËn tèt nghiÖp §¹i häc – Chatting Program
CÊu tróc lÖnh:
while
Khèi lÖnh cña vßng lÆp while ®îc thùc hiÖn khi biÓu
thøc boolean cßn cã gi¸ trÞ true. Trong cÊu tróc, java
kh«ng hç trî c¸c khëi t¹o vµ c¸c bíc nh¶y. Ta ph¶i chó ý
thùc hiÖn chóng trong qu¸ tr×nh thùc hiÖn khèi kÖnh.
CÇn thËt cÈn thËn v× cã rÊt nhiÒu khi ta t¹o ra nh÷ng
vßng lÆp vÜnh viÔn. NghÜa lµ biÓu thøc boolean lu«n
lu«n ®óng.
Trong trêng hîp nµy, biÓu thøc boolean ®îc kiÓm tra
tríc råi míi thùc hiÖn khèi lÖnh.
1.6.4.3 Vßng lÆp do .. while
CÊu tróc lÖnh :
do {
< khèi lÖnh> ;
} while < biÓu thøc boolean> ;
Vßng lÆp nµy cho thùc hiÖn khèi lÖnh råi míi kiÓm tra
biÓu thøc boolean. NÕu biÓu thøc cßn ®îc tháa th× tiÕp
tôc thùc hiÖn khèi lÖnh. LÖnh nµy kh¸c víi cÊu tróc while
ë chç lµ cho phÐp thùc hiÖn khèi lÖnh ®îc Ýt nhÊt mét
lÇn.
1.6.5. PhÐp nh¶y (jumping)
Trong viÖc lËp tr×nh viÖc thùc hiÖn c¸c vßng lÆp ®«i
khi kh«ng theo hÕt vßng mµ ta cã thÓ xö lý c¸c trêng hîp
®Æc biÖt ®Ó tho¸t khái vßng lÆp. Nh ta cÇn t×m mét
gi¸ trÞ nµo ®ã trong mét d·y 1000 phÇn tö. Ta ph¶i thùc
hiÖn vßng lÆp duyÖt d·y, so s¸nh c¸c phÇn tö cña d·y víi
gi¸ trÞ cÇn t×m tõ phÇn tö ®Çu tiªn ®Õn phÇn tö cuèi
cïng. Cã thÓ gi¸ trÞ ®ã lµ gi¸ trÞ phÇn tö cuèi cïng, nÕu
vËy ta ph¶i duyÖt qua hÕt d·y. Nhng nÕu gi¸ trÞ ®ã lµ
cña phÇn tö ®Çu tiªn hay phÇn tö ë gi÷a d·y? Râ rµng lµ
khi t×m thÊy, ta ph¶i th«i duyÖt d·y. Ta nh¶y ra khái
vßng lÆp. Java hç trî cho nh÷ng trêng hîp nµy víi c¸c tõ
khãa break vµ continue.
1.6.6 . LÖnh break
- 71 -
Gi¸o viªn hd : ThS Lª V¨n Minh, Sinh viªn th : Ph¹m ThÞ
Thanh
break còng cho phÐp ta nh¶y ®Õn c©u lÖnh kÕ tiÕp
cña cÊu tróc vßng lÆp.
While < biÓu thøc boolean >
{ LÖnh 1 ;
LÖnh 2 ;
if < biÓu thøc boolean 2 >
break
LÖnh 3
}
LÖnh 4
Khi biÓu thøc boolean 2 ®îc tho¸t (®óng), ch¬ng
tr×nh bá qua kh«ng thùc hiÖn LÖnh 3, vµ nh¶y ®Õn thùc
hiÖn LÖnh 4.
1.6.7. LÖnh Continue
Ngîc víi lÖnh break cho phÐp ch¬ng tr×nh nh¶y ®Õn
vßng lÆp, lÖnh Continue l¹i khiÕn ch¬ng tr×nh nh¶y trë
l¹i ®Çu vßng lÆp
Khi biÓu thøc boolean 2 lµ ®óng, ch¬ng tr×nh nh¶y
trë l¹i kiÓm tra biÓu thøc boolean 1 ®Ó tiÕp tôc vßng
lÆp.
While < biÓu thøc boolean 1> {
LÖnh 1 ;
LÖnh 2 ;
if < biÓu thøc boolean 2 >
continue ;
LÖnh 3 ;
}
LÖnh 4 ;
1.6.8 . Nh·n ( label)
Kh«ng nh c¸c ng«n ng÷ kh¸c, Java kh«ng hç trî lÖnh
goto, mÆc dï goto cã trong bé tõ khãa. Java thùc hiÖn
viÖc kÕt hîp lÖnh break hay continue víi nh·n ®Ó thay
thÕ lÖnh goto.
1.7. Hµm - Ph¬ng thøc (Funtion- method)
- 16 -
Kho¸ luËn tèt nghiÖp §¹i häc – Chatting Program
Nh ®· nãi trong phÇn LËp tr×nh híng ®èi tîng, viÖc
ghi tuÇn tù c¸c lÖnh trong mét ch¬ng tr×nh sÏ lµm cho
ch¬ng tr×nh khã ®äc vµ khã söa ch÷a. Vµ c¸c nhµ lËp
tr×nh ®· m« ®un hãa tËp lÖnh thµnh c¸c khèi lÖnh con
®éc lËp hay phô thuéc nhau, vµ chÞu t¸c dông hay thùc
hiÖn mét viÖc cô thÓ riªng biÖt nµo ®Êy. ViÖc lµm nµy
gióp cho ngêi thiÕt kÕ vµ b¶o hµnh ch¬ng tr×nh dÔ theo
dâi c¸c tiÕn tr×nh ®Ó cã thÓ söa ch÷a, bæ xung kÞp
thêi.
Th«ng thêng ®Ó thùc hiÖn ®iÒu nµy, nhµ thiÕt kÕ
ch¬ng tr×nh sÏ thùc hiÖn viÖc ph©n tÝch tõ trªn xuèng
(Top- Down Approach). Hä chia nhá ch¬ng tr×nh thµnh
tõng phÇn víi nh÷ng chøc n¨ng riªng biÖt, råi tiÕp tôc
chia nhá c¸c phÇn võa tÝnh ®îc thµnh c¸c phÇn nhá h¬n
cho ®Õn khi kh«ng thÓ chia nhá h¬n.
Hµm hay ph¬ng thøc trong Java ( vµ c¸c ng«n ng÷
kh¸c) chÝnh lµ c¸c khèi lÖnh ®¬n vÞ thùc hiÖn nh÷ng
chøc n¨ng riªng biÖt.
Trong mét vµi ng«n ng÷, hµm ®îc dïng cã ph©n biÖt
víi thñ tôc ( còng lµ mét khèi lÖnh thùc hiÖn mét chøc
n¨ng chuyªn biÖt nµo ®ã )
Thñ tôc lµ mét khèi lÖnh khi ®îc thùc hiÖn kh«ng tr¶
vÒ bÊt cø gi¸ trÞ nµo. Cßn hµm thêng nhËn vÒ mét
gi¸ trÞ .
V× trong Java kh«ng cã mét hµm nµo lµ toµn cùc mµ
lu«n lu«n ph¶i t¬ng øng víi mét ®èi tîng cô thÓ, thÓ
hiÖn hµnh vi øng xö cña ®èi tîng, nªn kÓ tõ ®©y ta chØ
dïng kh¸i niÖm ph¬ng thøc thay cho kh¸i niÖm hµm.
1.7.1 . §Þnh nghÜa mét ph¬ng thøc
Ta ®· ®Þnh nghÜa mét ph¬ng thøc b»ng c¸ch khai
b¸o nh mét biªn nhng kÌm theo lµ khèi lÖnh t¬ng øng
CÊu tróc
< Privatel | public | ...>
< void integer |.. > < tªn
ph¬ng thøc > ( < ®èi sè 1> < ®èi sè 2 > .. ) {
< khèi lÖnh> ;
}
- 71 -
Gi¸o viªn hd : ThS Lª V¨n Minh, Sinh viªn th : Ph¹m ThÞ
Thanh
trong ®ã
^ C¸ch truy xuÊt
Private: Ph¬ng thøc nµy chØ ®îc truy xuÊt bªn trong líp
chøa nã
Public: Cã thÓ ®îc truy xuÊt tõ bÊt kú líp bªn ngoµI nµo
Protected: ChØ c¸c líp lµ dÉn xuÊt cña líp chøa ph¬ng
thøc nµy míi truy xuÊt
®îc nã.
Default: NÕu kh«ng khai b¸o râ c¸ch truy xuÊt, c¸c ph¬ng thøc sÏ nhËn gi¸ trÞ mÆc ®Þnh, ®ã lµ chØ ®îc truy
xuÊt trong b¶n th©nlíp ®· khai b¸o nã.
^ C¸ch cËp nhËt:
static: hay class. Ph¬ng thøc ®îc khai b¸o lµ
static/class sÏ t¸c ®éng kh«ng phô thuéc vµo c¸c ®èi tîng cô thÓ. Ph¬ng thøc lo¹i líp hay tÜnh t¸c ®éng lªn
toµn thÓ c¸c mÉu t¹o ra tõ líp chøa nã.
astract: Ph¬ng thøc ®¬n gi¶n nhÊt, kh«ng cµi ®Æt g×
ë trong líp khai b¸o nã. Nhng ph¬ng thøc nµy sÏ ®îc ph¸t
triÓn trong c¸c líp lµ dÉn xuÊt cña líp hiÖn hµnh.
final : Khi ®îc khai b¸o lµ final, ph¬ng thøc nµy ®îc b¶o
vÖ kh«ng cho c¸c líp dÉn xuÊt khai b¸o vµ cµi ®Æt l¹i
(overriding)
native : lµ ph¬ng thøc ®îc viÕt b»ng mét ng«n ng÷ kh¸c
Java. Gièng nh ph¬ng thøc abstract, ph¬ng thøc native
chØ cã tªn gäi vµ khèi lÖnh rçng. Nhng kh¸c víi abstract,
nã ®îc cµi ®Æt trong c¸c th viÖn dïng chung viÕt b»ng
ng«n ng÷ kh¸c.
Synchronyzed: khai b¸o mét ph¬ng thøc lµ synchronyzed
sÏ b¶o ®¶m d÷ liÖu kh«ng bÞ sai l¹c khi cïng mét lóc 2
ph¬ng thøc truy cËp cïng mét d÷ liÖu. §èi víi mét ch¬ng
tr×nh ®¬n gi¶n, ®iÒu ®ã kh«ng quan träng nhng khi ta
nghiªn cøu viÖc sö dông ph©n tuyÕn (thread), nã l¹i lµ
mét vÊn ®Ò lín.
^ Gi¸ trÞ tr¶ vÒ:
void, integer, .. lµ c¸c kiÓu d÷ liÖu mµ ph¬ng thøc ph¶i
tr¶ vÒ (void: ph¬ng thøc kh«ng tr¶ vÒ gi¸ trÞ )
- 18 -
Kho¸ luËn tèt nghiÖp §¹i häc – Chatting Program
C¸c ®èi sè 1, 2 lµ c¸c gi¸ trÞ ph¬ng thøc nhËn tõ c¸c
ph¬ng thøc kh¸c hay tõ ch¬ng tr×nh chÝnh, vµ lµ d÷
liÖu cÇn sö lý.
1.7.2 . Gäi mét ph¬ng thøc
Khi muèn mét ph¬ng thøc ®îc thùc hiÖn, ta chØ ®¬n
gi¶n gäi tªn cña ph¬ng thøc vµ g¸n c¸c ®èi sè lµ c¸c gi¸
trÞ hay c¸c biÕn cã cïng kiÓu víi c¸c ®èi sè ®· ®îc khai
b¸o.
1.8. Líp vµ ®èi tîng
Trong phÇn nµy ta lµm viÖc víi c¸c kiÓu d÷ liÖu dÉn
xuÊt cña Java líp vµ giao tiÕp. Ta còng sÏ t×m hiÓu c¬
së híng ®èi tîng cña Java th«ng qua viÖc t¹o c¸c líp, c¸c
®èi tîng vµ nh÷ng tÝnh chÊt cña chóng.
1.8.1. Líp
Ta coi Líp lµ mét khu«n mÉu (template) cña mét ®èi tîng trong bao hµm c¸c d÷ liÖu cña ®èi tîng (gäi lµ vïng
(field) hay thuéc tÝnh (property) vµ c¸c ph¬ng thøc t¸c
®éng lªn c¸c d÷ liÖu ®ã (gäi lµ c¸c ph¬ng thøc cña líp)
Líp cã tÝnh kÕ thõa (inheritance). Mét líp (gäi lµ líp
con- subclass) cã thÓ kÕ thõa tÊt c¶ c¸c vïng vµ c¸c ph¬ng thøc cña mét líp kh¸c (gäi lµ siªu líp- superclass).
Líp cßn cã tÝnh ®a d¹ng (polymorphism) cho phÐp cµi
®Æt c¸c líp dÉn xuÊt rÊt kh¸c nhau tõ cïng mét líp
nguån.
1. §Þnh nghÜa ®¬n gi¶n:
Dïng tõ kho¸ class tríc mét tõ ®Þnh danh vµ sau ®ã lµ
mét cÆp ngoÆc nhän (curly braces)
class MyClass {
}
Ta ®Þnh nghÜa mét líp tªn MyClass. Lu c¸c dßng trªn
vµo mét file tªn lµ MyClass.java, ta cã thÓ biªn dÞch
thµnh mét líp MyClass trong file .CLASS vµ khi cho th«ng
dÞch (ch¹y) líp nµy ch¼ng cho ra mét kÕt qu¶ g×, v×
kh«ng cã g× trong th©n cña líp (khèi lÖnh gi÷a hai dÊu
ngoÆc- body of class).
- 71 -
Gi¸o viªn hd : ThS Lª V¨n Minh, Sinh viªn th : Ph¹m ThÞ
Thanh
Tuy thÕ ta vÉn cã thÓ t¹o ®îc nh÷ng ®èi tîng cña líp
nµy. C©u lÖnh sau khi biªn dÞch sÏ kh«ng sai nhng còng
kh«ng lµm g×:
MyClass my Object = new MyClass ( ) ;
2. Thuéc tÝnh (vïng cña líp- Field)
§Þnh nghÜa
Ta ®Þnh nghÜa thªm c¸c vïng cho líp MyClass.
Vïng ®îc ®Þnh nghÜa nh khai b¸o mét biÕn trong ch¬ng tr×nh:
class MyClass {
int myField ;
}
Ta võa ®Þnh nghÜa vïng myField lµ mét vïng sè
nguyªn int trong líp MyClass
Truy xuÊt ( Field access)
Mét nguyªn lý quan träng cña lËp tr×nh híng ®èi tîng
lµ ®ãng gãi (encapsulation). §ãng gãi cho phÐp ®èi tîng
dÊu ®i c¸c chi tiÕt cµi ®Æt cña nã vµ chØ c«ng bè nh÷ng
g× ®èi tîng cÇn c«ng bè ®Ó trao ®æi víi c¸c ®èi tîng
kh¸c.
Java dïng c¸c tõ khãa: public, private, protected cho
viÖc nµy.
^ Mét vïng gäi lµ public cã thÓ dîc truy cËp tõ tÊt c¶ c¸c
®èi tîng kh¸c.
^ Mét líp kh«ng thÓ truy xuÊt vïng private cña líp kh¸c.
^ Vïng protected cña mét líp cã thÓ ®îc truy cËp trong
b¶n th©n líp ®ã mµ cßn cho c¸c líp dÉn xuÊt tõ líp chñ
truy cËp, nhng c¸c líp kh¸c n÷a th× kh«ng ®îc.
VÝ dô 1
Class Car {
public String manufactuer ;
public String model ;
private float cost ;
protected int mtime ;
- 20 -
- Xem thêm -