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
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
đ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
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
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:
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
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
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.
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
{
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
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:
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
<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
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