lap trinh huong doi tuong bang c#

208
Bài tập lập trình hướng đối tượng với C# Năm 2008 Tài liệu hướng dẫn thực hành Môn LTHDT với C# 3 MỤC LỤC Chương I: ĐỐI TƯỢNG VÀ LỚP A. TÓM TẮT LÝ THUYẾT.............................................................7 1. Khai báo lớp .................................................................................7 2. Sử dụng các đối tượng của lớp: ...................................................9 3. Từ khóa this ................................................................................10 4. Sử dụng các từ khóa mức độ truy cập........................................11 5. Bộ khởi dựng( constructor): ...... Error! Bookmark not defined. 6. Bộ sao chép( copy constructor): Error! Bookmark not defined. 7. Hàm hủy bỏ (destructor) ............................................................12 8. Sử dụng các thành viên tĩnh static: ............................................14 9. Nạp chồng phương thức .............................................................17 10. Đóng gói d liệu thông qua các thuộc tnh: ...............................17 B. BÀI TẬP MU ..........................................................................19 1. Xây dựng lớp ..............................................................................19 2. Sử dụng lớp ................................................................................22 3. Lớp lồng nhau và cách truy xuất ................................................32 4. Chương trình khai báo nhiều lớp ...............................................34 5. Từ khóa this ................................................................................39 6. Hàm thiết lập và hàm thiết lập sao chép, hàm sao chép cho lớp vector ................................................................................................45 7. Sử dụng hàm thiết lập sao chép và hàm hủy bỏ ........................50 8. Kiểu d liệu mảng, các phương thức có giá trị trả về , constructor sao chép .........................................................................54 9. Sử dụng các thành phần tĩnh ......................................................59 10. Hàm khởi tạo private để cấm tạo thể hiện của đối tượng ..........62 11. Nạp chồng phương thức .............................................................64 12. Gói ghém d liệu thông qua các thuộc tnh ...............................74 C. CÂU HI LÝ THUYẾT VÀ TRẮC NGHIM ........................80 D. BÀI TẬP T GII ....................................................................82 E. BÀI TẬP TỔNG HỢP: ..............................................................87 Chương II: NẠP CHỒNG TOÁN TỬ A. TÓM TẮT LÝ THUYẾT...........................................................90 1. Toán tử: ......................................................................................90 2. Chồng toán tử: ............................................................................90

Upload: khanhtrinh2811

Post on 18-Sep-2015

241 views

Category:

Documents


5 download

DESCRIPTION

c#

