giaotrinh c#
TRANSCRIPT
-
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