lap trinh huong doi tượng

173
1 ҰP TRÌNH HѬӞNG ĈӔI TѬӦNG PGS.TS. Trҩn Ĉình QuӁ KS. NguyӇn Mңnh Hùng Các khái niӉm cѪ bҥn cөa Lүp trình hѬӝng ÿӓi tѬӥng Lүp trình hѬӝng ÿӓi tѬӥng vӝi Java

Upload: vu-nguyen

Post on 02-Oct-2015

237 views

Category:

Documents


0 download

DESCRIPTION

Lap trinh huong doi tượng

TRANSCRIPT

  • 1

    P TRNH HNG I TNG

    PGS.TS. Trn nh Qu KS. Nguyn Mnh Hng

    Cc khi nim c bn ca Lp trnh hng i tng Lp trnh hng i tng vi Java

  • 2

    GII THIU Trong nhng nm gn y, lp trnh hng i tng tr nn gn gi nh s ra i lin tip ca cc ngn ng lp trnh hng i tng. Sc mnh ca phng php lp trnh hng i tng th hin ch kh nng m hnh ho h thng da trn cc i tng thc t, kh nng ng gi v bo v an ton d liu, kh nng s dng li m ngun tit kim chi ph v ti nguyn; c bit l kh nng chia s m ngun trong cng ng lp trnh vin chuyn nghip. Nhng im mnh ny ha hn s thc y pht trin mt mi trng lp trnh tin tin cng vi nn cng nghip lp rp phn mm vi cc th vin thnh phn c sn. Ti liu ny nhm gii thiu cho cc sinh vin mt ci nhn tng quan v phng php lp trnh hng i tng cng cung cp nhng kin thc, cc k thut c bn cho pht trin cc ng dng ca mnh da trn ngn ng lp trnh Java - mt trong nhng ngn ng lp trnh hng i tng thng dng nht hin nay. Ni dung ca ti liu ny bao gm hai phn chnh:

    x Phn th nht trnh by nhng khi nim v cc vn c bn ca lp trnh hng i tng bao gm tng quan v cch tip cn hng i tng v cc khi nim i tng, lp, k tha, ng gi, a hnh

    x Phn th hai trnh by chi tit phng php lp trnh hng i tng vi ngn ng lp trnh Java.

    Ni dung ca ti liu bao gm 6 chng: Chng 1: Tng quan v cch tip cn hng i tng. Trnh by s tin ho ca cch tip

    cn t lp trnh truyn thng n cch tip cn ca lp trnh hng i tng v xu hng pht trin ca lp trnh hng i tng hin nay.

    Chng 2: Nhng khi nim c bn ca lp trnh hng i tng. Trnh by cc khi nim c bn nh: i tng, lp i tng vi cc thuc tnh v phng thc, tnh k tha v a hnh, tnh ng gi ca lp trnh hng i tng. Chng ny cng gii thiu tng quan mt s ngn ng lp trnh hng i tng thng dng hin nay.

    Chng 3: Ngn ng Java. Gii thiu nhng khi nim v nhng quy c ban u ca ngn ng lp trnh Java: Cu trc chng trnh, cch bin dch, cch t tn bin, kiu d liu, cc ton t v cu trc lnh ca ngn ng Java.

    Chng 4: K tha v a hnh trn Java. Trnh by cc k thut lp trnh hng i tng da trn ngn ng Java: Khai bo lp, cc thuc tnh v phng thc ca lp; k thut tha k, cc lp tru tng, ci t np chng v a hnh trn Java.

    Chng 5: Biu din v ci t cc cu trc d liu tru tng trn Java. Trnh by k thut ci t v s dng mt s cu trc d liu quen thuc trong Java: ngn xp, hng i, danh sch lin kt, cy nh phn v th.

    Chng 6: Lp trnh giao din trn Java. Trnh by cc k thut lp trnh giao din trn Java: Lp trnh vi cc giao din c bn trong th vin AWT, lp trnh giao din vi Applet v HTML, lp trnh giao din nng cao vi th vin SWING.

    Ti liu ny c vit nhm phc v mn hc Lp trnh hng i tng ging dy tip theo sau mn hc Ngn ng lp trnh C++ v nh vy khi hc mn hc ny sinh vin s d nm bt c nhng c trng khc bit ca ngn ng Java so vi C++.

  • 3

    Cun sch ny cn c km theo mt a CD cha ton b m cc chng trnh ci t lm v d v bi tp trong cun sch. Mc d cc tc gi c nhiu c gng trong qu trnh bin son ti liu ny, song khng th trnh khi nhng thiu st. Rt mong nhn c s ng gp kin ca sinh vin v cc bn ng nghip.

  • 4

    PHN 1

    NHNG KHI NIM C BN CA LP TRNH HNG I TNG

  • 5

    CHNG 1 TNG QUAN V CCH TIP CN

    HNG I TNG Ni dung chng ny nhm gii thiu mt cch tng quan v cch tip cn hng i tng. Ni dung trnh by bao gm:

    x Gii thiu v cch tip cn ca lp trnh truyn thng. x Gii thiu cch tip cn ca lp trnh hng i tng. x So snh s khc bit gia hai cch tip cn ny. x Xu hng hin nay ca lp trnh hng i tng

    1.1 PHNG PHP TIP CN CA LP TRNH TRUYN THNG

    Lp trnh truyn thng tri qua hai giai on: x Giai on s khai, khi khi nim lp trnh mi ra i, l lp trnh tuyn tnh. x Giai on tip theo, l lp trnh hng cu trc.

    1.1.1 Lp trnh tuyn tnh

    c trng c bn ca lp trnh tuyn tnh l t duy theo li tun t. Chng trnh s c thc hin tun t t u n cui, lnh ny k tip lnh kia cho n khi kt thc chng trnh.

    c trng

    Lp trnh tuyn tnh c hai c trng: x n gin: chng trnh c tin hnh n gin theo li tun t, khng phc tp. x n lung: ch c mt lung cng vic duy nht, v cc cng vic c thc hin tun t

    trong lung .

    Tnh cht

    x u im: Do tnh n gin, lp trnh tuyn tnh c u im l chng trnh n gin, d hiu. Lp trnh tuyn tnh c ng dng cho cc chng trnh n gin.

    x Nhc im: Vi cc ng dng phc tp, ngi ta khng th dng lp trnh tuyn tnh gii quyt.

    Ngy nay, lp trnh tuyn tnh ch tn ti trong phm vi cc modul nh nht ca cc phng php lp trnh khc. V d trong mt chng trnh con ca lp trnh cu trc, cc lnh cng c thc hin theo tun t t u n cui chng trnh con.

    1.1.2 Lp trnh cu trc

    Trong lp trnh hng cu trc, chng trnh chnh c chia nh thnh cc chng trnh con v mi chng trnh con thc hin mt cng vic xc nh. Chng trnh chnh s gi n chng trnh con theo mt gii thut, hoc mt cu trc c xc nh trong chng trnh chnh.

  • 6

    Cc ngn ng lp trnh cu trc ph bin l Pascal, C v C++. Ring C++ ngoi vic c c trng ca lp trnh cu trc do k tha t C, cn c c trng ca lp trnh hng i tng. Cho nn C++ cn c gi l ngn ng lp trnh na cu trc, na hng i tng.

    c trng

    c trng c bn nht ca lp trnh cu trc th hin mi quan h: Chng trnh = Cu trc d liu + Gii thut

    Trong : x Cu trc d liu l cch t chc d liu, cch m t bi ton di dng ngn ng lp

    trnh

    x Gii thut l mt quy trnh thc hin mt cng vic xc nh Trong chng trnh, gii thut c quan h ph thuc vo cu trc d liu:

    x Mt cu trc d liu ch ph hp vi mt s hn ch cc gii thut. x Nu thay i cu trc d liu th phi thay i gii thut cho ph hp. x Mt gii thut thng phi i km vi mt cu trc d liu nht nh.

    Tnh cht

    x Mi chng trnh con c th c gi thc hin nhiu ln trong mt chng trnh chnh. x Cc chng trnh con c th c gi n thc hin theo mt th t bt k, tu thuc

    vo gii thut trong chng trnh chnh m khng ph thuc vo th t khai bo ca cc chng trnh con.

    x Cc ngn ng lp trnh cu trc cung cp mt s cu trc lnh iu khin chng trnh.

    u im

    x Chng trnh sng sa, d hiu, d theo di. x T duy gii thut r rng.

    Nhc im

    x Lp trnh cu trc khng h tr vic s dng li m ngun: Gii thut lun ph thuc cht ch vo cu trc d liu, do , khi thay i cu trc d liu, phi thay i gii thut, ngha l phi vit li chng trnh.

    x Khng ph hp vi cc phn mm ln: t duy cu trc vi cc gii thut ch ph hp vi cc bi ton nh, nm trong phm vi mt modul ca chng trnh. Vi d n phn mm ln, lp trnh cu trc t ra khng hiu qu trong vic gii quyt mi quan h v m gia cc modul ca phn mm.

    Vn

    Vn c bn ca lp trnh cu trc l bng cch no phn chia chng trnh chnh thnh cc chng trnh con cho ph hp vi yu cu, chc nng v mc ch ca mi bi ton. Thng thng, phn r bi ton trong lp trnh cu trc, ngi ta s dng phng php thit k trn xung (top-down).

  • 7

    Phng php thit k trn xung (top-down)

    Phng php thit k top-down tip cn bi ton theo hng t trn xung di, t tng quan n chi tit. Theo , mt bi ton c chia thnh cc bi ton con nh hn. Mi bi ton con li c chia nh tip, nu c th, thnh cc bi ton con nh hn na. Qu trnh ny cn c gi l qu trnh lm mn dn. Qu trnh lm mn dn s dng li khi cc bi ton con khng cn chia nh thm na. Ngha l khi mi bi ton con u c th gii quyt bng mt chng trnh con vi mt gii thut n gin. V d, s dng phng php top-down gii quyt bi ton l xy mt cn nh mi. Khi , ta c th phn r bi ton theo cc bc nh sau:

    x mc th nht, chia bi ton xy nh thnh cc bi ton nh hn nh: lm mng, ct, trn, xy tng, lp mi.

    x mc th hai, phn r cc cng vic mc th nht: vic lm mng nh c th phn r tip thnh cc cng vic: o mng, gia c nn, lm khung st, b tng. Cng vic ct c phn r thnh

    x mc th ba, phn r cc cng vic ca mc th hai: vic o mng c th phn chia tip thnh cc cng vic: o c, cm mc, chng dy, o v kim tra mng. Vic gia c nn c phn r thnh

    Qu trnh phn r c th dng mc ny, bi v cc cng vic con thu c l: o c, cm mc, chng dy, o c th thc hin c ngay, khng cn chia nh thm na. Lu :

    x Cng s dng phng php top-down vi cng mt bi ton, nhng c th cho ra nhiu kt qu khc nhau. Nguyn nhn l do s khc nhau trong tiu ch phn r mt bi ton thnh cc bi ton con.

    V d, vn p dng phng php top-down gii quyt bi ton xy nh, nhng nu s dng mt cch khc phn chia bi ton, ta c th thu c kt qu khc bit so vi phng php ban u:

    x mc th nht, chia bi ton xy nh thnh cc bi ton nh hn nh: lm phn g, lm phn st, lm phn b tng v lm phn gch.

    x mc th hai, phn r cc cng vic mc th nht: vic lm g c th chia thnh cc cng vic nh: x g, gia cng g, to khung, lp vo nh. Vic lm st c th chia nh thnh

    R rng, vi cch lm mn th ny, ta s thu c mt kt qu khc hn vi cch thc thc hin phn trn.

    1.2 PHNG PHP TIP CN HNG I TNG

    1.2.1 Phng php lp trnh hng i tng

    Xut pht t hai hn ch chnh ca phng php lp trnh cu trc: x Khng qun l c s thay i d liu khi c nhiu chng trnh cng thay i mt bin

    chung. Vn ny c bit nghim trng khi cc ng dng ngy cng ln, ngi ta khng th kim sot c s truy nhp n cc bin d liu chung.

  • 8

    x Khng tit kim c ti nguyn con ngi: Gii thut gn lin vi cu trc d liu, nu thay i cu trc d liu, s phi thay i gii thut, v do , phi vit li m chng trnh t u.

    khc phc c hai hn ch ny khi gii quyt cc bi ton ln, ngi ta xy dng mt phng php tip cn mi, l phng php lp trnh hng i tng, vi hai mc ch chnh:

    x ng gi d liu hn ch s truy nhp t do vo d liu, khng qun l c. x Cho php s dng li m ngun, hn ch vic phi vit li m t u cho cc chng trnh.

    Vic ng gi d liu c thc hin theo phng php tru tng ho i tng thnh lp t thp ln cao nh sau:

    x Thu thp cc thuc tnh ca mi i tng, gn cc thuc tnh vo i tng tng ng. x Nhm cc i tng c cc thuc tnh tng t nhau thnh nhm, loi b bt cc thuc

    tnh c bit, ch gi li cc thuc tnh chung nht. y c gi l qu trnh tru tng ho i tng thnh lp.

    x ng gi d liu ca cc i tng vo lp tng ng. Mi thuc tnh ca i tng tr thnh mt thuc tnh ca lp tng ng.

    x Vic truy nhp d liu c thc hin thng qua cc phng thc c trang b cho lp. Khng c truy nhp t do trc tip n d liu.

    x Khi c thay i trong d liu ca i tng, ta ch cn thay i cc phng thc truy nhp thuc tnh ca lp, m khng cn phi thay i m ngun ca cc chng trnh s dng lp tng ng.

    Vic cho php s dng li m ngun c thc hin thng qua c ch k tha trong lp trnh hng i tng. Theo :

    x Cc lp c th c k tha nhau tn dng cc thuc tnh, cc phng thc ca nhau. x Trong lp dn xut (lp c k tha) c th s dng li cc phng thc ca lp c s

    (lp b lp khc k tha) m khng cn thit phi ci t li m ngun. x Ngay c khi lp dn xut nh ngha li cc phng thc cho mnh, lp c s cng khng

    b nh hng v khng phi sa li bt k mt on m ngun no. Ngn ng lp trnh hng i tng ph bin hin nay l Java v C++. Tuy nhin, C++ mc d cng c nhng c trng c bn ca lp trnh hng i tng nhng vn khng phi l ngn ng lp trnh thun hng i tng. Java tht s l mt ngn ng lp trnh thun hng i tng.

    c trng

    Lp trnh hng i tng c hai c trng c bn: x ng gi d liu: d liu lun c t chc thnh cc thuc tnh ca lp i tng. Vic

    truy nhp n d liu phi thng qua cc phng thc ca i tng lp. x S dng li m ngun: vic s dng li m ngun c th hin thng qua c ch k

    tha. C ch ny cho php cc lp i tng c th k tha t cc lp i tng khc. Khi , trong cc lp k tha, c th s dng cc phng thc (m ngun) ca cc lp b k tha, m khng cn phi nh ngha li.

  • 9

    u im

    Lp trnh hng i tng c mt s u im ni bt: x Khng cn nguy c d liu b thay i t do trong chng trnh. V d liu c ng

    gi vo cc i tng. Nu mun truy nhp vo d liu phi thng qua cc phng thc cho php ca i tng.

    x Khi thay i cu trc d liu ca mt i tng, khng cn thay i cc i m ngun ca cc i tng khc, m ch cn thay i mt s hm thnh phn ca i tng b thay i. iu ny hn ch s nh hng xu ca vic thay i d liu n cc i tng khc trong chng trnh.

    x C th s dng li m ngun, tit kim ti nguyn. V nguyn tc k tha cho php cc lp k tha s dng cc phng thc c k tha t lp khc nh nhng phng thc ca chnh n, m khng cn thit phi nh ngha li.

    x Ph hp vi cc d n phn mm ln, phc tp.

    1.2.2 Phng php phn tch v thit k hng i tng

    Mt vn c bn t ra cho phng php hng i tng l t mt bi ton ban u, lm sao thu c mt tp cc i tng, vi cc chc nng c phi hp vi nhau, p ng c yu cu ca bi ton t ra? Phng php phn tch thit k hng i tng ra i nhm tr li cho cu hi ny. Mc ch l xy dng mt tp cc lp i tng tng ng vi mi bi ton, phng php ny tin hnh theo hai pha chnh:

    Pha phn tch: Chuyn i yu cu bi ton t ngn ng t nhin sang ngn ng m hnh. Pha thit k: Chuyn i c t bi ton di dng ngn ng m hnh sang mt m hnh c th c th ci t c.

    Hai pha phn tch v thit k ny bao gm nhiu bc khc nhau: x M t bi ton x c t yu cu x Trch chn i tng x M hnh ho lp i tng x Thit k tng quan x Thit k chi tit.

    Bc 1: M t bi ton

    Bi ton ban u c pht biu di dng ngn ng t nhin, bao gm: x Mc ch, chc nng chung x Cc yu cu v thng tin d liu x Cc yu cu v chc nng thc hin

  • 10

    Bc 2: c t yu cu

    Cc yu cu c hnh thc ho ln mt mc cao hn bng cch s dng ngn ng kiu kch bn (scenario) m t. Trong mt kch bn, mi chc nng, mi hot ng c m t bng mt kch bn, bao gm:

    x Cc tc nhn tham gia vo kch bn. x Vai tr ca mi tc nhn trong kch bn. x Th t cc hnh ng m mi tc nhn thc hin: khi no thc hin, tc ng vo tc nhn

    no, thng tin no c trao i. Qu trnh trn c tin hnh vi tt c cc chc nng yu cu ca h thng.

    Bc 3: Trch chn i tng

    Bc ny s tin hnh xut cc i tng c th c mt trong h thng: x Da vo cc kch bn c m t trong bc hai, chn ra cc tc nhn c xut hin

    xut thnh cc i tng. x La chn cc i tng bng cch loi b cc tc nhn bn ngoi h thng, cc tc nhn

    trng lp. x Cui cng, ta thu c tp cc i tng ca h thng.

    Bc 4: M hnh ho lp i tng

    Bc ny tin hnh tru tng ho i tng thnh cc lp: x Thu thp tt c cc thuc tnh ca mi i tng va thu thp c, da vo yu cu v

    thng tin trong yu cu h thng (t bc 1). x Thu thp cc hnh ng m mi i tng cn thc hin, da vo cc kch bn m i

    tng tng ng c tham gia (trong bc 2). x Nhm cc i tng tng t nhau, hoc c nhiu thuc tnh gn ging nhau. x Loi b mt s thuc tnh c bit, ring t ca mt s i tng trong nhm. x M hnh mi nhm i tng cn li thnh lp: Cc thuc tnh chung ca cc i tng

    thnh thuc tnh ca lp, cc hnh ng ca cc i tng thnh phng thc ca lp. Kt qu thu c mt tp cc lp i tng ban u ca h thng.

    Bc 5: Thit k tng qut

    Bc ny s tin hnh thit k v m, ngha l thit k mi quan h gia cc lp trong h thng: x Xc nh s tha k, nu c, gia cc lp: Nu hai lp c mt s thuc tnh chung, th

    tch cc thuc tnh chung lm thnh mt lp c s, v hai lp ban u u dn xut t lp c s . Thng thng, lp cc tru tng (chung nht) s lm lp c s, lp cng c th, cng chi tit th lm lp dn xut (lp con, chu).

    x Xc nh tng tc, nu c, gia cc lp: Da vo cc kch bn c m t trong bc 2, hai tc nhn c tng tc vi nhau th hai lp tng ng bc ny cng c tng tc vi nhau.

    Kt qu thu c ca bc ny l mt s quan h bn ngoi gia cc lp trong h thng.

  • 11

    Bc 6: Thit k chi tit

    Bc ny s thc hin thit k mc vi m, ngha l thit k kin trc bn trong ca mi lp i tng:

    x T chc d liu ca lp theo cc thuc tnh. Qui nh phm vi truy nhp cho tng thuc tnh.

    x Thit k chi tit cch c x ca lp i tng thng qua cc phng thc ca lp: Xc nh kiu d liu tr v, kiu tham s ca phng thc, m t thut ton chi tit cho tng phng thc, nu cn.

    Kt qu thu c ca bc ny l mt tp cc lp vi thit k chi tit kin trc bn trong. Sau cc bc phn tch thit k hng i tng t mt yu cu ca bi ton ban u, ta thu c mt m hnh h thng hng i tng chi tit:

    x C ci nhn tng quan, v m v h thng bng m hnh thit k tng quan, ch r s lng cc lp i tng, mi quan h k tha v quan h tng tc gia cc lp i tng trong h thng.

    x C ci nhn chi tit, vi m v h thng bng m hnh thit k chi tit. M hnh ny ch r bn trong mi lp i tng: cc thuc tnh, cc phng thc vi kiu tr v v kiu tham s, thut ton chi tit cho mi phng thc.

    Sau pha phn tch v thit k hng i tng, ta thu c c t h thng di dng m hnh cc lp: quan h gia cc lp v kin trc bn trong ca mi lp. y s l u vo cho pha tip theo, pha lp trnh hng i tng, nh chng ta bit.

    1.3 SO SNH HAI CCH TIP CN

    Phng php tip cn hng i tng c bn cht hon ton khc vi phng php tip cn truyn thng (phng php tip cn hng cu trc) trn nhiu mt:

    x Phng php m hnh bi ton khc nhau. x c trng khc nhau v ng gi x u / nhc im khc nhau. x Lnh vc ng dng khc nhau.

    Khc nhau v phng php m hnh

    Hai phng php ny khc nhau hon ton cch tip cn v m hnh bi ton, phng php hng i tng tin hnh theo phng php t di ln trn, t thp ln cao, t c th n tru tng. Trong khi , phng php cu trc tip cn theo phng php t trn xung di, t tng quan n chi tit:

    x Phng php hng i tng bt u bng nhng i tng c th, tp hp cc thuc tnh ca tng i tng. Sau , nhm cc i tng tng t nhau thnh nhm, loi b cc thuc tnh qu c bit, ch gi li cc thuc tnh chung nht, nhm thnh lp. Cho nn, qu trnh hnh thnh lp l qu trnh i t thp ln cao, t c th mc thp n tru tng ho mc cao.

  • 12

    x Trong khi , phng php hng cu trc li i theo chiu ngc li. Phng php ny bt u t mt bi ton tng quan, mc khi qut cao, chia nh dn v lm mn dn cho n khi thu c mt tp cc bi ton con, nh hn, c th hn, chi tit hn.

    Khc nhau v c trng ng gi

    Hai phng php tip cn ny cng c nhng c trng hon ton khc nhau: x Phng php hng i tng c c trng l d liu c ng gi hn ch truy nhp

    t do trc tip vo d liu. Th hai l cho php s dng li m ngun tit kim ti nguyn v cng sc lp trnh.

    x Trong khi , c trng ca phng php cu trc l cu trc d liu v gii thut v mi quan h ph thuc cht nh ca gii thut vo cu trc d liu.

    Khc nhau v u nhc im

    Hai phng php ny cng c nhng u nhc im tri ngc nhau: x Phng php hng i tng c u im l bo v c d liu trnh b truy nhp trc

    tip t do t bn ngoi, tit kim c ti nguyn v cng sc lp trnh do c th dng li m ngun. Tuy nhin, phng php ny li kh phc tp, kh theo di c lung d liu v hn na, gii thut khng phi l vn trng tm ca phng php ny.

    x Tri li, phng php hng cu trc li c u im l t duy gii thut r rng, d theo di lung d liu, chng trnh n gin v d hiu. Tuy nhin, khng bo v c an ton d liu trong chng trnh. Hn na, hn ch ln nht l s ph thuc cht ch ca gii thut vo cu trc d liu, khin cho khi thay i cu trc d liu, thng phi thay i gii thut, v do , phi vit li m cho chng trnh.

    Khc nhau v lnh vc p dng

    Do s khc nhau v cc c trng v s khc nhau v u nhc im, cho nn hai phng php ny cng c s khc nhau ng k trong lnh vc p dng:

    x Phng php hng i tng thng c p dng cho cc bi ton ln, phc tp, c nhiu lung d liu khc nhau, khng th qun l c bng phng php cu trc. Khi , ngi ta dng phng php hng i tng tn dng kh nng bo v d liu trnh b truy nhp t do. Hn na, tn dng kh nng dng li m ngun ca phng php ny tit kim ti nguyn v cng sc.

    x Trong khi , phng php cu trc thng ph hp vi cc bi ton nh, c lung d liu r rng, cn phi t duy gii thut r rng v ngi lp trnh vn c kh nng t qun l c mi truy nhp n cc d liu ca chng trnh.

    1.4 XU HNG PHT TRIN CA LP TRNH HNG I TNG

    Lp trnh hng thnh phn

    Xut pht t lp trnh hng i tng, t duy lp trnh hng thnh phn (component-oriented programming) theo tng:

    x Gii quyt bi ton bng cch xy dng mt tp cc thnh phn (component) c tnh c lp tng i vi nhau. Mi thnh phn m nhim mt phn cng vic nht nh.

  • 13

    x Sau , ngi ta ghp cc thnh phn vi nhau thu c mt phn mm tho mn mt tp cc yu cu xc nh.

    Vi lp trnh hng thnh phn, ngi ta c th tin hnh lp trnh theo phng php sau: x Xy dng mt th vin cc thnh phn, mi thnh phn thc hin mt cng vic xc nh. x Khi cn pht trin mt phn mm c th, ngi ta ch cn chn nhng thnh phn c sn

    trong th vin ghp li vi nhau. Ngi lp trnh ch phi pht trin thm cc thnh phn mnh cn m cha c trong th vin.

    Phng php ny c nhng u im rt ln: x Lp trnh vin c th chia s vi nhau nhng thnh phn mnh xy dng cho nhiu

    ngi khc dng chung. x Khi cn, lp trnh vin c th lp ghp cc thnh phn c sn khc nhau to thnh cc

    chng trnh c chc nng khc nhau. Tt c ch cn da trn cng ngh lp ghp thnh phn, tit kim c rt nhiu cng sc lp trnh.

    Trong xu hng lp trnh hng thnh phn, mt s phng php lp trnh khc ny sinh v ang pht trin mnh m:

    x Lp trnh hng agent (agent-oriented programming) x Lp trnh hng aspect (aspect-oriented programming)

    Lp trnh hng agent

    Lp trnh hng agent c th xem l mt mc tru tng cao hn ca lp trnh hng thnh phn. Trong , cc agent l cc thnh phn c kh nng hot ng c lp, t ch hon thnh cng vic ca mnh. Hn na, cc agent c kh nng ch ng lin lc vi cc agent khc c th phi hp, cng tc hay cnh tranh nhau hon thnh nhim v. Lp trnh hng agent c hai c trng c bn:

    x Th nht l kh nng t ch ca mi agent hon thnh nhim v ring ca n. x Th hai l tnh t chc x hi gia cc agent, cho php cc agent phi hp, cng tc, cnh

    tranh nhau hon thnh nhim v chung ca ton h thng.

    Lp trnh hng aspect

    Lp trnh hng aspect cng l mt xu hng ca lp trnh hng thnh phn. Theo , mi thnh phn c nhim v hon thnh theo mt lung cng vic hoc mt kha cnh ca vn . Sau , tng hp cc thnh phn ca cc lung khc nhau, ta thu c gii php cho bi ton ca mnh. Lp trnh hng aspect c c trng c bn:

    x Tnh ng gi theo lung cng vic, hoc ng gi theo kha cnh ca vn . x Tnh n iu theo lung, trong mt lung cng vic, cc nhim v c thc hin lin

    tip nhau, tun t nh trong lp trnh tuyn tnh.

    TNG KT CHNG 1

    Ni dung chng 1 trnh by cc vn tng quan lin quan n phng php tip cn hng i tng trong lp trnh:

    x Cc phng php tip cn truyn thng: lp trnh tuyn tnh v lp trnh cu trc.

  • 14

    x Phng php tip cn hng i tng vi hai c trng c bn: ng gi d liu v s dng li m ngun.

    x Lp trnh hng i tng, phng php phn tch v thit k h thng hng i tng. x So snh s khc bit ca phng php hng i tng vi cc phng php truyn thng

    trn cc kha cnh: Cch tip cn bi ton, c trng, u nhc im v lnh vc p dng ca mi phng php.

    x Hin nay, lp trnh hng thnh phn, lp trnh hng agent v lp trnh hng aspect tin ho t lp trnh hng i tng ang l xu hng pht trin mnh m.

  • 15

    CHNG 2 NHNG KHI NIM C BN CA LP TRNH HNG I TNG

    Ni dung chng ny tp trung trnh by cc khi nim c bn ca lp trnh hng i tng:

    x i tng x Lp i tng x Vic tru tng ho i tng theo chc nng x Tru tng ho i tng theo d liu x K tha x ng gi x a hnh x Phng php ci t lp i tng x Gii thiu mt s ngn ng lp trnh hng i tng thng dng hin nay.

    2.1 CC KHI NIM C BN

    2.1.1 i tng

    Trong lp trnh hng i tng, tt c cc thc th trong h thng u c coi l cc i tng c th. i tng l mt thc th hot ng khi chng trnh ang chy. V d:

    1. Trong bi ton qun l bun bn xe hi ca mt ca hng kinh doanh, mi chic xe ang c mt trong ca hng c coi l mt i tng. Chng hn, mt chic xe nhn hiu Ford, mu trng, gi 5000$ l mt i tng.

    2. Trong bi ton qun l nhn vin ca mt vn phng, mi nhn vin trong vn phng c coi l mt i tng. Chng hn, nhn vin tn l Vinh, 25 tui lm phng hnh chnh l mt i tng.

    Mt i tng l mt thc th ang tn ti trong h thng v c xc nh bng ba yu t: x nh danh i tng: xc nh duy nht cho mi i tng trong h thng, nhm phn bit

    cc i tng vi nhau. x Trng thi ca i tng: l s t hp ca cc gi tr ca cc thuc tnh m i tng ang

    c.

    x Hot ng ca i tng: l cc hnh ng m i tng c kh nng thc hin c. Trng thi hin ti ca i tng qui nh tnh cht c trng ca i tng. V d, nhn vin trong v d trn c trng thi l:

    x Tn l Vinh x Tui l 25 x V tr lm vic l phng hnh chnh.

  • 16

    Trong khi , trng thi ca chic xe trong ca hng l: x Nhn hiu xe l Ford x Mu sn xe l trng x Gi bn xe l 5000$

    Mi i tng s thc hin mt s hnh ng. V d, i tng xe hi c kh nng thc hin nhng hnh ng sau:

    x Khi ng. x Dng li. x Chy.

    biu din i tng trong lp trnh hng i tng, ngi ta tru tng ho i tng to nn khi nim lp i tng.

    2.1.2 Lp i tng

    Trong lp trnh hng i tng, i tng l mt thc th c th, tn ti trong h thng. Trong khi , lp l mt khi nim tru tng, dng ch mt tp hp cc i tng c mt trong h thng. V d:

    1. Trong bi ton qun l bun bn xe hi ca mt ca hng kinh doanh, mi chic xe ang c mt trong ca hng c coi l mt i tng. Nhng khi nim Xe hi l mt lp i tng dng ch tt c cc loi xe hi ca ca hng.

    2. Trong bi ton qun l nhn vin ca mt vn phng, mi nhn vin trong vn phng c coi l mt i tng. Nhng khi nim Nhn vin l mt lp i tng dng ch chung chung cc nhn vin ca vn phng.

    Lu : x Lp l mt khi nim, mang tnh tru tng, dng biu din mt tp cc i tng. x i tng l mt th hin c th ca lp, l mt thc th tn ti trong h thng.

    Lp c dng biu din i tng, cho nn lp cng c thuc tnh v phng thc: x Thuc tnh ca lp tng ng vi thuc tnh ca cc i tng. x Phng thc ca lp tng ng vi cc hnh ng ca i tng.

    V d, lp xe t c m t bng cc thuc tnh v phng thc:

    Lp Xe t Thuc tnh:

    Nhn hiu xe Mu xe Gi xe Cng sut xe (m lc)

    Phng thc: Khi ng xe Chy xe

  • 17

    Dng xe Tt my

    Lu : Mt lp c th c mt trong cc kh nng sau:

    x Hoc ch c thuc tnh, khng c phng thc. x Hoc ch c phng thc, khng c thuc tnh. x Hoc c c thuc tnh v phng thc, trng hp ny l ph bin nht. x c bit, lp khng c thuc tnh v phng thc no l cc lp tru tng. Cc lp ny

    khng c i tng tng ng.

    Lp v i tng

    Lp v i tng, mc d c mi lin h tng ng ln nhau, nhng bn cht li khc nhau: x Lp l s tru tng ho ca cc i tng. Trong khi , i tng l mt th hin ca

    lp. x i tng l mt thc th c th, c thc, tn ti trong h thng. Trong khi , lp l mt

    khi nim tru tng, ch tn ti dng khi nim m t cc c tnh chung ca mt s i tng.

    x Tt c cc i tng thuc v cng mt lp c cng cc thuc tnh v cc phng thc. x Mt lp l mt nguyn mu ca mt i tng. N xc nh cc hnh ng kh thi v cc

    thuc tnh cn thit cho mt nhm cc i tng c th. Ni chung, lp l khi nim tn ti khi pht trin h thng, mang tnh khi nim, tru tng. Trong khi , i tng l mt thc th c th tn ti khi h thng ang hot ng.

    2.1.3 Tru tng ho i tng theo chc nng

    Tru tng ho i tng theo chc nng chnh l qu trnh m hnh ho phng thc ca lp da trn cc hnh ng ca cc i tng. Qu trnh ny c tin hnh nh sau:

    x Tp hp tt c cc hnh ng c th c ca cc i tng. x Nhm cc i tng c cc hot ng tng t nhau, loi b bt cc hot ng c bit, to

    thnh mt nhm chung. x Mi nhm i tng xut mt lp tng ng. x Cc hnh ng chung ca nhm i tng s cu thnh cc phng thc ca lp tng

    ng. V d, trong bi ton qun l ca hng bn t. Mi t c mt trong ca hng l mt i tng. Mc d mi chic xe c mt s c im khc nhau v nhn hiu, gi xe, mu sc nhng c chung cc hnh ng ca mt chic xe t l:

    x C th khi ng my. x C th chy. x C th dng li. x C th tt my.

  • 18

    Ngoi ra, mt s t xe c th thc hin mt s hnh ng c bit nh: x C th giu n pha x C th t bt n pha x C th t ng pht tn hiu bo ng.

    Tuy nhin, khng phi xe no cng thc hin c cc hnh ng ny. Cho nn ta loi b cc hnh ng c bit ca mt s xe, ch gi li cc hnh ng chung nht, m hnh thnh cc phng thc ca i tng xe t tng ng vi cc hnh ng chung nht ca cc xe t.

    Lp Xe t Phng thc:

    Khi ng xe Chy xe Dng xe Tt my

    2.1.4 Tru tng ho i tng theo d liu

    Tru tng ho i tng theo d liu chnh l qu trnh m hnh ho cc thuc tnh ca lp da trn cc thuc tnh ca cc i tng tng ng. Qu trnh ny c tin hnh nh sau:

    x Tp hp tt c cc thuc tnh c th c ca cc i tng. x Nhm cc i tng c cc thuc tnh tng t nhau, loi b bt cc thuc tnh c bit, to

    thnh mt nhm chung. x Mi nhm i tng xut mt lp tng ng. x Cc thuc tnh chung ca nhm i tng s cu thnh cc thuc tnh tng ng ca lp

    c xut. V d, trong bi ton qun l ca hng bn t. Mi t c mt trong ca hng l mt i tng. Mc d mi chic xe c mt s c im khc nhau v nhn hiu, gi xe, mu sc nhng c chung cc thuc tnh ca mt chic xe t l:

    x Cc xe u c nhn hiu. x Cc xe u c mu sc x Cc xe u c gi bn x Cc xe u c cng sut ng c

    Ngoi ra, mt s t xe c th c thm cc thuc tnh: x C xe c th c dn nghe nhc x C xe c th c mn hnh xem ti vi x C xe c lp knh chng nng, chng n

    Tuy nhin, y l cc thuc tnh c bit ca mt s i tng xe, nn khng c xut thnh thuc tnh ca lp t. Do , ta m hnh lp t vi cc thuc tnh chung nht ca cc t.

  • 19

    Lp Xe t Thuc tnh:

    Nhn hiu xe Mu xe Gi xe Cng sut xe (m lc)

    u im ca vic tru tng ha

    Nhng u im ca vic tru tng ha l: x Tp trung vo vn cn quan tm x Xc nh nhng c tnh thit yu v nhng hnh ng cn thit x Gim thiu nhng chi tit khng cn thit

    Vic tru tng ha d liu l cn thit, bi v khng th m t tt c cc hnh ng v cc thuc tnh ca mt thc th. Vn mu cht l tp trung n nhng hnh vi ct yu v p dng chng trong ng dng.

    2.1.5 Khi nim k tha

    Xt trng hp bi ton qun l nhn s v sinh vin ca mt trng i hc. Khi , ta c hai lp i tng chnh l lp Nhn vin v lp Sinh vin:

    Lp Nhn vin Thuc tnh:

    Tn Ngy sinh Gii tnh Lng

    Phng thc: Nhp/xem tn Nhp/xem ngy sinh Nhp/xem gii tnh Nhp/xem lng

    Lp Sinh vin Thuc tnh:

    Tn Ngy sinh Gii tnh Lp

    Phng thc: Nhp/xem tn Nhp/xem ngy sinh Nhp/xem gii tnh Nhp/xem lp

    Ta nhn thy rng hai lp ny c mt s thuc tnh v phng thc chung: tn, ngy sinh, gii tnh. Tuy nhin, khng th loi b cc thuc tnh c bit gp chng thnh mt lp duy nht, v cc thuc tnh lng nhn vin v lp ca sinh vin l cn thit cho vic qun l. Vn ny sinh nh sau:

    x Ta phi vit m trng nhau n hai ln cho cc phng thc: nhp/xem tn, nhp/xem ngy sinh, nhp/xem gii tnh. R rang iu ny rt tn cng sc.

    x Nu khi c s thay i v kiu d liu, chng hn kiu ngy sinh c qun l trong h thng, ta phi sa li chng trnh hai ln.

  • 20

    trnh rc ri do cc vn ny sinh nh vy, lp trnh hng i tng s dng k thut k tha nhm nhm cc phn ging nhau ca cc lp thnh mt lp mi, sau cho cc lp ban u k tha li lp c to ra. Nh vy, mi lp tha k (lp dn xut, lp con) u c cc thuc tnh v phng thc ca lp b tha k (lp c s, lp cha). Quay li vi bi ton qun l trng i hc, cc thuc tnh v phng thc chung gia lp Nhn vin v lp Sinh vin l:

    x Tn, x Ngy sinh, x Gii tnh, x Nhp/xem tn, x Nhp/xem ngy sinh x Nhp/xem gii tnh.

    Ta tch phn chung ny thnh mt lp mc tru tng cao hn, lp Ngi. Lp Ngi s lm lp cha ca lp Nhn vin v lp Sinh vin. Khi , cc lp tr thnh:

    Lp Ngi Thuc tnh:

    Tn Ngy sinh Gii tnh

    Phng thc: Nhp/xem tn Nhp/xem ngy sinh Nhp/xem gii tnh

    Lp Nhn vin k tha t lp Ngi Thuc tnh:

    Lng Phng thc:

    Nhp/xem lng

    Lp Sinh vin k tha t lp Ngi Thuc tnh:

    Lp Phng thc:

    Nhp/xem lp Nh vy, s k tha trong lp trnh hng i tng:

    x Cho php lp dn xut c th s dng cc thuc tnh v phng thc ca lp c s tng t nh s dng cc thuc tnh v phng thc ca mnh.

    x Cho php vic ch cn ci t phng thc mt lp c s, m c th s dng c tt c cc lp dn xut.

    x Cho php trnh s ci t trng lp m ngun ca chng trnh. x Cho php ch phi thay i mt ln khi cn phi thay i d liu ca cc lp.

    2.1.6 Khi nim ng gi

    Xt v d bi ton qun l nhn vin vn phng vi lp Nhn vin nh sau:

  • 21

    Lp Nhn vin Thuc tnh:

    Tn Ngy sinh Gii tnh Phng ban H s lng

    Phng thc: Tnh lng nhn vin

    Khi , cch tnh lng cho nhn vin l khc nhau i vi mi ngi:

    = * * Trong , t l phn trm l khc nhau cho mi phng ban, v d:

    x Phng k hoch l 105% x Phng hnh chnh l 100% x Phng nhn s l 110%

    Khi , tu vo thuc tnh phng ban khc nhau m ta phi dng cng thc t l khc nhau tnh lng cho mi nhn vin. Tuy nhin, cch tnh c th ny l cng vic bn trong ca phng thc tnh tin lng ca lp Nhn vin. Vi mi ng dng, khi to mt i tng c th ca lp nhn vin, ta ch cn truyn cc tham s thuc tnh cho i tng, sau gi phng thc tnh tin lng cho i tng nhn vin , ta s bit c tin lng ca nhn vin. Cch gi phng thc tnh tin lng l hon ton ging nhau cho tt c cc i tng nhn vin ca vn phng. S ging nhau v cch s dng phng thc cho cc i tng ca cng mt lp, mc d bn trong phng thc c cc cch tnh ton khc nhau vi cc i tng khc nhau, c gi l tnh ng gi d liu ca lp trnh hng i tng. Nh vy, tnh ng gi d liu ca lp trnh hng i tng:

    x Cho php che du s ci t chi tit bn trong ca phng thc. Khi s dng ch cn gi cc phng thc theo mt cch thng nht, mc d cc phng thc c th c ci t khc nhau cho cc trng hp khc nhau.

    x Cho php che du d liu bn trong ca i tng. Khi s dng, ta khng bit c thc s bn trong i tng c nhng g, ta ch thy c nhng g i tng cho php truy nhp vo.

    x Cho php hn ch ti a vic sa li m chng trnh. Khi phi thay i cng thc tnh ton ca mt phng thc, ta ch cn thay i m bn trong ca phng thc, m khng phi thay i cc chng trnh gi n phng thc b thay i.

    2.1.7 Khi nim a hnh

    Tr li vi v d v qun l trng i hc, vi hai lp Nhn vin v lp Sinh vin, u k tha t lp Ngi. Khi , ta thm vo mi lp mt phng thc show():

    x Phng thc show ca lp Ngi s gii thiu tn v tui ca ngi .

  • 22

    x Phng thc show ca lp Nhn vin s gii thiu nhn vin c tin lng l bao nhiu x Phng thc show ca lp Sinh vin s gii thiu l sinh vin ang hc lp no.

    Lp Ngi Thuc tnh:

    Tn Ngy sinh Gii tnh

    Phng thc: Nhp/xem tn Nhp/xem ngy sinh Nhp/xem gii tnh show

    Lp Nhn vin k tha t lp Ngi Thuc tnh:

    Lng Phng thc:

    Nhp/xem lng show

    Lp Sinh vin k tha t lp Ngi Thuc tnh:

    Lp Phng thc:

    Nhp/xem lp show

    Khi , nu trong h thng c cc i tng c th tng ng vi ba lp, th:

    x Khi ta gi hm show t i tng ca lp Ngi, s nhn c tn v tui ca ngi . x Khi ta gi phng thc show t i tng ca lp Nhn vin, s nhn c s tin lng

    ca nhn vin . x Khi ta gi phng thc show t i tng ca lp Sinh vin, ta s bit c lp hc ca

    sinh vin . Vic ch cn gi cng mt phng thc, nhng t cc i tng khc nhau, s cho k qu khc nhau c gi l tnh a hnh trong lp trnh hng i tng. Nh vy, tnh a hnh trong lp trnh hng i tng:

    x Cho php cc lp c nh ngha cc phng thc trng nhau: cng tn, cng s lng v kiu tham s, cng kiu tr v. Vic nh ngha phng thc trng nhau ca cc lp k tha nhau cn c gi l s np chng phng thc.

    x Khi gi cc phng thc trng tn, da vo i tng ang gi m chng trnh s thc hin phng thc ca lp tng ng, v do , s cho cc kt qu khc nhau.

    2.2 SO SNH LP V CU TRC

    Trong phn ny, chng ta s tin hnh so snh Class (Lp) v Structure (Cu trc) trn nhiu kha cnh khc nhau:

    x Mc khi nim x Mc ch v chc nng x V u v nhc im

  • 23

    So snh mc khi nim

    mc khi nim, Lp v cu trc hon ton khc nhau: x Lp l khi nim ch c trong lp trnh hng i tng; n c dng biu din mt

    tp cc i tng tng t nhau. x Trong khi , Cu trc l khi nim ch tn ti trong lp trnh cu trc, khng phi l mt

    khi nim ca lp trnh hng i tng. V trong lp trnh hng i tng, tt c cc thc th u c coi l mt i tng, ngha l n phi l mt th hin c th ca mt lp no . Do , trong lp trnh hng i tng, khng c khi nim Cu trc.

    So snh v mc ch v chc nng

    V mc ch, Lp v Cu trc u c chung mt mc ch ban u, l nhm mt tp hp cc d liu li vi nhau x l ng b v thng nht: Cu trc nhm cc d liu hay phi i km vi nhau li thnh mt nhm cho d x l. Tng t, Lp l tp hp mt s thuc tnh chung ca i tng x l. Tuy nhin, Lp v Cu trc cng c mt s khc bit trn kha cnh ny:

    x Lp ngoi mc ch nhm cc thuc tnh d liu ca i tng, cn nhm cc hot ng ca i tng thnh cc phng thc ca Lp.

    x Trong khi , mc d cng c th cung cp cc hm trong Cu trc, nhng mc ch chnh ca Cu trc ch l nhm d liu thnh cu trc cho d x l.

    So snh v u nhc im

    V c cng mc ch l nhm cc d liu li vi nhau x l, cho nn Lp c Cu trc c cng u im l lm chng trnh gn gng, x l ng b v thng nht. Tuy nhin, Lp cn c mt s u im m Cu trc khng c:

    x Lp c kh nng bo v d liu trnh b truy nhp t do t bn ngoi. Cc chng trnh bn ngoi ch c th truy nhp vo d liu ca i tng thng qua cc phng thc do Lp cung cp, khng th t do truy nhp. Trong khi , Cu trc mc du nhm d liu vi nhau nhng khng c kh nng bo v d liu: Cc chng trnh bn ngoi vn c th truy nhp t do vo cc thnh phn ca Cu trc.

    x Lp c kh nng ng gi hn ch ti a thay i khi phi sa li m chng trnh. Khi c s thay i, ch cn thay i m ca mt phng thc, cc chng trnh bn ngoi s dng phng thc u khng phi thay i. Trong khi , nu thay i mt thnh phn ca Cu trc, ta phi thay i m ca tt c cc chng trnh s dng thnh phn ca Cu trc.

    x Lp c th c k tha bi mt Lp khc, iu ny lm tng kh nng s dng li m ngun ca chng trnh. Trong khi , Cu trc hon ton khng c c ch k tha, cho nn nhiu khi phi vit li nhng on m ging nhau nhiu ln. iu ny va tn cng sc, va khng an ton khi c s thay i mt trong nhng on m ging nhau .

  • 24

    2.3 THNH PHN PRIVATE V PUBLIC CA LP

    bo v d liu trnh b truy nhp t do t bn ngoi, lp trnh hng i tng s dng cc t kho quy nh phm vi truy nhp cc thuc tnh v phng thc ca lp. Mt cch tng qut, lp trnh hng i tng chia ra hai mc truy nhp cc thnh phn lp:

    x Private: Truy nhp trong ni b lp. x Protected: Thnh phn c bo v, c hn ch truy nhp nh thnh phn private (s

    c trnh by sau). x Public: Truy nhp t do t bn ngoi.

    Thnh phn private

    Thnh phn private l khu vc dnh ring cho lp, khng chia s vi bt k lp khc t bn ngoi. Thnh phn private ch cho php truy nhp trong phm vi ni b lp: T phng thc vo cc thuc tnh hoc gia cc phng thc ca lp vi nhau. Cc thnh phn private khng th truy nhp t bn ngoi lp, cng nh t i tng khc. Trong mt lp, thng thng cc thnh phn sau s c t vo khu vc private ca lp:

    x Tt c cc thuc tnh d liu ca lp. Cc thuc tnh d liu ca lp c t vo vng private nhm bo v chng, trnh s truy nhp t do t bn ngoi.

    x Cc phng thc trung gian, c s dng nh cc bc tnh ton m cho cc phng thc khc. Cc phng thc trung gian c t vo vng private thc hin vic ng gi trong lp trnh hng i tng: Cc i tng, chng trnh bn ngoi khng cn, v khng th bit cch tnh ton c th bn trong ca lp.

    Thnh phn public

    Thnh phn public l khu vc m Lp c th chia s vi tt c cc chng trnh v i tng bn ngoi. Thnh phn public c th c truy nhp t bn trong ln bn ngoi lp:

    x Bn trong lp: t phng thc lp vo cc thuc tnh d liu ca lp, hoc gia cc phng thc ca lp vi nhau.

    x Bn ngoi lp: T chng trnh bn ngoi hoc cc i tng khc vo cc phng thc ca lp.

    Trong mt lp, thng thng cc thnh phn sau s c t vo vng chia s public ca lp: x Cc phng thc nhp/xem (set/get) cc thuc tnh d liu ca lp. Cc phng thc

    ny s cho php cc i tng bn ngoi truy nhp vo cc thuc tnh d liu ca lp mt cch gin tip.

    x Cc phng thc cung cp chc nng hot ng, cch c x ca i tng i vi mi trng bn ngoi. Cc phng thc ny th hin chc nng ca cc i tng lp.

    2.4 MT S NGN NG LP TRNH HNG I TNG

    Ni dung phn ny s trnh by mt s ngn ng lp trnh hng i tng thng dng hin nay: x Ngn ng lp trnh C++ x Ngn ng lp trnh ASP.NET v C#.NET

  • 25

    x Ngn ng lp trnh Java

    2.4.1 C++

    C++, ra i vo gia nhng nm 1980, l mt ngn ng lp trnh hng i tng c m rng t ngn ng lp trnh cu trc C. Cho nn, C++ l ngn ng lp trnh na hng i tng, na hng cu trc.

    Nhng c trng hng i tng ca C++

    x Cho php nh ngha lp i tng. x Cho php ng gi d liu vo cc lp i tng. Cho php nh ngha phm vi truy nhp

    d liu ca lp bng cc t kho phm vi. x Cho php k tha lp vi cc kiu k tha khc nhau tu vo t kho dn xut. x Cho php lp k tha s dng cc phng thc ca lp b k tha (trong phm vi quy

    nh). x Cho php nh ngha chng phng thc trong lp k tha.

    Nhng vi phm hng i tng ca C++

    Nhng vi phm ny l do kt qu k tha t ngn ng C, mt ngn ng lp trnh thun cu trc. x Cho php nh ngha v s dng cc bin d liu t do. x Cho php nh ngha v s dng cc hm t do. x Ngay c khi d liu c ng gi vo lp, d liu vn c th truy nhp trc tip nh d

    liu t do bi cc hm bn, lp bn (friend) trong C++.

    2.4.2 ASP.NET v C#.NET

    Cc ngn ng lp trnh .NET (cn c gi l .NET Frameworks) ca MicroSoft ra i vo cui nhng nm 1990 cnh tranh vi ngn ng lp trnh Java. .NET l mt ngn ng hon ton hng i tng, hn na, n cn cung cp mt giao din lp trnh ho thn thin v p mt vi truyn thng lp trnh ko th ca MicroSoft. Mt s c im ca ngn ng .NET:

    x L mt ngn ng hon ton hng i tng: Tt c cc thnh phn, cc thc th trong chng trnh u c m hnh di dng mt lp nht nh. Khng c d liu t do v hm t do trong chng trnh.

    x Cung cp giao din lp trnh ho: lp trnh vin ch cn ko v th cc i tng ho cho ng dng ca mnh.

    x Cho php lp trnh vin t to ra cc th vin UserControl ca mnh. y l mt th vin bao gm cc thnh phn c ngi dng t thit k giao din, vit m ngun, ng gi v c th s dng li trong nhiu ng dng khc nhau, tu theo chc nng ca cc thnh phn.

  • 26

    2.4.3 Java

    Java l mt ngn ng lp trnh c Sun Microsystems gii thiu vo thng 6 nm 1995. Java c xy dng trn nn tng ca C v C++: Java s dng c php ca C v c trng hng i tng ca C++. Mt s c im ca Java:

    x Java l mt ngn ng lp trnh hon ton hng i tng: Tt c cc thc th u c coi l mt i tng, l mt th hin c th ca mt lp xc nh. Khng c d liu t do v hm t do trong Java, tt c u c ng gi vo cc lp xc nh.

    x Java l ngn ng va bin dch va thng dch. u tin m ngun c bin dch thnh dng bytecode; sau c thc thi trn tng loi my nh trnh thng dch. iu ny to ra kh nng hot ng c lp vi nn tng phn cng ca cc ng dng Java.

    x Java cho php ngi dng t to cc i tng th vin JavaBeans ca mnh (tng t nh cc thnh phn UserControl ca .NET). Cc i tng Bean s c s dng li nh cc thnh phn c sn trong cc ng dng khc. iu ny m ra kh nng to ln tit kim cng sc vit m ngun v kh nng xy dng cc k thut cho mt nn cng nghip lp rp phn mm.

    Ngn ng lp trnh hng i tng Java s c trnh by chi tit trong ton b phn 2 ca gio trnh ny.

    TNG KT CHNG 2

    Ni dung chng 2 trnh by mt s khi nim c bn ca lp trnh hng i tng: x Khi nim i tng, dng ch cc thc th tn ti thc t trong cc ng dng hng

    i tng. x Khi nim lp, mt s tru tng ho ca i tng, dng biu din i tng trong

    lp trnh hng i tng. Cc thnh phn ca lp l thuc tnh (d liu) v phng thc (hnh ng).

    x Qu trnh tru tng ho theo chc nng hnh thnh cc phng thc ca lp, th hin cc hot ng ca i tng.

    x Qu trnh tru tng ho theo d liu hnh thnh cc thuc tnh ca lp, biu din cc thuc tnh tng ng ca i tng.

    x Khi nim k tha trong lp trnh hng i tng, nhm hn ch vic trng lp m ngun v tng kh nng s dng li m ngun ca chng trnh.

    x Khi nim ng gi trong lp trnh hng i tng, nhm hn ch ti a s thay i m ngun. Ch cn thay i trong phng thc, cc chng trnh bn ngoi c s dng phng thc khng cn phi thay i.

    x Khi nim a hnh, cho php gi cng mt phng thc, nhng vi cc i tng khc nhau s c hiu qu khc nhau.

    x So snh Lp v Cu trc trn cc kha cnh khc nhau: khi nim, mc ch, chc nng v u nhc im.

    x M t cc thnh phn nm trong cc vng khc nhau ca Lp: private v public.

  • 27

    x Gii thiu mt s ngn ng lp trnh hng i tng thng dng hin nay: C++, .NET, Java.

    CU HI V BI TP CHNG 2

    1. Trong s cc nhn nh sau, ci no ng, ci no sai: a. i tng l mt thc th c th, tn ti thc t trong cc ng dng. b. i tng l mt th hin c th ca Lp. c. Lp l mt khi nim tru tng dng biu din cc i tng. d. Lp l mt s tru tng ho ca i tng. e. Lp v i tng c bn cht ging nhau. f. Tru tng ho i tng theo chc nng to ra cc thuc tnh ca lp. g. Tru tng ho i tng theo chc nng to ra cc phng thc ca lp. h. Tru tng ho i tng theo d liu to ra cc thuc tnh ca lp. i. Tru tng ho i tng theo d liu to ra cc phng thc ca lp. j. K tha cho php hn ch s trng lp m ngun. k. K tha cho php tng kh nng s dng li m ngun. l. ng gi hn ch kh nng truy nhp d liu. m. ng gi hn ch vic phi sa i m ngun. n. a hnh cho php thc hin cng mt thao tc trn nhiu i tng khc nhau.

    2. Lit k tt c cc thuc tnh v hnh ng ca i tng Xe t. xut lp Car ( t). 3. Lit k tt c cc thuc tnh v hnh ng ca i tng Xe but. xut lp Bus. 4. T hai lp Car v Bus ca bi 2 v bi 3. xut mt lp ng c (Engine) cho hai lp

    trn k tha, trnh trng lp d liu gia hai lp Car v Bus.

  • 28

    PHN 2

    LP TRNH HNG I TNG VI JAVA

  • 29

    CHNG 3 GII THIU V JAVA

    Ni dung ca chng ny tp trung trnh by cc vn chnh v ngn ng lp trnh Java: x Lch s ra i v pht trin ca Java x Kin trc tng qut mt chng trnh xy dng trn Java x Cc ton t v cc cu trc d liu c bn trn Java x Cc cu trc lnh ca Java

    3.1 LCH S PHT TRIN CA JAVA

    3.1.1 Java

    Nm 1991, mt nhm k s ca Sun Microsystems mun lp trnh iu khin cc thit b in t nh tivi, my git, l nng Ban u, h nh dng C v C++ nhng trnh bin dch C/C++ li ph thuc vo tng loi CPU. Do , h bt tay vo xy dng mt ngn ng chy nhanh, gn, hiu qu, c lp thit b v ngn ng Oak ra i v vo nm 1995, sau c i tn thnh Java. Ngn ng lp trnh Java c Sun Microsystems a ra gii thiu vo thng 6 nm 1995 v nhanh chng tr thnh mt ngn ng lp trnh ca cc lp trnh vin chuyn nghip. Java c xy dng da trn nn tng ca C v C++ ngha l Java s dng c php ca C v c trng hng i tng ca C++. Java l ngn ng va bin dch va thng dch. u tin m ngun c bin dch thnh dng bytecode. Sau c thc thi trn tng loi my nh trnh thng dch. Mc tiu ca cc nh thit k Java l cho php ngi lp trnh vit chng trnh mt ln nhng c th chy trn cc nn phn cng khc nhau. Ngy nay, Java c s dng rng ri, khng ch vit cc ng dng trn my cc b hay trn mng m cn xy dng cc trnh iu khin thit b di ng, PDA,

    3.1.2 c trng ca ngn ng Java

    Ngn ng Java c nhng c trng c bn sau: x n gin x Hng i tng x c lp phn cng v h iu hnh x Mnh m x Bo mt x Phn tn x a lung x Linh ng

    n gin

    Nhng ngi thit k mong mun pht trin mt ngn ng d hc v quen thuc vi a s ngi lp trnh. Do vy Java loi b cc c trng phc tp ca C v C++ nh:

  • 30

    x Loi b thao tc con tr, thao tc nh ngha chng ton t (operator overloading) x Khng cho php a k tha (Multi-inheritance) m s dng cc giao din (interface) x Khng s dng lnh goto cng nh file header (.h). x Loi b cu trc struct v union.

    Hng i tng

    Java l ngn ng lp trnh hon ton hng i tng: x Mi thc th trong h thng u c coi l mt i tng, tc l mt th hin c th ca

    mt lp xc nh. x Tt c cc chng trnh u phi nm trong mt class nht nh. x Khng th dng Java vit mt chc nng m khng thuc vo bt k mt lp no. Tc

    l Java khng cho php nh ngha d liu v hm t do trong chng trnh.

    c lp phn cng v h iu hnh

    i vi cc ngn ng lp trnh truyn thng nh C/C++, phng php bin dch c thc hin nh sau (Hnh 3.1): Vi mi mt nn phn cng khc nhau, c mt trnh bin dch khc nhau bin dch m ngun chng trnh cho ph hp vi nn phn cng y. Do vy, khi chy trn mt nn phn cng khc, bt buc phi bin dch li m ngun.

    Hnh 3.1 Cch bin dch truyn thng

    i cc chng trnh vit bng Java, trnh bin dch Javac s bin dch m ngun thnh dng bytecode. Sau , khi chy chng trnh trn cc nn phn cng khc nhau, my o Java dng trnh thng dch Java chuyn m bytecode thnh dng chy c trn cc nn phn cng tng ng. Do vy, khi thay i nn phn cng, khng phi bin dch li m ngun Java. Hnh 3.2 minh ho qu trnh bin dch v thng dch m ngun Java.

    Macintosh

    compiler

    compiler

    compiler

    IB

    Sparc

  • 31

    Hnh 3.2 Dch chng trnh Java

    Mnh m

    Java l ngn ng yu cu cht ch v kiu d liu: x Kiu d liu phi c khai bo tng minh. x Java khng s dng con tr v cc php ton con tr. x Java kim tra vic truy nhp n mng, chui khi thc thi m bo rng cc truy nhp

    khng ra ngoi gii hn kch thc mng. x Qu trnh cp pht, gii phng b nh cho bin c thc hin t ng, nh dch v thu

    nht nhng i tng khng cn s dng na (garbage collection). x C ch by li ca Java gip n gin ha qa trnh x l li v hi phc sau li.

    Bo mt

    Java cung cp mt mi trng qun l thc thi chng trnh vi nhiu mc kim sot tnh an ton:

    x mc th nht, d liu v cc phng thc c ng gi bn trong lp. Chng ch c truy xut thng qua cc giao din m lp cung cp.

    x mc th hai, trnh bin dch kim sot m bo m l an ton, v tun theo cc nguyn tc ca Java.

    x Mc th ba c m bo bi trnh thng dch. Chng kim tra xem bytecode c m bo cc qui tc an ton trc khi thc thi.

    x Mc th t kim sot vic np cc lp vo b nh gim st vic vi phm gii hn truy xut trc khi np vo h thng.

    Phn tn

    Java c thit k h tr cc ng dng chy trn mng bng cc lp Mng (java.net). Hn na, Java h tr nhiu nn chy khc nhau nn chng c s dng rng ri nh l cng c pht trin trn Internet, ni s dng nhiu nn khc nhau.

    Macintosh

    Trnh bin dch

    Bytecode

    c lp nn (Platform independent)

    Trnh thng dch Java

    (Java Interpreter)

    IB

    Sparc

  • 32

    a lung

    Chng trnh Java cung cp gii php a lung (Multithreading) thc thi cc cng vic cng ng thi v ng b gia cc lung.

    Linh ng

    Java c thit k nh mt ngn ng ng p ng cho nhng mi trng m. Cc chng trnh Java cha rt nhiu thng tin thc thi nhm kim sot v truy nhp i tng lc chy. iu ny cho php kh nng lin kt ng m.

    3.1.3 Ci t Java

    Qu trnh ci t mi trng Java trn my bao gm ba bc: x Copy b ci t x Chy chng trnh ci t x Cp nht bin mi trng

    Copy b ci t

    C th copy t a CD hoc ti xung min ph ti a ch web site ca nhm Java: http://www.java.sun.com/downloads/

    Chy chng trnh ci t

    Chy tp tin va copy (hoc va ti v). Chn th mc ci t, th mc mc nh l: C:\jdk1.5 (vi phin bn JDK1.5)

    Cp nht bin mi trng

    Cp nht bin mi trng (PATH) gip vic thc thi v bin dch m Java c th tin hnh bt c mt th mc no. cp nht bin PATH, cn thm ng dn y ca th mc java va ci t (C:\jdk1.5\bin) vo cui ca gi tr bin ny.

    x i vi WindowsNT, WinXP khi ng Control Panel, chn System, chn Environment (hoc click chut phi vo My Computer, chn Properties, chn Advanced, click vo Environment Variables), click vo bin PATH trong phn User Variables v System Variables. Sau , thm vo cui ni dung bin hin c dng sau (phi c du chm phy):

    ;C:\jdk1.5\bin x i vi Windows98/95, chn START, chn RUN, nhp dng sysedit vo lnh, nhn

    OK, chn ca s ca AUTOEXEC.BAT. Tm dng khai bo bin PATH, nu khng c, thm vo mt dng mi theo mu: SET PATH=C:\jdk1.5\bin. Nu c sn bin PATH, thm vo cui dng ny ni dung: ;C:\jdk1.5\bin

  • 33

    3.2 KIN TRC CHNG TRNH XY DNG TRN JAVA

    3.2.1 Kin trc chng trnh Java

    Dng c bn ca mt tp tin m ngun Java c cu trc nh sau :

    package packageName; // Khai bo tn gi, nu c import java.awt.*; // Khai bo tn th vin sn c, nu cn dng class className // Khai bo tn lp {

    /* y l dng ghi ch */ int var; // Khai bo bin

    public void methodName() // Khai bo tn phng thc

    { /* Phn thn ca phng thc */ statement (s); // Lnh thc hin

    } }

    Mt tp m ngun Java c th c ba phn chnh:

    x Phn khai bo tn gi (khi) bng t kho package.

    x Phn khai bo th vin tham kho bng t kho import.

    x Phn khai bo ni dung lp bng t kho class.

    Khai bo Package

    Package c dng ng gi cc lp trong chng trnh li vi nhau thnh mt khi. y l mt cch hu hiu lu tr cc lp gn ging nhau hoc c cng mt module thnh mt khi thng nht.

    C php khai bo tn gi bng t kho package: package ;

    t tn package trong chng trnh, ngi ta c th tin hnh nh t tn th mc trn a. Ngha l bt du bng tn c phm vi ln, cho n cc tn c phm vi nh, cui cng l tn cc gi trc tip cha cc lp. Phm vi t tn gi, trn thc t, c tin hnh theo th t phm vi ln n nh nh sau:

    x Tn t chc

    x Tn cng ty

    x Tn d n

  • 34

    x Tn modul trong d n

    x Tn cc chc nng trong modul. V d:

    x Tn min ca cng ty l syz.com

    x Tn d n l pro

    x D n c hai modul l mod1 v mod2

    x Modul mod1 c hai chc nng l kt ni c s d liu connection v biu din d liu bean.

    x Modul mod2 c hai chc nng l giao tip interface v x l yu cu process. Khi , cu trc khi ca d n c m t nh hnh 3.3

    Khi , trong chc nng bean c lp User, th phi khai bo tn khi trong lp ny nh sau: package com.syz.pro.mod1.bean;

    u im ca package:

    x Cho php nhm cc lp vo vi nhau thnh cc n v nh hn. Vic thao tc trn cc n v khi s gn hn thao tc trn mt tp cc lp.

    x Trnh vic xung t khi t tn lp. V cc lp khng cng package th c th t tn trng nhau. Khi s lng lp ca chng trnh qu ln ta c th trnh phi t tn khc nhau cho cc lp bng cch t chng vo cc package khc nhau.

    x Cho php bo v cc lp. Khi chng trnh ln, vic chia nh chng trnh thnh cc package s thun li hn cho vic qun l v pht trin.

    x Tn gi cn c dng nh danh lp trong ng dng. Lu :

    x Dng lnh khai bo tn khi phi c t u tin trong tn tin m chng trnh.

    com

    syz

    pro

    mod1 mod2

    connection bean interface process

    Hnh 3.3: Kin trc khi ca d n

  • 35

    x Ch c khai bo ti a mt tn khi i vi mi tp m ngun Java.

    x Cc tp tin ca cc lp nm cng gi ng dng phi c lu trong cng mt th mc (tn th mc l tn khi) theo cu trc khi ca d n.

    x Tn khi nn t theo ch thng v tn khi s l tn th mc tng ng trong a, trnh nhm ln vi tn cc tp tin l tn cc lp ca chng trnh.

    x Khi khng phn chia chng trnh thnh khi (chng trnh n gin), khng cn thit phi khai bo tn khi u chng trnh.

    Khai bo th vin

    Khai bo th vin ch ra nhng th vin c nh ngha sn m chng trnh s tham kho ti. C php khai bo th vin vi t kho import nh sau: import ;

    Java chun cung cp mt s th vin nh sau:

    x java.lang: cung cp cc hm thao tc trn cc kiu d liu c bn, x l li v ngoi l, x l vo ra trn cc thit b chun nh bn phm v mn hnh.

    x java.applet: cung cp cc hm cho xy dng cc applet (s trnh by trong Chng 6).

    x java.awt: cung cp cc hm cho xy dng cc ng dng ho vi cc thnh phn giao din multi media (s trnh by chi tit trong Chng 6).

    x java.io: cung cp cc hm x l vo/ra trn cc thit b chun v cc thit b ngoi vi.

    x java.util: cung cp cc hm tin ch trong x l lin quan n cc kiu d liu c cu trc nh Date, Stack, Vector.

    V d, nu trong chng trnh cn n cc thao tc chuyn kiu i d liu tng minh (t kiu string sang kiu int), th ta s phi tham kho th vin java.lang: import java.lang.*;

    Lu :

    x Nu mun khai bo tham kho nhiu th vin, phi khai bo tham kho mi th vin vi mt t kho import.

    x Nu ch tham kho mt vi lp trong mt th vin, nn ch r tham kho lp no, thay v phi khai bo tham kho c gi (bng k hiu *) v tham kho c gi s tng kch c tp tin class sau khi bin dch.

    x Nu khng tham kho th vin no, khng cn thit phi khai bo cc tham kho vi t kho import.

    Khai bo lp

    Phn th ba l phn khai bo lp v ni dung ca lp, phn ny lun bt buc phi c i vi mt tp m ngun Java:

    x Khai bo tn lp vi t kho class.

    x Khi bo cc thuc tnh ca lp.

  • 36

    x Khai bo cc phng thc ca lp Vic khai bo lp vi cc thuc tnh v phng thc s c trnh by chi tit trong chng 4.

    3.2.2 Chng trnh Java u tin

    Chng trnh sau y cho php hin th mt thng ip (Nm trong tp m ngun First.java):

    Chng trnh 3.1

    package vidu.chuong3; // y l chng trnh First.java class First { public static void main(String args[]) {

    System.out.println(Hello World); }

    }

    bin dch m ngun, ta s dng trnh bin dch javac. Trnh bin dch xc nh tn ca file ngun ti dng lnh nh m t di y (gi s ang th mc cha package vidu v bin mi trng PATH c thit lp ng qui cch):

    >javac vidu/chuong3/First.java

    Trnh dch javac to ra file First.class cha cc m bytecodes. Nhng m ny cha th thc thi c. chng trnh thc thi c ta cn dng trnh thng dch java interpreter vi lnh java. Lnh c thc hin nh sau:

    >javac vidu.chuong3.First

    Kt qu s hin th trn mn hnh nh sau: Hello World

    3.2.3 Phn tch chng trnh u tin

    Trong Java, tt c m lnh u phi c t chc vo trong mt lp nht nh. Do , mi tp tin m ngun xc nh t nht mt lp Java v tn tp tin phi trng vi tn lp. Java phn bit ch hoa v ch thng, cho nn tn tp tin ca chng trnh trn phi trng vi tn lp: First.java.

    package vidu.chuong3; y l dng khai bo tn khi ca chng trnh, v tn khi ca chng trnh c t theo hai mc:

    x Mc th nht l kiu bi: v d (vidu) hoc bi tp (baitap).

    x Mc th hai l tn ca chng: chuong3, chuong4, chuong5, chuong6.

  • 37

    V y l v d, nm chng 3 nn thuc vo gi vidu.chuong3. ng thi, tp tin First.java s nm trong th mc: ../vidu/chuong3/.

    Chng trnh ny khng tham kho th vin no nn khng cn lnh import no. // y l chng trnh First.java

    K hiu // dng ch thch dng lnh. Trnh bin dch s b qua dng ch thch ny. Java h tr hai loi ch thch:

    x Loi ch thch trn mt dng, dng //. Trnh bin dch s b qua ni dung bt u t k hiu // cho n ht dng lnh cha n.

    x Loi ch thch trn nhiu dng c th bt u vi /* v kt thc vi */. Trnh bin dch s b qua ni dung nm gia hai k hiu ny.

    Dng k tip khai bo lp c tn First: Bt u vi t kho class, k n l tn lp class First

    Mt nh ngha lp nm trn vn gia hai ngoc mc m { v ng }. Cc ngoc ny nh du bt u v kt thc mt khi lnh.

    public static void main(String args[ ]) y l phng thc chnh, t y chng trnh bt u vic thc thi ca mnh. Tt c cc ng dng java u s dng mt phng thc main ny.

    x T kho public l mt ch nh truy xut. N cho bit thnh vin ca lp c th c truy xut t bt c u trong chng trnh.

    x T kho static cho php main c gi ti m khng cn to ra mt th hin (instance) ca lp. N khng ph thuc vo cc th hin ca lp c to ra.

    x T kho void thng bo cho my tnh bit rng phng thc s khng tr li bt c gi tr no khi thc thi chng trnh.

    x String args[] l tham s dng trong phng thc main. Khi khng c mt thng tin no c chuyn vo main, phng thc c thc hin vi cc d liu rng khng c g trong du ngoc n.

    x System.out.println(Hello World); Dng lnh ny hin th chui Hello World trn mn hnh. Lnh println() cho php hin th chui c truyn vo ln mn hnh.

    Truyn i s trong dng lnh

    Chng trnh 3.2 minh ho cc tham s (argument) ca cc dng lnh c tip nhn nh th no trong phng thc main.

  • 38

    Chng trnh 3.2

    package vidu.chuong3; class PassArgument{

    public static void main(String args[]) {

    System.out.println(This is what the main method received); System.out.println(args[0]); System.out.println(args[1]); System.out.println(args[2]);

    } } Bin dch chng trnh:

    >javac PassArgumet.java Thc thi chng trnh vi dng lnh:

    >java PassArgument A 123 B1 S thu c trn mn hnh kt qu:

    This is what the main method received A 123 B1

    3.3 CC KIU D LIU V TON T C BN TRN JAVA

    3.3.1 Khai bo bin

    C php khai bo bin: dataType varName;

    Trong , dataType l kiu d liu ca bin, varName l tn bin. Trong Java, vic t tn bin phi tun theo cc quy tc sau:

    x Ch c bt u bng mt k t (ch), hoc mt du gch di , hoc mt k t dollar

    x Khng c khong trng gia tn

    x Bt u t k t th hai, c th dng cc k t (ch), ch s, du dollar, du gch di

    x Khng trng vi cc t kho

    x C phn bit ch hoa ch thng

  • 39

    Phm vi hot ng ca bin

    Mt bin c phm vi hot ng trong ton b khi lnh m n c khai bo. Mt khi lnh bt u bng du { v kt thc bng du }:

    x Nu bin c khai bo trong mt cu trc lnh iu khin, bin c phm vi hot ng trong khi lnh tng ng.

    x Nu bin c khai bo trong mt phng thc (Khng nm trong khi lnh no), bin c phm vi hot ng trong phng thc tng ng: c th c s dng trong tt c cc khi lnh ca phng thc.

    x Nu bin c khai bo trong mt lp (Khng nm trong trong mt phng thc no), bin c phm vi hot ng trong ton b lp tng ng: c th c s dng trong tt c cc phng thc ca lp.

    3.3.2 Kiu d liu

    Trong Java, kiu d liu c chia thnh hai loi:

    x Cc kiu d liu c bn

    x Cc kiu d liu i tng

    Kiu d liu c bn

    Java cung cp cc kiu d liu c bn nh sau:

    byte: Dng lu d liu kiu s nguyn c kch thc mt byte (8 bt). Phm vi biu din gi tr t -128 n 127. Gi tr mc nh l 0.

    char: Dng lu d liu kiu k t hoc s nguyn khng m c kch thc 2 byte (16 bt). Phm vi biu din gi tr t 0 n u\ffff. Gi tr mc nh l 0.

    boolean: Dng lu d liu ch c hai trng thi ng hoc sai ( ln ch c 1 bt). Phm vi biu din gi tr l {True, False}. Gi tr mc nh l False.

    short: Dng lu d liu c kiu s nguyn, kch c 2 byte (16 bt). Phm vi biu din gi tr t - 32768 n 32767. Gi tr mc nh l 0.

    int: Dng lu d liu c kiu s nguyn, kch c 4 byte (32 bt). Phm vi biu din gi tr t -2,147,483,648 n 2,147,483,647. Gi tr mc nh l 0.

    float: Dng lu d liu c kiu s thc, kch c 4 byte (32 bt). Gi tr mc nh l 0.0f.

    double: Dng lu d liu c kiu s thc c kch thc ln n 8 byte. Gi tr mc nh l 0.00d

    long: Dng lu d liu c kiu s nguyn c kch thc ln n 8 byte. Gi tr mc nh l 0l.

    Kiu d liu i tng

    Trong Java, c 3 kiu d liu i tng:

    Array: Mt mng ca cc d liu cng kiu

  • 40

    class: D liu kiu lp i tng do ngi dng nh ngha. Cha tp cc thuc tnh v phng thc.

    interface: D liu kiu lp giao tip do ngi dng nh ngha. Cha cc phng thc ca giao tip.

    p kiu (Type casting)

    V d, nhiu khi gp tnh hung cn cng mt bin c dng integer vi mt bin c dng float. x l tnh hung ny, Java s dng tnh nng p kiu (type casting) ca C/C++. on m sau y thc hin php cng mt gi tr du phy ng (float) vi mt gi tr nguyn (integer).

    float c = 35.8f; int b = (int)c + 1;

    u tin gi tr du phy ng c c i thnh gi tr nguyn 35. Sau n c cng vi 1 v kt qu l gi tr 36 c lu vo b.

    Trong Java c hai loi p kiu d liu:

    x Ni rng (widening): qu trnh lm trn s t kiu d liu c kch thc nh hn sang kiu c kch thc ln hn. Kiu bin i ny khng lm mt thng tin. V d chuyn t int sang float. Chuyn kiu loi ny c th c thc hin ngm nh bi trnh bin dch.

    x Thu hp (narrowwing): qu trnh lm trn s t kiu d liu c kch thc ln hn sang kiu c kch thc nh hn. Kiu bin i ny c th lm mt thng tin nh v d trn. Chuyn kiu loi ny khng th thc hin ngm nh bi trnh bin dch, ngi dng phi thc hin chuyn kiu tng minh.

    3.3.3 Cc ton t

    Java cung cp cc dng ton t sau:

    x Ton t s hc x Ton t bit x Ton t quan h x Ton t logic x Ton t iu kin x Ton t gn

    Ton t s hc

    Cc ton hng ca cc ton t s hc phi dng s. Cc ton hng kiu boolean khng s dng c, song cc ton hng k t cho php s dng loi ton t ny. Mt vi kiu ton t c lit k trong bng di y.

    Ton t M t + Cng.

    Tr v gi tr tng hai ton hng - Tr

  • 41

    Tr v kt qu ca php tr. * Nhn

    Tr v gi tr l tch hai ton hng. / Chia

    Tr v gi tr l thng ca php chia % Php ly modul

    Gi tr tr v l phn d ca php chia ++ Tng dn

    Tng gi tr ca bin ln 1. V d a++ tng ng vi a = a + 1 -- Gim dn

    Gim gi tr ca bin 1 n v. V d a-- tng ng vi a = a - 1 += Cng v gn gi tr

    Cng cc gi tr ca ton hng bn tri vo ton hng bn phi v gn gi tr tr v vo ton hng bn tri. V d c += a tng ng c = c + a

    -= Tr v gn gi tr Tr cc gi tr ca ton hng bn tri vo ton ton hng bn phi v gn gi tr tr v vo ton hng bn tri. V d c -= a tng ng vi c = c - a

    *= Nhn v gn Nhn cc gi tr ca ton hng bn tri vi ton ton hng bn phi v gn gi tr tr v vo ton hng bn tri. V d c *= a tng ng vi c = c*a

    /= Chia v gn Chia gi tr ca ton hng bn tri cho ton ton hng bn phi v gn gi tr tr v vo ton hng bn tri. V d c /= a tng ng vi c = c/a

    %= Ly s d v gn Chia gi tr ca ton hng bn tri cho ton ton hng bn phi v gn gi tr s d vo ton hng bn tri. V d c %= a tng ng vi c = c%a

    Bng 3.1 Cc ton t s hc

    Ton t Bit

    Cc ton t dng bit cho php ta thao tc trn tng bit ring bit trong cc kiu d liu nguyn thu.

    Ton t

    M t

    ~ Ph nh bit (NOT) Tr v gi tr ph nh ca mt bt.

    & Ton t AND bt Tr v gi tr l 1 nu cc ton hng l 1 v 0 trong cc trng hp khc

    | Ton t OR bt Tr v gi tr l 1 nu mt trong cc ton hng l 1 v 0 trong cc trng hp khc.

  • 42

    ^ Ton t Exclusive OR bt Tr v gi tr l 1 nu ch mt trong cc ton hng l 1 v tr v 0 trong cc trng hp khc.

    >> Dch sang phi bt Chuyn ton b cc bt cu mt s sang phi mt v tr, gi nguyn du ca s m.Ton hng bn tri l s b dch cn s bn phi ch s v tr m cc bt cn dch.

    Ln hn Kim tra gi tr ca ton hng bn phi ln hn ton hng bn tri hay khng

    < Nh hn Kim tra gi tr ca ton hng bn phi c nh hn ton hng bn tri hay khng

    >= Ln hn hoc bng Kim tra gi tr ca ton hng bn phi c ln hn hoc bng ton hng bn tri hay khng

  • 43

    || Hoc (OR) Tr v gi tr True nu t nht mt gi tr l True

    ^ XOR Tr v gi tr True nu v ch nu ch mt trong cc gi tr l True, cc trng hp cn li cho gi tr False (sai)

    ! Ton hng n t NOT. Chuyn gi tr t True sang False v ngc li. Bng 3.4 Cc ton t logic

    Cc ton t iu kin

    Ton t iu kin l mt loi ton t c bit v n bao gm ba thnh phn cu thnh biu thc iu kin. C php:

    ? : ; x biu thc 1: Biu thc logic. Tr tr v gi tr True hoc False

    x biu thc 2: L gi tr tr v nu xc nh l True

    x biu thc 3: L gi tr tr v nu xc nh l False

    Ton t gn

    Ton t gn (=) dng gn mt gi tr vo mt bin v c th gn nhiu gi tr cho nhiu bin cng mt lc. V d on lnh sau gn mt gi tr cho bin var v gi tr ny li c gn cho nhiu bin trn mt dng lnh n.

    int var = 20; int p,q,r,s; p=q=r=s=var;

    Dng lnh cui cng c thc hin t phi qua tri. u tin gi tr bin var c gn cho s, sau gi tr ca s c gn cho r v c tip nh vy.

    Th t u tin ca cc ton t

    Cc biu thc c vit ra ni chung gm nhiu ton t. Th t u tin quyt nh trt t thc hin cc ton t trn cc biu thc. Bng di y lit k th t thc hin cc ton t trong Java

    Th t Ton t 1. Cc ton t n nh +,-,++,-- 2. Cc ton t s hc v cc ton t dch nh *,/,+,-, 3. Cc ton t quan h nh >,=,

  • 44

    x Phn c gii hn trong ngoc n c thc hin trc.

    x Nu dng nhiu ngoc n lng nhau th ton t nm trong ngoc n pha trong s thc thi trc, sau n cc vng pha ngoi.

    x Trong phm vi mt cp ngoc n th quy tc th t u tin vn gi nguyn tc dng.

    3.4 CC CU TRC LNH TRN JAVA

    Java cung cp hai loi cu trc iu khin:

    iu khin r nhnh

    x Mnh if-else x Mnh swich-case

    Vng lp (Loops)

    x Vng lp while x Vng lp do-while x Vng lp for

    3.4.1 Cu lnh if-else

    Cu lnh if-else kim tra gi tr dng boolean ca iu kin. Nu gi tr iu kin l True th ch c khi lnh sau if s c thc hin, nu l False th ch c khi lnh sau else c thc hin. C php:

    if (conditon) {

    action1 statements; } else {

    action2 statements; }

    Condition: Biu thc boolean nh ton t so snh.

    action 1: Khi lnh c thc thi khi gi tr iu kin l True

    action 2: Khi lnh c thc thi nu iu kin tr v gi tr False

    on chng trnh sau kim tra xem cc s c chia ht cho 5 hay khng.

    Chng trnh 3.3 package vidu.chuong3; class CheckNumber {

    public static void main(String args[])

  • 45

    { int num = 10; if(num%5 == 0)

    System.out.println (num + is divisable for 5!); else

    System.out.println (num + is indivisable for 5!); }

    }

    on chng trnh trn num c gn gi tr nguyn l 10. Trong cu lnh if-else iu kin num %5 tr v gi tr 0 v iu kin thc hin l True. Thng bo 10 is divisable for 5! c in ra. Lu rng v ch c mt cu lnh c vit trong on if v else, bi vy khng cn thit phi c a vo du ngoc mc { v }.

    3.4.2 Cu lnh switch-case

    Khi lnh switch-case c th c s dng thay th cu lnh if-else trong trng hp mt biu thc cho ra nhiu kt qu. C php:

    swich (expression) {

    case value1: action 1 statement; break;

    case value2: action 2 statement; break;

    case valueN: actionN statement;

    break; default: default_action statement;

    }

    expression - Bin cha mt gi tr xc nh

    value1,value 2,.valueN: Cc gi tr hng s ph hp vi gi tr trn bin expression .

    action1,action2actionN: Khi lnh c thc thi khi trng hp tng ng c gi tr True

    break: T kho c s dng b qua tt c cc cu lnh sau v ginh quyn iu khin cho cu trc bn ngoi switch

    default: T kha tu chn c s dng ch r cc cu lnh no c thc hin ch khi tt c cc trng hp nhn gi tr False

    default - action: Khi lnh c thc hin ch khi tt c cc trng hp nhn gi tr False

    on chng trnh sau xc nh gi tr trong mt bin nguyn v hin th ngy trong tun c th hin di dng chui. kim tra cc gi tr nm trong khong t 0 n 6, chng trnh s thng bo li nu nm ngoi phm vi trn.

  • 46

    Chng 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); } } }

    Nu gi tr ca bn day l 2, chng trnh s hin th Tuesday, v c tip nh vy .

    3.4.3 Vng lp While

    Vng lp while thc thi khi lnh khi iu kin thc thi vn l True v dng li khi iu kin thc thi nhn gi tr False. C php:

    while(condition) {

    action statements; }

    condition: c gi tr bool; vng lp s tip tc cho nu iu kin vn c gi tr True.

    action statement: Khi lnh c thc hin nu condition nhn gi tr True

    on chng trnh sau tnh tng ca 5 s t nhin u tin dng cu trc while.

  • 47

    Chng 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 lp c thc thi cho n khi iu kin a>=1 l True. Bin a c khai bo bn ngoi vng lp v c gn gi tr l 5. Cui mi vng lp, gi tri ca a gim i 1. Sau nm vng gi tr ca a bng 0. iu kin tr v gi tr False v vng lp kt thc. Kt qu s c hin th The sum is 15

    3.4.4 Vng lp do-while

    Vng lp do-while thc thi khi lnh khi m iu kin l True, tng t nh vng lp while, ngoi tr do-while thc hin lnh t nht mt ln ngay c khi iu kin l False. C php:

    do{ action statements;

    }while(condition);

    condition: Biu thc bool; vng lp s tip tc khi m iu kin vn c gi tr True.

    action statement: Khi lnh lun c thc hin ln th nht, t vng lp th hai, chng c thc hin khi condition nhn gi tr True.

    V d sau tnh tng ca 5 s t nhin u tin dng cu trc do-while.

    Chng trnh 3.6 package vidu.chuong3; class DoWhileDemo {

    public static void main(String args[]) {

    int a = 1, sum = 0; do{

  • 48

    sum += a; a++;

    }while (a

  • 49

    v d trn, i v sum l hai bin c gn cc gi tr u l 1 v 0 tng ng. iu kin c kim tra v khi n cn nhn gi tr True, cu lnh tc ng trong vng lp c thc hin. Tip theo gi tr ca i c tng ln 2 to ra s chn tip theo. Mt ln na, iu kin li c kim tra v cu lnh tc ng li c thc hin. Sau nm vng, i tng ln 6, iu kin tr v gi tr False v vng lp kt thc. Thng bo: The sum is 15 c hin th.

    3.5 CASE STUDY I

    By gi, p dng cc ni dung hc trong chng ny vit mt chng trnh tnh chu vi v din tch ca mt hnh ch nht c kch thc x,y vi yu cu:

    x Kch thc x, y nhp t tham s dng lnh. x Phi kim tra x, y l cc s nguyn dng hay khng trc khi tnh ton. x In kt qu tnh ton ra mn hnh

    y l on chng trnh thc hin bi ton ny.

  • 50

    Chng trnh 3.8

    package vidu.chuong3; import java.awt.*; import java.lang.*; class RectangleDemo {

    public static void main(String args[]) {

    //khai bo cc bin lu gi kch thc ca hnh ch nht int x = 0, y = 0;

    /*c cc kch thc t tham s dng lnh*/ //nu truyn hai tham s th mi tnh tip if(args.length >= 2) {

    //chuyn kiu t String sang integer x = Integer.parseInt(args[0]); y = Integer.parseInt(args[1]);

    } /*Tinh chu vi v din tch hnh ch nht*/ //nu c hai tham s u dng th mi tnh

    if(x>0 && y>0) {

    //tnh chu vi int chuvi = 2*(x + y);

    System.out.println (Chu vi l + chuvi); //tnh din tch int dientich = x*y; System.out.println (Din tch l + dientich);

    } else

    System.out.println (Cc tham s khng ng!); }

    }

    Sau khi bin dch chng trnh3.8 (tp tin c tn RectangleDemo.java), ta chy t ca s dng lnh:

    >java RectangleDemo 10 20

  • 51

    S thu c kt qu: Chu vi l: 60 Din tch l: 200

    Nu ch g ca s dng lnh:

    >java RectangleDemo

    Th s nhn c mt thng bo li: Cc tham s khng ng!

    TNG KT CHNG 3

    Ni dung chng 3 trnh by cc ni dung c bn v c php ngn ng lp trnh Java:

    x Tt c cc lnh ca java phi c t chc vo trong mt lp nht nh. Tn tp tin m ngun phi trng vi tn lp.

    x Lnh package c dng khai bo tn gi ca lp.

    x Lnh import c s dng trong chng trnh truy cp cc gi th vin Java.

    x Lnh class c dng khai bo tn lp

    x Tn lp, tn phng thc, tn hng v tn bin trong java phi tun theo quy tc t tn ca java.

    x ng dng Java c mt lp cha phng thc main. Cc tham s c th c truyn vo phng thc main nh cc tham s lnh (command line parameters).

    x Java cung cp cc dng ton t: - Cc ton t s hc - Cc ton t bit - Cc ton t quan h - Cc ton t logic - Ton t u kin - Ton t gn

    x Java cung cp cc cu trc iu khin lnh: - if-else - switch - for - while

    - do while

    CU HI V BI TP CHNG 3

    1. Trong cc tn sau, tn no c th dng lm tn bin trong java: a. _123 b. a$

  • 52

    c. 1abc d. class e. vi du f. $123

    2. Mun lu gi mt bin s nguyn dng m c gi tr ln nht l mt triu th dng kiu d liu no l tit kim b nh nht?

    3. Mun lu gi mt bin s nguyn m m c gi tr nh nht l m mt t th dng kiu d liu no l tit kim b nh nht?

    4. Trong cu trc lnh if-else n (1 if v 1 else) th c t nht mt khi lnh (ca if hoc ca else) c thc hin. ng hay sai?

    5. Trong cu trc lnh switch-case, khi khng dng default th c t nht mt khi lnh c thc hin. ng hay sai?

    6. Trong cu trc lnh switch-case, khi dng default th c t nht mt khi lnh c thc hin. ng hay sai?

    7. Trong cu trc lnh while, khi lnh c thc hin t nht mt ln ngay c khi iu kin c gi tr False. ng hay sai?

    8. Trong cu trc lnh do-while, khi lnh c thc hin t nht mt ln ngay c khi iu kin c gi tr False. ng hay sai?

    9. Trong cu trc lnh for, khi lnh c thc hin t nht mt ln ngay c khi iu kin c gi tr False. ng hay sai?

    10. Cho bit kt qu thu c khi thc hin on chng 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 bit on chng trnh sau thc hin vng lp bao nhiu ln v kt qu in ra l g? class me{ public static void main(String args[]){ int i = 0; int sum = 0; do{ sum += i; i++; }while(i

  • 53

    public static void main(String args[]){ int i = 5; int sum = 0; do{ sum += i; i++; }while(i < 5); System.out.println(sum); } }

    13. Cho bit hai on chng trnh sau in ra kt qu ging hay khc nhau? class me1{ public static void main(String args[]){ int i = 0; int sum = 0; for(i=0; i0), m v n c nhp t tham

    s dng lnh. 18. Vit chng trnh tm c s chung ln nht ca m v n (m,n>0), m v n c nhp t tham

    s dng lnh. 19. Vit chng trnh tm s Fibonaci th n (n>2), n nhp t tham s dng lnh. Bit rng s

    Fibonaci c tnh theo cng thc: F(n) = F(n-1) + F(n-2) vi n>=2 v F(0) = F(1) = 1.

  • 54

    CHNG 4 K THA V A HNH TRN JAVA

    Ni dung ca chng ny tp trung trnh by cc c trng hng i tng ca ngn ng Java: x K tha n x K tha kp x Cc lp tru tng x a hnh

    4.1 K THA N

    4.1.1 Lp

    Java coi lp l mt khun mu (Template) ca mt i tng, trong lp cha cc thuc tnh v cc phng thc hot ng ca i tng.

    Khai bo lp

    Mt lp c khai bo vi c php: class { }

    Lp trong java c ba tnh cht c trng bi ba t kho: x public: Lp thng thng, c th c truy cp t cc gi (package) khc. public l gi

    tr mc nh cho tnh cht ca lp. x final: Khai bo lp hng, lp ny khng th to dn xut. Tc l khng c lp no k tha

    c t cc lp c tnh cht final. x abstract: Khai bo lp tru tng, lp ny ch c php cha cc phng thc tru

    tng. Hn na, khng th to cc th hin (Instance) ca cc lp tru tng bng ton t new nh cc lp thng thng.

    Chng trnh 4.1 khai bo mt lp thng thng vi kiu mc nh l public vi dng khai bo.

    Chng trnh 4.1 package vidu.chuong4; class Person { }

    S dng lp

    Lp c s dng khi chng trnh cn mt i tng c kiu ca lp . Khi , i tng c khai bo da vo ton t new:

    = new ();

  • 55

    V d, mun to mt i tng c kiu l lp Person trong chng trnh 4.1, ta dng lnh sau: Person myClass = new Person();

    Khai bo thuc tnh ca lp

    Thuc tnh ca lp c khai bo theo c php: ;

    x Kiu d liu: c th l cc kiu d liu c bn sn c ca java, c th l cc lp do ngi dng t nh ngha.

    x Tn thuc tnh: c t tn theo quy tc t tn bin ca java. x Tnh cht: Cc thuc tnh v phng thc ca lp c cc tnh cht c c trng bi cc

    t kho sau (gi tr mc nh l public): - public: c th c truy cp t bn ngoi lp nh ngha. - protected: ch c truy cp t lp nh ngha v cc lp k tha t lp . - private: ch c truy cp trong phm vi bn thn lp nh ngha. - static: c dng chung cho mt th hin ca lp, c th c truy cp trc tip

    bng . m khng cn khi to mt th hin ca lp. - abstract: nh ngha mt thuc tnh tru tng. Thuc tnh ny khng th truy

    nhp trong lp nhng c th b nh ngha chng cc lp k tha. - final: mt thuc tnh hng, khng b nh ngha chng cc lp k tha. - native: dng cho phng thc khi ci t ph thuc mi trng trong mt ngn

    ng khc, nh C hay hp ng. - synchronized: dng cho phng thc ti hn, nhm ngn cc tc ng ca cc i

    tng khc khi phng thc ang c thc hin. Chng trnh 4.2 minh ho vic khai bo hai thuc tnh l tn v tui ca lp Ngi (Person).

    Chng trnh 4.2 package vidu.chuong4; class Person {

    public String name; public int age;

    }

    Khai bo phng thc ca lp

    Phng thc ca lp c khai bo theo c php ([])

    [throws ] { }

  • 56

    x Tnh cht: c trng bi cc t kho tng t nh tnh cht ca thuc tnh. Gi tr mc nh l public.

    x Kiu tr v: Kiu d liu tr v ca phng thc, c th l kiu d liu sn c ca java hoc l kiu do ngi dng t nh ngha.

    x Tn phng thc: tun theo qui tc t tn bin ca java. x Cc ngoi l: l mt i tng c bit c to ra khi chng trnh gp li. Java s tr

    li cho chng trnh ngoi l ny theo t kho throws. Cc ngoi l, nu c, c phn cch nhau bi du phy.

    x Cc tham s: cc tham s ca phng thc, c lit k theo cp , cc tham s c phn bit bi du phy.

    Chng trnh 4.3 m t vic khai bo phng thc show() hin th thng tin c nhn ca lp Person.

    Chng trnh 4.3 package vidu.chuong4; class Person {

    public String name; public int age;

    public void show() {

    System.out.println( name + is + age + years old!); }

    }

    Phng thc khi to ca lp

    Phng thc khi to (Constructor) c dng khi to mt th hin c th ca mt lp, ngha l gn cc gi tr khi u cho cc thuc tnh, nu c, v to ra mt i tng c th. Phng thc khi to phi cng tn vi lp. Lu :

    x Phng thc khi to phi c tn trng vi tn ca lp x Phng thc khi to khng c gi tr tr v x Phng thc khi to c tnh cht public x C th c nhiu phng thc khi to ca cng mt lp

    Chng trnh 4.4a minh ho mt phng thc khi to ca lp Person bng cch gn gi tr cho cc thuc tnh tn v tui.

    Chng trnh 4.4a package vidu.chuong4;

  • 57

    class Person {

    public String name; public int age;

    // Phng thc khi dng public Person(String name1, int age1) {

    name = name1; age = age1;

    }

    public void show() {

    System.out.println( name + is + age + years old!); }

    } Chng trnh 4.4b minh ho cch dng lp Person m chng ta va nh ngha trong chng trnh 4.4a. Chng trnh ny s to ra mt i tng myPerson ca lp Person vi cc thuc tnh c gi tr khi to: name = Minh v age = 21. Sau , chng trnh s dng phng thc show() ca i tng myPerson in ra dng thng bo Minh is 21 years old!.

    Chng trnh 4.4b package vidu.chuong4; class PersonDemo {

    public static void main(String args[]) {

    Person myPerson = new Person(Minh, 21); myPerson.show();

    } }

    Bin this

    Bin this l mt bin n c bit lun tn ti trong cc lp java: mt lp c ng mt bin n this. Bin ny c s dng trong khi chy v n tr n bn thn lp cha n. Bin this thng c s dng trong cc hm khi to ca lp. Chng trnh 4.4c khai bo mt lp hon ton ging vi lp c khai bo trong chng trnh 4.4a, nhng ch khc l c dng bin this trong hm khi to ca lp.

  • 58

    Chng trnh 4.4c package vidu.chuong4; class Person {

    public String name; public int age;

    // Phng thc khi dng public Person(String name, int age) {

    this.name = name; this.age = age;

    }

    public void show() {

    System.out.println( name + is + age + years old!); }

    } Trong chng trnh 4.4c, ta ch n hm khi to ca lp, hm ny c hai bin cc b l name v age, trng vi cc bin ca lp. Do , trong phm vi hm ny, bin this.name v this.age s ch cc bin ca lp, cn cc bin name v age s ch cc bin cc b ca hm. Cho nn, cc lnh gn vn thc thi nh trong chng trnh 4.4a.

    4.1.2 S k tha

    S k tha c s dng khi mun to mt lp mi t mt lp bit. Khi , tt c cc thuc tnh v phng thc ca lp c u tr thnh thuc tnh v phng thc ca lp mi. Lp c c gi l lp cha, lp mi c gi l lp con.

    Khai bo lp k tha

    Khai bo lp k tha c thc hin bi t kho extends: extends { }

    Chng trnh 4.5a minh ho vic to mt lp Nhn vin (Employee) c k tha t lp Person c xy dng trong phn 4.1.1.

    Chng trnh 4.5a package vidu.chuong4; class Employee extends Person {

  • 59

    public float salary;

    // Phng thc khi dng public Employee(String name, int age, float salary) {

    super(name, age); this.salary = salary;

    } }

    Khi , on chng trnh ca chng trnh 4.5b vn in ra dng thng bo Minh is 21 years old! v khi i tng myEmployee gi n phng thc show() c k tha t lp Person.

    Chng 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 phng thc np chng

    Khi mun thay i ni dung ca cc phng thc c k tha t lp cha, ta dng cch khai bo phng thc np chng. Thc ra l khai bo li mt phng thc mi c cng tn v kiu vi mt phng thc c trong lp cha. Chng trnh 4.6a s khai bo np chng phng thc show() ca lp Employee m khng dng li phng thc show() ca lp Person na.

    Chng trnh 4.6a package vidu.chuong4; class Employee extends Person {

    public float salary;

    // Phng thc khi dng public Employee(String name, int age, float salary) {

    super(name, age);

  • 60

    this.salary = salary; }

    // Khai bo np chng public void show() {

    System.out.println( name + has a salary of + salary + $/month);

    } }

    Khi , on chng 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 chng trnh 4.5b. L do l lc ny, i tng myEmployee s gi phng thc show() ca lp Employee m khng gi phng thc show() ca lp Person na.

    Chng trnh 4.6b package vidu.chuong4; class EmployeeDemo2 {

    public static void main(String args[]) {

    Employee myEmployee = new Employee(Minh, 21, 300f); myEmployee.show();

    } }

    Quy tc truy nhp trong k tha

    Cc quy tc ny quy nh kh nng truy nhp ca lp con i vi cc thuc tnh v phng thc ca lp cha:

    x private: ch c truy nhp trong phm vi lp cha, lp con khng truy nhp c. Tt c cc lp ngoi lp cha u khng truy nhp c.

    x protected: lp con c th truy nhp c. Tt c cc lp khng k tha t lp cha u khng truy nhp c.

    x final: lp con c th s dng c nhng khng th khai bo np chng c. x public: lp con c th s dng v np chng c. Tt c cc lp bn ngoi u s dng

    c.

    4.2 K THA BI

    Nhm trnh nhng nhp nhng ca tnh cht a k tha ca C++, Java khng cho php k tha trc tip t nhiu hn mt lp cha. Ngha l Java khng cho php a k tha trc tip, nhng cho

  • 61

    php ci t nhiu giao tip (Interface) c th tha hng thm cc thuc tnh v phng thc ca cc giao tip .

    4.2.1 Giao tip

    Khai bo giao tip

    C php khai bo mt giao tip nh sau: [public] interface [extends ] { }

    x Tnh cht: tnh cht ca mt giao tip lun l public. Nu khng khai bo tng minh th gi tr mc nh cng l public.

    x Tn giao tip: tun th theo quy tc t tn bin ca java. x Danh sch cc giao tip: danh sch cc giao tip cha c nh ngha k tha, cc

    giao tip cha c phn cch nhau bi du phy. (Phn trong ngoc vung [] l tu chn).

    Lu : x Mt giao tip ch c th k tha t cc giao tip khc m khng th c k tha t cc

    lp sn c. Chng trnh 4.7 minh ho vic khai bo mt giao tip khng k tha t bt k mt giao tip no.

    Chng trnh 4.7 package vidu.chuong4; public interface Product { }

    Khai bo phng thc ca giao tip

    C php khai bo mt phng thc ca giao tip nh sau: [public] ([])

    [throws ]; x Tnh cht: tnh cht ca mt thuc tnh hay phng thc ca giao tip lun l public.

    Nu khng khai bo tng minh th gi tr mc nh cng l public. i vi thuc tnh, th cht cht lun phi thm l hng (final) v tnh (static).

    x Kiu gi tr tr v: c th l cc kiu c bn ca java, cng c th l kiu do ngi dng t nh ngha (kiu i tng).

    x Tn phng thc: tun th theo quy tc t tn phng thc ca lp x Cc tham s: nu c th mi tham s c xc nh bng mt cp . Cc tham s c phn cch nhau bi du phy. x Cc ngoi l: nu c th mi ngoi l c phn cch nhau bi du phy.

  • 62

    Lu : x Cc phng thc ca giao tip ch c khai bo di dng mu m khng c ci t chi

    tit (c du chm phy ngay sau khai bo v khng c phn ci t trong du {}). Phn ci t chi tit ca cc phng thc ch c thc hin trong cc lp (class) s dng giao tip .

    x Cc thuc tnh ca giao tip lun c tnh cht l hng (final), tnh (static) v public. Do , cn gn gi tr khi u ngay khi khai bo thuc tnh ca giao tip.

    Chng trnh 4.8 minh ho vic khai bo mt thuc tnh v mt phng thc ca giao tip Product c khai bo trong chng trnh 4.7: thuc tnh lu nhn hiu ca nh sn xut sn phm; phng thc dng truy xut gi bn ca sn phm.

    Chng trnh 4.8 package vidu.chuong4; public interface Product { public static final String MARK = Adidas; public float getCost(); }

    4.2.2 S dng giao tip

    V giao tip ch c khai bo di dng cc phng thc mu v cc thuc tnh hng nn vic s dng giao tip phi thng qua mt lp c ci t giao tip . Vic khai bo mt lp c ci t giao tip c thc hin thng qua t kho implements nh sau:

    class implements { }

    x Tnh cht v tn lp c s dng nh trong khai bo lp thng thng. x Cc giao tip: mt lp c th ci t nhiu giao tip. Cc giao tip c phn cch nhau

    bi du phy. Khi , lp phi ci t c th tt c cc phng thc ca tt c cc giao tip m n s dng.

    Lu : x Mt phng thc c khai bo trong giao tip phi c ci t c th trong lp c ci

    t giao tip nhng khng c php khai bo chng. Ngha l s lng cc tham s ca phng thc trong giao tip phi c gi nguyn khi ci t c th trong lp.

    Chng trnh 4.9 minh ho vic ci t mt lp giy (Shoe) ci t giao tip Product vi cc thuc tnh v phng thc c khai bo trong chng trnh 4.8.

    Chng trnh 4.9 package vidu.chuong4; public class Shoe implements Product {

  • 63

    // Ci t phng thc c khai bo trong giao tip public float getCost() { return 10f; } // Phng thc truy nhp nhn hiu sn phm

    public String getMark() { return MARK; } // Phng thc main public static void main(String args[]) { Shoe myShoe = new Shoe(); System.out.println(This shoe is + myShoe.getMark() +

    having a cost of $ + myShoe.getCost()); } }

    Chng trnh 4.9 s in ra dng: This shoe is Adidas having a cost of $10. Hm getMark() s tr v nhn hiu ca sn phm, l thuc tnh c khai bo trong giao tip. Hm getCost() l ci t ring ca lp Shoe i vi phng thc c khai bo trong giao tip Product m n s dng, ci t ny tr v gi tr 10 i vi lp Shoe.

    4.3 LP TRU TNG

    Lp tru tng l mt dng lp c bit, trong cc phng thc ch c khai bo dng khun mu (template) m khng c ci t chi tit. Vic ci t chi tit cc phng thc ch c thc hin cc lp con k tha lp tru tng . Lp tru tng c s dng khi mun nh ngha mt lp m khng th bit v nh ngha ngay c cc thuc tnh v phng thc ca n.

    4.3.1 Khai bo

    Khai bo lp tru tng

    Lp tru tng c khi bo nh cch khai bo cc lp thng thng, ngoi tr c thm t kho abstract trong phn tnh cht:

    [public] abstract class { }

    x Tnh cht: mc nh l public, bt buc phi c t kho abstract xc nh y l mt lp tru tng.

  • 64

    x Tn lp: tun th theo quy tc t tn lp thng thng ca java. Lu :

    x Lp tru tng cng c th k tha mt lp khc, nhng lp cha cng phi l mt lp tru tng. (Khai bo k tha thng qua t kho extends nh khai bo k tha thng thng).

    Chng trnh 4.10 khai bo mt lp tru tng l lp ng vt (Animal) mt cch chung chung.

    Chng trnh 4.10 package vidu.chuong4; abstract class Animal { }

    Khai bo phng thc ca lp tru tng

    Tt c cc thuc tnh v phng thc ca lp tru tng u phi khai bo l tru tng. Hn na, cc phng thc ca lp tru tng ch c khai bo dng khun mu m khng c phn khai bo chi tit. C php khai bo phng thc ca lp tru tng:

    [public] abstract ([]) [throws ];

    x Tnh cht: tnh cht ca mt thuc tnh hay phng thc ca lp tru tng lun l public. Nu khng khai bo tng minh th gi tr mc nh cng l public.

    x Kiu d liu tr v: c th l cc kiu c bn ca java, cng c th l kiu do ngi dng t nh ngha (kiu i tng).

    x Tn phng thc: tun th theo quy tc t tn phng thc ca lp x Cc tham s: nu c th mi tham s c xc nh bng mt cp . Cc tham s c phn cch nhau bi du phy. x Cc ngoi l: nu c th mi ngoi l c phn cch nhau bi du phy.

    Lu : x Tnh cht ca phng thc tru tng khng c l private hay static. V phng thc

    tru tng ch c khai bo chi tit (np chng) trong cc lp dn xut (lp k tha) ca lp tru tng. Do , nu phng thc l private th khng th np chng, nu phng thc l static th khng th thay i trong lp dn xut.

    x Phng thc tru tng ch c khai bo di dng khun mu nn khng c phn du mc {} m kt thc bng du chm phy ;.

    Chng trnh 4.11 khi bo hai phng thc ca lp tru tng Animal trong chng trnh 4.10: Phng thc getName() tr v tn loi ng vt, d cha bit tn c th loi no nhng kiu tr v l String. Phng thc getFeet() tr v s chn ca loi ng vt, cng cha bit c th l bao nhiu chn nhng kiu tr v l int.

  • 65

    Chng trnh 4.11 package vidu.chuong4; abstract class Animal { abstract String getName(); abstract int getFeet(); }

    4.3.2 S dng lp tru tng

    Lp tru tng c s dng thng qua cc lp dn xut ca n. V ch c cc lp dn xut mi ci t c th cc phng thc c khai bo trong lp tru tng. Chng trnh 4.12a khai bo lp v loi chim (Bird) k tha t lp Animal trong chng trnh 4.11. Lp ny ci t chi tit hai phng thc c khai bo trong lp Animal: phng thc getName() s tr v tn loi l Bird; phng thc getFeet() tr v s chn ca loi chim l 2.

    Chng trnh 4.12a package vidu.chuong4; public class Bird extends Animal { // Tr v tn loi chim public String getName() { return Bird; } // Tr v s chn ca loi chim public int getFeet() { return 2; } }

    Chng trnh 4.12b khai bo lp v loi mo (Cat) cng k tha t lp Animal trong chng trnh 4.11. Lp ny ci t chi tit hai phng thc c khai bo trong lp Animal: phng thc getName() s tr v tn loi l Cat; phng thc getFeet() tr v s chn ca loi mo l 4.

    Chng trnh 4.12b package vidu.chuong4; public class Cat extends Animal { // Tr v tn loi mo

  • 66

    public String getName() { return Cat; } // Tr v s chn ca loi mo public int getFeet() { return 4; } }

    Chng trnh 4.12c s dng li hai lp Bird v Cat trong cc chng trnh 4.12a v 4.12b. Chng trnh ny s hin th hai dng thng bo:

    The Bird has 2 feets The Cat has 4 feets

    Chng 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 Np chng

    Java cho php trong cng mt lp, c th khai bo nhiu phng thc c cng tn. Np chng l hin tng cc phng thc c cng tn. C hai kiu np chng trong Java:

    x Cc phng thc ca cng mt lp c cng tn. Khi hai phng thc ca mt lp c cng tn th bt buc chng phi c:

    - Hoc danh sch cc tham s khc nhau - Hoc kiu tr v khc nhau

  • 67

    - Hoc kt hp hai iu kin trn. Nu khng, java s khng phn bit c chng. V d nu trong cng mt lp: // Chp nhn c public int add(int x, int y){} public float add(float x, int y){} // Khng chp nhn c public int add(int x, int y){} public int add(int x, int y){}

    x Phng thc ca lp con c cng tn vi phng thc ca lp cha. Trong trng hp ny, cc phng thc np chng c th c cng danh sch tham s v c cng kiu tr v (xem li phn khai bo phng thc np chng trong mc k tha 4.1.2).

    4.4.2 a hnh

    a hnh l vic triu gi n cc phng thc np chng ca i tng. Khi mt phng thc np chng c gi, chng trnh s da vo kiu cc tham s v kiu tr v gi phng thc ca i tng