TRANSCRIPT

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 3

    MC LC Chng I: I TNG V LP A. TM TT L THUYT ............................................................. 7 1. Khai bo lp ................................................................................. 7 2. S dng cc i tng ca lp: ................................................... 9 3. T kha this ................................................................................ 10 4. S dng cc t kha mc truy cp........................................ 11 5. B khi dng( constructor): ...... Error! Bookmark not defined. 6. B sao chp( copy constructor): Error! Bookmark not defined. 7. Hm hy b (destructor) ............................................................ 12 8. S dng cc thnh vin tnh static: ............................................ 14 9. Np chng phng thc ............................................................. 17 10. ng gi d liu thng qua cc thuc tinh: ............................... 17 B. BI TP MU .......................................................................... 19 1. Xy dng lp .............................................................................. 19 2. S dng lp ................................................................................ 22 3. Lp lng nhau v cch truy xut ................................................ 32 4. Chng trnh khai bo nhiu lp ............................................... 34 5. T kha this ................................................................................ 39 6. Hm thit lp v hm thit lp sao chp, hm sao chp cho lp vector ................................................................................................ 45

    7. S dng hm thit lp sao chp v hm hy b ........................ 50 8. Kiu d liu mng, cc phng thc c gi tr tr v , constructor sao chp ......................................................................... 54

    9. S dng cc thnh phn tnh ...................................................... 59 10. Hm khi to private cm to th hin ca i tng .......... 62 11. Np chng phng thc ............................................................. 64 12. Gi ghm d liu thng qua cc thuc tinh ............................... 74 C. CU HOI L THUYT V TRC NGHIM ........................ 80 D. BI TP T GIAI .................................................................... 82 E. BI TP TNG HP: .............................................................. 87 Chng II: NP CHNG TON T A. TM TT L THUYT ........................................................... 90 1. Ton t: ...................................................................................... 90 2. Chng ton t: ............................................................................ 90

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 4

    3. C php np chng ton t: ....................................................... 90 4. Ton t mt ngi: ....................................................................... 92 5. Ton t hai ngi: ........................................................................ 92 6. H tr ngn ng .NET khc: ..................................................... 92 7. Phm vi s dng ca cc ton t: .............................................. 93 8. Mt s trng hp nn s dng cc ton t np chng: ........... 94 9. Yu cu khi s dng ton t: ..................................................... 94 10. u v nhc im ca chng ton t ........................................ 95 B. BI TP MU .......................................................................... 95 I. BI TP TRC NGHIM, L THUYT .............................. 95 II. CU HOI L THUYT V BI TP MU .......................... 98 1. Chng ton t (+) i vi hai vector ......................................... 98 2. Chng ton t mt ngi ........................................................... 102 3. Xy dng mt lp sophuc v np chng ton t +, - v i du s phc. .......................................................................................... 104 4. Xy dng mt lp phn s vi tn l phanso v np chng ton t trn lp ....................................................................................... 107 5. Xy dng mt lp vector v thc hin cc yu cu sau: ......... 112 C. CU HOI TRC NGHIM L THUYT ............................. 118 D. BI TP T GIAI .................................................................. 119 Chng III: K THA V A HNH: A. TM TT L THUYT ......................................................... 124 1. K tha: .................................................................................... 124 2. T kho base: ........................................................................... 125 3. T kho new: ............................................................................ 126 4. Tinh a hnh : ........................................................................... 126 5. Ghi : ...................................................................................... 126 6. Nghim cm k tha: ............................................................... 127 7. Cch truy xut protected: ......................................................... 127 8. Lp tru tng: ........................................................................ 127 9. S khc nhau gia phng thc a hnh vi phng thc tru tng: ............................................................................................. 128 10. Gc ca tt c cc lp (Lp Object): ....................................... 128 11. Kiu Boxing v Unxing ........................................................... 129 12. Lp lng nhau: ......................................................................... 130

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 5

    B. BI TP MU ........................................................................ 131 I. K tha ..................................................................................... 131 1. Xy dng lp dn xut tha k t lp c s. ........................... 131 2. Mc truy cp Protected ....................................................... 139 3. Cch truy nhp ca t kha internal v public ........................ 146 4. Lp c s v i tng thnh phn ......................................... 152 II. Nghim cm k tha ................................................................ 160 III. Tinh a hnh. ............................................................................ 162 IV. Lp tru tng ......................................................................... 169 V. Xy dng lp lng nhau ........................................................... 173 C. MT S CU HOI L THUYT: ........................................ 176 D. CU HOI T TRA LI .......................................................... 179 E. BI TP T GIAI: ................................................................. 182 Chng IV: GIAO DIN A. TM TT L THUYT .......................................................... 189 1. Khi nim v giao din ............................................................ 189 2. Ci t mt giao din ............................................................... 189 3. Truy xut phng thc ca giao din ...................................... 190 4. Ton t is:................................................................................. 190 5. Ton t as ................................................................................. 190 6. Thc thi ph quyt giao din ................................................... 191 7. Thc hin giao din mt cch tng minh .............................. 191 B. BI TP MU ........................................................................ 191 I. S dng giao din..................................................................... 191 II. M rng mt giao din v s thc thi nhiu giao din ca mt lp 194 III. Xy dng lp thc thi ph quyt mt giao din ...................... 197 IV. Xy dng lp thc thi giao din mt cch tng minh ........... 202 C. CU HOI V TRA LI .......................................................... 205 D. CU HOI V BI TP T LM ......................................... 206

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 6

    LI M U

    Ngy nay khoa hc ang pht trin rt nhanh, c bit l s bng n ca cng ngh thng tin. Tin hc lun thay i v pht trin tng gi, tng ngy. Ngn ng lp trnh cng vy. Cc ngn ng mi lun ra i thay th v khc phc nhng hn ch cho cc ngn ng c. Ngn ng lp trnh l mt cng c gip con ngi th hin cc vn thc t trn my tinh mt cch hu hiu. Vi s pht trin ca tin hc, cc ngn ng ang dn tin ho p ng cc thch thc ca thc t. C# c mnh danh l ngn ng lp trnh hng i tng mnh nht trong b ngn ng lp trnh .NET ca hng Microsoft hin nay. Cun sch ny cung cp cho cc bn nhng kin thc c bn lin quan n vic nh ngha v ci t lp trnh hng i tng bng ngn ng C# trong ng dng thc tin v p dng chng cho m hnh i tng mt cch hiu qu. Gio trnh bao gm 4 chng: Chng 1: i tng v lp. Chng 2: Np chng ton t trn lp. Chng 3: K tha v a hnh. Chng 4: Giao din Vi mi mt chng chng ti c trnh by tm tt nht v l thuyt v c bi tp gii mu theo tng ni dung. Cui mi chng l h thng bi tp t gii (c hng dn) gip cc bn tin thc hnh.

    Tuy cun sch ny phn no hon thnh xong, nhng do thi gian v kin thc c hn chc chn s khng trnh khi nhng sai lm v thiu st. V vy chng ti rt mong nhn c s ng gp ca thy c v bn b cun sch ny c hon thin hn. Chng ti xin chn thnh cm n ti cha, m, anh, ch, em; thy Nguyn Hu ng cng cc thy c trong khoa Cng ngh thng tin trng HSPKT Hng Yn to iu kin cho chng em hon thnh ti ny. Xin cm n mi s gip ca bn b.

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 7

    CHNG I

    I TNG V LP

    Mc tiu: Sau khi tm hiu xong chng ny ngi hc c th nm c cc ni dung sau: Khai bo lp Khai bo v s dng cc i tng ca lp T kha this Cc thuc tinh truy cp Hm thit lp Hm thit lp sao chp Hm hy b S dng cc thnh vin tnh Np chng phng thc ng gi d liu thng qua cc thuc tinh

    A. TM TT L THUYT

    1. Khai bo lp

    Mt lp bao gm c cc thuc tinh v phng thc. khai bo mt lp ta s dng t kha class vi cu trc sau y:

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 8

    Cc thuc tinh truy cp gm c cc t kha sau y (s trnh by chi tit phn sau): public, private, internal, protected, internal protected.

    Trong C#, cho php chng ta khai bo cc class lng nhau. Thng thng khai bo lp lng nhau khi ng dng c quy m ln. Class lng cho php s dng trong ni b class cha n khi n c tm vc public.

    Cu trc khai bo mt class lng nh sau:

    [Thuc tnh truy cp] class

    {

    Khai bo cc thuc tnh ca lp

    Khai bo cc phng thc ca lp

    }

    class class1

    {

    // khai bo thuc tnh // khai bo cc phng thc public class class2

    {

    // khai bo cc thnh phn d liu // khai bo cc phng thc

    }

    }

    }

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 9

    2. S dng cc i tng ca lp:

    s dng lp ta phi khai bo i tng ca lp . Khi mt i tng ca lp c to ra th n c y cc thuc tinh, phng thc ca lp v s dng thuc tinh v phng thc ca lp. Cc thnh phn ca mt lp ch uc s dng khi c th hin ca lp, tr trng hp trong lp c mt hm khi dng l static. khai bo mt i tng ca lp ta dng t kha new v khai bo n theo cu trc sau:

    truy nhp n mt phng thc ta thng qua tn bin i tng v ton t chm .:

    i vi cc lp lng nhau, truy cp n nhng thuc tinh v phng thc ca class lng th khi khai bo cn ch ra lp cha ng n. Mun s dng bin ca lp cha th cc bin ca lp dng cha phi khai bo l static v phi khai bo i tng cha n.

    Vi d1: Bn khai bo mt lp diem vi y cc thuc tinh v cc phng thc (gi s l c phng thc hien()), by gi bn mun to mt i tung tn l A ca lp ny v s dng phng thc hin im A th phi khai bo A la mt bin i tng nh sau:

    diem A = new diem ();

    A.hien();

    Vi d 2: nh ngha lp pheptoan v trong lp ny c cha lp tinhhieu, mun s dng i tng ca lp tinhhieu th bt buc bn phi khai bo ch r lp cha y l lp pheptoan nh sau:

    pheptoan.tinhhieu con = new pheptoan.tinhhieu();

    = new ([cc gi tr khi to nu c])

    . ([danh sch cc i s nu c])

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 10

    sau vic truy xut n cc phng thc ca lp th tin hnh bnh thng nhng lp trong th khng s dng c phng thc ca lp cha n v ch s dng c thnh phn d liu tnh ca lp cha m thi.

    3. T kha this

    T kha this dng tham chiu n chinh bn thn ca i tng .this l mt con tr n nm ngay bn trong ca mi mt phng thc ca lp v bn thn chng c th tham chiu n cc hm v cc bin khc ca mt i tng. T kha this trong C# cng tng t nh this trong C++.

    C ba cch s dng t kha this.

    - S dng this phn bit r gia cc thnh vin th hin v cc tham s ca phng thc khi ta s dng bin th hin v tn ca tham s trong phng thc trng nhau. Tuy nhin nu mun c c s r rng, minh bch th c th dng tn bin thnh vin v tn tham s l khc nhau t u.

    Vi d: Trong lp pheptoan c bin thnh vin l int y, int y v phng thc

    public int setXY(int x, int y)

    {

    this.x=x;

    this.y=y;

    }

    this.x, this.y l tham chiu n 2 thnh phn d liu ca lp x, y. Cn x, y bn phi php gn chinh l hai i s truyn vo ca phng thc setXY

    - S dng this trao i tng hin hnh nh l mt thng s cho mt hm hnh s khc. Khi mt i tng ng nhin s tr thnh mt tham s ca phng thc.

    Vi d: vi hai lp class1 c cha phng thc thietlapdoituong(), lp class2 c cha phng thc

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 11

    saochepdoituong() v mun truyn tham s cho n l i tng ca lp class1 th s dng t kha thi nh sau:

    public void saochepdoituong (class1 a)

    {

    a.thietlapdoituong(this);

    }

    - S dng this thao tc vi cc indexer thng c s dng trong bn dy, indexer v cc tp hp.

    4 . B khi dng( constructor/ Phng thc khi to/ thit lp)

    C php:

    public className([ds tham s]){

    // Khi to cho cc thnh phn d liu ca lp

    }

    trong className: Tn lp

    Ch : Phng thc khi to l phng thc c tn trng vi tn ca lp v khng c kiu tr v

    5. S dng cc t kha mc truy cp

    + public : Khng c gii hn, c th truy xut mi ni trong bn thn lp khai bo v bn ngoi hay trong ni b khi assembly. + private: ring t ch c phm vi hot ng trong lp m n khai bo. Cc phng thc bn ngoi lp khng th truy xut n n.

    + protected: Cc thnh vin trong lp c khai bo bng protected th ch c cc phng thc bn trong lp v cc lp dn xut t lp mi c th truy cp n n.

    + internal: Cc phng thc, cc bin thnh vin c khai bo bng t kha Internal c th c truy cp bi tt c nhng phng thc ca bt c lp no trong cng mt khi hp ng assembly vi lp .

    + protected internal: Cc bin thnh vin c khai bo bng t kha ny trong mt lp A bt k c th c truy xut bi cc

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 12

    phng thc thuc lp A v cc phng thc ca lp dn xut t lp A v bt c lp no trong cng mt khi hp ng vi lp A.

    - Khi hp ng Assembly c hiu l mt khi chia x v dng li trong CLR. Khi hp ng l tp hp cc tp tin vt l c lu tr trong mt th mc bao gm cc tp tin ti nguyn.

    Cc thuc tinh truy cp c p dng cho thuc tinh, phng thc ca lp v bn thn lp. Khi nh ngha thuc tinh truy cp ca lp l internal, protected ch c nh ngha trong lp lng nhau m thi.

    4. Hm hy b (destructor)

    Dng gii phng vng nh cp pht cho i tng khi m i tung khng cn c tham chiu n. Hm hy b l mt hm khng c gi tr tr v c tn trng tn vi class v c thm k t ~ trc. Mun khai bo mt destructor chng ta khai bo n vi c php nh sau:

    class className{

    public ~className() {

    Tuy nhin, trong ngn ng C# th c php khai bo trn l mt shortcut lin kt n mt phng thc kt thc Finalize c kt vi lp c s, do vy khi vit

    public classname

    {

    public classname()

    {

    // code of constructor

    // cc cng vic cn thc hin }

    ~ classname()

    {

    // code of descontructor

    // cc cng vic cn thc hin }

    }

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 13

    ~ classname()

    {

    // Thc hin mt s cng vic }

    V vit : class1.Finalize()

    {

    // Thc hin mt s cng vic base.Finalize();

    }

    Th hai cch vit nh th ny s c C# hiu l nh nhau. Trong C# c mt i tng h tr cho cng vic dn rc mi

    khi i tng khng cn c tham chiu n l i tng GC (garbage collector). i tng ny thc hin cng vic rn rc qua 3 bc nh sau: - Tm kim nhng i tng khng cn c tham chiu na

    - C gng cc hot ng gii phng i tng khng cn c tham chiu

    - Thi hnh phng thc finalize() hy i tng Ngoi ra, trong c ch hy b ca C# cn c phng thc Dispose l mt phng thc i lp hon ton so vi phng thc Finalize() ca i tng GC.

    Phng thc Dispose l cho php chng trnh thc hin cc cng vic dn dp hay gii phng ti nguyn mong mun m khng phi ch cho n khi phng thc Finalize() c gi. Khi ta khng c php dng phng thc Finalize() trong i tng m thay vo ta s gi mt phng thc tnh ca lp GC (garbage collector) l GC.SuppressFinalize( this). Sau phng thc Finalize() s dng gi phng thc Dispose() nh sau:

    public void Dispose()

    {

    // Thc hin cng vic dn dp // Yu cu b thu dc GC trong thc hin kt thc GC.SuppressFinalize( this );

    }

    public override void Finalize()

    {

    Dispose();

    base.Finalize();

    }

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 14

    Cu lnh using:

    Mc d phng thc rn rc ca C# l t ng cung cp nhng khng th chc rng phng thc Dispose() s c gi v vic gii phng ti nguyn khng th xc nh c. Cu lnh using s m bo rng phng thc Dispose() s c gi trong thi gian sm nht. S dng using bng cch gi cu lnh using v truyn vo tn i tng mun hy b:

    using (tn i tng cn hy b)

    Khi trong lp khng khai bo mt destructor no th trnh bin dch s gi tin trnh Garbage collector trong ngn ng C# gii phng i tng ny trong b nh. Phn ln trong ngn ng C# th c c ch t ng gom rc mi khi bin khng c tham chiu n nn chng ta khng cn quan tm nhiu n n nh trong C++.

    5. S dng cc thnh vin tnh static:

    Thnh vin tnh khng th hin g cho lp v c thuc tinh v phng thc m n nh l mt thnh phn ca lp.

    S dng t kha static khai bo mt thnh vin tnh. Thnh phn tnh ch c s dng vi lp, phng thc, thuc tinh, s kin v constructor nhng khng th c s dng vi nhng bn dy, indexer, destructor hay kiu khc vi nhng lp.

    S dng phng thc tnh:

    Mt phng thc static c phm vi hot ng ging nh mt phng thc ton cc m khng cn to ra bt c mt th hin no ca lp c. Ton cc y hiu theo ngha l ton cc trong lp.

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 15

    Gi mt phng thc static:

    V bn cht thnh phn static l mt thnh phn ca lp khng th hin tr v v vy khng c mt tham chiu this. Mt hm static khng th trc tip truy xut n cc thnh vin khng static m phi thng qua mt i tng th hin ca lp nh sau:

    Tenlop.tenhamtinh ([danh sach tham so neu co]:

    Vi d diem.hien() l li gi n phng thc tnh c tn l hien() ca lp diem

    S dng cc phng thc khi to static:

    Trong khai bo mt static constructor khng c t kha truy cp. Phng thc tnh ch c th truy nhp n thnh phn d liu cng c tinh cht tnh m thi. Nu trong khai bo lp c mt hm static constructor th hm ny s c gi trc khi bt c mt th hin no ca lp c to ra.

    Vic s dng hm khi to static cn c cn nhc k lng v chng ta khng th theo di n c nh trong C++ v th thng gy ra nhng hu qu kh lng.

    - Khi to private constructor:

    Vic s dng mt hm khi to private trong lp s c tc dng ngn chn to ra bt k mt i tng no ca lp. Hm khi to private ny mc nhin, khng c tham s g c v trng rng. Khi trong lp s khng c hm khi to public nn s khng khi to c bt c mt thnh vin th hin no.

    Vi d khng mun to ra bt k mt i tng no ca lp diem th trong khi nh ngha lp ta s nh ngha thm mt hm khi to tm vc l private nh sau:

    private diem ()

    {

    // khng lm g c

    }

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 16

    S dng cc thuc tnh tnh:

    Trong C# khng h c mt bin no c phm vi hot ng ton cc nh trong mt s ngn ng lp trnh khc ( pascal, C, C++, Visual Basic ) vic s dng mt bin vi mc ich ton cc tr nn l mt iu khng th. Bin ton cc trong cc ngn ng khc c hiu l ton cc trong ng dng nhng i vi C# th ton cc theo ngha hiu ca n l ton cc trong mt lp v khng c khi nim ton cc trong ton b chng trnh. Nu ta khai bo mt bin thnh vin tnh ca lp th bin thnh vin tnh ny c tm vc hot ng theo ngha ton cc . Cc bin thnh vin tnh c hot ng tich cc trong vai tr ny.

    Lp tnh:

    Mt lp c th c xy dng l mt lp tnh v ch cha cc thnh phn tnh m thi v n khng cho php to th hin ca lp bng vic s dng t kha new. Lp static thng c ti t ng trong Net.Framework khi chng trnh hoc namespace cha lp c ti ln.Vic to mt static class ging vi vic to ra mt lp m ch cha mt private constructor. Nh vy l c th kim tra chc chn v m bo nhng thnh vin ca lp ny khng th c to ra.

    Khi no th s dng cc thuc tnh tnh v khi no th s dng phng thc tnh:

    + S dng phng thc tnh khi mun khi to mt gi tr no ngay khi chng trnh bin dch m khng cn to th hin ca lp hay vic to mt thit lp duy nht m mt s chun b (initializer) khng th thc hin c v ch cn thc hin mt ln m thi. Trong trng hp nu ta mun lp m sau khi ta nh ngha khng th tao ra mt th hin no ca n th ta s dng phng thc khi to private (bn trong thn phng thc trng rng).

    + S dng bin static khi bn mun to ra mt bin c vai tr ton cc trong lp theo di hot ng ca n. Vi d nh bn to ra mt bin static theo di xem thi im hin ti c bao nhiu

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 17

    bin i tng c to ra chng hn. Khi i cng vi vic to i tng bn hy gi phng thc cha thnh phn tnh ny th bn c th theo di nh dng bin ton cc trong cc ngn ng lp trnh khc.

    + S dng lp tnh cha cc phng thc m khng lin quan ti mt i tng c bit. Chng hn nh yu cu to tp hp phng thc khng hnh ng theo th hin d liu v khng lin quan n mt i tng c bit no. Mt static class khng cho php tha k.

    6. Np chng phng thc

    Chng phng thc l vic to ra nhiu phng thc trng tn vi nhau nhng nhn cc tham s khc nhau hay tr v d liu khc nhau. Vic phn bit cc hm ny da vo du n:

    + Khc nhau cc tham s: khc nhau v s lng tham s + Khc nhau v kiu d liu ca tham s, kiu d liu tr v

    ca phng thc.

    Khi np chng mt phng thc ta phi thay i ki hiu (du n) ca phng thc, s tham s hay kiu d liu ca tham s hoc c th thay i c v gi tr ca cc tham s. Khi th thc cht khng phi l np chng phng thc m l hai phng thc khc nhau c cng tn nhng khc nhau v kiu gi tr tr v. l mt iu cn ch khi np chng phng thc.

    Khi gi mt phng thc c np chng phng thc th cn ch v s tham s, kiu d liu cho ph hp vi tng phng thc nu khng th s pht sinh li khi bin dch chng trnh.

    7. ng gi d liu thng qua cc thuc tinh:

    ng gi d liu vi thuc tinh thc cht l mt qu trnh ta ly gi tr cho bin thnh vin v thit lp gi tr cho bin n c truy cp thng qua phng thc ca lp m khng qua i tng. Trong C# cung cp kh nng khai bo hm chung gi l thuc tinh cho hm get v set

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 18

    + Phng thc get tr v mt i tng d liu kiu thuc tinh, phng thc ny ging phng thc ca i tng. + Phng thc set: thit lp gi tr ca thuc tinh, c kiu tr v l void. Khi thit lp mt phng thc set phi dng t kha value tng trng cho i c trao v c gi bi thuc tinh. Li ich ca vic gi ghm d liu l che giu thng tin mc d ngi s dng vn thao tc vi thuc tinh. Vi im cn ch khi nh ngha mt thuc tinh + Ta khng khai bo tng minh cc tham s trong th tc set.. + C th ch xy dng thuc tinh ch c hoc ch vit bng cch b i mt trong hai th tc trn. + Nu ta mun to mt thuc tinh c public c nhng li mun hn ch protected trong gn th phi to thuc tinh ch c public sau to mt hm set() vi truy cp protected bn ngoi thuc tinh . + C# cho php bn to mt thuc tinh virtual hay abstract ( xem thm k tha v a hnh) c php nh sau: public abstract string (tn thuc tinh) {

    get;

    set;

    }

    public string (tn thuc tnh) {

    get { //Ly gi tri thuc tnh } set { //Tr v gi tr cng kiu vi thuc tnh khai bo}

    }

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 19

    B. BI TP MU

    1. Xy dng lp

    V d 1:

    Xy dng lp diem vi cc thuc tinh tung , honh ca im , phng thc i ta gia dng v m, phng thc di chuyn theo mt gi tr nhp vo t bn phim, phng thc hin im ln mn hnh.

    a, Hng dn: + cc thuc tinh gm c:

    int x ; // ta honh int y ; // ta tung + cc phng thc ca lp: nhp thng tin i ta phng thc move: di chuyn im phng thc hien: hin thng tin ln mn hnh b, Bi gii mu:

    class Diem

    {

    public int x, y;

    {

    x = ox;

    y = oy;

    }

    public void nhap()

    {

    Console.WriteLine("Nhap toa do cua diem:");

    x = int.Parse(Console.ReadLine());

    y = int.Parse(Console.ReadLine());

    }

    public void move(int dx, int dy)

    {

    x += dx;

    y += dy;

    }

    public void chuyen()

    {

    x = -x;

    y = -y;

    }

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 20

    Trong vi d trn, chng ti ch ra cch khai bo mt lp th cn phi khai bo tng minh cc thuc tinh (thnh phn d liu), v c cc phng thc (ci m mt i tng ca lp c th thi hnh). Vi mt phng thc khng c gi tr tr v th khai bo c t kha void cn nu c gi tr tr v th phi khai bo c gi tr tr v.

    V d 2:

    Xy dng lp stack m phng mt stack bao gm

    - Hm khi to s phn t ti a, - Phng thc isEmpty kim tra xem stack c rng khng - Phng thc isFull kim tra xem stack c y khng - Phng thc push v pop thm vo, ly ra mt phn t

    a, Hng dn: Cc thuc tinh ca lp stack gm c: top: m t phn t u stack n: s phn t ti a ca stack

    public void hien()

    {

    Console.Write("toa do :(");

    Console.Write("{0},{1}", x, y);

    Console.WriteLine(")");

    }

    }

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 21

    Cc phng thc ca lp gm c: public stack(): khi to gi tr ca stack vi s phn t ti a pubic bool empty(): tr v gi tr kiu ng sai khi stack rng hay khng

    public bool full(): tr v kiu ng sai khi stack y hay khng y public void push (int x):thm mt phn t vo stack public int pop(): Ly ra mt phn t t stack. y l hm v n c tr ra gi tr, gi tr chinh l phn t m ta va ly ra c t stack.

    b, Bi gii mu:

    using System;

    namespace Stack

    {

    class Stack

    {

    private int top;

    private int []s;

    public bool empty()

    {

    return (top == -1);

    }

    public bool full()

    {

    return (top >= s.Length);

    }

    public Stack ()

    {

    s = new int[20];

    top=-1;

    }

    public void push(int x)

    {

    if(!full())

    {

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 22

    top=top+1;

    s[top]=x;

    }

    else Console.Write("Stack tran");

    }

    public int pop()

    {

    if (empty())

    {

    Console.Write("Stack can");

    return 0;

    }

    else

    return s[top--];

    }

    }

    2. S dng lp

    V d 1:

    Xy dng lp diem nh bi 1 sau vit chng trnh nhp ta ca im t bn phim, di chuyn mt ta , ly ta i xng, hin ta ca im ln mn hnh.

    a, Hng dn:

    Thuc tinh v phng thc ca lp diem ging ht bi trn, khi mun xy dng chng trnh ta ch vic s dng i tng ca lp m thi. Mun vy phi khai bo i tng kiu lp bng s dmg t kha new cp pht vng nh. truy xut n cc phng thc ca lp th ta truy xut thng qua cc i tng ca lp diem

    Chng hn nh c i tng ca lp la A mun truy xut ti phng thc nhap() th ta truy nhp nh sau: A.nhap();

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 23

    b, Chng trnh hon thin nh sau:

    using System;

    using System.Collections.Generic;

    using System.Text;

    namespace vidu1

    {

    class diem

    {

    public int x, y;

    public void move(int dx, int dy)

    {

    x += dx;

    y += dy;

    }

    public void hien()

    {

    Console.Write("toa do :(");

    Console.Write("{0},{1}", x, y);

    Console.WriteLine(")");

    }

    public void chuyen()

    {

    x = -x;

    y = -y;

    }

    public void nhap()

    {

    Console.WriteLine("Nhap toa do cua diem:");

    x = int.Parse(Console.ReadLine());

    y = int.Parse(Console.ReadLine());

    }

    }

    class tester

    {

    static void Main(string[] args)

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 24

    {

    diem b = new diem();

    // bien trong C# luon doc khoi gan gia tri truoc khi su

    dung

    b.nhap();

    Console.Write("diem b ");

    b.hien();

    Console.WriteLine("toa do doi xung la:");

    b.chuyen();

    b.hien();

    b.move(2, 6);

    }

    }

    }

    Kt qu sau khi chy chng trnh l

    V d 2:

    Xy dng chng trnh nhp tam gic, tinh chu vi, din tich v in ra mn hnh l loi tam gic no: cn, vung, vung cn, u hay thng.

    a, Hng dn:

    Nhap toa do cua diem:

    8

    19

    diem b toa do : (8,19)

    toa do doi xung la:

    toa do(-8,-19)

    diem b sau khi di chuyen la:

    toa do (-6,-13)

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 25

    Trong bi ny s ni s qua v mt s thuc tinh truy cp ca mt s thnh phn trong lp (chi tit v phn ny xin cc bn tham kho phn sau mang tn l s dng cc t kha ch mc truy cp)

    - Thuc tinh ca lp l di ba canh ca tam gic Cc phng thc ca lp:

    - Phng thc nhp thng tin - Phng thc hin thng tin - Phng thc kim tra loi tam gic - Phng thc tinh chu vi tam gic - Phng thc tinh din tich tam gic

    y, v phng thc nhp thng tin v phng thc hin thng tin chng ta mong mun s c s dng trong bt k hm no nn ta xy dng c thuc tinh public, cn phng thc cho bit loi tam gic, tinh din tich tam gic v chu vi tam gic th chng ta mong mun c tinh cht bo v v khng cho cc thnh phn bn ngoi tc ng vo n th s xy dng c thuc tinh truy xut la private. V sao vy? Mun xy dng c thuc tinh truy cp l public c c khng? Cu tr li l c nhng khng c tinh cht che chn d liu v mt thnh phn c th lm thay i n n trong khi tiu chi xp loi tam gic, tinh din tich v chu vi tam gic th i vi tam gic no cng ging nhau do ta xy dng n l private.

    b, Gii mu:

    using System;

    namespace VD2

    {

    class tamgiac

    {

    private int a;

    private int b;

    private int c;

    private int i=0;

    public void nhap()

    {

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 26

    Console.WriteLine("nhap thong so cho tam giac");

    a=Convert.ToInt32(Console.ReadLine());

    b=Convert.ToInt32(Console.ReadLine());

    c=Convert.ToInt32(Console.ReadLine());

    }

    public void hien()

    {

    Console.WriteLine("tam giac ma ban vua nhap la:");

    Console.WriteLine("do dai ba

    canh:,{0},{1},{2}",a,b,c);

    Console.WriteLine("chu vi:{0}",chuvi());

    Console.WriteLine("dien tich:{0}",dientich());

    i = loaitg();

    switch(i)

    {

    case 1:

    Console.WriteLine("la tam giac deu");break;

    case 2:

    Console.WriteLine("la tam giac vuong

    can");break;

    case 3:

    Console.WriteLine("la tam giac can");break;

    case 4:

    Console.WriteLine("la tam giac vuong");break;

    case 5:

    Console.WriteLine("la tam giac thuong");break;

    }

    }

    private double dientich()

    {

    return 0.25 * Math.Sqrt((a+b+c) * (a+b-c) * (a-b+c) *

    (b+c-a));

    }

    private double chuvi()

    {

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 27

    return (a + b + c);

    }

    private int loaitg()

    {

    if((a==b) || (b==c) || (a==c))

    {

    if (a==b && b==c)

    return 1;

    else {

    if ((a*a==b*b+c*c) || (b*b==a*a+c*c) ||

    (c*c==a*a+b*b))

    return 2;

    else return 3;

    }

    }

    else {

    if (a*a==b*b+c*c ||b*b==a*a+c*c ||c*c==a*a+b*b)

    return 4;

    else return 5;

    }

    }

    }

    class tester

    {

    static void Main(string[] args)

    {

    tamgiac tg = new tamgiac();

    tg.nhap();

    tg.hien();

    Console.ReadLine();

    }

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 28

    }

    }

    Kt qu sau khi chy chng trnh nh sau:

    Cc bn ch vo phn in nghing. l phng thc hien() ca lp nhng chng li c th truy nhp n phng thc tinh din tich v phng thc hin ca lp. Nh vy l trong cng mt lp cc phng thc cng cp c th truy xut ln nhau.

    V d 3:

    S dng lp stack trn xy dng mt chong trnh chuyn i c s m t h 10 sang h 2, h 8, h 16 bng cch s dng php chia lin tip.

    a, Hng dn:

    Mun i mt s t h 10 sang h 2, 8,16 th ta ly s chia lin tip cho h s mun i. mi ln chia, c s d th ta push n vo stack. Thc hin tip cho n khi s d nh hn s chia th dng li v pop ln lt cc phn t trong stack ra ta c kt qu.

    b, Bi gii mu:

    using System;

    using System.Collections.Generic;

    nhap thong so cho tam giac

    3

    4

    5

    tam giac ma ban vua nhap la:

    do dai ba canh: 3,4,5

    chu vi: 12

    dien tich:6

    la tam giac vuong

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 29

    using System.Text;

    namespace stack

    {

    class Stack

    {

    private int top;

    private int[] s;

    public bool empty()

    {

    return (top == -1);

    }

    public bool full()

    {

    return (top >= s.Length);

    }

    public Stack()

    {

    s = new int[20];

    top = -1;

    }

    public void push(int x)

    {

    if (!full())

    {

    top = top + 1;

    s[top] = x;

    }

    else

    Console.Write("Stack tran");

    }

    }

    public int pop()

    {

    if (empty())

    {

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 30

    Console.Write("Stack can");

    return 0;

    }

    else return s[top--];

    }

    }

    class tester

    {

    static void Main()

    {

    int n, a, k;

    Console.Write("Nhap vao so can doi:");

    n = int.Parse(Console.ReadLine());

    Console.Write("Nhap vao he so can chuyen:");

    a = int.Parse(Console.ReadLine());

    Stack T = new Stack();

    if (a == 2)

    {

    while (n != 0)

    {

    T.push(n % 2);

    n = n / 2;

    }

    Console.Write("Ket qua chuyen sang he nhi phan:");

    while (!T.empty())

    {

    Console.Write("{0}", T.pop());

    }

    }

    if (a == 8)

    {

    while (n != 0)

    {

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 31

    T.push(n % 8) ;

    n = n / 8;

    }

    Console.Write("Ket qua chuyen sang he bat phan:");

    while (!T.empty())

    {

    Console.Write("{0}", T.pop());

    }

    }

    if (a == 16)

    {

    string st = "0123456789ABCDEF";

    while (n != 0)

    {

    T.push((int)st[n % 16]);

    n = n / 16;

    }

    Console.Write("Ket qua chuyen sang he thap luc

    phan:");

    while (!T.empty())

    {

    Console.Write("{0}",(char)T.pop());

    }

    }

    Console.ReadLine();

    }

    }

    }

    Kt qu sau khi chy chng trnh l:

    Nhap vao so can doi: 8

    Nhap vao he can doi: 2

    Ket qua: 1000

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 32

    c hai vi d trn c mt phng thc public Stack () y chinh l mt phng thc thit lp ca lp stack nhng khng c tham s. Chinh phng thc ny khi to cho chng ta mt stack vi s phn t ti a l n ( n=20).

    3. Lp lng nhau v cch truy xut

    Xy dng mt lp n gin c s dng lp lng nhau. Xy dng lp tinhtong c phng thc nhp, tinh tng. Trong lp c cha lp nh hn l lp tinh hiu ca ba s trong mt s l thnh phn d liu ca lp cha.

    a, Hng dn:

    Thnh phn d liu ca lp cha (lp tinhtong) gm :

    public int x;

    public int y;

    static int c; khai bo l static lp trong sau ny c th s dng c Phng thc nhap(), tinhtong() Thnh phn d liu ca lp trong (lp tinhieu) gm

    int a;

    int b;

    Phng thc gm nhap(), hieu() tinh hiu trong c s dng bin c ca lp cha. S dng lp tinhieu: Khai bo mt i tng ca lp tinhhieu th phi ch r c lp cha n na. Vi d khai bo mt i tng con ca lp tinhhieu th phi khai bo: tinhtong.tinhhieu con = new tinhtong.tinhhieu();

    b, Bi gii mu:

    using System;

    namespace loplongnhau

    {

    class tinhtong // lop chua

    {

    public int x;

    public int y;

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 33

    static int c;

    public void nhap()

    {

    Console.Write("x =");

    x = Convert.ToInt32(Console.ReadLine());

    Console.Write("y =");

    y = Convert.ToInt32(Console.ReadLine());

    Console.Write("c =");

    c = int.Parse(Console.ReadLine());

    }

    public double tong()

    {

    return (x + y);

    }

    public class tinhhieu // lop long

    {

    int a;

    int b;

    public void nhap()

    {

    Console.WriteLine("nhap thong tin cho doi tuong

    lop ben trong:");

    Console.Write("a =");

    a = int.Parse(Console.ReadLine());

    Console.Write("b =");

    b = int.Parse(Console.ReadLine());

    }

    public int hieu()

    {

    return (a - b - c);

    }

    }

    static void Main(string[] args)

    {

    Console.WriteLine("khai bao va su dung lop chua:");

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 34

    tinhtong cha = new tinhtong();

    cha.nhap(); // phuogn thuc nay cua lop cha

    Console.WriteLine("x+y={0}", cha.tong());

    Console.WriteLine("khai bao va su dung lop ben

    trong:");

    tinhtong.tinhhieu con = new tinhtong.tinhhieu();

    con.nhap();

    Console.Write("a-b-c={0}",con.hieu());

    Console.ReadKey();

    }

    }

    }

    Kt qu sau khi chy chng trnh:

    4. Chng trnh khai bo nhiu lp

    Xy dng 2 lp: lp hocsinh bao gm h tn hc sinh, m s hc sinh, nm sinh ca hc sinh v lp danhsach dng cha ton b hc sinh nhp, sp xp th t li theo nm sinh. a, Hng dn: Cc thuc tinh ca lp hocsinh:

    private string mshv;

    private string hoten;

    y = 6

    c = 3

    x+y=15

    khai bao va su dung lop con:

    nhap thong tin cho doi tuong lop con:

    a = 8

    b = 6

    a - b - c = -1

    Khai bao va su dung lop chua:

    x = 9

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 35

    private int namsinh;

    Cc phng thc: Phng thc nhp thng tin, Phng thc hin thng tin Phng thc so snh nm sinh ca sinh vin tr ra gi tr l 0; 1 hay -1 khi tng ng vi kt qu bng, ln hn, nh hn. Cc thuc tinh ca lp dachsach chinh l mt mng cc hc sinh lp hocsinh Phng thc gm Nhp: thi hnh phng thc nhap() cho tng i tng kiu hocsinh

    In danh sch: thi hnh phng thc hien() cho tng i tng kiu hocsinh Sp xp danh sch theo th t nm sinh gim dn b, Bi gii mu:

    namespace vidu6

    {

    class Program

    {

    class Hocsinh

    {

    private string ms;

    private string hoten;

    private int namsinh;

    public Hocsinh()

    {

    }

    public void nhap()

    {

    Console.Write("ma so:"); ms = Console.ReadLine();

    Console.Write("ho ten:"); hoten =

    Console.ReadLine();

    Console.Write("nam sinh:");

    namsinh = int.Parse(Console.ReadLine());

    }

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 36

    public void nhap()

    {

    Console.Write("ma so:"); ms = Console.ReadLine();

    Console.Write("ho ten:"); hoten =

    Console.ReadLine();

    Console.Write("nam sinh:");

    namsinh = int.Parse(Console.ReadLine());

    }

    public int ssnamsinh(Hocsinh a,Hocsinh b)

    {

    int k;

    if (a.namsinh > b.namsinh)

    k =1;

    else {

    if (a.namsinh == b.namsinh)

    k= 0;

    else k = -1;

    }

    return k;

    }

    public void print()

    {

    Console.WriteLine("\t{0}\t{1}\t{2}", ms, hoten,

    namsinh);

    }

    }

    class Danhsach

    {

    int n, i;

    private Hocsinh[] ds;

    public Danhsach(int n)

    {

    ds = new Hocsinh[n];

    }

    public void nhapds()

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 37

    {

    Console.Write("so hoc sinh = ");

    n = Convert.ToInt32(Console.ReadLine());

    ds = new Hocsinh[n];

    for (i = 0; i < ds.Length; i++)

    ds[i] = new Hocsinh();

    for (i = 0; i < n; i++)

    {

    Console.WriteLine("hoc sinh thu {0}:", i + 1);

    ds[i].nhap();

    }

    }

    public void printds()

    {

    Console.WriteLine("danh sach hoc sinh ban dau:");

    for (i = 0; i < ds.Length; i++)

    {

    Console.WriteLine("\t \ t \t ");

    Console.Write("\t{0}", i + 1);

    ds[i].print();

    }

    }

    public void sapxep()

    {

    for (i = 0; i < n; i++)

    {

    Hocsinh max = ds[i];

    for (i = 0; i < n; i++)

    {

    if (max.ssnamsinh(ds[i], ds[i + 1]) == 1)

    {

    max= ds[i + 1];

    ds[i + 1] = ds[i];

    ds[i] = max;

    }

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 38

    for (i = 0; i < n; i++)

    ds[i].print();

    }

    }

    }

    }

    static void Main(string[] args)

    {

    Danhsach d = new Danhsach(3);

    d.nhapds();

    d.printds();

    Console.WriteLine("danh sach sap sep theo nam

    sinh:");

    d.sapxep();

    Console.ReadLine();

    }

    }

    }

    Kt qu sau khi chy chng trnh:

    So hoc sinh = 3

    Hoc sinh thu 1:

    Ma so: hs1

    Ho ten: nguyen thi mai huong

    Nam sinh 1987

    Hoc sinh thu 2:

    Ma so: hs2

    Ho ten: nguyen van hai

    Nam sinh 1986

    Hoc sinh thu 3:

    Ma so: hs3

    Ho ten: ta van ngoc

    Nam sinh 1989

    Danh sach hoc sinh ban dau:

    Mhs ho ten nam sinh

    hs1 nguyen thi mai huong 1987

    hs2 nguyen van hai 1986

    hs3 ta van ngoc 1989

    Danh sach sap xep theo nam sinh:

    hs2 nguyen van hai 1986

    hs1 nguyen thi mai huong 1987

    hs3 ta van ngoc 1989

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 39

    5. T kha this

    1. S dng this phn bit tham s phng thc v bin thnh vin ca lp.

    Xy dng lp phung trnh bc hai n gin v thc hin tinh nghim cho phng trnh . Trong chng trnh c xy dng hm thit lp khng tham s v c tham s. S dng t kha thi trong bi phn bit r bin thnh vin ca lp v tham s ca phng thc.

    a, Hng dn: V trong bi ch yu cu xy dng mt lp n gin nn thnh phn thuc tinh v phng thc gm c: Thuc tinh: Cc h s ca phng trnh bc hai;

    - public double a, b, c; Phng thc :

    - Phng thc khi to khng tham s: public ptbachai() - Phng thc khi to ba tham s:public ptbachai(int a, int b,

    int c)

    V trong phng thc ny ta s dng tham s ca phng thc trng vi bin thnh vin ca lp nn ta phi s dng t kha thi phn bit gia chng.

    - Phng thc nhp - Phng thc hin phng trnh - Phng thc tinh nghim

    b, Bi gii mu:

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 40

    using System;

    namespace vidu4

    {

    class Ptbachai

    {

    public double a, b, c;

    public ptbachai()

    {

    a = 5;

    b = 3;

    c = 8;

    }

    public ptbachai(int a, int b, int c)

    {

    this.a = a;

    this.b = b;

    this.c = c;

    }

    public void nhap()

    {

    Console.WriteLine("nhap he so cho PTB2:");

    a = Convert.ToInt32(Console.ReadLine());

    b = Convert.ToInt32(Console.ReadLine());

    c = Convert.ToInt32(Console.ReadLine());

    }

    private void tinhnghiem()

    {

    double x, y;

    double delta;

    delta=this.b*this.b-4*this.a*this.c;

    if (delta < 0)

    {

    Console.WriteLine("khong co nghiem");

    }

    else

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 41

    {

    if (delta == 0)

    {

    x = -this.b / 2 *this. a;

    Console.WriteLine("nghiem kep x = y ={0}",x);

    }

    else {

    x = (-this.b - Math.Sqrt(delta)) / 2 *this.a;

    y = (-this.b + Math.Sqrt(delta)) / 2 *this.a;

    Console.WriteLine("PT co hai nghiem phan

    biet:");

    Console.WriteLine("x = {0}; y = {1}", x, y);

    }

    }

    }

    public void hien()

    {

    Console.WriteLine("phuong trinh bac hai:");

    Console.WriteLine("{0}*x2 + {1}*x + {2}", this.a,

    this.b, this.c);

    }

    class tester

    {

    static void Main(string[] args)

    {

    ptbachai x = new ptbachai();

    x.hien(); x.tinhnghiem();

    ptbachai y = new ptbachai();

    y.nhap();

    y.hien();

    y.tinhnghiem();

    Console.ReadKey();

    }

    }

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 42

    }

    }

    Trong phng thc khi to ba tham s c cu lnh this.a=a th this.a chinh l bin thnh vin ca lp cn a y li l tham s ca phng thc m bn nhp vo khi chy chng trnh v n c truyn vo bng cu lnh gn. Cc bin public c truy xut ti mi ni trong chng trnh. Bin khai bo bng t kha ny c hiu nh l bin cng cng ca lp v c th truy xut bt k nu mun. Kt qu sau khi chy chng trnh:

    2. S dng t kha th trao i tng hin hnh nh mt tham s, minh hc s dng bin khai bo private

    Xy dng mt lp nhanvien nhp h tn, chc v nhn vin, tin lng nhn vin, hin thng tin c lin quan. Xy dng mt lp dng tinh thu m nhn vin phi np cho nh nc t tin lng . (S tin ny hin th cng cc thng tin lin quan n nhn vin trong phng thc hin th ca lp nhanvien).

    phuong trinh bac hai:

    5*x2 + 3*x + 8

    khong co nghiem

    nhap he so cho PTB2

    5

    8

    - 4

    phuong trinh bac hai:

    5*x2 + 8*x + -4

    PT co hai nghiem phan biet:

    x = -50; y = 10

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 43

    a, Hng dn:

    Cc thnh phn ca lp nhanvien chng ta vn xy dng bnh thng nh cc vi d trc. Ch khc ch trong phng thc hin c tham chiu ti i tng ca lp Thue dng tinh thu phi np nh sau: Thue.Thuephainop(this) trong Thuephainop l phng thc tinh thu ca class Thue c i s l i tng lp nhanvien.

    b, Bi gii mu:

    using System;

    class Nhanvien

    {

    private string hoten;

    private string chucvu;

    private decimal tienluong;

    public Nhanvien()

    {

    }

    public Nhanvien(string hoten, string chucvu, decimal

    tienluong)

    {

    Console.WriteLine("Su dung PTTL 3 tham so:");

    this.hoten = hoten;

    this.chucvu = chucvu;

    this.tienluong = tienluong;

    }

    public void nhap()

    {

    Console.Write("Ho ten:");

    hoten = Console.ReadLine();

    Console.Write("Chuc vu:");

    chucvu = Console.ReadLine();

    Console.Write("Tien luong:");

    tienluong = decimal.Parse(Console.ReadLine());

    }

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 44

    public void dipslayNV()

    {

    Console.WriteLine("Ho ten:\t{0}", hoten);

    Console.WriteLine("Ma chuc vu:\t{0}", chucvu);

    Console.WriteLine("Tien luong la:\t{0:C}", tienluong);

    // Trao doi tuong cua lop Thue nhu mot doi so

    Console.WriteLine("Thue phai nop:\t{0:C} ",

    Thue.Thuephainop(this));

    }

    // xay dung phuong thuc chi doc gia tri cua doi tuong

    public decimal luong

    {

    get { return tienluong; }

    }

    }

    class Thue

    {

    public static decimal Thuephainop(Nhanvien E)

    {

    return 0.03m * E.luong;

    // E.luong: doc gia tri cua truong luong

    }

    }

    class MainClass

    {

    static void Main()

    {

    Nhanvien E1 = new Nhanvien("Nguyen Tien Quynh

    Anh","thu ki", 2200000);

    E1.dipslayNV();

    Nhanvien E2 = new Nhanvien();

    E2.nhap();

    E2.dipslayNV();

    Console.ReadKey();

    }

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 45

    }

    Kt qu khi chy chng trnh:

    6. Hm thit lp v hm thit lp sao chp, hm sao chp cho lp vector

    Xy dng mt lp vector n gin c s dng cc hm thit lp khng tham s, mt tham s v hai tham s.Trong lp c s dng hm thit lp sao chp, hm sao chp cho i tng ca lp (phn bit hai cch dng ca constructor)

    a, Hng dn:

    V vecto l mt i tng m cc thnh phn d liu khng tnh nn phi khai bo vng nh dng cha cc ta l mt mng mt chiu: float[] v

    i vi cc hm thit lp khng tham s v mt tham s th khng c g ng ngi c. Ch c hm thit lp hai tham s th cn ch mt cht: Trong hm thit lp hai tham s th mt tham s l s chiu ca vecto cn tham s cn li l mt mng mt chiu m

    Su dung PTTL 3 tham so:

    Hien thi thong tin:

    Ho ten: Nguyen Tien Quynh Anh

    Chuc vu: thu ki

    Tien luong: $2,200,000.00

    Thue phai nop: $ 66,000.00

    Nhap thong tin:

    Ho ten: Chu Thi Minh Ha

    Chuc vu: ke toan

    Tien luong: 2546000

    Hien thi thong tin:

    Ho ten: Chu Thi Minh Ha

    Chuc vu: ke toan

    Tien luong la: $2546000

    Thue phai nop: $76,380.00

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 46

    ta s c cc phn t ca mng vo cho vecto nn phng thc ny c khai bo nh sau:public vecto(int size, float[] u) trong float [] u chinh l mng c cha sn cc phn t.

    Vi hm thit lp sao chp th chinh l vic sao chp li gi tr ca cc thnh phn d liu c trong mt i tng cng lp vecto v a vo vng nh ca vecto c cp pht b nh.

    public vecto(int size, float[] u)

    {

    int i; n = size;

    v = new float[n];

    for (i = 0; i < n; i++)

    {

    v[i] = u[i];

    }

    }

    b, Chng trnh mu:

    using System;

    namespace vidu7

    {

    class Vecto

    {

    int n = 20;

    float[] v;

    public vecto()

    {

    int i;

    Console.WriteLine("\t Su dung ham thiet lap khong

    tham so:");

    Console.Write("\t So chieu cua vecto la:");

    i = Convert.ToInt32(Console.ReadLine());

    n = i;

    v = new float[n];

    Console.WriteLine("\t nhap thong so cho vecto:");

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 47

    for (i = 0; i < n; i++)

    {

    Console.Write("\t toa do thu {0}:", i);

    Console.Write("\t v[{0}]=", i + 1);

    v[i] = int.Parse(Console.ReadLine());

    }

    }

    public vecto(int size)

    {

    int i;

    Console.WriteLine("\t Su dung ham thiet lap mot tham

    so:");

    n = size;

    v = new float[n];

    Console.WriteLine("\t nhap thong so cho vecto:");

    for (i = 0; i < n; i++)

    {

    Console.Write("\t toa do thu {0}:", i);

    Console.Write("\t v[{0}]=", i + 1);

    v[i] = int.Parse(Console.ReadLine());

    }

    }

    public vecto(int size, float[] u)

    {

    int i;

    Console.WriteLine("\t Su dung ham thiet lap hai tham

    so:");

    n = size;

    v = new float[n];

    Console.WriteLine("\t tao mot vecto tu mot mang mot

    chieu:");

    for (i = 0; i < n; i++)

    {

    v[i] = u[i];

    }

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 48

    }

    public vecto(vecto u)

    {

    int i;

    Console.WriteLine("\t su dung ham thiet lap sao

    chep:");

    // xin cap phat vung nho co kich thuoc bang voi doi

    tuong cu

    v = new float[n = u.n];

    // thuc hien gan cac vung nho dong cua doi tuong cu

    sang doi tuong moi

    for (i = 0; i < n; i++)

    {

    v[i] = u.v[i];

    }

    }

    public void saochep(vecto b)

    {

    n = b.n;

    Console.WriteLine("\t Su dung ham sao chep");

    for (int i = 0; i < n; i++)

    {

    this.v[i] = b.v[i];

    }

    }

    public void hien()

    {

    Console.Write(\t "(");

    for (int i = 0; i < v.Length; i++)

    if (i == v.Length - 1)

    Console.Write("{0}", v[i]);

    else Console.Write("{0},", v[i]);

    Console.WriteLine(")");

    }

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 49

    class tester

    {

    static void Main(string[] args)

    {

    vecto v1 = new vecto();

    Console.Write("\t v1:");v1.hien();

    vecto v2 = new vecto(4);

    Console.Write("\t v2:");v2.hien();

    float[] a ={ 12, 8, 11, 3, 20 , 85 };

    vecto v3 = new vecto(4, a);

    Console.Write("\t v3:"); v3.hien();

    vecto v4 = new vecto(v3);

    Console.Write("\t v4:"); v4.hien();

    if (v3.n==v2.n)

    v3.saochep(v2);

    else {

    Console.WriteLine("\t khong tien hanh sao

    chep. Gia tri vecto van la:");

    }

    Console.Write("\t v3:"); v3.hien();

    Console.ReadLine();

    }

    }

    }

    }

    Kt qu sau khi chy chng trnh:

    v[2]=89 v1: (10,89)

    Su dung ham thiet lap mt tham so: Nhap thong so cho vecto:

    v[1]=4

    v[2]=5

    Su dung ham thiet lap khong tham so:

    So chieu cua vecto la: 2

    Nhap thong so cho vecto:

    v[1]=10

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 50

    7. S dng hm thit lp sao chp v hm hy b

    Xy dng lp thoigian ly v thi gian hin hnh. C s dng phng thc khi to, phng thc sao chp v phng thc hy b.

    a, Hng dn: ly c thi gian hin hnh th ta s dng hm now. Cc thuc tinh ca lp gm ngy, thng, nm, gi, pht, giy c ly theo thi gian h thng thng qua hm System.DateTime.Now Cc phng thc ca lp gm:

    - public dipslay() dng hin th thng tin - public ThoiGian (System.DateTime tg): thit lp sao chp thi

    gian t mt i tng c - public ThoiGian( int Date,int Month,int Year,int Hour, int

    Minute,int Second): PT thit lp 6 tham s khi to gi tr cho bin i tng.

    - public ThoiGian(int Date,int Year,int Hour,int Second): PT thit lp 4 tham s khi to gi tr cho bin i tng.

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 51

    - public void saochep(ThoiGian TG) dng sao chp i tng.

    - ~ ThoiGian(): l phng thc hy b i tng ca lp.Phng thc ny s c gi t ng bi trnh thu gom rc ca C#

    b, Bi gii mu

    using System;

    namespace saochep

    {

    public class ThoiGian

    {

    private int Nam ;

    private int Thang = 7;

    private int Ngay = 30;

    private int Gio = 5;

    private int Phut = 19;

    private int Giay = 23;

    System.DateTime now = System.DateTime.Now;

    public void dipslay()

    {

    System.Console.WriteLine("\t Ngay:{0}/{1}/{2}",

    Ngay, Thang, Nam);

    System.Console.WriteLine("\t Gio:{0}:{1}:{2}", Gio,

    Phut, Giay);

    }

    public ThoiGian( System.DateTime tg)

    // hm thit lp sao chp {

    Nam = tg.Year;

    Thang = tg.Month;

    Ngay = tg.Day;

    Gio = tg.Hour;

    Phut = tg.Minute;

    Giay = tg.Second;

    }

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 52

    public void saochep(ThoiGian TG)

    {

    this.Gio=TG.Gio;

    this.Phut=TG.Phut;

    this.Giay=TG.Giay;

    this.Ngay = TG.Ngay;

    this.Thang = TG.Thang;

    this.Nam = TG.Nam;

    }

    public ThoiGian( int Date,int Month,int Year,int Hour,

    int Minute,int Second)

    // ham thiet lap 6 tham so

    {

    Nam = Year;

    Thang = Month;

    Ngay = Date;

    Gio = Hour;

    Phut = Minute;

    Giay = Second;

    }

    public ThoiGian(int Date, int Year, int Hour, int

    Second)

    {

    Nam = Year;

    Ngay = Date;

    Gio = Hour;

    Giay = Second;

    }

    ~ThoiGian()

    {

    Console.WriteLine("\t\t doi tuong da duoc huy");

    GC.SuppressFinalize(this);

    Console.ReadKey();

    }

    }

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 53

    public class Tester

    {

    static void Main()

    {

    System.DateTime currentTime =

    System.DateTime.Now;

    Console.WriteLine("\t Thoi gian hien hanh la:\t\t");

    ThoiGian tghh = new ThoiGian( currentTime );

    tghh.dipslay();

    Console.WriteLine("\t t1 khoi tao tu ham thiet lap sao

    chep:\t");

    ThoiGian t1 =tghh;

    t1.dipslay();

    Console.WriteLine("\t t2 goi ham thiet lap 6 tham

    so:\t");

    ThoiGian t2 = new ThoiGian(12,12,2007,4,56,39);

    t2.dipslay();

    Console.WriteLine("\t t1 sao chep tu doi tuong t2:\t\t");

    t1.saochep(t2);

    t1.dipslay();

    Console.WriteLine("\t t3 goi tu ham thiet lap 4 tham

    so:\t");

    ThoiGian t3 = new ThoiGian(15, 2008, 12, 40);

    t3.dipslay();

    Console.ReadKey();

    }

    }

    }

    Kt qu sau khi chy chng trnh:

    Thoi gian hien hanh la:

    Ngay: 8/6/2007

    Gio: 2:29:26

    T1 khoi tao tu ham thiet lap sao chep:

    Ngay: 8/6/2007

    Gio: 2:29:26

    T2 goi tu ham thiet lap 6 tham so:

    Ngay: 12/12/2007

    Gio: 4:56:39

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 54

    Trong vi d trn, hm hy b i tng bng phng thc SuppressFinalize ca i tng GC (Garbage Collector). Dng thng bo doi tuong da duoc huy xut hin ngay sau khi ta g mt phim bt k cho thy phng thc hy b c goi t ng trc khi kt thc chng trnh v gii phng vng nh cho cc i tng. Trong phng thc thit lp 4 tham s, cc tham s khng c khi to s ly gi tr mc nh ca bin hay gi tr khi gn ban u nn c kt qu nh trn.

    8. Kiu d liu mng, cc phng thc c gi tr tr v , constructor sao chp

    Xy dng lp Matrix cho cc ma trn cc phng thc nhp ma trn t bn phim, hin ma trn ra mn hnh, cng hai ma trn, tr hai ma trn, nhn hai ma trn.

    a, Hng dn:

    Ma trn c lu tr cc phn t trong mng hai chiu nn phi khai bo mt mng int[,] lu tr cc thnh phn .

    Cc phng thc thao tc vi ma trn: - Phng thc nhp: s tin hnh nhp cc phn t ca ma trn theo tng hng

    - Phng thc hin ma trn ln mn hnh

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 55

    - Phng thc chuyn v hai ma trn c gi tr tr v l mt ma trn. y ch l vic i v tri: cv.m[i,j]=this.m[j,i]

    - Phng thc tong(matran b) lm cng vic cng hai ma trn: tmp.m[i, j] = this.m[i, j] + b.m[i, j]

    - Phng thc tich(int k:): tinh tich ca ma trn vi mt s - Phng thc tich(matran b): tinh tich ca hai ma trn (y l phng thc chng vi phng thc tich ca ma trn vi mt s)

    - Phng thc hieu(matran b): tinh hiu ca hai ma trn

    tinh c tng, hiu, tich ca hai ma trn th chng phi tng thich nhau v iu kin c th hai ma trn cng c s hng v s ct th mi cng, tr c, ma trn ny phi c s ct bng s hng ca ma trn kia thi mi thc hin c php nhn hai ma trn. Trong nhng trng hp khc th sinh li. V vy cn c cng vic kim tra iu kin tng thich. V cc phng thc ny u tr ra gi tr l mt i tng lp ma trn

    b, Bi gii mu:

    using System;

    namespace matran

    {

    class Matrix

    {

    int i, j;

    int[,] m;// mmg lu tr phn t ca ma trn public Matrix()

    {

    m = new int[10, 20];

    }

    public Matrix(int h, int c)

    {

    m = new int[h, c];

    }

    public void nhap()

    {

    int i, j;

    for (i = 0; i < m.GetLength(0); i++)

    {

    Console.WriteLine("Nhap cac phan tu cho hang thu {0} :", i + 1);

    for (j = 0; j < m.GetLength(1); j++)

    {

    Console.Write("m[{0},{1}]= ", i, j);

    m[i, j] = Convert.ToInt32(Console.ReadLine());

    }

    }

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 56

    }

    public Matrix chuyenvi()

    {

    Matrix cv = new Matrix(this.m.GetLength(0), this.m.GetLength(1));

    for (i=0;i< this.m.GetLength(0);i++)

    {

    for (j=0;j

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 57

    {

    Matrix tmp = new Matrix(this.m.GetLength(0), b.m.GetLength(1));

    for (i = 0; i < this.m.GetLength(1); i++)

    for (j = 0; j < b.m.GetLength(0); j++)

    {

    tmp.m[i, j] = 0;

    for (int k = 0; k < tmp.m.GetLength(1); k++)

    tmp.m[i, j] = tmp.m[i, j] + this.m[j, k] * b.m[k, j];

    }

    return tmp;

    }

    public bool tuongthichcongtru(Matrix b)

    {

    return (this.m.GetLength(0) == b.m.GetLength(1));

    }

    public bool tuongthichnhan(Matrix b)

    {

    return (this.m.GetLength(1) == b.m.GetLength(0));

    }

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 58

    Console.WriteLine("hai ma tran khong tuong thich hang va cot");

    }

    Console.ReadKey();

    }

    }

    }

    }

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 59

    Kt qu sau khi chy chng trnh:

    9. S dng cc thnh phn tnh

    Xy dng lp Nhanvien qun l nhn vin bao gm m nhn vin, chc v ca nhn vin v h tn nhn vin. Trong lp s dng thnh phn tnh nh bin ton cc trong phm vi lp theo di

    nhap ma tran a:

    m[0,0]=1

    m[0,1]=2

    m[1,0]=3

    m[1,1]=1

    ma tran a:

    1 2 2 1

    nhap ma tran b:

    m[0,0]=0

    m[0,1]=1

    m[0,2]=3

    m[1,0]=5

    m[1,1]=2

    m[1,2]=3

    ma tran b la:

    0 1 3 5 2 3

    tich cua ma tran a va b la:

    10 5 9

    5 5 12

    ma tran chuyen vi cua a la;

    10 5 5 5 9 12

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 60

    khi mt i tng c to ra (bng cch cho bit s th t ca nhn vin mi ).

    a, Hng dn:

    Thnh phn d liu ca lp gm c: M nhn vin, chc v v h tn ca nhn vin u l d liu kiu string.

    theo di i tng mi khi mt nhn vin c to ra th dng mt bin static int demnhanvien c mc truy cp l public c th truy cp bt c khi no.

    Phng thc ca lp bao gm: Cc phng thc nhp, hin, thit lp thng thng. Ngoi ra cn c phng thc

    public static int sttnhanvien()

    {

    return ++demnhanvien;

    }

    tng s lng nhn vin hin thi. S th t ca nhn vin mc nh chinh bng s lng nhn vin hin thi.

    b, Bi gii mu:

    using System;

    public class nhanvien

    {

    public string manv;

    public string hoten;

    public string chucvu;

    public static int demnhanvien;

    public nhanvien() // pt thiet lap

    {

    }

    public nhanvien(string manv, string chucvu, string hoten)

    {// phng thc thit lp this.manv= manv;

    this.chucvu = chucvu;

    this.hoten = hoten;

    }

    public void nhap()

    {

    Console.Write("\t Nhap vao ma cua nhan vien: ");

    string nvid = Console.ReadLine();

    Console.Write("\t Nhap vao chu vu cua nhan vien:");

    string cv=Console.ReadLine();

    Console.Write("\t Nhap vao ho ten cua nhan vien: ");

    string name = Console.ReadLine();

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 61

    manv = nvid;

    chucvu = cv;

    }

    public void hienthi()

    {

    Console.WriteLine("\t Ma nhan vien \t: {0}", this.manv);

    Console.WriteLine("\t Chuc vu \t: {0}", this.chucvu);

    Console.WriteLine("\t Ho ten cua nhan vien \t: {0}", this.hoten);

    // truy nhp n thnh phn d liu tnh thng qua tn lp Console.WriteLine("\t So thu tu \t: {0}", nhanvien.demnhanvien);

    }

    public static int sttnhanvien()

    {

    return ++demnhanvien;

    }

    }

    class tester

    {

    static void Main()

    {

    Console.Write("\t So luong nhan vien hien thoi \t:");

    string n = Console.ReadLine();

    nhanvien.demnhanvien = Int32.Parse(n);

    Console.WriteLine("\t tao mot doi tuong:");

    nhanvien nv1 = new nhanvien();

    nv1.nhap();

    // gi phng thc tnh thng qua tn lp nhanvien.sttnhanvien();

    nv1.hienthi();

    Console.WriteLine("\t them mot doi tuong:");

    nhanvien nv2 = new nhanvien("gd","giam doc","Nguyen Ngoc Minh");

    nhanvien.sttnhanvien();

    nv2.hienthi();

    Console.ReadKey();

    }

    }

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 62

    Kt qu khi chy chng trnh:

    10. Hm khi to private cm to th hin ca i tng

    Chng trnhmu mt vi d n gin nh sau:

    So luong nhan vien hien thoi :445

    Tao mot doi tuong:

    Nhap vao ma cua nhan vien: nvkh

    Nhap vao chuc vu cua nhan vien: Nhan vien ke hoach

    Nhap vao ho ten cua nhan vien: Nguyen Van Hai Lam

    Thong tin ve nhan vien:

    Ma nhan vien :nvkh

    Chuc vu :Nhan vien ke hoach

    Ho ten :Nguyen Van Hai Lam

    So thu tu :446

    Them mot doi tuong:

    Thong tin ve nhan vien:

    Ma nhan vien :gd

    Chuc vu :giam doc

    Ho ten :Nguyen Ngoc Minh

    So thu tu :447

    namespace Static_class

    {

    public class vatnuoi

    {

    static vatnuoi()

    {

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 63

    // v trong lp khng c hm khi to public //vatnuoi cho = new vatnuoi(); // loi

    vatnuoi.dem = 15;

    Console.WriteLine("So luong vat nuoi luc dau la:{0}",vatnuoi.dem);

    Console.WriteLine("Them moi mot con vat nuoi: meo tam the");

    Console.WriteLine("So luong vat nuoi hien thoi la:{0}",

    vatnuoi.Soluong());

    Console.ReadLine();

    }

    }

    }

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 64

    Trong chng trnh nu bn c tnh khai bo:vatnuoi cho = new vatnuoi(); th s pht sinh li nh sau trong qu trnh chy:Static_class.vatnuoi.vatnuoi()' is inaccessible due to its protection level: khng to ra c i tng lp vatnuoi bi n c mc bo v. iu ny chng t rng chinh phng thc khi to tnh ngn cm to i tng th hin ca lp. Do vy ta ch c th truy cp ti cc phng thc tnh ca lp m thi.

    Kt qu khi chy chng trnh:

    T kt qu trn cho thy Mt phng thc khi to tnh s c gi ngay khi chng trnh bin dch m khng cn to i tng th hin no ca lp.

    11. Np chng phng thc

    1. Xy dng lp phanso v thao tc vi lp vi cc phng thc bao gm:

    - Phng thc khi to phn s c t bng 0 v mu bng 1 - Phng thc khi to (int ts, int ms) khi to phn s c t

    s bng ts v mu s bng ms - Phng thc nhp thng tin cho phn s - Phng thc cng hai phn s - Phng thc cng phn s vi mt s - Phng thc tr hai phn s - Phng thc tr 1 phn s cho mt s - Phng thc in kt qu ra mn hnh

    a, Hng dn: Thuc tinh ca lp: int ts,ms: t s v mu s ca phn s Cc phng thc ca lp:

    - Khi to khng tham s: pulic phanso() v gn gi tr ca t =0, mu s=1

    Loi goi nay duoc goi dau tien tu phuong thuc khoi tao static

    So luong vat nuoi luc dau la: 15

    Them mot con vat nuoi: meo tam the

    So luong vat nuoi hien thoi la: 16

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 65

    - Khi to hai tham s: public phanso(int tu,int mau) - Cng phn s vi phn s - cng phn s vi mt s - Tr phn s cho phn s - Tr phn s cho mt s - Phng thc hin kt qu ln mn hnh

    V trong bi ny c nhiu phng thc chng nhau (s chng phng thc) nn cc bn ch cch gi cc phng thc. b, Bi gii mu:

    kq.ts = a.ts * b.ms + a.ms * b.ts;

    kq.ms =a.ms * b.ms;

    Console.WriteLine("tong cua hai phan so la:{0}/{1}", kq.ts, kq.ms);

    }

    private void cong(phanso a, int c)

    {

    phanso kq = new phanso();

    kq.ts = a.ts + a.ms * c;

    kq.ms = a.ms ;

    Console.WriteLine("{0}/{1}", kq.ts, kq.ms);

    }

    private void hieu(phanso a, phanso b)

    {

    phanso kq = new phanso();

    kq.ts = a.ts * b.ms - a.ms * b.ts;

    kq.ms = a.ms * b.ms;

    Console.WriteLine(":{0}/{1}", kq.ts, kq.ms);

    }

    private void hieu(phanso a, int c)

    {

    phanso kq = new phanso();

    kq.ts = a.ts - a.ms * c;

    kq.ms = a.ms;

    Console.WriteLine("{0}/{1}", kq.ts, kq.ms);

    }

    private void hien(phanso p)

    {

    Console.WriteLine("phan so:{0}/{1}",p.ts,p.ms);

    }

    using System;

    using System.Collections.Generic;

    using System.Text;

    namespace phanso

    {

    class phanso

    {

    public int ts;

    public int ms;

    //ham thiet lap ko tham so

    public phanso()

    {

    ts = 0;

    ms = 1;

    }

    //phuong thuc thiet lap hai tham so

    public phanso(int t, int m)

    {

    ts = t;

    ms = m;

    }

    public void nhap()

    {

    Console.Write("nhap tu so:");

    ts = Convert.ToInt32(Console.ReadLine());

    Console.Write("nhap mau so:");

    ms = Convert.ToInt32(Console.ReadLine());

    }

    private void cong(phanso a,phanso b)

    {

    phanso kq = new phanso();

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 66

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 67

    Kt qu sau khi chy chng trnh l:

    c = Convert.ToInt32(Console.ReadLine());

    Console.Write("tong cua phan so thu nhat voi c la:");

    KQ.cong(P, c);

    Console.Write("hieu cua phan so thu nhat voi c la:");

    KQ.hieu(P, c);

    Console.Write("tong cua phan so thu hai voi c la:");

    KQ.cong(Q, c);

    Console.ReadKey();

    }

    }

    }

    }

    goi phuong thuc thiet lap khong tham so:

    phan so: 0/1

    nhap P:

    tu so = 5

    mau so = 6

    phan so : 5/6

    nhap Q:

    tu so = 3

    mau so = 6

    phan so: 3/6

    tong cua P & Q la: 48/36

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 68

    Trong vi d trn c ti 6 phng thc chng nhau tng i mt l hm thit lp khng tham s public phanso() v hm thit lp hai tham s public phanso(int t, int m) dng khi to cc gi tr ban u cho bin i tng phn s; hai phng thc cng (gia hai phn s: private void cong(phanso a,phanso b), gia phn s vi mt s private void cong(phanso a, int c)) v hai phng thc tr (gia phn s vi mt s private void hieu(phanso a, phanso b), gia phn s v mt s private void hieu(phanso a, int c)). Cc phng thc trng nhau v tn nhng khc nhau v s lng tham s, khc nhau v thnh phn d liu ca tng i s ca phng thc. Ngoi ra th chng phng thc cn khc nhau v kiu d liu tr v ca phng thc na. Tt nhin l vic s dng chng cn phi phn bit r tng phng thc da vo s khc nhau ca tng phng thc. Nu khng th s pht sinh li do trnh bin dch.

    2. Xy dng mt lp vecto v hin cc php ton trn vector a, Hng dn: Thuc tinh: - Cn cp pht mt vng nh ng lu cc thnh phn d liu ca mt vecto. Phng thc:

  • Bi tp lp trnh hng i tng vi C# Nm 2008

    Ti liu hng dn thc hnh Mn LTHDT vi C# 69

    - Phng thc khi to - Phng thc sao chp

    - Phong thc tinh tng, hiu, tich hai vecto (ch v phng thc tr ra gi tr )

    - Phng thc nhp, hin vecto b, Bi gii mu:

    }

    // Cong hai vecto

    public vecto cong(vecto u)

    {

    vecto tmp=new vecto(v.Length);

    if (v.Length == u.v.Length)

    for (int i = 0; i < v.Length; i++)

    using System;

    class vecto

    {

    //Khai bao mang v chua cc thnh phn ta ca vector int[] v;

    //Phuong thuc khoi tao khong tham so

    public vecto()

    {

    v=new int[10];

    }

    public vecto(int n)// phuong thuc khoi co tham so khoi tao vecto n chieu

    {

    v=new int[n];

    }

    public double dodai()

    {

    return Math.Sqrt(this.tichvohuong(this));

    }

    public void nhap()

    {

    Console.WriteLine("nhap cac thanh phan cua vecto :");

    for (int i = 0; i < v.Length; i++)

    {