HUTECH
MC LC
LI NÓI U
CHNG 1 : TNG QUAN 1
1.1 GII THIU 2
1.2 THC T NHNG PHN MN ANG S DNG 2
1.3 MC TIÊU CA PHN MM 2
CHNG 2 : C S LÝ THUYT 4
2.1 NGÔN NG LP TRÌNH C 5
2.1.1 Lch s ngôn ng C 5
2.1.2.Tìm hiu tng quan v ngôn ng C 5
2.1.2.1 Các kiu d liu 4
2.1.2.2 Toán t 5
2.1.2.3 Con tr (Pointer) 5
2.1.2.4 Hàm (Function) 5
2.2 CÔNG NGH & CÔNG C C S DNG 6
2.2.1 B visual studio.net 6
2.2.2 Tng quan v C# 9
2.2.2.1 Các thành phn m rng C# 9
2.2.2.2 Các kiu d liu trong C# 10
2.2.2.3 Biu thc toán t 11
2.2.2.4 Phát biu điu kin và vòng lp 12
2.2.2.5 Lp và tha k 13
2.2.2.6 a hình 17
2.2.2.7 Giao din 19
2.2.3 S LC V UML 21
2.2.3.1 Gii thiu 21
2.2.3.2 Ngun gc ca UML 22
2.2.
3.3 Biu đ usecase 22
2.2.3.4 Biu đ lp 23
2.2.3.5 Biu đ cng tác 27
2.2.3.6 Biu đ hat đng 28
2.2.4 Mô hình 3 lp (Data Access Layer) 30
2.2.5
Microsoft Visual C++ Toolkit 2003 31
2.2.6 Các công c đc s dng 32
CHNG 3 : PHÂN TÍCH VÀ THIT K 35
3.2 NHNG CHC NNG CHÍNH 35
3.3 PHÂN TÍCH UML 36
3.3.1. Mô hình usecase 36
3.3.2. Mô hình hat đng 39
3.3.2.1 Chn cách hc 39
3.3.2.2 Chn làm bài tp 40
3.3.2.3 Chn làm bài tp 41
3.3.2.4 ng ký thành viên 42
3.3.2.5 ng nhp 43
3.3.2.6 To thành viên 44
HUTECH
CHNG 4 : THC HIN VÀ KT QU 46
4.1 LP TRU TNG (ABSTRACT) 46
4.1.1 Business Layer 46
4.1.2 Data Layer 49
4.2 Mô hình lp 49
4.2.1 Business Layer 50
4.2.2 Data Layer 57
4.3 Mô hình cng tác 61
4.3.1 Ly danh sách bài hoc 61
4.3.2 Ly danh sách chng 62
4.3.3 Ly bài tp 63
4.3.4 Ly bài hoc 63
4.3.5 Ly mt chng 64
4.3.6 Thêm ngi dùng 65
4.3.7 Kim tra ngi dùng 66
4.3.8 Thêm th vin 67
4.3.9 Cp nht th vin 68
4.3.10 Ly d liu 68
4.4 DESIGN PATTERN 69
4.4.1 Singleton pattern 69
4.4.2 Adapter pattern 69
4.4.3 Factory Method pattern 71
4.4.4 Proxy pattern 72
4.5 THIT K C S D LIU, GIAO DIN PHN MM 73
4.5.1 Thit k c s d liu 73
4.5.1.1 Mô hình thc th ERD 73
4.5.1.2 Mô hình quan h trong SQL Server 79
4
.5.2 Giao din phn mn 79
4.5.2.1 Giao din chính 80
4.5.2.2 Khi chy debug 81
4.5.2.3 Bài tp 82
CHNG 5 : KT LUN VÀ HNG PHÁT TRIN 84
5.1 NHNG IU Ã LÀM C 84
5.2 NHNG IU CHA LÀM C 85
5.3 HNG PHÁT TRIN 85
TÀI LIU THAM KHO 86
HUTECH
Lun vn tt nghip 1 GVHD:ThS. Trng Th Minh Châu
SV thc hin: Nguyn Hoàng V
CHNG 1
TNG QUAN
1.1 GII THIU
Xây dng phn mm h tr hc môn k thut lp trình C, nhm giúp đ mt
phn nh cho các bn mi làm quen vi lp trình có th tip cn ngôn ng C mt cách
d dàng, hng thú. Chng trình bao gm vic hin th nôi dng bài hc, làm bài tp,
to th vin riêng và debug nhng ví d mu, biên dch và chy bài tp do ngi vit.
1.2. THC T NHNG PHN MM ANG S DNG
Vic s dng tin hc to ra nhng phn mm h tr hc tp đã đc phát trin
rt nhiu nht là t khi máy vi tính đã tr nên mt thit b cn thit trong mi gia đình.
T nhng phn mm cho thiu nhi đn nhng phn mm dy hc cao cp. Nhng
phn mm v hc tp cng rt phong phú hc anh vn, toán, lý, hóa, …
Hin nay nhu cu hc lp trình rt ln. Có rt nhiu bn mun tìm hiu nhng
không bit bt đu t đâu và s dng ngôn ng nào cho thích hp.
Trên th trng hin nay cng có rt nhiu phn mm h tr hc ngôn ng lp
trình. Nhng hu ht là nhng ngôn ng bc cao (ví d Visual Basic, Visual Studio
.NET, …) trong khi đó li rt ít phn mm h tr hc các ngôn ng lp trình C/C++
hay Pascal.
Hu ht các phn mm dng dy nhng ngôn ng lp trình C/C++ đu không
đc đu t nhiu.
HUTECH
Lun vn tt nghip 2 GVHD:ThS. Trng Th Minh Châu
SV thc hin: Nguyn Hoàng V
1.3 MC TIÊU CA PHN MM
1.3.1 Giúp đ ngi bt đu hc lp trình
Mt khóa hc s bao gm nhiu chng. Mi chng s có bài lý thuyt và
nhng bài tp nh nhm giúp ngi dùng quen vi lp trình.
Kt thúc mi chng s có bài kim tra kin thc di dng trc nghim.
Ngoài ra ngi dùng cng có th chn:
Làm mt bài kim tra tng hp v mt phn nào đó.
Chn mt bài hc hoc mt chng nào đó trong chng trình.
1.3.4 Thit k sao cho d dàng thay đi/nâng cp/bo trì
Thit k và cài đt bt buc phi theo mô hình lp.
Hng phát trin:
a lên website
Cho phép ngi dùng t son tho mt chng trình hc
(VD: Hc toán, …).
1.3.5 Gii pháp xây dng phn mm
S dng môi trng Visual Studio .NET 2003, ngôn ng lp trình C# mt
trong nhng ngôn ng lp trình cp cao mnh hin nay. Tn dng kh nng lp trình
hng đi tng và công c ADO ca Microsoft.
Phn mm s dng h qun tr c s d liu SQL Server 2000.
S dng ngôn ng UML thit k chng trình.
Phn mm đc thit k theo mô hình 3 lp.
ng dng Design Pattern vào thit k mô hình lp.
HUTECH
Lun vn tt nghip 3 GVHD:ThS. Trng Th Minh Châu
SV thc hin: Nguyn Hoàng V
h tr vic chy phn bài tp ca ngi dùng, chng trình có s dng thêm
công c Microsoft Visual C++ Toolkit 2003 ca Microsoft.
S dng nhng control mã ngun m trên mng internet.
Trong thit k giao din phn mm hn ch s dng form, chuyn sang to và
s dng user control.
Xây dng CSDL (Dùng h qun tr CSDL).
Xây dng mô hình lp.
Hin th d liu (Toàn b s dng class-object)
Xây dng module cho phép làm kim tra.
Thân thin và d s dng đi vi ngi dùng.
HUTECH
Lun vn tt nghip 4 GVHD:ThS. Trng Th Minh Châu
SV thc hin: Nguyn Hoàng V
CHNG 2
C S LÝ THUYT
2.1 NGÔN NG LP TRÌNH C
2.1.1 Lch s ngôn ng C
Ngôn ng C đc phát trin t hai ngôn ng trc đó là BCPL và B. BCPL
đc phát trin bi Martin Richards nm 1967 và là ngôn ng dành đ vit các phn
mm h điu hành và các trình biên dch. Ken Thomspon phát trin ngôn ng B, có
nhiu đim bt chc BCPL. Và B đc dùng đ vit phiên bn đu tiên ca h điu
hành UNIX ti Bell Laboratories nm 1970.
Ngôn ng C đc Dennis Ritchie Bell Laboratories đc phát trin t B vào
nm 1972. C đc ph b in ban đu do vic là ngôn ng phát trin cho h điu hành
UNIX. Ngày nay hu nh tt c h điu hành ch cht đu đc vit bng C hay C++.
2.1.2 Tìm hiu tng quan v ngôn ng C
2.1.2.1 Các kiu d liu
Chng trình C, cng ging nh nhng ngôn ng kh ác, chúng ta cung cp d
liu (s, ch, …) và mô t cách thc hin công vic. Và chúng ta trong đi kt qu t
nhng d liu trên. Do đó, điu cn thit trong chng trình C là phi phân loi tt c
các d liu bng cách chia chúng theo kiu d liu (data type). C có 4 kiu d liu cn
bn là : ký t (character), du chm đng (floating point number), tinh xác đôi (double
precision). Trong C dùng 7 t khóa đ phân bit kiu d liu khác nhau :
int, long,
short, unsigned, char, float và double.
HUTECH
Lun vn tt nghip 5 GVHD:ThS. Trng Th Minh Châu
SV thc hin: Nguyn Hoàng V
2.1.2.2. Toán t
Ngoài nhng toán t s hc thng, C còn h tr thêm nhng tóan t mi nh :
Toán t tng/gim : ++/
Toán t phc hp : +=, -=, *=, /=, %=
2.1.2.3. Con tr (Pointer)
Con tr là mt đc trng rt mnh, tinh vi ca ngôn ng C. Nhng vic s dng
con tr khá phc tp.
Con tr cng là mt bin, nhng nó không cha giá tr mà nó cha đa ch ca
mt bin nào đó.
Khai báo
Kieu_du_lieu * ten_con_tro;
Ví d:
int *p;
Các thao tác chính trên con tr: &, *;
& ly đa ch ca con tr
* ly ni dung ca vùng nh mà con tr đang tr ti.
2.1.2.4 Hàm (Function)
Mt chng trình C gm mt hoc nhiu đn th chng trình đc gi di
tên là hàm (function).
Trong C, hàm cho phép chia nhng chng trình ln thành nhng chng trình
nh và mt li th là mt hàm đc áp dng thành công chng trình này thì cng
HUTECH
Lun vn tt nghip 6 GVHD:ThS. Trng Th Minh Châu
SV thc hin: Nguyn Hoàng V
có th s dng tt vi cùng mc đích chng trình khác. Chng trình vit theo C
thng là mt phi hp s dng hai lai hàm:
Hàm do ngi s dng vit.
Hàm trong th vin chun ca C (ví d nh printf (), scanf ()).
2.2 CÔNG NGH & CÔNG C C S DNG
2.2.1 B VISUAL STUDIO.NET
.NET là gì?
.NET không ch là mt cái tên gi mà nó còn đi din cho tòan b các công
ngh và các khái nim cu thành mt nn tng đ ngi lp trình xây dng các dng
dng trên nó. Visual Basic .NET có mt s phiên bn thc s là 7.0 nhng s này ít
đc s dng.
Có th hiu .NET là mt lp tn ti bên di các ng dng và cung cp mt tp
các chc nng và các dch v c bn. Lp này cha mt tp các ng dng và các h
điu hành gi là các .NET server; mt tp các đi tng c s gi là .NET Framework,
và mt tp các dch v h tr cho tt c các ngôn ng .NET là Common Language
Runtime (CLR). Các phn này đc tách bit nh trong hình:
HUTECH
Lun vn tt nghip 7 GVHD:ThS. Trng Th Minh Châu
SV thc hin: Nguyn Hoàng V
User Application
⋅NET Framework
.NET Servers
Windows, BizTalk, Exchange, SQL, App Center …
.NET Devices
Hardware Componets
.NET server
Mc đích ln ca .NET là thun tin trong vic xây dng các h thng phân
tán, h thng phân tán có ngha là công vic đc thc hin nhiu v trí khác nhau.
Phn ln các h thng kiu này thc hin công vic ca chúng phn hu (back end),
cp đ server Microsoft cung cp mt tp các sn phm phn mm mà chúng đc
bit nh là .NET Enterprise Servers. Chúng đc thit k đ h tr các tính nng x lý
phn hu cn thit ca mt h thng phân tán.Các sn phm này bao gm:
H điu hành server, Microsoft Windows (Server, Advanced Server, và
Datacenter Server)
Các phm mm nh là Microsoft App Center và Microsoft Cluster Server
Mt h thng lu tr th đin t, thông tin t do, …, Microsoft Exchange
Server
HUTECH
Lun vn tt nghip 8 GVHD:ThS. Trng Th Minh Châu
SV thc hin: Nguyn Hoàng V
Mt đng c chuyn đi dng d liu (data-transformation engine) da trên
XML gi là Microsoft BizTalk Server
…
.NET Framework
Khi chuyn qua Visual Basic .NET, nhiu th đã đc thay đi mt cách trit
đ; mt trong chúng là s phát trin ca mt nn tng mi cho tt c các công c phát
trin ca .NET. Nn tng c s này, gi là .NET Framework, cung cp hai th chính:
môi trng thc thi c s (base runtime environment) và mt tp các lp nn tng
(foundation class). Base Environmet cung cp mt lp nm gia các chng trình và
phn còn li ca h thng, thc hin các dch v cho các ng dng ca ngi lp trình
và đn gin hóa vic x lý đn chc nng ca các lp thp hn. Các lp nn tng cung
cp mt tp ln các chc nng xây dng sn, nh x lý tp tin, thao tác vi XML, …
.NET Framework cng cung cp mt tp các hàm API ca riêng nó đ giúp cho
ngi lp trình tn dng đc ht các kh nng ca nó.
.NET Service
.NET có các khái nim mà vt xa hn các chi tit ca lp trình đ mô t cách
các h thng đc xây dng và cách chúng có th tng tác. Mt trong các khái nim
trên là ý tng Web Services, chc nng đc phân theo mt quy lut nht quán thông
qua Internet. Các dch v này cho phép mt công ty hay t chc cung cp chc nng
mà chc nng này đc thc hin hoàn toàn bên trong môi trng ca h. Mt ví d
ca các dch v này là dch v thanh tóan hóa đn, mt công ty có các sever và các ng
dng trong chính công ty ca h mà có th thc hin và qun lý đc vic thanh toán
hóa đn. Công ty này cung cp dch v đó cho các công ty khác thông qua dch v
Web. Dch v này khác vi vic cung cp mt trang Web thông thng; đây là mt
giao tip mà các ng dng hay các trang Web khác có th s dng chc nng đc
cung cp.
HUTECH
Lun vn tt nghip 9 GVHD:ThS. Trng Th Minh Châu
SV thc hin: Nguyn Hoàng V
.NET Device
Ngày nay có rt nhiu h thng có th truy xut Internet, nh là máy tính cá
nhân, các đu cui TV -Based Internet, thin-client, hay PDA (Personal Digital
Assistants), … Tt c các thit b này có th là công c đc phân vào lp .NET
Devices - mt s kt hp phn cng và các tính nng phn mm đc thit k đ làm
vic vi các dch v và các ng dng xây dng trên .NET. Các thit b .NET bao gm
các máy tính chy trên Windows và các thit b chy Windows CE (Framework tng
thích cho loi thit b này có sn, cho phép h tr các tính nng .NET).
2.2.2.Tng quan v C#
Ngôn ng C# đc thit k bi Anders Hfsberg ca Microsoft. C# là mt ngôn
ng lp trình hng đi tng hin đi có th tng tác vi các phn t ca các ngôn
ng khác nh C, C++, Pascal, Java, và ngay c Basic. C# là mt sn phm ca b sn
phm Visual Studio.NET. Ngoài ra, b Visual Studio.NET còn có các sn phm khác
nh Visual Basic.NET…
V phng din lp trình, ngôn ng C# có phong cách lp trình ging nhng
ngôn ng lp trình hng đi tng khác nh Visual C++, Java.
Sau đây là
nhng ci tin hoc m rng ca ngôn ng lp trình C# so vi
C/C++.
2.2.2.1. Các thành phn m rng C#
Tp tin vit bng ngôn ng C# cng nh các tp tin khác nhng chúng có tên
m rng là .cs, và tên m rng ca project là .csproj.
Ngoài ra, đ biên dch và s dng đc chng trình vit bng ngôn ng C# cn
phi có môi trng gi là FrameWork Software Development Kit (SDK), cng nh
chng trình vit bng ngôn ng Java cng cn phi có môi trng là Java
Development Kit (JDK).
HUTECH
Lun vn tt nghip 10 GVHD:ThS. Trng Th Minh Châu
SV thc hin: Nguyn Hoàng V
T khóa using dùng tham chiu đn nhng th vin có sn trong .NET
Framework (tng t nh trong C là include<tên th vin>, hoc trong Java là import).
System là tên ca mt không gian tên (Namespace), có đn 90 không gian tên s dng
bt đu bng tên System trong .NET Framework, các không gian tên quan trng nh
System.Drawing, System.Windows.Forms,….
2.2.2.2.Các kiu d liu C#
Kiu Mô t
object Lp c s ca tt c các đi tng trong C#
string Dãy các ký t dng Unicode
sbyte Nguyên có du 8-bit
short Nguyên có du 16-bit
Int Nguyên có du 32-bit
Long nguyên có du 62-bit
Byte Nguyên không du 8-bit
Ushort Nguyên không du 16-bit
Uint Nguyên không du 32-bit
Ulong Nguyên không du 64-bit
Float S chm đng có đ chính xác đn
Double S chm đng có đ chính xác đôi
Bool Kiu logic – true hay false
Char Ký t Unicode
decimal S thp phân có 28 ch s nguyên
HUTECH
Lun vn tt nghip 11 GVHD:ThS. Trng Th Minh Châu
SV thc hin: Nguyn Hoàng V
C# cng s dng hai toán t && và || ging nh trong trng hp ca ngôn ng C, và
nhng toán t này đc gi là toán t điu kin, biu thc th hai ch xét khi cn thit.
2.2.2.3. Biu thc toán t
Loi toán t Toán t
Primary (), [], f(), x++, y++, new, typeof,
sizeof, checked, unchecked
Unary(toán t mt ngôi) +, -, !, ~, ++x, x
Multipliacte *, %
Additive =, -
Shift (dch chuyn bit) <<, >>
Relational <>, <=, >=
Equallity = =, !=
Logical AND &
Logical OR |
Logical XOR ^
Lcondition AND &&
Condition OR ||
Condition ?:
Assigment (phép gán) =, +=, -=, *=, ?=, %=, <<=, >>=, |=,
&=, ^=
Trong ngôn ng C, toán t && và || là hai toán t lun lý, nhng trong ngôn ng
C# thì hai toán t này ch đc đnh ngha cho kiu d liu lun lý và c trong phép
toán so sánh điu kin.
HUTECH
Lun vn tt nghip 12 GVHD:ThS. Trng Th Minh Châu
SV thc hin: Nguyn Hoàng V
2.2.2.4 . Phát biu điu kin và vòng lp
Câu lnh lp foreach
Vòng lp foreach cho phép to vòng lp thông qua mt tp hp hay mt mng.
ây là mt câu lnh lp mi không có trong ngôn ng C/C++. Câu lnh foreach có
cú pháp chung nh sau:
foreach ( <kiu tp hp> <tên truy cp thành phn > in < tên tp hp>)
<Các câu lnh thc hin>
Do lp da trên mt mng hay tp hp nên toàn b vòng lp s duyt qua tt c các
thành phn ca tp hp theo th t đc sp. Khi duyt đn phn t cui cùng trong
tp hp thì chng trình s thoát ra khi vòng lp foreach.
Namespace
Nh chúng ta đã bit .NET cung cp mt th vin các lp đ s và th vin
này có tên là FCL (Framework Class Library). Trong đó Console ch là mt lp nh
trong hàng ngàn lp trong th vin. Mi lp có mt tên riêng, vì vy FCL có hàng
ngàn tên nh ArrayList, Dictionary, FileSelector,…
iu này làm ny sinh vn đ, ngi lp trình không th nào nh ht đc tên
ca các lp trong .NET Framework. T hn na là sau này có th ta to li mt lp
trùng vi lp đã có chng hn. Ví d trong quá trình phát trin mt ng dng ta cn
xây dng mt lp t đin và ly tên là Dictionary, và điu này dn đn s tranh chp
khi biên dch vì C# ch cho phép mt tên duy nht.
Chc chn rng khi đó chúng ta phi đi tên ca lp t đin mà ta va to
thành mt cái tên khác chng hn nh myDictionary. Khi đó s làm cho vic phát
trin các ng dng tr nên phc tp, cng knh. n mt s phát trin nht đnh nào
đó thì chính là cn ác mng cho nhà phát trin.
HUTECH
Lun vn tt nghip 13 GVHD:ThS. Trng Th Minh Châu
SV thc hin: Nguyn Hoàng V
Gii pháp đ gii quyt vn đ này là vic to ra mt namespace, namsespace
s hn ch phm vi ca mt tên, làm cho tên này ch có ý ngha trong vùng đã đnh
ngha.
Tng t nh vy ta c to các namespace đ phân thành các vùng cho các lp
trùng tên không tranh chp vi nhau.
Tng t nh vy, .NET Framework có xây dng mt lp Dictionary bên
trong namespace System.Collections, và tng ng ta có th to mt lp Dictionary
khác nm trong namespace ProgramCSharp.DataStructures, điu này hoà n toàn
không dn đn s tranh chp vi nhau.
Mng
Ngôn ng C# cung cp cú pháp chun cho vic khai báo nhng đi tng
Array. Tuy nhiên, cái tht s đc to ra là đi tng ca kiu System.Array. Mng
trong ngôn ng C# kt hp cú pháp khai báo mng theo kiu ngôn ng C và kt hp
vi đnh ngha lp do đó th hin ca mng có th truy cp nhng phng thc và
thuc tính ca System.Array. Mt s các thuc tính và phng thc ca lp
System.Array
2.2.2.5 Lp và tha k
Tha k là khái nim then cht ca thit k trong các ngôn ng hng đi
tng , tha k cho phép nhng chc nng và thuc tính dùng chung lp c s và
nhng lp ch đnh có th k tha nhng chc nng ca lp c s. C# ch h tr tha
k đn. C++ cho phép đa tha k và nu đc s dng đúng cách đây tht s là đim
rt mnh. Tuy nhiên, phi tha nhn là đa tha k rt khó qun lý và khó áp dng.
ây là mt trong nhng lý do C# ch phát trin đa tha k.
HUTECH
Lun vn tt nghip 14 GVHD:ThS. Trng Th Minh Châu
SV thc hin: Nguyn Hoàng V
Thu
Cho
Meo
Lp c s Dog s cha thuc tính và phng thc chung cho tt c các ging
chó. Mi lp dn xut có th cài đt cá bit hóa thêm nu thy cn thit. iu rt quan
trng nên chú ý rng C# ch k tha dng public.
public class Thu
{
public void Keu();
}
public class Meo: Thu
{
}
public class Cho : Thu
{
}
Phng thc
Hai thành phn chính cu thành mt lp là thuc tính hay tính cht và phng
thc hay còn gi là hành đng ng x ca đi tng. Trong C# hành vi đc đnh
ngha nh mt phng thc thành viên ca lp.
HUTECH
Lun vn tt nghip 15 GVHD:ThS. Trng Th Minh Châu
SV thc hin: Nguyn Hoàng V
Phng thc chính là các hàm đc đnh ngha trong lp. Do đó, ta còn có th
gi các phng thc thành viên là các hàm thành viên trong mt lp. Các phng
thc này ch ra rng các hành đng mà lp có th làm đc cùng vi cách thc làm
hành đng đó.
iu khin truy xut
Kh nng hin hu ca mt lp và các thành viên ca nó có th đc hn ch
thông qua vic s dng các b sung truy cp: public, private, protected, internal, và
protected internal.
T khoá public cho phép mt thành viên có th đc truy cp bi mt phng
thc thành viên ca nhng lp khác. Trong khi đó private ch cho phép các phng
thc thành viên trong lp đó truy xut. T khóa protected thì m rng thêm kh nng
ca private cho phép truy xut t các lp dn xut ca lp đó. Internal m rng kh
nng cho phép bt c phng thc c a lp nào trong cùng mt khi kt hp
(assembly) có th truy xut đc. Mt khi kt hp đc hiu nh là mt khi chia
x và dùng li trong CLR. Thông thng, khi này là tp hp các tp tin vt lý đc
lu tr trong mt th mc bao gm các tp tin tài nguyên, chng trình thc thi theo
ngôn ng IL,
T khóa internal protected đi cùng vi nhau cho phép các thành viên ca cùng
mt khi assembly hoc các lp dn xut ca nó có th truy cp. Chúng ta có th xem
s thit k này ging nh là internal hay protected.
Các lp cng nh nhng thành viên ca lp có th đc thit k vi bt c
mc đ truy xut nào. Mt lp thng có mc đ truy xut m rng hn cách thành
viên ca lp, còn các thành viên thì mc đ truy xut thng có nhiu hn ch. Do
đó, ta có th đnh ngha mt lp MyClass nh sau:
HUTECH
Lun vn tt nghip 16 GVHD:ThS. Trng Th Minh Châu
SV thc hin: Nguyn Hoàng V
public class MyClass
{
protected int myValue;
}
Nh trên bin thành viên myValue đc khai báo truy xut protected mc dù
bn thân lp đc khai báo là public. Mt lp public là mt lp sn sàng cho bt c
lp nào khác mun tng tác vi nó. ôi khi mt lp đc to ra ch đ tr giúp cho
nhng lp khác trong mt khi assemply, khi đó nhng lp này nên đc khai báo
khóa internal hn là khóa public.
Truyn tham s
Nh đã tho lun trong chng trc, tham s có kiu d liu là giá tr thì s
đc truyn giá tr vào cho phng thc. iu này có ngha rng khi mt đi tng
có kiu là giá tr đc truyn vào cho mt phng thc, thì có mt bn sao chép đi
tng đó đc to ra bên trong phng thc. Mt khi phng thc đc thc hin
xong thì đi tng sao chép này s đc hy. Tuy nhiên, đây ch là trng hp bình
thng, ngôn ng C# còn cung cp kh nng cho phép ta truyn các đi tng có kiu
giá tr di hình thc là tham chiu. Ngôn ng C# đa ra mt b sung tham s là ref
cho phép truyn các đi tng giá tr vào trong phng thc theo kiu tham chiu. Và
tham s b sung out trong trng hp mun truyn di dng tham chiu mà không
cn phi khi to giá tr ban đu cho tham s truyn. Ngoài ra ngôn ng C# còn h
tr b sung params cho phép phng thc chp nhn nhiu s lng các tham s.
Truyn tham chiu
Nhng phng thc ch có th tr v duy nht mt giá tr, mc dù giá tr này
có th là mt tp hp các giá tr. Nu chúng ta mun phng thc tr v nhiu hn
mt giá tr thì cách thc hin là to các tham s di hình thc tham chiu. Khi đó
HUTECH
Lun vn tt nghip 17 GVHD:ThS. Trng Th Minh Châu
SV thc hin: Nguyn Hoàng V
trong phng thc ta s x lý và gán các giá tr mi cho các tham s tham chiu này,
kt qu là sau khi phng thc thc hin xong ta dùng các tham s truyn vào nh là
các kt qu tr v.
2.2.2.6. a hình
Trong thut ng lp trình hng đi tng, kh nng ghi đè phng thc ca
lp c s và cung cp mt phát trin khác trong lp dn xut là mt hình thc c
bn ca khái nim đa hình.
Xem ví d trc, trong đó Cho và Meo đc dn xut t lp c s chung Thu.
Lp c s Thu cung cp phng thc Keu đc các lp dn xut tha k.
Tuy nhiên, nu bn đã tng nghe thì ging Cho sa s khác vi ging Meo,
chúng sa không ging nhau. Vì vy, lp c s Thu phi cho phép các lp dn xut
cung cp phát trin phng thc Keu ca riêng chúng.
C# cung cp t khóa virtual đ ch rõ là phng thc có th b các lp dn xut
ghi đè. Mt lp dn xut có th ghi đè phng thc virtual bng cách s dng t khóa
override.
class Thu
{
public virtual void Keu();
}
class Meo : Thu
{
public override void Keu();
}
HUTECH
Lun vn tt nghip 18 GVHD:ThS. Trng Th Minh Châu
SV thc hin: Nguyn Hoàng V
T khóa override
Trong ngôn ng C#, ngi lp trình có th quyt đnh ph quyt mt phng
thc o bng cách khai báo tng minh t khóa override. iu này giúp cho ta đa
ra mt phiên bn mi ca chng trình và s thay đi ca lp c s s không làm nh
hng đn chng trình vit trong các lp dn xut. Vic yêu cu s dng t khóa
override s giúp ta ngn nga vn đ này.
Lp tru tng
yêu cu các lp con (lp dn xut) phi thc thi mt phng thc ca lp
c s, chúng ta phi thit k mt phng thc mt cách tru tng.
Nhng lp tru tng đc thit lp nh là c s cho nhng lp dn xut,
nhng vic to các th hin hay các đi tng cho các lp tru tng đc xem là
không hp l. Mt khi chúng ta khai báo mt phng thc là tru tng, thì chúng ta
phi ngn cm bt c vic to th hin cho lp này.
Phng thc tru tng đc thit lp bng cách thêm t khóa abstract vào
đu ca phn đnh ngha phng thc, cú pháp thc hin nh sau:
abstract public void DrawWindow( );
i vi lp tr tng, cú pháp
abstract public class Window
{
}
Lp cô lp (sealed class)
Ngc vi các lp tru tng là các lp cô lp. Mt lp tru tng đc thit
k cho các lp dn xut và cung cp các khuôn mu cho các lp con theo sau. Trong
khi mt lp cô lp thì không cho phép các lp dn xut t nó. khai báo mt lp cô
HUTECH
Lun vn tt nghip 19 GVHD:ThS. Trng Th Minh Châu
SV thc hin: Nguyn Hoàng V
lp ta dùng t khóa sealed đt trc khai báo ca lp không cho phép dn xut. Hu
ht các lp thng đc đánh du sealed nhm ngn chn các tai nn do s k tha
gây ra.
2.2.2.7 GIAO DIN
Giao din cung cp hình thc tru tng hóa s rt thun tin cho vic phát
trin theo phong cách xây dng theo thành phn c s. Giao din cung cp nhng
tha thun chung cho phép các thành phn làm vic vi nhau.
Mt giao din không phi là mt lp và do đó cng không có bt c mã cài đt
nào. Mt giao din cha các khai báo ca các thành phn ca các phng thc, trong
đó tt c đu phi khai báo public. C# cho phép struct và lp cài đt mt hay nhiu
giao din, điu này khác hn vi tha k. Tha k là vic cài đt mt lp t lp c s,
còn cài đt giao din thì ch xác đnh ra rng lp s phát trin mt giao din đt bit
và cam đoan s hoàn thành giao din nh đã đ ra.
Thc thi mt giao din
Cú pháp đ đnh ngha mt giao din nh sau:
[thuc tính] [b sung truy cp] interface <tên giao din> [: danh sách c s]
{
<phn thân giao din>
}
Phn thuc tính chúng ta s đ cp sau. Thành phn b sung truy cp bao gm:
public, private, protected, internal, và protected internal đã đc đ cp.
Theo sau t khóa interface là tên ca giao din. Thông thng tên ca giao
din đc bt đu vi t I hoa (điu này không bt buc nhng vic đt tên nh vy
rt rõ ràng và d hiu, tránh nhm ln vi các thành phn khác).
HUTECH
Lun vn tt nghip 20 GVHD:ThS. Trng Th Minh Châu
SV thc hin: Nguyn Hoàng V
Ví d:
interface Alarm
{
void SetTime ();
}
public class AlarmClock : Alarm
{
}
M rng giao din
C# cung cp chc nng cho chúng ta m rng mt giao din đã có bng cách
thêm các phng thc và các thành viên hay b sung cách làm vic cho các thành
viên.
Ví d
Interface Clock : Alarm
{}
Toán t is
Chúng ta mun kim tra mt đi tng xem nó có h tr giao din, đ sau đó
thc hin các phng thc tng ng. Trong ngôn ng C# có hai cách đ thc hin
điu này. Phng pháp đu tiên là s dng toán t is. Cú pháp ca toán t is là:
<biu thc> is <kiu d liu>
HUTECH
Lun vn tt nghip 21 GVHD:ThS. Trng Th Minh Châu
SV thc hin: Nguyn Hoàng V
Toán t is tr v giá tr true nu biu thc thng là kiu tham chiu có th
đc gán an toàn đn kiu d liu cn kim tra mà không phát sinh ra bt c ngoi l
nào.
Toán t as
Toán t as kt hp toán t is và phép gán bng cách đu tiên kim tra hp l
phép gán (kim tra toán t is tr v true) ri sau đó phép gán đc thc hin. Nu
phép gán không hp l (k hi phép gán tr giá tr false), thì toán t as tr v giá tr
null.
Ghi chú: T khóa null th hin mt tham chiu không tham chiu đn đâu c
(null
reference). i tng có giá tr null tc là không tham chiu đn bt k đi tng
nào.
S dng toán t as đ loi b vic thc hin các x lý ngoi l. ng thi cng
né tránh vic thc hin kim tra d tha hai ln. Do vy, vic s dng ti u ca phép
gán cho giao din là s dng as. Cú pháp s dng toán t as nh sau:
<biu thc> as <kiu d liu>
2.2.3 S LC V UML
2.2.3.1 Gii thiu
Ngôn ng hp nht UML (Unified Modeling Language) là mt ngôn ng trc
quan cung cp cho các nhà phân tích thit k hng đi tng mt cách hình dung ra
các h thng phn mm, mô hình hóa các t chc nghip v s dng các h thng
phn mm này; cng nh xây dng chúng và làm tài liu v chúng.
UML là ngôn ng trc quan đc dùng trong quy trình phát trin các h thng
phn mm, là ngôn ng đc t hình thc
HUTECH
Lun vn tt nghip 22 GVHD:ThS. Trng Th Minh Châu
SV thc hin: Nguyn Hoàng V
2.2.3.2 Ngun gc UML
K thut phát trin phn mm hng đi tng đã tri qua 3 giai đon:
Các ngôn ng lp trình hng đi tng đc phát trin và bt đu đc s
dng.
Các k thut và phân tích thit k hng đi tng đc to ra nhm giúp đ
công vic mô hình hóa nghip v, phân tích yêu cu và thit k các h thng phn
mm.
UML đc thit k nhm kt hp các đc đim tt nht ca mt s k thut và
ký hiu trong phân tích thit k đ to ra mt tiêu chun công nghip.
2.2.3.3 Biu đ use case
Use case cung cp mt bc tranh tòan cnh v nhng gì đang xy r a trong h
thng hin ti hoc nhng gì s xy ra trong h thng mi, do đó có rt nhiu d án tin
hc đc bt đu t các use case.
Biu đ use case đa ra các use cae (tình hung s dng) và các actor (tác
nhân) và các mi kt hp gia chúng. Use case b iu din mt chui hành đng mà h
thng thc hin, actor biu din ngi hoc h thng khác tng tác vi h thng đang
đc mô hình hóa.
Mc đích ca biu đ use case
Mô hình hóa chui hành đng mà h thng s thc hin, và nhm cung cp mt
kt qu có ý ngha cho mt ngi nào đó hay cho mt h thng khác bên ngòai.
Cung cp mt cái nhìn tng th v nhng gì h thng s làm và ai dùng nó.
HUTECH
Lun vn tt nghip 23 GVHD:ThS. Trng Th Minh Châu
SV thc hin: Nguyn Hoàng V
Ký hiu
Use case 1
Actor
Admin
Use case 2
2.2.3.4 Biu đ lp
Biu đ lp mô t các lp, là nhng thành phn c bn nht đ làm nên bt k
h thng nào. Kh nng cng tác bng cách truyn thông đip, đc ch ra trong các
mi quan h gia chúng.
Biu đ lp ch cho ta thy khung nhìn tnh ca các lp trong mô hình hoc mt
phn ca mô hình. Nó ch cho ta thy các thuc tính và các thao tác ca lp, cng nh
lai quan h ca các lp.
Các tng tác và cng tác thc s xy ra đ h tr cho bt k mt yêu cu cha
nng nào, biu din mt tuyn nào đó nào đó trên s đ. Tuyn này s len li
(navigate) t lp này sang lp khác thông qua các mi quan h gia chúng. Lu ý là
ch có th thông thng gia hai đim bng cách xut phát t đim đu đi qua các
đim trung gian hp l và ti đim đích.
Tên use case