GiaoTrinh c#

Embed Size (px)

Citation preview

  • I HC NNG

    TRNG CAO NG CNG NGH THNG TIN

    B MN CNG NGH

    GIO TRNH

    LP TRNH .NET

    Dch v tng hp: L Vn Minh

    (Lu hnh ni b)

    NNG, 07/2008

  • LI NI U

    Gio trnh Lp trnh .Net c bin son nhm mc ch cung cp

    nhng kin thc c bn v lp trnh trong mi trng .Net ca Microsoft.

    Vi gio trnh ny sinh vin s c c cc kin thc v lp trnh to ra

    cc dng ng dng khc nhau, bao gm: ng dng dng lnh (Console

    Application), ng dng giao din windows (Windows Application) v ng

    dng giao din web (ASP.NET Website Application).

    V y l phin bn u tin nn gio trnh ny cn c nhng thiu st,

    hn ch. Tc gi mong nhn c s gp qu bu t pha bn c. Mi

    chi tit xin lin lc qua a ch email: [email protected]

    Xin chn thnh cm n.

  • i

  • Mc lc ii

    MC LC

    VISUAL STUDIO V .NET FRAMEWORK ..............................................1

    I. Mc tiu ..................................................................................................................... 1

    II. .NET Framework ................................................................................................... 1

    II.1. Khi nim ...................................................................................................... 1

    II.2. Kin trc ca .NET Framework..................................................................... 1

    II.3. Cc ngn ng thuc h .NET ........................................................................ 2

    II.4. Cc th vin c sn ca .Net Framework ...................................................... 2

    III. Visual Studio ......................................................................................................... 3

    III.1. Khi nim .................................................................................................. 3

    III.2. Cch t chc chng trnh ca Visual Studio ........................................... 3

    III.3. Cc dng Project ca Visual Studio .......................................................... 4

    IV. Ngn ng lp trnh C# ........................................................................................... 4

    IV.1. Khi nim .................................................................................................. 4

    IV.2. c im .................................................................................................... 4

    LP TRNH C# CN BN ............................................................................6

    I. Mc tiu ..................................................................................................................... 6

    II. Bt u vi Console Application ........................................................................... 6

    II.1. To Project ..................................................................................................... 6

    II.2. Lp trnh ........................................................................................................ 8

    II.3. Bin dch ........................................................................................................ 8

    II.3.1. Bin dch tng phn ................................................................................... 8

    II.3.2. Bin dch ton phn ................................................................................... 9 II.4. Chy chng trnh ......................................................................................... 9

    II.4.1. Ch debug ........................................................................................... 10

    II.4.2. Ch non-debug .................................................................................... 10

    III. Bin v phm vi hot ng ca bin trong C#..................................................... 11

    III.1. Bin .......................................................................................................... 11

    III.2. Phm vi hot ng ca bin ..................................................................... 11

    IV. Hng..................................................................................................................... 12

    V. Kiu d liu ......................................................................................................... 12

    V.1. Kiu gi tr (Value Types) ........................................................................... 13

    V.1.1. Kiu d liu s nguyn ............................................................................ 13 V.1.2. Kiu d liu du chm ng .................................................................... 13

    V.1.3. Cc kiu d liu khc .............................................................................. 13

    V.2. Kiu tham chiu (Reference Type) .............................................................. 13

    VI. Cu trc iu kin ................................................................................................ 14

    VI.1. Cu lnh iu kin if..else ....................................................................... 14

    VI.1.1. C php ................................................................................................... 14

    VI.1.2. Cch s dng ........................................................................................... 15 VI.2. Cu lnh switch..case............................................................................... 15

    VI.2.1. C php ................................................................................................... 15

  • Mc lc iii

    VI.2.2. Cch s dng ........................................................................................... 15

    VII. Cu trc lp .......................................................................................................... 16

    VII.1. Cu trc lp for ........................................................................................ 16

    VII.1.1. C php ............................................................................................... 16

    VII.1.2. Cch s dng ....................................................................................... 16

    VII.2. Cu trc lp while .................................................................................... 17

    VII.2.1. C php ............................................................................................... 17

    VII.2.2. Cch s dng ....................................................................................... 17 VII.3. Cu trc lp do..while .............................................................................. 17

    VII.3.1. C php ............................................................................................... 17

    VII.3.2. Cch s dng ....................................................................................... 17 VII.4. Cc lnh h tr cho cu trc lp .............................................................. 18

    VII.4.1. Lnh break ........................................................................................... 18

    VII.4.2. Lnh continue ...................................................................................... 18

    VIII. Mng (Array) ................................................................................................... 19

    VIII.1. Mng mt chiu ....................................................................................... 19

    VIII.1.1. C php khai bo ................................................................................. 19

    VIII.1.2. Cch s dng ....................................................................................... 19

    VIII.1.3. Cu trc lp foreach ............................................................................ 19

    VIII.2. Mng hai chiu (Ma trn) ........................................................................ 20

    VIII.2.1. C php khai bo ................................................................................. 20

    VIII.2.2. Cch s dng ....................................................................................... 20

    IX. X l nhp xut file ............................................................................................. 21

    IX.1. Khi nim file .......................................................................................... 21

    IX.2. Phn loi .................................................................................................. 21

    IX.2.1. File vn bn (text file) ............................................................................. 21

    IX.2.2. File nh phn (binary file) ....................................................................... 22

    IX.3. c v ghi file vn bn ............................................................................ 22

    IX.3.1. c file vn bn bng StreamReader ...................................................... 22

    IX.3.2. Ghi file vn bn bng StreamWriter ........................................................ 24

    LP TRNH HNG I TNG VI C# ........................................... 25

    I. Mc tiu ................................................................................................................... 25

    II. Lp (Class) .......................................................................................................... 25

    III. i tng (Object) .............................................................................................. 27

    IV. Thuc tnh (Attribute) .......................................................................................... 27

    V. Phng thc (Method)......................................................................................... 27

    VI. Np chng ton t (Overloading) ........................................................................ 28

    VII. K tha (Inheritance) ........................................................................................... 29

    VIII. a hnh (Polymorphism) ................................................................................. 31

    IX. Interface ............................................................................................................... 33

    X L BIT L ........................................................................................... 34

    I. Mc tiu ................................................................................................................... 34

    II. Bit l (Exception) ............................................................................................... 34

    II.1. Chng trnh v li ...................................................................................... 34

  • Mc lc iv

    II.2. Khi nim bit l ......................................................................................... 35

    III. X l bit l (Exception Handler) ....................................................................... 35

    III.1. C ch try/catch ....................................................................................... 35

    III.2. X l bit l lng nhau ............................................................................ 37

    III.3. X l bit l song song ............................................................................ 40

    TH VIN LIN KT NG ................................................................... 42

    I. Mc tiu ................................................................................................................... 42

    II. Th vin trong lp trnh ....................................................................................... 42

    II.1. Khi nim .................................................................................................... 42

    II.2. Phn loi th vin ........................................................................................ 43

    II.2.1. Th vin tnh ............................................................................................ 43

    II.2.2. Th vin lin kt ng ............................................................................. 43

    III. Namespace ........................................................................................................... 44

    IV. Th vin lin kt ng ......................................................................................... 44

    IV.1. Cch xy dng th vin vi Visual Studio 2005 ..................................... 44

    IV.1.1. To mt project cho th vin ................................................................... 44

    IV.1.2. Cu hnh cho project ............................................................................... 45

    IV.1.3. Xy dng lp v phng thc cn thit .................................................. 46

    IV.2. Cch s dng th vin ............................................................................. 47

    IV.2.1. To thm tham chiu (add reference). ..................................................... 47

    IV.2.2. Khai bo tham chiu ................................................................................ 48

    IV.2.3. S dng th vin ...................................................................................... 49

    V. Cc namespace c sn ca .Net Framework 2.0 .................................................. 49

    V.1. Namespace System.Windows.Forms........................................................... 49

    V.2. Namespace System.Data .............................................................................. 50

    LP TRNH NG DNG WINDOWS ...................................................... 51

    I. Mc tiu ................................................................................................................... 51

    II. Cc bng iu khin ............................................................................................ 51

    II.1. Toolbox panel .............................................................................................. 52

    II.2. Solution Explorer panel ............................................................................... 53

    II.3. Properties panel ........................................................................................... 54

    III. Form v Label ...................................................................................................... 54

    III.1. Form ........................................................................................................ 54

    III.1.1. Khi nim Form ....................................................................................... 54

    III.1.2. Cc thuc tnh ca Form ......................................................................... 54 III.1.3. Cc s kin ca Form .............................................................................. 55

    III.2. Label ........................................................................................................ 56

    III.2.1. Khi nim Label ...................................................................................... 56 III.2.2. Cc thuc tnh ca Label ......................................................................... 56 III.3. ng dng Form v Label ......................................................................... 56

    III.3.1. To mi project ....................................................................................... 56 III.3.2. i tn Form chnh ................................................................................. 57

    III.3.3. t tiu cho Form ............................................................................... 58 III.3.4. Ci t s kin FormClosed .................................................................... 59 III.3.5. Thm Label vo Form ............................................................................. 60

  • Mc lc v

    III.3.6. Bin dch v chy ng dng .................................................................... 62

    IV. TextBox v Button .............................................................................................. 62

    IV.1. TextBox ................................................................................................... 62

    IV.1.1. Khi nim TextBox .................................................................................. 62 IV.1.2. Cc thuc tnh ca TextBox ..................................................................... 62

    IV.1.3. Cc s kin ca TextBox ......................................................................... 63 IV.2. Button ...................................................................................................... 63

    IV.2.1. Khi nim Button ..................................................................................... 63 IV.2.2. Cc thuc tnh ca Button ....................................................................... 63 IV.2.3. Cc s kin ca Button ............................................................................ 64

    IV.3. ng dng TextBox v Button ................................................................. 64

    IV.3.1. To project, to Form v cc Label ........................................................ 64

    IV.3.2. To cc TextBox ...................................................................................... 64

    IV.3.3. Thm cc Button ...................................................................................... 65

    IV.3.4. Ci t s kin cho tng Button .............................................................. 66

    IV.3.5. Bin dch v chy chng trnh ............................................................... 67

    V. ComboBox, CheckBox, RadioButton ................................................................. 67

    V.1. ComboBox ................................................................................................... 67

    V.1.1. Khi nim ComboBox .............................................................................. 67

    V.1.2. Cc thuc tnh ca ComboBox ................................................................ 67

    V.1.3. Cc phng thc ca ComboBox ............................................................ 68 V.1.4. Cc s kin ca ComboBox ..................................................................... 68

    V.2. CheckBox .................................................................................................... 68

    V.2.1. Khi nim CheckBox ............................................................................... 68

    V.2.2. Cc thuc tnh ca CheckBox .................................................................. 69

    V.2.3. Cc s kin ca CheckBox ...................................................................... 69

    V.3. RadioButton ................................................................................................. 69

    V.3.1. Khi nim RadioButton ........................................................................... 69

    V.3.2. Cc thuc tnh ca RadioButton .............................................................. 69

    V.3.3. Cc s kin ca RadioButton .................................................................. 69 V.4. ng dng ComboBox, CheckBox, RadioButton ........................................ 69

    V.4.1. To project, to Form, to cc Label v TextBox ................................... 70

    V.4.2. To cc RadioButton ............................................................................... 70 V.4.3. To ComboBox ........................................................................................ 71 V.4.4. To cc CheckBox ................................................................................... 72

    V.4.5. To Button ............................................................................................... 73

    V.4.6. Bin dch v chy chng trnh ............................................................... 73

    VI. MDI Form v MenuStrip ..................................................................................... 74

    VI.1. MDI Form ................................................................................................ 74

    VI.1.1. Khi nim MDI Form .............................................................................. 74

    VI.1.2. Cc thuc tnh ca MDI Form ................................................................ 75 VI.2. MenuStrip ................................................................................................ 75

    VI.2.1. Khi nim MenuStrip ............................................................................... 75 VI.2.2. Cc thuc tnh ca MenuStrip ................................................................. 75 VI.3. ToolStripMenuItem ................................................................................. 75

    VI.3.1. Khi nim ToolStripMenuItem ................................................................ 75

    VI.3.2. Cc thuc tnh ca ToolStripMenuItem .................................................. 75

  • Mc lc vi

    VI.3.3. Cc s kin ca ToolStripMenuItem ....................................................... 76

    VI.4. ng dng MDI Form, MenuStrip ............................................................ 76

    VI.4.1. To project v cu hnh MDI Form......................................................... 76

    VI.4.2. To Form LogIn v Form Register ......................................................... 76 VI.4.3. To MenuStrip ......................................................................................... 77

    VI.4.4. Vit s kin cho tng ToolStripMenuItem ............................................... 77

    TNG TC C S D LIU ................................................................. 78

    I. Mc tiu ................................................................................................................... 78

    II. ADO.NET ............................................................................................................ 78

    II.1. Khi nim .................................................................................................... 78

    II.2. Kin trc ...................................................................................................... 78

    II.3. Cc namespace phc v cho ADO.NET...................................................... 80

    III. SqlConnection, SqlCommand ............................................................................. 80

    III.1. SqlConnection ......................................................................................... 80

    III.1.1. Khi nim SqlConnection ........................................................................ 80

    III.1.2. Cc thuc tnh ca SqlConnection .......................................................... 80

    III.1.3. Cc phng thc ca SqlConnection ...................................................... 81

    III.2. SqlCommand ........................................................................................... 81

    III.2.1. Khi nim SqlCommand .......................................................................... 81

    III.2.2. Cc thuc tnh ca SqlCommand ............................................................ 81

    III.2.3. Cc phng thc ca SqlCommand ........................................................ 82

    III.3. ng dng SqlConnection, SqlCommand, ExcuteNonQuery .................. 82

    III.3.1. To c s d liu ..................................................................................... 82

    III.3.2. To bng tblUser ..................................................................................... 83

    III.3.3. To stored procedure .............................................................................. 84

    III.3.4. Lp trnh tng tc c s d liu ............................................................ 85

    III.3.5. Bin dch v chy ng dng .................................................................... 86

    IV. SqlDataReader v phng thc ExcuteReader.................................................... 87

    IV.1. SqlDataReader ......................................................................................... 87

    IV.1.1. Khi nim SqlDataReader ....................................................................... 87 IV.1.2. Cc thuc tnh ca SqlDataReader ......................................................... 87

    IV.1.3. Cc phng thc ca SqlDataReader ..................................................... 87

    IV.2. Phng thc ExcuteReader ..................................................................... 88

    IV.3. ng dng SqlDataReader v phng thc ExcuteReader ...................... 88

    V. SqlDataAdapter, DataSet v DataGridView........................................................ 89

    V.1. SqlDataAdapter ........................................................................................... 89

    V.2. DataSet ........................................................................................................ 89

    V.3. DataGridView .............................................................................................. 90

    V.3.1. Khi nim DataGridView ........................................................................ 90

    V.3.2. Cc thuc tnh ca DataGridView .......................................................... 90 V.3.3. Cc s kin ca DataGridView ............................................................... 90

    V.4. ng dng SqlDataAdapter, DataSet, DataGridView .................................. 90

    V.4.1. To project ............................................................................................... 90

    V.4.2. Thm i tng DataGridView ............................................................... 90 V.4.3. Ci t s kin Load ca Form ............................................................... 91 V.4.4. Bin dch v chy chng trnh ............................................................... 92

  • Mc lc vii

    KT LUN .................................................................................................... 93

    PH LC ........................................ ERROR! BOOKMARK NOT DEFINED.

  • Mc lc viii

  • L Vn Minh Trng Cao ng Cng ngh Thng tin, i hc Nng 1

    Chng 1

    Visual Studio v .NET Framework

    I. Mc tiu

    Trong chng ny, ngi hc s c cung cp mt s kin thc v cc vn sau:

    1. Microsoft .Net Framework

    2. Microsoft Visual Studio

    3. Ngn ng lp trnh C#

    II. .NET Framework

    II.1. Khi nim

    Microsoft .NET Framework l mt thnh phn c th c ci thm hoc c sn trong

    cc h iu hnh Windows. N cung cp nhng gii php c lp trnh sn cho nhng

    yu cu thng thng ca chng trnh qun l vic thc thi cc chng trnh vit trn

    framework, ngi dng cui cn phi ci framework c th chy cc chng trnh c

    pht trin bng cc ngn ng trong h .NET. .NET Framework do Microsoft a ra v c

    s dng trong hu ht cc ng dng vit trn nn Windows. Nhng gii php c lp trnh

    sn hnh thnh nn mt th vin cc lp ca framework, c s dng trong nhiu lnh vc

    ca lp trnh nh: giao din ngi dng, truy cp d liu, kt ni c s d liu, m ho, pht

    trin nhng ng dng website, cc gii thut s hc v giao tip mng. Th vin lp ca

    framework c lp trnh vin s dng, kt hp vi chng trnh ca chnh mnh to nn

    cc ng dng.

    II.2. Kin trc ca .NET Framework

    Microsoft t chc .NET Framework thnh nhiu tng, qu trnh bin dch v thc thi mt

    chng trnh vit trn nn .NET Framework c thc hin tng bc t phn m ngun n

    phn m my.

    M ngun ca chng trnh sau khi bin dch s thnh ngn ng trung gian (Common

    Intermediate Language - CIL). Ngn ng ny bin dch phn ln cc th vin c vit trn

    nn .NET thnh cc th vin lin kt ng (Dynamic Linked Library - DLL). Vi gii php

    ny, cc ngn ng c .NET Framework h tr s d dng s dng li ln nhau. Mt

    chng trnh c vit bng ngn ng C# c th s dng cc lp, cc thuc tnh c vit

    trc bng ngn ng VB.NET hoc J#.

    Tng di cng ca cu trc phn tng ca .NET Framework l Common Language

    Runtime cn c gi l CLR. y l thnh phn quan trng nht ca .NET Framework.

    Tng ny thc hin bin dch m ca CIL thnh m my v thc thi.

  • Lp trnh .Net

    2

    Hnh 1 Cu trc ca .NET Framework

    II.3. Cc ngn ng thuc h .Net

    Hin ti cc lp trnh vin c th s dng nhiu ngn ng khc nhau lp trnh, c ngi

    thn thin vi ngn ng ny, c ngi thn thin vi ngn ng khc. C ngi lm vic rt

    tt vi ngn ng Basic, trong khi , mt s ngi khc thn thin vi ngn ng Java. Nhng

    lp trnh vin vi kh nng thng tho nhng ngn ng khc nhau dng nh khng th cng

    xy dng mt ng dng v s khng tng thch gia cc m lnh bin dch. khc phc

    tnh trng ny, Microsoft a ra gii php .Net Framework. Vi .Net Framework, cc lp

    trnh vin c th lp trnh nhng ngn ng khc nhau, sau khi bin dch, kt qu thu c s

    l cc th vin lin kt ng .dll (dynamic linked library). Cc th vin ny s c cc lp

    trnh vin khc k tha v s dng li.

    Visual Studio v Microsoft .Net Framework h tr cc ngn ng lp trnh: Visual C++,

    Visual Basic .NET, Visual C#, Visual J#. Cc ngn ng lp trnh trn c gi chung l h

    ngn ng .NET.

    II.4. Cc th vin c sn ca .Net Framework

    Th vin lp c s ca .NET l mt tp hp ln cc lp c vit bi Microsoft, nhng

    lp ny cho php bn thao tc rt nhiu cc tc v sn c trong Windows. Bn c th to cc

    lp ca mnh t cc lp c sn trong th vin lp c s ca .NET da trn c ch tha k

    n.

    Th vin lp c s ca .NET rt trc quan v rt d s dng. V d, to mt tin trnh

    mi, bn n gin gi phng thc Start() ca lp Thread. v hiu ha mt TextBox, bn

    t thuc tnh Enabled ca i tng TextBox l false. Th vin ny c thit k d s

    dng tng t vi cc ngn ng nh l Visual Basic v Java.

  • Lp trnh .Net

    3

    Cc th vin c sn .NET Framework bao gm:

    Th vin h tr Windows GUI v Controls

    Th vin Web Forms (ASP.NET)

    Th vin Data Access (ADO.NET)

    Th vin Directory Access

    Th vin File system v Registry access

    Th vin Networking v Web browsing

    Th vin .NET attributes v reflection

    Th vin h tr truy xut vo h iu hnh Windows

    Th vin COM interoperability

    III. Visual Studio

    III.1. Khi nim

    Visual Studio .Net l mi trng tch hp pht trin phn mm (Integrated Development

    Environment (IDE)) ca Microsoft, l cng c cho php bn vit m, g ri v bin dch

    chng trnh trong nhiu ngn ng lp trnh .NET khc nhau.

    III.2. Cch t chc chng trnh ca Visual Studio

    Chng trnh hoc ng dng hoc thm ch l mt h thng u c Visual Studio t

    chc di dng Solution. Solution l tp hp ca nhiu Project. Project l tp hp cc tp tin

    lin quan n mt ng dng v c ngi dng t chc theo cc cp th mc.

    Mt Project ca Visual Studio thng thng bao gm 3 phn: phn thuc tnh (Properties),

    phn tham chiu (References), phn ngi dng t nh ngha.

    Hnh 2 Cu trc ca mt project ca Visual Studio

  • Lp trnh .Net

    4

    Phn thuc tnh (Properties) cha class AssemblyInfo trong m t cc thng tin c bn

    v ng dng nh: tn ng dng, tn cng ty, a ch cng ty, bn quyn v cc thng tin khc.

    Phn tham chiu (References) cha cc gi hoc cc class m ng dng ny cn dng.

    Ngi dng c th s dng cc gi v cc class c sn ca .NET Framework hoc s dng

    cc gi v class do ngi dng nh ngha. Cc gi v class ny c th c xy dng bng

    nhiu ngn ng khc nhau min l cc ngn ng ny cng thuc h .NET.

    Phn ngi dng nh ngha l phn cn li, ngi dng c th t nh ngha cc gi, cc

    lp hoc thm vo mt s file d liu nu cn.

    III.3. Cc dng Project ca Visual Studio

    Hin nay, mt h thng thng tin thng c nhng dng ng dng sau: ng dng Console

    phc v x l cc vn lin quan n h thng v giao tip vo ra; ng dng Desktop phc

    v xy dng cc phn mm ng dng vi giao din thn thin; ng dng Internet phc v

    vic xy dng cc website; i vi mi dng ng dng khc nhau, Visual Studio cung cp

    cc dng Project khc nhau. Cc dng Project c Visual Studio cung cp gm c:

    Console Application: Cung cp template cho ng dng Console

    Windows Application: Cung cp template cho ng dng Desktop

    Class Library: Cung cp template cho vic xy dng th vin lin kt ng

    ASP.NET Website: Cung cp template cho vic xy dng Website

    ASP.NET Web Service: Cung cp template cho vic xy dng Web Service

    IV. Ngn ng lp trnh C#

    IV.1. Khi nim

    C# l mt ngn ng lp trnh hng i tng c pht trin bi Microsoft. Microsoft

    pht trin C# da trn C++ v Java. C# c miu t l ngn ng c c s cn bng gia

    C++, Visual Basic, Delphi v Java. C# c thit k ch yu bi Anders Hejlsberg kin trc

    s phn mm ni ting vi cc sn phm Turbo Pascal, Delphi, J++, WFC.

    IV.2. c im

    C# l ngn ng lp trnh phn nh trc tip nht n .NET Framework m tt c cc

    chng trnh .NET chy. C# ph thuc mnh m vo .Net Framework, mi d liu c s u

    l i tng, c cp pht v hy b bi trnh dn rc Garbage-Collector (GC). C# cung cp

    nhiu kiu tru tng khc chng hn nh class, delegate, interface, exception, v.v, phn nh

    r rng nhng c trng ca .NET runtime.

    So snh vi C v C++, ngn ng ny b gii hn v c nng cao mt vi c im no

    , nhng khng bao gm cc gii hn sau y:

  • Lp trnh .Net

    5

    Cc con tr ch c th c s dng trong ch khng an ton. Hu ht cc i

    tng c tham chiu an ton, v cc php tnh u c kim tra trn b m. Cc

    con tr ch c s dng gi cc loi kiu gi tr; cn nhng i tng thuc b

    thu rc (garbage-collector) th ch c gi bng cch tham chiu.

    Cc i tng khng th c gii phng tng minh.

    Ch c n k tha, nhng c th ci t nhiu interface tru tng (abstract

    interfaces). Chc nng ny lm n gin ha s thc thi ca thi gian thc thi.

    C# th an-ton-kiu (typesafe) hn C++.

    C php khai bo mng khc nhau("int[] a = new int[5]" thay v "int a[5]").

  • L Vn Minh Trng Cao ng Cng ngh Thng tin, i hc Nng 6

    Chng 2

    LP TRNH C# CN BN

    I. Mc tiu

    Trong chng ny gio trnh s cung cp cho bn nhng kin thc c bn nht ca ngn

    ng lp trnh C#. Nhng ch chnh nh sau:

    Khai bo bin

    Khi to v phm vi hot ng ca bin

    Cch s dng cc vng lp v cu lnh

    Cch s dng mng

    Namespaces v th vin lin kt ng

    C bn trnh bin dch dng lnh trong C#

    S dng gi System.Console thc hin vic nhp xut

    S dng ch thch trong C# v Visual Studio .NET

    Cui chng ny ngi hc s c kh nng vit mt chng trnh gii quyt mt bi

    ton n gin bng C#.

    II. Bt u vi Console Application

    Console Application l dng Project phc v vic lp trnh vi cc ng dng n gin. Vi

    dng Project ny chng ta d dng thc hin vic lp trnh m phng thut ton v m

    phng hng i tng. Cc bc khi to Console Application nh sau:

    II.1. To Project

    Ngay sau khi khi ng Visual Studio, chn Menu File New Project.

  • Lp trnh .Net

    7

    Hnh 3 Khi to Project

    Sau khi chn vo Project, Visual Studio hin th giao din ngi dng chn dng

    Project mc Project types v Templates, t tn cho Project mc Name v t ng dn

    cho Project mc Location. v d hnh 4, ti liu trnh by cch to Project Console

    Application vi tn l HelloWorld v Project ny c t trong th mc

    E:\CDCNTT\GiaoTrinh\LapTrinh.Net - .NetProgramming.

    Hnh 4 Cu hnh Console Application Project

  • Lp trnh .Net

    8

    II.2. Lp trnh

    Ngay sau khi khi to, Visual Studio s to sn mt Project vi cu trc chun (Xem

    chng 1, phn III.2). Trong Project, Visual Studio to sn mt class c tn l Program

    nm trong file Program.cs, trong class ny c sn phng thc Main(), ngi s dng ch cn

    lp trnh ngay ti phng thc ny.

    Hnh 5 Lp trnh trong Console Application ca C#

    Trong v d hnh 5, ti liu ny trnh by cch lp trnh hin th dng ch Hello

    world. ra mn hnh. C# cung cp class Console thc hin vic xut hoc nhp d liu.

    Dng lnh Console.Writeline(); dng hin th mt chui ra mn hnh. Dng lnh

    Console.Readline(); dng nhp mt chui t bn phm.

    Trong .NET Framework, Microsoft a ra thm khi nim namespace qun l cc class

    trong cng mt th vin. Vi .NET, namespace l mt thut ng dng tham chiu v c

    hiu l mt tp hp cc class. Nh th, mt th vin (*.dll) s l tp hp cha cc namespace

    v trong mi namespace cha cc class. Visual Studio t to ra namespace mc nh trng

    vi tn Project m bn t. Trong trng hp ny, namespace mc nh l HelloWorld.

    II.3. Bin dch

    Thng thng, mt ng dng hoc mt d n c t chc thnh mt Solution. Ty vo

    mc ln nh, ta c 2 cch bin dch i vi ng dng m ta xy dng: bin dch tng phn

    v bin dch ton b.

    II.3.1. Bin dch tng phn

    Bin dch tng phn l hnh thc bin dch tng Project trong mt Solution. Hnh thc

    bin dch ny p dng i vi d n c chia thnh nhng thnh phn ring bit. Vi

  • Lp trnh .Net

    9

    hnh thc bin dch, tc bin dch s nhanh v cc li d dng c phn vng sa

    cha.

    thc hin vic bin dch tng phn, ta c th click chut phi (right-click) vo Project

    cn bin dch v chn Build.

    Hnh 6 Bin dch tng phn

    II.3.2. Bin dch ton phn

    Bin dch ton b l hnh thc bin dch tt c cc Project trong mt Solution. Hnh thc

    bin dch ny c p dng i vi cc ng dng va phi hoc cc ng dng m tt c cc

    Project u c lin quan mt thit vi nhau. Vi hnh thc bin dch ny, tc bin dch s

    chm, ty nhin tnh ng b c bo m.

    thc hin bin dch ton phn, ta c th click phi chut (right-click) vo Solution ri

    chn Build Solution.

    Hnh 7 Bin dch ton phn

    II.4. Chy chng trnh

    Visual Studio cung cp 2 ch chy chng trnh: ch debug v ch non-debug.

  • Lp trnh .Net

    10

    II.4.1. Ch debug

    Ch debug l ch chy tng dng lnh ngi lp trnh bt li. Trong ch ny

    ngi lp trnh quy nh mt s im dng gi l breakpoint, chng trnh s t ng dng

    ti breakpoint ngi dng d dng theo di kt qu ca cc lnh chy tip theo. to ra

    breakpoint, ngi lp trnh ch cn click phi chut (right-click) vo dng lnh cn dng ri

    chn breakpoint ri chn Insert Breakpoint.

    thc hin debug, ngi lp trnh c th bm F5 hoc chn vo Menu Debug Start Debug.

    II.4.2. Ch non-debug

    Ch non-debug l ch chy ht c chng trnh m khng dng li bt li cho d

    ngi lp trnh thit lp breakpoint. chy ch ny, ngi lp trnh c th bm

    Ctrl+F5 hoc chn vo Menu Debug Start Without Debugging.

    Vi chng trnh HelloWorld trn kt qu chy chng trnh nh sau.

    Hnh 8 Kt qu chy chng trnh

  • Lp trnh .Net

    11

    III. Bin v phm vi hot ng ca bin trong C#

    III.1. Bin

    Bin l n v c cc ngn ng lp trnh t chc lu tr v x l d liu. Bin c

    khai bo theo c php sau.

    [modifier] datatype identifier;

    [modifier] l mt trong nhng t kha public, private, protected, ; datatype l kiu d

    liu; identifier l bin c ngi dng nh ngha;

    V d di y mt bin mang tn i kiu s nguyn int v c th c truy cp bi bt c

    hm no.

    public int i;

    Ta cng c th khai bo bin v khi to cho bin mt gi tr nh sau:

    int i = 10;

    Nu ta khai bo nhiu bin c cng kiu d liu s c dng nh sau:

    int x = 10; y = 20;

    III.2. Phm vi hot ng ca bin

    Trong C#, phm vi hot ng ca bin l vng on m m t y bin c th c truy

    xut. Thng thng mt on m c nh ngha bng mt cp du {}. Trong mt phm vi

    hot ng (scope), khng th c hai bin cng mang mt tn trng nhau.

    V d sau thc hin vic in ra cc s t 0 n 9 ra mn hnh ri tip tc in cc s t 9 n 0

    ra mn hnh;

    public static int Main()

    {

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

    {

    Console.WriteLine(i);

    } // bin i ra khi phm vi

    // Chng ta c th khai bo thm bin i y

    for (int i = 9; i >= 0; i--)

    {

    Console.WriteLine(i);

    } // bin i ra khi phm vi y

    return 0;

    }

    Hnh 9 Minh ha phm vi ca bin

  • Lp trnh .Net

    12

    Vi v d trn, trong 2 vng lp for khc nhau, ta c th khai bo cng mt bin i cho d 2

    vng lp ny cng nm trong mt khi lnh. iu ny hp l bi v i c khai bo trong hai

    vng lp khc nhau v l bin cc b ca 2 vng lp . Khi vng lp hon c thc hin

    xong th bin t ng c gii phng v v th cc bin cc vng lp khc nhau th c th

    c t tn ging nhau.

    IV. Hng

    Mt hng (constant) l mt bin nhng tr khng th thay i c sut thi gian thi hnh

    chng trnh. i lc ta cng cn c nhng gi tr bao gi cng bt bin.

    Hng c khai bo nh sau:

    const datatype identifier = value;

    V d: const int numberOfModules = 12;

    Hng c nhng c im sau:

    Hng bt buc phi c gn gi tr lc khai bo. Mt khi c khi gn th khng

    th vit ln

    Tr ca hng phi c th c tnh ton vo lc bin dch, do khng th gn mt

    hng t mt tr ca mt bin.

    Hng bao gi cng static, tuy nhin ta khng th a t kho static vo khi khai bo

    hng

    C ba thun li khi s dng hng trong chng trnh ca bn:

    Hng lm cho chng trnh c d dng hn, bng cch thay th nhng con s v cm

    bi nhng tn mang y ngha hn

    Hng lm cho d sa chng trnh hn, vic thay i gi tr ch cn thc hin mt ln

    ngay ti v tr khai bo hm

    Hng lm cho vic trnh li d dng hn, nu bn gn mt tr khc cho mt hng vn

    c khai bo u trong chng trnh trnh bin dch s t ng thng bo li v

    hng ny c khai bo

    V. Kiu d liu

    C# l mt ngn ng c kim sot cht ch v mt kiu d liu, ngoi ra C# cn chia cc

    kiu d liu thnh hai loi khc nhau: kiu tr (value type) v kiu qui chiu (reference type).

    Ngha l trn mt chng trnh C# d liu c lu tr mt hoc hai ni tu theo c th ca

    kiu d liu.

    C# cng h tr kiu con tr (pointer type) ging nh C++ nhng t khi dng n v ch

    dng khi lm vic vi on m unmanaged. on m unmanaged l on m uc to ra

    ngoi .NET Framework, chng hn nhng i tng COM.

  • Lp trnh .Net

    13

    V.1. Kiu gi tr (Value Types)

    V.1.1. Kiu d liu s nguyn

    Tn kiu Din gii Min gi tr

    sbyte S nguyn c du 8bit -128:127

    short S nguyn c du 16bit -215

    :215

    -1

    int S nguyn c du 32bit -231

    :231

    -1

    long S nguyn c du 64bit -263

    :263

    -1

    byte S nguyn khng du 8bit 0:255

    ushort S nguyn khng du 16bit 0:216

    -1

    uint S nguyn khng du 32bit 0:232

    -1

    ulong S nguyn khng du 64bit 0:264

    -1

    Hnh 10 Danh sch cc kiu s nguyn ca C#

    Vi cc kiu d liu trn, ta c th khai bo bin nh sau:

    long x = 0x12ab; // ghi theo hexa

    int i = 1234;

    Khi s dng cc kiu s nguyn ca C# cn ch rng kiu int ca C# c cp pht 32bit

    khng ging nh kiu int ca Ansi C vn ch c cp pht 16bit. Ni mt cch khc kiu int

    trong C# tng ng vi kiu long trong Ansi C.

    V.1.2. Kiu d liu du chm ng

    Tn kiu Din gii S ch s c ngha

    float Kiu s thc 32bit 7

    double Kiu s thc 64bit 16

    Hnh 11 Danh sch cc kiu d liu du chm ng

    V.1.3. Cc kiu d liu khc

    Tn kiu Din gii Ghi ch

    decimal S thp phn 128bit 28 ch s c ngha

    bool Kiu logic [true, false]

    char Kiu k t 16bit kiu k t unicode

    Hnh 12 Cc kiu d liu khc

    V.2. Kiu tham chiu (Reference Type)

    C# h tr 2 kiu tham chiu c bn: object, string. Kiu object l kiu d liu d liu gc,

    tt c cc kiu d liu khc u c dn xut t kiu d liu ny. Kiu string l kiu d liu

    trnh by chui k t. Chui string trong C# h tr hon ton unicode.

    Cng ging nh Ansi C v Java, C# nh ngha gi tr ca mt chui trong cp du ngoc

    kp , cn c gi l Double Quote. tin cho vic x l tt c cc k t, C# nh ngha

    mt s k t c bit gi l Escape Sequence.

  • Lp trnh .Net

    14

    Danh sch cc Escape Sequence thng dng.

    Escape Sequence Din gii

    \' Single quote

    \" Double quote

    \0 Null

    \n Return

    \\ Backslash

    Hnh 13 Danh sch Escape Sequence

    C# h tr ton t + ghp ni cc chui v ton t = gn gi tr cho chui. V d sau

    trnh by cc ton t dng cho kiu string.

    public static int Main()

    {

    string s1 = "Windows folder is: ";

    string s2 = "C:\\windows";

    Console.WriteLine("s1 is: " + s1);

    Console.WriteLine("s2 is: " + s2);

    s1 = s1 + s2;

    Console.WriteLine("s1 is now: " + s1);

    Console.WriteLine("s2 is now: " + s2);

    return 0;

    }

    Hnh 14 Minh ha cc ton t trn kiu string

    Chng trnh chy ra kt qu nh sau:

    s1 is: Windows folder is

    s2 is: C:\windows

    s1 is now: Windows folder is C:\windows

    s2 is now: C:\windows

    Hnh 15 Kt qu chy chng trnh v d trong hnh 14

    Vi v d trn, cho thy sau khi thc hin ton t gn th gi tr ca biu thc bn phi s

    c gn vo bin bn tri cho d biu thc pha bn phi c s xut hin ca bin c tr

    v. Cng trong v d ny, m t k t \ (k t ng dn hay k t Backslash), chng ta

    phi s dng quy nh ca Escape Sequence, trong trng hp ny, v d s dng k t \\.

    VI. Cu trc iu kin

    VI.1. Cu lnh iu kin if..else

    VI.1.1. C php

    if (condition) statement(s);

    [else statement(s);]

  • Lp trnh .Net

    15

    VI.1.2. Cch s dng

    Lnh iu kin if thc hin mt hoc nhiu lnh trong khi lnh nu kt qu tr v ca

    biu thc condition l true, ngc li, cc lnh hoc khi lnh ngay sau t kha else s c

    thc hin. Xt v d sau:

    if (i != 0)

    {

    Console.WriteLine(i is not Zero);

    }

    else

    {

    Console.WriteLine(i is Zero);

    }

    Hnh 16 Minh ha cu trc if..else

    V d trn thc hin vic kim tra bin i c bng 0 hay khng. Nu i bng 0, chng trnh

    s xut ra i is Zero, ngc li, chng trnh s xut ra i is not Zero.

    VI.2. Cu lnh switch..case

    Trong trng hp phi dng nhiu lnh if..else lng nhau, chng trnh s tr nn phc tp

    v kh g ri. khc phc vn ny, C# cung cp cu trc lnh switch..case phc v

    cho vic lp trnh khi x l mt lot cc trng hp khc nhau ca cng mt iu kin.

    VI.2.1. C php

    switch (expression)

    {

    case (condition): statement(s);

    [break;]

    case (condition): statement(s);

    [break;]

    [default: statement(s);]

    }

    VI.2.2. Cch s dng

    Vi tng trng hp ca biu thc iu kin expression, cc lnh tng ng s c thc

    hin. Trong cu trc lnh ny, lnh break c s dng nhy ra khi khi lnh. Ch dn

    default c s dng gii quyt trng hp ca iu kin m trng hp ny khng nm

    trong tt c cc trng hp lit k trong cc ch dn case. V d sau trnh by cch s dng

    lnh switch..case vo vic tnh s ngy trong mt thng c nhp t bn phm.

  • Lp trnh .Net

    16

    Hnh 17 Minh ha cu trc switch..case

    VII. Cu trc lp

    VII.1. Cu trc lp for

    VII.1.1. C php

    for (initializer; condition; iterator)

    statement(s)

    VII.1.2. Cch s dng

    Cu trc ca lnh for bao gm biu thc khi to initializer, iu kin kt thc condition,

    biu thc bin i iterator. Lnh for thc hin vic lp mt hoc nhiu lnh trong khi iu

    kin kt thc condition vn cn ng. V d sau minh ha cho chng trnh xut ra mn hnh

    tt c cc s dng chia ht cho 3 m nh hn 100.

    Hnh 18 Minh ha cu trc lp for

  • Lp trnh .Net

    17

    VII.2. Cu trc lp while

    VII.2.1. C php

    while(condition)

    statement(s);

    VII.2.2. Cch s dng

    Cu trc while thc hin vic lp mt hay nhiu lnh khi iu kin condition vn cn

    ng. Khi s dng cu trc ny, ngi lp trnh cn phi ch ng thc hin cc cu lnh to

    s bin i trnh nhng vng lp v tn. V d sau minh ha cho chng trnh tnh c

    chung ln nht ca 2 s nguyn a, b.

    Hnh 19 Minh ha cu trc lp while

    VII.3. Cu trc lp do..while

    VII.3.1. C php

    do

    {

    statement(s);

    } while (condition);

    VII.3.2. Cch s dng

    Cu trc lp do..while thc hin vic lp mt hoc nhiu lnh cho ti khi iu kin

    condition c gi tr false. Cu trc lp ny c c im l cc lnh c thc hin t nht mt

    ln cho d ngay t u iu kin l false. V d sau y minh ha cho chng trnh tnh

    tng cc s dng b hn 100.

  • Lp trnh .Net

    18

    Hnh 20 Minh ha cu trc lp do..while

    VII.4. Cc lnh h tr cho cu trc lp

    VII.4.1. Lnh break

    Lnh break thc hin vic dng vng lp. Khi chng trnh ang chy m gp lnh break

    th chng trnh s lp tc chm dt vng lp cho d iu kin ca vng lp vn cho php

    chy tip. Trong trng hp c nhiu vng lp lng nhau, chng trnh s chm dt vng lp

    gn vi break nht. V d sau s dng vng lp for v cu lnh break tnh tng tt c cc

    s nguyn t nh hn 100.

    Hnh 21 Minh ha lnh break

    VII.4.2. Lnh continue

    Trong khi thc hin vng lp, ngi lp trnh i khi cn thc hin vic b qua mt s

    dng lnh tip tc thc hin vic lp cho ln tip theo. C# h tr lnh continue thc

    hin chc nng ny. Lnh continue thc hin vic chuyn sang ln lp tip theo v b qua cc

  • Lp trnh .Net

    19

    lnh nm trong vng lp nhng nm pha sau n. V d sau minh ha cho vic s dng vng

    lp for v lnh continue.

    Hnh 22 Minh ha lnh Continue

    VIII. Mng (Array)

    Mng hay cn gi l Array l mt cu trc d liu cu to bi mt s bin c gi l

    nhng phn t mng. Tt c cc phn t ny u thuc mt kiu d liu. Ngi lp trnh c

    th truy xut phn t thng qua ch s (index). Ch s bt u bng zero.

    Ngi ta thng chia mng thnh 2 loi: Mng mt chiu v mng nhiu chiu. i vi

    mng nhiu chiu gio trnh ny ch trnh by mng hai chiu bi v mng hai chiu l c

    trng tiu biu cho mng nhiu chiu.

    VIII.1. Mng mt chiu

    VIII.1.1. C php khai bo

    type[ ] array-name;

    hoc type[] array-name = new type[length];

    Vi c php trn, type l kiu d liu ca cc phn t trong mng, array-name l tn ca

    mng, length l di ca mng di ny chnh l s phn t ca mng.

    VIII.1.2. Cch s dng

    lm vic vi mng, ngi lp trnh thng can thip trc tip vo tng phn t ca

    mng thng qua ch s index vi c php array-name[index]. V d:

    x = A[0];

    st = B[i];

    B[1] = x;

    duyt mng, ngi lp trnh thng s dng cu trc lp. Bn cnh cc cu trc lp

    trnh by, C# cn cung cp mt cu trc lp khc l vng lp foreach.

    VIII.1.3. Cu trc lp foreach

    Cu trc lp foreach c thc hin theo cu trc sau:

    foreach (data-type identifier in array-name) statement(s)

  • Lp trnh .Net

    20

    Vi mi gi tr ca mng array-name, chng trnh s thc hin mt hoc nhiu lnh

    statement(s). Trong , gi tr ca mi phn t c tham chiu qua bin identifier m bin

    ny thuc kiu data-type. V d sau minh ha vic s dng mng mt chiu v minh ha cho

    phng php duyt mng mt chiu bng cu trc lp foreach.

    Hnh 23 Minh ha cu trc foreach khi duyt mng Array

    VIII.2. Mng hai chiu (Ma trn)

    VIII.2.1. C php khai bo

    type[,] array-name;

    hoc type[,] array-name = new type[height, width];

    Vi c php trn, type l kiu d liu ca cc phn t trong mng, array-name l tn ca

    mng, height v width ln lt l s dng v s ct ca ma trn. V d nh sau:

    int[,] myRectArray = new int[2,3]; //khai bo mng s nguyn c 2 dng v 3 ct

    int[,] myRectArray = new int[,]{ {1,2},{3,4},{5,6},{7,8}}; //khai bo mng 4 hng 2 ct

    string[,] beatleName = { {"Lennon","John"}, {"McCartney","Paul"},

    {"Harrison","George"}, {"Starkey","Richard"} }; //khai bo mng string c 2 dng 4 ct

    VIII.2.2. Cch s dng

    lm vic vi mng hai chiu, ngi lp trnh c th can thip trc tip vo tng phn t

    ca mng thng qua ch s hng v ch s ct. V d nh sau:

    A[0, 1] = 2; //Gn gi tr 2 vo phn t hng 0 ct 1

    Console.Write(A[2, 3]); // Ghi gi tr ca phn t hng 2 ct 3 ra mn hnh

    V cu trc lu tr ca ma trn bao gm cc hng v cc ct nn ngi lp trnh thng s

    dng hai vng lp lng nhau thc hin vic duyt c ma trn. V d sau minh ha vic

    duyt ma trn bng cch s dng hai vng lp lng nhau, trong qu trnh lp, chng trnh s

    hin th cc chui trong ma trn.

  • Lp trnh .Net

    21

    Hnh 24 Minh ha vic s dng hai vng lp lng nhau khi dng ma trn

    IX. X l nhp xut file

    IX.1. Khi nim file

    File cn c gi l tp tin hoc c gi l tp l khi nim dng ch tp hp nhng

    thng tin lin quan vi nhau v nhng thng tin ny c lu tr trn a.

    Khc vi nhng thng tin c lu tr trn RAM, cc thng tin c lu trong file phi

    c truy cp mt cch tun t, ngha l mun c hoc ghi d liu v tr th i th b x l

    phi thc hin vic c hoc ghi t v tr 0 n v tr i-1.

    IX.2. Phn loi

    Ty vo ni dung d liu cha trong file, file c chia thnh 2 loi: file nh phn (binary

    file) v file vn bn (text file). Trong phn ny gio trnh ch trnh by phng php c ghi

    i vi file vn bn, ngi hc t nghin cu phng php c ghi file nh phn t cc ti

    liu tham kho trong phn ti liu tham kho cui gio trnh.

    IX.2.1. File vn bn (text file)

    File vn bn l file m d liu ghi trong l nhng k t thuc bng m ASCII chun

    (bng m khng bao gm cc k t iu khin) trong cc k t c t chc thnh nhiu

    hng. Cc hng c phn cch bng k t xung hng.

    i vi cc file vn bn c t chc trn h iu hnh Dos hoc Windows ca Microsoft

    th cc hng c phn cch bi mt cp k t bao gm: k t xung dng v k t v u

    dng. i vi cc file vn bn c t chc trn h iu hnh Unix hoc Linux th cc hng

    c phn cch bi mt du xung hng. iu ny gii thch ti sao khi ngi s dng m

    mt s file vn c son tho trong h iu hnh Linux bng chng trnh son tho ca

    Windows (c th l notepad) th tt c cc dng ca file c ni thnh mt dng duy nht.

    Cc file vn bn thng thng l nhng file vn bn n gin hoc nhng file m ngun

    ca nhng ngn ng lp trnh hoc nhng file c s d liu XML.

  • Lp trnh .Net

    22

    IX.2.2. File nh phn (binary file)

    File nh phn l file m thng tin lu tr mt cch tng qut. D liu lu tr trn file nh

    phn c chia thnh tng byte, mi byte c c trng bi mt k t ca bng m ASCII

    m rng.

    Cc file nh phn thng c mt cu trc hoc nh dng ring, nhng file c bin son

    theo nh dng no th ch c nhng phn mm hiu c nh dng mi c th c c.

    V d nhng file hnh ng th ch c th c c bng nhng chng trnh hin th hnh nh.

    Cc chng trnh son tho cho file vn bn th khng hin th chnh xc file nh phn. C

    th l khi ngi s dng dng chng trnh son tho vn bn m mt file thc thi (.exe)

    th chng trnh son tho vn bn y ch hin th cc k t c bit.

    Cc file nh phn thng thng l nhng file thc thi (.exe), file hnh nh (.jpg, .gif, ..png,

    .bmp, ), file m thanh (.mp3, .wma, .mid, .wav, ), file cha cc on phim (.mpg, .wmv,

    .rm, ) v nhiu dng nh dng mc nh khc.

    IX.3. c v ghi file vn bn

    Visual Studio cung cp nhiu i tng thc hin vic c v ghi file vn bn. Gio

    trnh ny trnh by vic c bng cp i tng StreamReader v StreamWriter. y l cp

    i tng c/ghi tng qut, ngi lp trnh c th s dng cp i tng ny thc hin

    vic c hoc ghi trn cc lung nhp xut khc. s dng phng thc ny, ngi lp

    trnh phi khai bo s dng namespace System.IO ca Visual Studio bng lnh using

    System.IO chi tit v namespace s c trnh by trong chng tip theo. Ngi hc t

    nghin cu cc phng php c ghi file khc t cc gio trnh c nu trong phn ti liu

    tham kho.

    IX.3.1. c file vn bn bng StreamReader

    StreamReader l mt lp v lp ny thc to ra cc i tng phc v vic c d liu t

    mt lung hoc mt file. Khi khi to i tng, ngi lp trnh phi cung cp tn file cho

    phng thc khi to. Vic khi to i tng c th sinh ra cc li nh file khng tn ti,

    a b hng, , do , hm khi to phi c t trong khi try/catch x l bit l X

    l bit l s c trnh by chng tip theo.

    i tng StreamReader cung cp nhiu phng php c d liu, trong phng

    thc hu hiu nht l phng thc ReadLine(). Phng thc ReadLine() thc hin vic c

    tng dng trong file vn bn v tr v mt chui string. V d sau trnh by vic c d liu

    t file vn bn c tn l input.txt, file ny cha cc s nguyn, mi s nguyn nm trn mt

    dng.

  • Lp trnh .Net

    23

    Hnh 25 File input.txt

    Chng trnh sau s dng i tng StreamReader c file input.txt v tnh tng cc s

    nguyn ca trong file .

    Hnh 26 Chng trnh s dng StreamReader c file vn bn

  • Lp trnh .Net

    24

    IX.3.2. Ghi file vn bn bng StreamWriter

    Cng ging StreamReader, StreamWriter l mt lp v lp ny to ra cc i tng phc

    v vic ghi d liu vo mt lung hoc mt file. Khi khi to i tng, ngi lp trnh phi

    cung cp tn file cho phng thc khi to. Vic khi to i tng c th sinh ra cc li nh

    a b hng hoc li nhp xut, , do , hm khi to phi c t trong khi try/catch

    x l bit l X l bit l s c trnh by chng tip theo.

    i tng StreamWriter cung cp nhiu phng php ghi d liu, trong phng

    thc hu hiu nht l phng thc Write(). Phng thc Write() thc hin vic ghi mt chui

    string vo file vn bn. V d sau trnh by vic ghi d liu t file vn bn c tn l output.txt.

    Hnh 27 Chng trnh s dng StreamWriter ghi file vn bn

    Sau khi chy chng trnh, file vn bn thu c nh sau.

    Hnh 28 File kt qu thu c sau khi chy chng trnh

  • L Vn Minh Trng Cao ng Cng ngh Thng tin, i hc Nng 25

    Chng 3

    LP TRNH HNG I TNG VI C#

    I. Mc tiu

    T cc hc phn Lp trnh hng i tng vi C++ v Lp trnh Java, ngi hc c tip cn l thuyt v thc hnh vi Lp trnh hng i tng (Object Oriented Programming). Trong chng ny gio trnh cng cung cp nhng kin thc c bn v lp

    trnh hng i tng tuy nhin cc nguyn l ny c vn hnh bng ngn ng C#. Nhng

    ch chnh c trnh by trong chng ny nh sau:

    Lp (Class) v i tng (Object)

    Thuc tnh (Attribute) v Phng thc (Method)

    Np chng ton t (Overloading)

    K tha (Inheritance)

    a hnh (Polymorphism)

    Interface

    Cui chng ny ngi hc s c kin thc gii quyt cc vn lp trnh bng

    quan im hng i tng.

    II. Lp (Class)

    Lp l mt khi nim trong phng php lp trnh hng i tng (Object Oriented

    Programming) c dng ch s gi gn cc d liu v cc phng thc hot ng trn d

    liu . Lp cn c hiu l khi nim dng ch tp hp tt c cc thc th c chung mt

    s thuc tnh no trong phm vi ng cnh no . V d, khi xt mt s thc th gm bo,

    h, s t, nga vn; Nu cc thc th ny c xt trong ng cnh ch ch n 3 yu t gm

    mu lng, cn nng, tc di chuyn th cc thc th ny c th c gp chung vo mt lp

    gi l lp Th;

    Trong C#, tt c cc lp c dn xut t lp c s System.Object. Mi lp thng c

    nh ngha trong mt file .cs v file ny c thm vo project. V d sau y minh ho vic

    xy dng mt class. Trong class ny ch c mt thuc tnh l name v mt phng thc l

    Speak(). Cng ging nh cc ngn ng C++ v Java, C# cung cp con tr this dng tham

    chiu n mt th hin (instance) ca class ang xt.

  • Lp trnh .Net

    26

    Hnh 29 Minh ho vic xy dng Class trong C#

    Trong lp c mt phng thc mc nh dng khi to i tng c gi l phng

    thc khi to (constructor). Phng thc khi to c c t tn trng vi tn lp v c

    ch dn truy cp bt buc l public phng thc ny c th c triu gi t bn ngoi

    phng thc. Cc ch dn bin dch (accessibility) bao gm: public, internal, protected,

    private c m t chi tit theo hnh sau.

    Ch dn truy cp M t

    public Bin v phng thc c th c truy cp t bt k

    ni u (bn ngoi cng nh bn trong lp)

    internal Bin v phng thc ch c th c truy cp trong

    cng mt gi

    protected Bin v phng thc ch c truy cp ngay trong

    lp hoc c c truy cp t trong lp k tha

    ca n

    private Bin v phng thc ch c truy cp ngay trong

    phm vi ca lp

    Hnh 30 M t cc ch dn truy cp trong C#

  • Lp trnh .Net

    27

    III. i tng (Object)

    i tng l khi nim dng ch mt trng hp c th (instance) ca mt lp. Trong

    lp trnh hng, i tng l thc th c bn ca vic lp trnh, cc ng x v hnh vi ca i

    tng c chng trnh triu gi thng qua cc phng thc c m t lp thuc i

    tng . Cng ging nh cc lp trong C#, tt c cc i tng cng c k tha t i

    tng c s System.Object. V d sau minh ha vic khai bo v s dng i tng ca lp

    Dog va c m t trn.

    Hnh 31 Minh ha vic khai bo v s dng i tng

    Trong v d trn, ton t new c s dng khi khi to i tng. Tham s ban u ca

    phng thc khi to c a vo trc tip t tham s ca ton t new. Phng thc c ch

    dn truy cp l public c triu gi bng cch gi tn i tng v tn phng thc, trong

    du chm (dot) c s dng ngn cch gia i tng v phng thc cn triu gi.

    IV. Thuc tnh (Attribute)

    Thuc tnh l khi nim dng ch cc tnh cht c trng ca mt lp. Trong mt lp,

    cc thuc tnh c m t mt cch nh tnh bao gm tn thuc tnh, kiu d liu v ch dn

    truy cp. Trong mt i tng, cc thuc tnh c th hin mt cch nh lng vi vic cc

    thuc tnh c cung cp mt gi tr xc nh (gi tr mc nh l null nu nh thuc tnh

    cha cung cp gi tr)

    C# cung cp th tc get v set thc hin vic truy cp mt thuc tnh, th tc get ly

    gi tr v th tc set thc hin vic thay i gi tr. V d hnh 25 m t th tc get v set

    i vi thuc tnh private string _name, th tc get v set thc hin vic nh ngha mt nh

    danh (alias) khc c tn l Name ngi dng s dng khi truy cp vo thuc tnh _name.

    Nu khng c th tc ny, ngi s dng khng th truy cp thuc tnh _name v thuc tnh

    ny c nh ngha vi ch dn truy cp l private.

    V. Phng thc (Method)

    Phng thc l khi nim dng ch mt ng x hoc l mt hnh ng ca i tng.

    Trong C#, phng thc c chia thnh 2 loi: non-static method v static method.

  • Lp trnh .Net

    28

    Non-static method l phng thc ch c th c gi t i tng, phng thc ny

    mang tnh c th ca i tng v nhng i tng khc nhau trong cng mt lp s

    c nhng kt qu tr v khng ging nhau khi cng triu gi mt phng thc thuc

    loi ny. Trong v d hnh 27, phng thc Speak() do i tng toto thc hin s

    c kt qu khc vi phng thc do i tng milu triu gi.

    Static method l phng thc c trng cho tt c cc i tng thuc lp . Phng

    thc ny khng th c gi t i tng m phi c gi trc tip t lp. Kt qu

    chy phng thc ny khng ph thuc vo i tng m ph thuc vo tham s u

    vo ca phng thc. Trong cc v d trn, phng thc Console.Writeln() l phng

    thc static ca lp Console.

    VI. Np chng ton t (Overloading)

    Np chng ton t l khi nim dng ch vic nh ngha li mt s ton t m nhng

    ton t ny lm vic vi d liu l i tng thuc lp m ngi lp trnh ang xy dng.

    Ton t c tnh ng nht i vi tt c cc i tng thuc lp hoc i vi tt c cc gi tr

    thuc kiu d liu do C# yu cu tt c cc ton t phi l static method vi ch dn truy

    cp l public. Trong C#, tt c cc lp u dn xut t lp c s System.Object v lp ny

    vn nh ngha sn phng thc equal v ton t gn (=) do ngi lp trnh khng cn

    thit phi nh ngha li ton t gn. V d sau y trnh by vic np chng ton t cng (+)

    i vi i tng thuc lp phn s (Fraction).

    Hnh 32 Minh ha vic np chng ton t

  • Lp trnh .Net

    29

    V d trn trnh by vic np chng ton t cng (+) 2 phn s (Fraction). Ton t ny

    c khai bo vi tin t static operator v ch dn truy cp l public.

    VII. K tha (Inheritance)

    K tha l khi nim then cht ca cc ngn ng lp trnh hng i tng dng hiu

    hin tng mt lp thc hin vic s dng li mt s thuc tnh (attribute) hoc phng thc

    (method) ca mt lp khc. Lp s dng cc thuc tnh v phng thc ca lp khc c

    gi l lp dn xut, i khi cn c gi l lp con. Lp cho php lp khc s dng cc

    thuc tnh v phng thc c gi l lp c s, i khi cn c gi l lp cha.

    K tha trong hng i tng c chia thnh hai loi: n k tha (single inheritance)

    v a k tha (multiple inheritance). n k tha c hiu l mt lp dn xut s dng cc

    thuc tnh v phng thc ca mt lp c s duy nht. Ngc li, nu mt lp s dng cc

    thuc tnh v phng thc t nhiu lp s s th c gi l a k tha.

    C++ h tr c n k tha v a k tha, tuy nhin C# ch h tr n k tha. Vic s

    dng a k tha mt cch hp l s gip cho chng trnh ti u hn v mt kch thc

    nhng vic x l li (nu c) s v cng phc tp. y l l do c bn m C# ch thit k cho

    n k tha. V d sau trnh by vic xy dng mt lp c s v hai lp k tha.

    Hnh 33 Lp c s

    V d trn trnh by vic xy dng lp c s Dog gm hai thuc tnh l Name, Weight v

    hai phng thc l Speak(), DrinkWater().

  • Lp trnh .Net

    30

    Hnh 34 Cc lp dn xut

    V d trn trnh by hai lp dn xut t lp c s l Dog. Lp th nht l GermanShepard

    trong c thm phng thc l OnGuard(), lp cn li l JackRussell c thm phng thc

    l Chew(); V d sau s minh ha vic s dng hai lp dn xut dn xut trn.

    Hnh 35 Minh ho vic s dng lp dn xut

    V d trn khai bo hai i tng: i tng Simon thuc lp GermanShepard v i

    tng Daisy thuc lp JackRussell. Khi gi phng thc Speak() v DrinkWater() t lp c

    s th cc ng x (hoc kt qu thu c) ca chng trnh l ging nhau. Tuy nhin khi gi

  • Lp trnh .Net

    31

    phng thc c th t lp dn xut phng thc OnGuard() i vi Simon v phng thc

    Chew() i vi Daisy th kt qu thu c khc nhau.

    Trong mt ng dng, vic tn dng tnh nng k tha ca hng i tng lm cho

    chng trnh tr nn ngn gn, d hiu. Trong tnh hung chng trnh c cha rt nhiu lp

    tng t nhau trong c rt nhiu phng thc ging nhau th vic xy dng mt lp c s

    trong c nhiu phng thc chung lm cho vic cp nht chnh sa c thun li, v

    ngi lp trnh ch cn sa mt ln ti lp c s thay v phi chnh sa tng phng thc

    trong tng lp.

    VIII. a hnh (Polymorphism)

    a hnh l thut ng c dng trong hng i tng dng ch vic ng x khc nhau

    ca cc i tng trong nhng lp k tha t mt lp c s khi mt phng thc chung c

    gi. Tnh a hnh c s dng trong trng hp mt phng thc chung c s dng trong

    nhiu lp dn xut nhng ng vi mi lp dn xut c th th phng thc ny c nhng ng

    x khc nhau.

    thc hin c tnh a hnh, phng thc lp c s phi c m t dng o

    (virtual) v phng thc lp dn xut phi c ghi (override). Override l thut ng

    c dng ch vic lp dn xut c t li phng thc lp c s. V d sau trnh by

    vic thc hin tnh nng a hnh khi xy dng mt lp c s v hai lp dn xut.

    Hnh 36 Lp c s v phng thc virtual khi thc hin tnh a hnh

    Hnh trn minh ha cho lp c s trong c mt phng thc o (virtual). Phng thc

    ny s c ghi (override) lp c s. Cc hnh tip theo trnh by vic xy dng hai lp

    dn xut trong mi lp, phng thc Speak() c nh ngha li bng cch ghi (override).

    Nu ngi lp trnh khng s dng t kha override th Visual Studio vn khng bo li. Tuy

    nhin, phng thc Speak() trong lp dn xut c hiu l phng thc ring ca chnh lp

    dn xut v phng thc ny ch c gi trc tip t lp dn xut.

  • Lp trnh .Net

    32

    Hnh 37 Lp dn xut th nht c phng thc override

    Hnh 38 Lp dn xut th hai c phng thc override

    minh ha cho kh nng ng x ca nhng i tng thuc nhng lp khc nhau khi

    chng u triu gi mt phng thc ta xy dng mt mng gm 3 i tng trong i

    tng th nht thuc lp c s, hai i tng cn li thuc lp dn xut. Khi gi phng

    thc Speak() cho tng i tng, chng trnh s cho ra cc kt qu khc nhau do tnh nng

    Polymorphism.

    Hnh 39 Minh ha vic s dng Polymorphism

  • Lp trnh .Net

    33

    Trong hnh trn, mi phn t ca mt mng c gn nhng i tng khc nhau. V cc

    i tng u thuc mt lp c s hoc thuc lp dn xut t chnh lp c s nn vic

    gn nhng i tng nh th vo cng mt mng khng gy ra xung t.. Cng trong v d

    trn, khi thc hin mt vng lp duyt qua tt c cc i tng m trong , ng vi mi i

    tng, phng thc Speak() c th s c gi v kt qu thu c s khc nhau qua tng

    phng thc.

    IX. Interface

    Interface c mt tc gi khc dch thnh cc thut ng l giao din hoc giao tip.

    Thut ng Interface c dng ch mt lp tru tng. Lp tru tng ny c xy dng

    nhm thun tin ha vic pht trin chng trnh theo phong cch xy dng thnh phn c s

    (component-based). Interface cung cp nhng tha thun chung cho php cc thnh phn c

    th lm vic vi nhau. Interface c s dng rt c lc trong vic x l cc s kin (Event

    Handler) khi xy dng cc i tng giao din ngi dng (GUI Graphic User Interface).

    Ngi hc c th tham kho m hnh x l s kin ActionPerformce khi x l Button trong

    hc phn Java hc trc .

    Interface khng phi l mt lp hon chnh nn c bt c m ci t no v khng th

    c dng khi to i tng. Interface ch c cc thuc tnh, cc phng thc (phng

    thc ny ch c tn khai bo m khng c m ci t). Tt c cc thuc tnh, phng thc

    phi c khi bo vi ch dn truy cp l public.

    Khi mt lp thc hin vic k tha t mt hoc nhiu Interface th trong lp , tt c cc

    phng thc thuc cc Interface u phi c nh ngha hon chnh.

  • L Vn Minh Trng Cao ng Cng ngh Thng tin, i hc Nng 34

    CHNG 4

    X L BIT L

    I. Mc tiu

    Trong chng ny gio trnh s trnh by qu trnh nm bt v x l li khi lp trnh C#.

    Nhng ch chnh c trnh by trong chng ny nh sau:

    Bit l (Exception)

    X l bit l (Exception Handler)

    X l nhiu bit l lng nhau

    X l nhiu bit l song song

    Cui chng ny ngi hc s c kin thc xy dng mt chng trnh tng mnh

    trong cc tnh hung gy li thng thng u c nm bt gii quyt.

    II. Bit l (Exception)

    II.1. Chng trnh v li

    Chng trnh (theo quan im ca cng ngh thng tin) l mt khi nim dng ch tp

    hp cc mnh lnh c trt t m da vo my tnh s thi hnh. Qu trnh con ngi son

    tho tp hp cc lnh cho chng trnh c gi l lp trnh. Trong qu trnh lp trnh, c th

    v l do ny hoc l do khc m kt qu thu c ca chng trnh khng nh mong mun,

    nhng tnh hung khng mong mun nh th gi chung l li (error hoc defect).

    Trong lnh vc lp trnh, li thng c chia thnh 2 loi chnh: li tin bin dch (pre-

    compiled error) v li khi thc thi (runtimed error).

    Li tin bin dch (pre-compiled error) l nhng li xut hin ngay khi xy dng chng

    trnh v c trnh bin dch thng bo trong qu trnh bin dch t ngn ng lp trnh sang

    ngn ng my hoc ngn ng trung gian. Cc li thuc dng ny thng thng l cc li lin

    quan n c php, lin quan n khai bo d liu hoc lin quan cc cu lnh vn c h tr

    sn. Cc li tin bin dch thng thng khng nghim trng v thng c pht hin cng

    nh chnh sa d dng. Mt s IDE hin ny h tr vic kim tra li t ng ngay trong qu

    trnh son tho iu lm cho cc li v cu trc gim i ng k. Cc IDE h tr tnh nng

    ny bao gm: Visual Studio (tt c cc phin bn), NetBean, Eclipse, Jbuilder,

    Li khi thc thi (runtimed error) l nhng li xy ra khi chy chng trnh. y l mt

    dng li tim n v khi chng trnh chy n mt trng thi nht nh mi sinh ra li. Cc li

    thuc dng ny rt nghim trng v rt kh khc phc v lc , chng trnh c bin

    dch sang m my hoc m trung gian. Cc li thuc dng ny thng c rt nhiu nguyn

    nhn: c th do thut ton, c th s khng tng thch ca h thng khi d liu gin n, hoc

    cng c th do chnh ngi lp trnh khng lng ht c tt c cc trng thi c th xy ra

  • Lp trnh .Net

    35

    i vi chng trnh. C mt vi v d c th cho cc li dng ny m ngi lp trnh thng

    gp phi nh: li khi chuyn kiu t kiu chui k t sang kiu s nguyn, li khi truy xut

    n phn t nm ngoi mng, li khi kt ni c s d liu,

    II.2. Khi nim bit l

    Bit l (Exception) l khi nim c s dng trong cc ngn ng lp trnh bc cao dng

    ch nhng bin c khng mong i khi chy chng trnh. Bn cht bit l l nhng li

    xy ra trong qu trnh thc thi (runtimed error).

    Cc ngn ng lp trnh bc cao nh Java v .Net u cung cp mt c ch x l bit l

    (gi l c ch try/catch) v c t cc lp c trng cho tng dng bit l m mt chng

    trnh thng gp.

    III. X l bit l (Exception Handler)

    III.1. C ch try/catch

    C ch try/catch l c ch c Visual Studio a ra x l cc bit l. C ch ny c

    lp trnh theo c php sau:

    try

    {

    harmful-statement(s);

    }

    catch (Exception-type identifier)

    {

    behavior-statement(s);

    }

    [finally

    {

    final-statement(s);

    }]

    Cc lnh c nguy c gy li (harmful-statement(s);) c t trong khi try. Cc lnh ny

    c th bao gm cc lnh chuyn i kiu d liu (t kiu chui sang kiu s), lnh lin quan

    n nhp xut v thm ch c ton t chia Khi gp mt lnh gy ra li trong khi try,

    chng trnh thc thi s lp tc triu gi cc lnh trong khi catch tng ng thc thi.

    Khi catch l khi lnh thc hin cc ng x khi c li, trong khi ny, thng thng

    ngi lp trnh thc hin vic hin th li. Khi xy dng khi catch, u tin phi khai bo

    loi bit l (Exception-type). Tt c Exception-type l nhng lp k tha t lp Exception.

    Trong mi lp u c phng thc ToString(), phng thc ny c dng hin th thng

    tin li cho ngi s dng. Vi mi dng cu lnh s c mt Exception-type tng ng, ngi

    lp trnh xem hng dn chi tit ca cc phng thc trong b hng dn MSDN chn

    Exception-type tng ng. Trong trng hp ngi lp trnh khng quan tm n cc loi

    bit l, ngi lp trnh c th s dng dng c bn l Exception cho tt c cc bit l.

    Phng thc ToString() thch hp s t ng triu gi da theo tnh a hnh ca hng i

  • Lp trnh .Net

    36

    tng (Polymorphism) v chng trnh lun hin th chnh ni dung li cho d tt c cc dng

    bit l u khai bo chung l Exception.

    Khi lnh finally c dng cha cc lnh x l cui cng (final-statement(s)). Cc

    lnh trong khi lnh ny c t ng triu gi cho d cc lnh trong khi try c sinh ra li

    hay khng. Ngi lp trnh khng nht thit phi khai bo khi lnh finally, tuy vy, khi

    lnh ny rt hu ch trong vic thu dn rc hoc gii phng vng nh.

    V d sau trnh by vic tnh bnh phng ca mt s nguyn c nhp t bn phm. Nu

    d liu nhp vo khng phi s nguyn th chng trnh s bo li.

    Hnh 40 V d v x l bit l

    Trong v d trn, lnh Convert.ToInt32() thc hin vic chuyn t kiu chui k t sang

    kiu s nguyn v lnh ny c kh nng sinh ra li khi chui k t nhp vo khng ng nh

    dng s nguyn. Khi xy ra li th chng trnh s khng chy nhng dng tio theo trong

    khi try m chuyn sang khi catch. Trong khi catch, cc lnh hin th li c thc hin.

    Trong trng hp d liu c nhp vo ng nh dng ca kiu s nguyn, chng trnh

    s chy ng kt qu nh sau.

  • Lp trnh .Net

    37

    Hnh 41 Kt qu chy chng trnh vi gi tr u vo hp l

    Trong trng hp d liu nhp vo khng ng vi nh dng s nguyn, chng trnh s

    bo li v hin th c th li ra mn hnh.

    Hnh 42 Kt qu chy chng trnh khi xy ra bit l

    Trong khi catch, lnh e.ToString() thng c gi hin th li, li ny c hin th

    chnh xc vi ni dung li v dng m sinh ra li. Vi c ch x l li ny, ngi lp trnh d

    dng tm ra li v chnh sa ph hp.

    III.2. X l bit l lng nhau

    Trong qu trnh lp trnh, c mt s tnh hung m chng trnh phi thc hin nhiu lnh

    c kh nng gy li lin tip. nm bt li mt cch chnh xc, lp trnh vin thng thc

  • Lp trnh .Net

    38

    hin vic bt li theo tng bc, ngha l x l bit l ca lnh ny xong th s x l bit l

    lnh tip theo.

    V d sau y trnh by vic lp trnh tnh s d khi chia s nguyn x cho s nguyn y,

    hai s nguyn ny c nhp t bn phm. Trong v d ny, chng trnh c hai lnh c kh

    nng sinh li. Lnh th nht l lnh chuyn kiu khi thc hin vic chuyn t kiu chui k t

    sang kiu s thc, lnh ny gy ra bit l khi chui k t c nhp vo khng ng nh

    dng s thc. Lnh th hai l lnh thc hin php chia ly s d (%), lnh ny gy ra bit l

    khi s chia bng 0.

    Hnh 43 Minh ha vic s l cc bit l lng nhau

    Trong v d trn, khi lnh try/catch bn trong thc hin vic x l bit l khi chia s x

    cho s y ly s d. Nu y = 0 th bit l c to ra, bit l ny thuc lp

    DivideByZeroException. Khi lnh try/catch bn ngoi thc hin vic x l bit l khi chuyn

    kiu t kiu s chui k t sang kiu s nguyn (Xem chi tit phn III.1 trc ).

    Trong trng hp c hai s nhp vo x, y u c nh dng ph hp v y khc 0 th

    chng trnh chy v cho ra kt qu ng (Nh hnh).

  • Lp trnh .Net

    39

    Hnh 44 Kt qu chy chng trnh vi gi tr u vo hp l

    Trong trng hp mt trong hai s nhp vo c nh dng khng phi l s nguyn th bit

    l u tin c x l. Khi chng trnh s thng bo li v chng trnh khng tip tc

    chy thc hin php ton chia (Nh hnh).

    Hnh 45 Bit l xy ra khi gi tr nhp vo khng ng nh dng s nguyn

    Trong trng hp c hai s nhp vo ng nh dng s nguyn nhng y c gi tr 0 th

    bit l tip theo c x l. Trong trng hp ny php chia ly s d s khng thc hin

    c v chng trnh s thng bo li (Nh hnh).

  • Lp trnh .Net

    40

    Hnh 46 Bit l xy ra khi s chia bng 0

    Vi v d trn, ta c th d dng nhn thy vic x l bit l lng nhau mt cch phn cp

    s lm cho chng trnh cht ch v li c nm bt d dng. Vi mi bit l c thng

    bo ra mn hnh, ngi lp trnh s d dng nhn thy v chnh sa on m ph hp. Tuy

    nhin, vic x l nhiu bit l lng nhau mt cch phn cp lm cho m ngun tr ca

    chng trnh thm nng n, cc khi try/catch xut hin nhiu ln v lng nhau lm cho cu

    trc ca chng trnh tr nn phc tp.

    III.3. X l bit l song song

    Nh trnh by phn III.2, khi c nhiu lnh c kh nng gy ra bit l th ta cn phi

    thc hin x l tt c cc bit l. x l cc bit l, ta thc hin vic s dng cu trc

    try/catch mt cch tun t: lnh no thc hin trc th x l trc, sau , ngay bn trong

    khi try, ngi lp trnh s dng mt cu trc try/catch khc x l bit l cho lnh tip

    theo. Cch lm ny tuy x l tt c cc bit l nhng cng lm cho chng trnh tr nn phc

    tp v phi s dng nhiu cu trc try/catch lng nhau. ti u ha m lnh v lm cho

    chng trnh thm tng minh, thng thng ngi lp trnh thc hin vic x l bit l song

    song.

    X l bit l song song l qu trnh x l bit l trong ch c mt khi try nhng li c

    nhiu khi catch. Tt c cc lnh cn thit u t trong khi try v mi khi catch s thc

    hin vic bt mt bit l tng ng. Khi chy chng trnh, ng vi mt bit l c to ra,

    chng trnh thc thi ca .Net Framework s t ng tham chiu n khi catch c bit l

    tng ng gi lnh x l.

    V d sau trnh by vic ci tin v d mc III.2, trong v d ny, bit l c x l bng

    cch s dng hai khi catch khc nhau bt ly 2 bit l khc nhau. Kt qu chy chng

    trnh ci tin ny hon ton ging vi kt qu khi chy v d trong mc III.2

  • Lp trnh .Net

    41

    Hnh 47 X l nhiu bit l song song

  • L Vn Minh Trng Cao ng Cng ngh Thng tin, i hc Nng 42

    Chng 5

    TH VIN LIN KT NG

    I. Mc tiu

    Sau khi hiu c nguyn l Lp trnh hng i tng vi C#, ngi lp trnh c th t

    xy dng c cc lp theo s c t ca bi ton thc t. Tuy nhin, ng dng tr nn

    trong sng v khoa hc, cc lp cn c phn loi v tp hp thnh cc th vin. Cc th

    vin ny khng nhng gip cho ngi lp trnh d dng tm kim, cp nht, nng cp chnh

    m ngun ca mnh m cn gip cho vic pht trin cc ng dng sau ny mt cch d dng

    bng cch s dng li cc th vin c. Trong chng ny gio trnh s trnh by mt s

    khi nim lin quan n vic xy dng th vin trong cc ngn ng thuc h .Net m tiu

    biu l ngn ng lp trnh C#.. Nhng ch chnh c trnh by trong chng ny bao

    gm:

    Namespace

    Th vin lin kt ng

    Cch xy dng mt th vin

    Cch s dng mt th vin

    Mt s th vin v namespace c sn

    Cui chng ny ngi hc s c kin thc c th phn chia ng dng ca mnh

    thnh nhng phn ring bit mt cch khoa hc tin cho vic pht trin sau ny.

    II. Th vin trong lp trnh

    II.1. Khi nim

    Khi lp trnh, ngi lp trnh khng nht thit phi nh ngha mi th m c th s dng

    nhng on chng trnh t nhng ngi khc hoc nhng on chng trnh t mt ng

    dng trc ca chnh mnh. Do , khi lp trnh, ngi lp trnh cn phi nhng vo

    chng trnh ca mnh mt hoc nhiu on m ca chng trnh khc.

    Trong lp trnh, th vin l mt khi nim dng ch tp hp cc on m hoc on

    chng trnh m cc on m ny c nhng vo mt chng trnh khc nhm phc v mt

    s chc nng xc nh. V d cc th vin phc v lp trnh ha, cc th vin iu khin

    phn cng (cn c bit n vi thut ng driver),

    Vic s dng th vin c mt ngha v cng thit thc khi ngi lp trnh cn phi thc

    hin vic iu khin mt s thit b c th hoc lp trnh giao din hoc kt ni vi h thng

    phn cng, v ngi lp trnh khng th hiu ht ton b thng tin v cc thit b cng nh h

    thng ha v phn cng do cc thng tin ny c nh sn xut cung cp. Thng

    thng, cc thng tin v phn cng v thit b c nh sn xut cung cp cho ngi lp trnh

    di dng th vin.

  • Lp trnh .Net

    43

    II.2. Phn loi th vin

    i vi vic lp trnh ng dng, th vin thng c phn loi da vo vic nhng th

    vin vo chng trnh. Vi tiu ch ny, th vin c phn thnh hai loi: th vin tnh

    v th vin lin kt ng

    II.2.1. Th vin tnh

    Th vin tnh l khi nim ch on m hoc on chng trnh c nhng trc tip vo

    mt chng trnh khc. Nhng on m ca th vin tnh c th l m chng trnh hoc m

    tin bin dch (pre-compiler code mt dng m rt gn c hiu bi mt ngn ng lp

    trnh c th). Khi bin dch, c m ngun ca chng trnh ln m ca th vin tnh c

    bin dch cng mt lc thnh m thc thi hoc nh phn (m my) v cha trong mt file ca

    chng trnh.

    i vi ngn ng C th vic s dng th vin tnh c thc hin thng qua lnh #include,

    lnh ny thc hin vic nhng ton b on m ca th vin c gi vo chng trnh m

    ngi lp trnh ang s dng.

    Vic s dng th vin tnh tuy gip cho ngi lp trnh s dng li nhng on m xy

    dng nhng cch lm ny vn c hai nhc im c bn:

    Lm tng ln ca chng trnh: Khi nhng nhiu nhiu th vin vo mt chng

    trnh th dung lng ca chng trnh s phi tng thm v cha thm m ngun ca

    cc th vin cho d ngi lp trnh ch s dng mt t chc nng ca th vin .

    Ngoi ra, khi mt th vin tnh c nhng vo nhiu chng trnh th tt c cc

    chng trnh u tng dung lng.

    To ra s khng ng b khi cp nht: Khi ngi lp trnh chnh sa th vin th kt

    qu vn khng c cp nht vo cc chng trnh vn nhng th vin .

    chng trnh c s cp nht ng b, ngi lp trnh bt buc phi bin dch li

    chng trnh ton b m ngun ca chng trnh c bin dch li vi phin bn

    mi nht ca th vin.

    gii quyt hai nhc im trn, Microsoft ra gii php Th vin lin kt ng

    Dymamic Linked Library gi tc l dll.

    II.2.2. Th vin lin kt ng

    Th vin lin kt ng (Dynamic Linked Library) l khi nim c Microsoft a ra khi

    xy dng h iu hnh Windows. Th vin lin kt ng c dng ch nhng on

    chng trnh hoc nhng on m nh phn nm trong mt file (thng thng c phn m

    rng l .dll) m nhng on m ny c th c cc chng trnh khc gi bng cc tham

    chiu thay v phi nhng ton b on m vo chng trnh.

    Vi th vin lin kt ng, cc chng trnh s gim bt dung lng v rt nhiu chng

    trnh c th s dng chung mt th vin, c bit l cc th vin ca h thng nh th vin

    ha, cc driver iu khin thit b. Vic s dng th vin lin kt ng s to ra s ng b

    khi lp trnh v chnh sa v ch cn chnh sa ngay ti th vin, tt c cc chng trnh c s

    dng th vin s t ng thay i m khng cn phi bin dch li.

  • Lp trnh .Net

    44

    Khc vi th vin tnh, cc on m cha trong th vin lin kt ng l nhng on m

    thc thi c (executable code). Cc on m ny nu c gi ng cch th vn c th th

    thi c. iu ny cng ny sinh nhc im l cc th vin lin kt ng vn c th b

    nhim virus. Nhng virus ny tuy khng lm gin on chng trnh nhng c th lm cho

    chng trnh b li hoc chy sai kt qu. Cc li ny s lm cho ngi lp trnh kh c th

    chnh sa ng n v ngi lp trnh khng c kh nng can thip vo cc th vin ca cc

    nh cung cp.

    Trong cc ngn ng thuc h .Net, cc lp trong cc th vin c phn nhm. Nhng

    nhm ny c gi l namespace.

    III. Namespace

    Namespace cn c bit di mt thut ng khc l khng gian tn. Namespace l mt

    khi nim c a vo h ngn ng .Net t phin bn Visual Studio 2003. Namespace c

    dng ch mt nhm cc lp trong mt th vin.

    Khi nim namespace gip cho vic t chc cc th vin c trong sng, d dng. Ngoi

    ra, namespace cn gip ngi lp trnh trnh n s xung t v tn lp, tn hm, tn cc kiu

    d liu khi cc tn ny b trng.

    Nhiu namespace c th c t lng nhau v ngi lp trnh c ty t tn cc

    namespace nh cch t tn bin. Tuy nhin, thng thng namespace c t tn theo mt

    quy c chung ca mt chun phn mm. Quy c v vic t tn namespace thng thng

    bao gm tn doanh nghip, tn d n, tn module v c phn cch vi nhau bi du chm

    (dot) nh: ..

    V d: namespace Wrox.ProCSharp.Basics;

    IV. Th vin lin kt ng

    IV.1. Cch xy dng th vin vi Visual Studio 2005

    Trong phn ny, gio trnh s hng dn xy dng mt th vin c tn l MyLibrary. Th

    vin ny cha namespace m namespace ny tp hp cc lp c cc hm hin quan n cc

    cng thc ton hc. xy dng th vin ny, ngi lp trnh c th thc hin theo cc bc

    sau.

    IV.1.1. To mt project cho th vin

    Khi to project cho th vin, project ny c template l Class Library. Vic khai bo tn

    v th mc c th hin tng t nh vic to Console Application project trnh by

    phn trn. V d sau minh ha vic to mt th vin c tn l MyLibrary.

  • Lp trnh .Net

    45

    Hnh 48 To mi mt project Library

    IV.1.2. Cu hnh cho project

    Trong bc ny chng ta s thit lp namespace mc nh cho th vin v thit lp ng

    dn cho th vin. Khi to cc lp cho th vin th cc namespace mc nh ny s t ng

    c gn cho cc lp. ng dn ca th vin chnh l v tr ca file .dll sau khi Visual

    Studio bin dch thnh cng.

    Hnh 49 Minh ha vic cu hnh namespace mc nh

    Vi minh ha hnh trn, namespace mc nh c t tn theo chun gm tn doanh

    nghip, tn d n, tn module l MyCompany.CSharp.MathLibrary. Namespace ny c

  • Lp trnh .Net

    46

    dng ch tp hp cc lp c cc hm lin quan n cc cng thc ton hc. Sau khi thit

    lp namespace mc nh, ngi lp trnh s thit lp thm ng dn ca th vin.

    Hnh 50 Minh ha vic thit lp ng dn cho th vin

    Vi minh ha hnh trn th ng dn ca th vin l th mc bin, th mc ny nm

    ngay trong th mc cha project. Sau khi bin dch thnh cng, file MyLibrary.dll s c

    to ra ngay trong th mc bin ny.

    Trong phn cu hnh cho project cn c nhiu tham s khc. Ty vo yu cu c th,

    ngi lp trnh c th cu hnh theo ca chnh mnh. Cc tham s khc v cu hnh, ngi

    hc t nghin cu v tm hiu thm.

    IV.1.3. Xy dng lp v phng thc cn thit

    Trong bc ny, ngi lp trnh c th xy dng cc lp. Trong cc lp, cc thuc tnh v

    phng thc c xy dng theo nguyn l lp trnh hng i tng. Khi xy dng cc lp

    trong th vin, v cc lp ny cn c truy xut t mt ng dng khc (truy xut t bn

    ngoi), do ch dn truy cp ca cc lp thng thng l public. V d sau trnh by vic

    xy dng mt lp trong th vin, lp ny c tn l MyMath. Trong lp MyMath, v d trnh

    by vic xy dng mt phng thc IsPrime(int x), phng thc ny l mt hm thc hin

    vic kim tra mt s c phi l s nguyn t hay khng. Phng thc IsPrime tr v true nu

    gi tr u vo l s nguyn t v tr v false nu ngc li.

    Visual Studio t phin bn 2003 tr i cung cp mt gii php vit ch thch (write

    commnent) cho c mt phng thc. Vi gii php ny cc ghi ch ca mt phng thc

    c ghi thnh tng dng v bt u bng ba du chia (triple slashes). Ngi lp trnh s vit

    ghi ch v ghi ch ny c s dng nh mt hng dn cho nhng ngi lp trnh sau ny

  • Lp trnh .Net

    47

    khi s dng. Ch , ngi lp trnh c th son tho ghi ch bng Ting Vit c du theo

    chun Unicode.

    Hnh 51 Minh ha vic xy dng lp trong th vin

    IV.2. Cch s dng th vin

    Lp trnh vin Visual Studio .Net c th s dng mt s th vin c sn dng file .dll m

    file ny cng c xy dng bng Visual Studio .Net. i vi Visual Studio .Net, cc th

    vin bng nhng ngn ng khc nhau (trong h .Net) c th tham chiu ln nhau v cng c

    th c s dng bi nhng chng trnh khc trong h .Net. Trong phn ny gio trnh s

    trnh by mt v d thc hin vic s dng phng thc IsPrime(x) ca th vin trn. V d

    ny thc hin vic hin th tt c cc s nguyn t nh hn 100. s dng th vin va

    c xy dng, ta thc hin cc bc sau.

    IV.2.1. To thm tham chiu (add reference).

    to tham chiu n th vin, ta thc hin vic kch chut phi (right click) vo mc

    References trong ca s Solution Explorer ri chn Add Reference. Vic to thm tham chiu

    bn cht l s khai bo ng dn n th vin cn tham chiu.Vi khai bo ny, trnh bin

    dch s thc hin vic truy xut n cc file .dll v s dng cc lp, phng thc trong cc

    file .

  • Lp trnh .Net

    48

    Hnh 52 To thm tham chiu cho ng dng

    IV.2.2. Khai bo tham chiu

    Trong phn ny, Visual Studio s cung cp cho ngi lp trnh mt giao din ty chn

    ngi lp trnh la chn mt th vin tng ng. Trong giao din ny c cc th (tab) tng

    ng vi tng loi th vin bao gm: th .NET cha cc th vin c sn ca .NET Framework,

    th COM cha cc th vin ca ng dng COM, th Project cha cc Project c dng th

    vin trong cng Solution, th Browse cha ty chn n file .dll c lp.

    Hnh 53 Khai bo tham chiu

  • Lp trnh .Net

    49

    Trong phn ny, gio trnh trnh by vic tham chiu n mt th vin c lp bng cch

    la chn n file .dll trong th Browse. C th trong v d hnh trn l file MyLibrary.dll

    trong th mc bin ca project MyLibrary vn c trnh by phn trc.

    IV.2.3. S dng th vin

    Sau khi khai bo tham chiu, ngi lp trnh s phi khai bo vic s dng namespace

    trong th vin. Namespace ny c khai bo bng lnh using. Lnh ny c c php v chc

    nng tng t vi lnh import ca ngn ng Java (ca hc phn lp trnh Java trc ).

    Khi s dng, ngi lp trnh thc hin vic khai bo i tng hoc vic triu gi phng

    thc ging nh vic s dng cc lp c sn. Nu trong qu trnh xy dng th vin, ngi lp

    trnh c thc hin vic vit ch thch cho cc phng thc th khi triu gi, cc ghi ch ny s

    c hin th nh cc hng dn ca cc phng thc c sn ca .Net Framework.

    Hnh 54 Minh ha vic s dng th vin

    Hnh trn trnh by vic s dng hm IsPrime(x) ca th vin MyLibrary. Hm ny thuc

    lp MyMath v c nhm vo namespace MyCompany.Csharp.MathLibrary.

    V. Cc namespace c sn ca .Net Framework 2.0

    V.1. Namespace System.Windows.Forms

    Namespace System.Windows.Forms cha cc lp dng to ng dng Windows vi giao

    din ngi s dng mang cc c im u vit ca h iu hnh Windows.

    y l namespace chnh cung cp cc lp dng xy dng ng dng Windows c

    trnh by trong chng tip theo. Cc lp trong namespace ny c chia thnh cc nhm

    sau:

    Control, UserControl v Form: Hu ht cc lp trong namespace

    System.Windows.Forms k th