M C L CỤ Ụ
M C L CỤ Ụ ........................................................................................................................................ 1
Đ tài 0. Gi i thi u v Javaề ớ ệ ề ............................................................................................................ 6
I. L ch s hình thành và phát tri n ngôn ng l p trình Javaị ử ể ữ ậ ....................................................... 6
I.1. Gi i thi u v Javaớ ệ ề ............................................................................................................. 6
I.2 Tóm t t l ch s hình thành c a Java ắ ị ử ủ ................................................................................. 6
II. Các đ c tr ng c a Javaặ ư ủ ........................................................................................................... 7
II.1. Tính đ n gi nơ ả ................................................................................................................... 7
II.2. Tính h ng đ i t ngướ ố ượ ..................................................................................................... 7
II.3. Tính phân tán .................................................................................................................... 7
II.4. Tính m nh mạ ẽ .................................................................................................................. 7
II.5. Tính an toàn ...................................................................................................................... 7
II.6. Tính trung l pậ ................................................................................................................... 8
II.7. Tính di đ ngộ ..................................................................................................................... 8
II.8. Tính thông d chị ................................................................................................................. 9
II.9. Tính th c thi caoự ............................................................................................................... 9
II.10. Tính đa lu ngồ .................................................................................................................. 9
II.11. Tính đ ng ộ ....................................................................................................................... 9
III. Các lo i ng d ng c a Javaạ ứ ụ ủ .................................................................................................. 9
IV. Công c và môi tr ng l p trình Javaụ ườ ậ .................................................................................. 9
V. Cài đ t Java ặ .......................................................................................................................... 10
Đ tài 1. Ngôn ng mô hình hóa UMLề ữ ......................................................................................... 13
I. Xây d ng h th ng ph n m m theo h ng đ i t ngự ệ ố ầ ề ướ ố ượ ........................................................ 13
I.1 Các khái ni m căn b n c a công ngh h ng đ i t ngệ ả ủ ệ ướ ố ượ .............................................. 13
I.2 Quy trình chung phát tri n h th ng ph n m mể ệ ố ầ ề ............................................................. 14
I.3 Nh ng thách th c c a ngành công nghi p ph n m m hi n nayữ ứ ủ ệ ầ ề ệ .................................... 14
II. L ch s phát tri n ngôn ng mô hình hóa UMLị ử ể ữ ................................................................... 14
II.1. Tóm t t l ch s UMLắ ị ử ..................................................................................................... 14
II.2. Khái ni m v UMLệ ề ........................................................................................................ 15
II.3 Đ c tr ng c a UMLặ ư ủ ........................................................................................................ 15
III. Ngôn ng UMLữ .................................................................................................................... 16
III.1. Các thành ph n c a UMLầ ủ ............................................................................................. 16
III.2. Các h ng nhìn (view)ướ .................................................................................................. 17
III.3 ng d ng UML trong quy trình làm ph n m mỨ ụ ầ ề .......................................................... 24
IV. Quy trình Rational Unified Process (RUP) phát tri n ph n m m d a trên UMLể ầ ề ự .............. 26
IV.1. Gi i thi u v RUPớ ệ ề ........................................................................................................ 26
IV.2. Các nguyên t c chính c a RUP:ắ ủ ................................................................................... 26
IV.3. Vòng đ i c a ph n m m theo quy trình RUPờ ủ ầ ề ............................................................. 26
IV.4. Các công c c a RUPụ ủ ................................................................................................... 28
Bài t pậ ........................................................................................................................................ 28
Đ tài 2. Nh p môn Javaề ậ ............................................................................................................... 29
I. Vi t và th c hi n m t ch ng trình Java ế ự ệ ộ ươ ............................................................................ 29
I.1 Tìm hi u mã ngu n m t ch ng trình đ n gi nể ồ ộ ươ ơ ả ............................................................ 29
I.2. Th c hi n ch ng trình Java.ự ệ ươ ......................................................................................... 29
I.3. M t s chú ý khi l p trình Javaộ ố ậ ....................................................................................... 30
1
I.4. C u trúc m t ch ng trình Javaấ ộ ươ ..................................................................................... 30
II. Các ki u d li u trong Javaể ữ ệ .................................................................................................. 31
II.1 Các ki u d li u s nguyênể ữ ệ ố ............................................................................................ 31
II.2 Các ki u s th cể ố ự ............................................................................................................. 32
II.3 Ki u ký t (character)ể ự ..................................................................................................... 32
II.4 Ki u logic (boolean)ể ........................................................................................................ 32
II.5 Ki u chu iể ỗ ....................................................................................................................... 32
II.6 Chuy n đ i gi a các ki u sể ổ ữ ể ố .......................................................................................... 32
III. Khai báo bi n và h ng trong Javaế ằ ....................................................................................... 33
III.1 Quy t c đ t tên bi nắ ặ ế ...................................................................................................... 33
III.2 Khai báo bi nế ................................................................................................................. 33
III.3 Bi n ki u m ngế ể ả ............................................................................................................. 34
III.4 H ng s (literal)ằ ố ............................................................................................................. 35
III.5 Ph m vi ho t đ ng c a h ng và bi n:ạ ạ ộ ủ ằ ế ......................................................................... 36
IV. Các toán t và bi u th cử ể ứ ..................................................................................................... 36
IV.1 Các toán t và th t u tiênử ứ ự ư ......................................................................................... 36
IV.2 Bi u th cể ứ ....................................................................................................................... 37
V. Các l nh đi u khi n r nhánhệ ề ể ẽ .............................................................................................. 38
V.1 L nh ifệ ............................................................................................................................. 38
V.2. L nh switch …caseệ ........................................................................................................ 38
VI. Các l nh l pệ ặ ......................................................................................................................... 39
VI.1. Vòng l p forặ .................................................................................................................. 39
VI.2. Vòng l p whileặ .............................................................................................................. 40
VI.3. Vòng l p do... whileặ ...................................................................................................... 41
VI.4. Phép nh yả ...................................................................................................................... 41
VII. Vào d li u t bàn phím và xu t d li u ra màn hìnhữ ệ ừ ấ ữ ệ ..................................................... 42
VII.1. L y giá tr nh p vào t bàn phímấ ị ậ ừ ............................................................................... 42
VII.2 K t xu t d li u ra màn hìnhế ấ ữ ệ ..................................................................................... 43
Bài t pậ ........................................................................................................................................ 44
Đ tài 3. L p trình h ng đ i t ng trong Javaề ậ ướ ố ượ .......................................................................... 46
I. Khái ni m l p trình h ng đ i t ng (Object-Oriented Programming - OOP)ệ ậ ướ ố ượ ................... 46
I.1. Khái ni m OOPệ ............................................................................................................... 46
I.2 C s lý lu n c a OOPơ ở ậ ủ .................................................................................................... 46
I.3 Tr u t ng hóaừ ượ ................................................................................................................. 46
II. Tính đóng gói trong Java ....................................................................................................... 48
II.1 Khái ni m tính đóng góiệ .................................................................................................. 48
II.2 M i quan h gi a các classố ệ ữ ............................................................................................. 48
II.3 M t s g i ý khi thi t k classộ ố ợ ế ế ....................................................................................... 48
IV. S d ng các Class xây d ng s n trong th vi nử ụ ự ẵ ư ệ ................................................................ 49
V. Xây d ng Class trong Javaự .................................................................................................... 50
V.1 C u trúc c a classấ ủ ........................................................................................................... 50
V.2 Các thu c tính thành ph n:ộ ầ ............................................................................................. 51
V.3 Các ph ng th c thành ph nươ ứ ầ ......................................................................................... 52
V.4 G i và truy n tham s cho ph ng th cọ ề ố ươ ứ ....................................................................... 53
V.6 Các hàm và ph ng th c đ c bi tươ ứ ặ ệ ................................................................................. 53
V.7 Khai báo ch ng các ph ng th cồ ươ ứ ................................................................................... 54
V.8 L p l ng nhau – l p n iớ ồ ớ ộ ................................................................................................. 55
2
VI. Tính k th a trong Javaế ừ ....................................................................................................... 56
VI.1 S k th a các thu c tính và ph ng th cự ế ừ ộ ươ ứ .................................................................. 56
VI.2 S k th a đ i v i các constructorự ế ừ ố ớ ............................................................................... 59
VII. Tính đa hình trong Java ....................................................................................................... 60
VII.1 S ép ki u và gán tham chi u đ i t ngự ể ế ố ượ .................................................................... 60
VII.2 S ràng bu c đ ng –Dynamic Binding ự ộ ộ ....................................................................... 61
VIII. L p Objectớ ......................................................................................................................... 62
IX. Giao di nệ .............................................................................................................................. 62
IX.1 C u trúc c a giao di nấ ủ ệ .................................................................................................. 62
IX.2 Các tính ch t c a giao di nấ ủ ệ ........................................................................................... 64
X. Package .................................................................................................................................. 64
X.1 S d ng các package trong th vi n Javaử ụ ư ệ ...................................................................... 64
X.2 Đ t l p vào packageặ ớ ....................................................................................................... 65
Bài t pậ ........................................................................................................................................ 65
Đ tài 4. L p và ph ng th c tr u t ngề ớ ươ ứ ừ ượ .................................................................................... 67
I. Khái ni m l p tr u t ngệ ớ ừ ượ ...................................................................................................... 67
II. Cài đ t l p và ph ng th c tr u t ng trong Javaặ ớ ươ ứ ừ ượ ............................................................. 67
Bài t pậ ........................................................................................................................................ 68
Đ tài 5. L u tr và x lý đ i t ngề ư ữ ử ố ượ ............................................................................................ 69
I. L p Vector và giao di n Enumerationớ ệ ................................................................................... 69
I.1 L p Vectorớ ........................................................................................................................ 69
I.2 Giao di n Enumerationệ ..................................................................................................... 70
II. M ng trong Java và l p ArrayListả ớ ........................................................................................ 72
II.1 M ng trong Javaả .............................................................................................................. 72
II.2. Các thu t toán c b n trên m ngậ ơ ả ả .................................................................................. 73
II.3 Class Arrays ..................................................................................................................... 74
III Danh sách trong java và giao di n Lists ệ .............................................................................. 76
Bài t pậ ........................................................................................................................................ 77
Đ tài 6. Các lu ng vào ra d li u v i fileề ồ ữ ệ ớ ................................................................................... 78
I. Khái ni m lu ng vào ra (I/O stream)ệ ồ ..................................................................................... 78
II. L p InputStream:ớ ................................................................................................................... 79
III. L p OutputStreamớ ................................................................................................................ 80
IV. L p FileInputStreamớ ............................................................................................................ 80
V. L p FileOutputStreamớ ........................................................................................................... 80
VI. L p Fileớ ................................................................................................................................ 80
VII. Nh p xu t l c ậ ấ ọ ................................................................................................................... 82
VII.1 L p FilterInputStream: ớ ................................................................................................ 82
VII.2 L p FilterOutputStreamớ ................................................................................................ 82
VIII. Vào/ra có s d ng b đ m ử ụ ộ ệ .............................................................................................. 82
VIII.1 L p BufferedInputStream:ớ .......................................................................................... 82
VIII.2 L p BufferedOutputStreamớ ......................................................................................... 82
IX. L p RandomAccessFile ớ ...................................................................................................... 85
X. Đ i t ng System.inố ượ ............................................................................................................. 85
XI. Truy c p file ch đ tu n tậ ở ế ộ ầ ự ........................................................................................... 85
XII. Truy c p file nh phânậ ị ........................................................................................................ 89
Bài t p ậ ....................................................................................................................................... 90
Đ tài 7. X lý ngo i lề ử ạ ệ ................................................................................................................ 91
3
I. Các tình hu ng s d ng ngo i lố ử ụ ạ ệ .......................................................................................... 91
II. C s qu n lý ngo i l trong Javaơ ở ả ạ ệ ....................................................................................... 91
III. C u trúc cây k th a các x lý ngo i lấ ế ừ ử ạ ệ ............................................................................ 92
IV. S d ng ngo i l đ c ki m soátử ụ ạ ệ ượ ể ...................................................................................... 93
V. Xây d ng m t ngo i lự ộ ạ ệ ........................................................................................................ 94
VI. Bài t pậ .................................................................................................................................. 95
Đ tài 8. X lý các s ki n trong Javaề ử ự ệ .......................................................................................... 96
I. Khái ni m và c s x lý s ki nệ ơ ở ử ự ệ ......................................................................................... 96
II. Truy c p thông tin s ki nậ ự ệ ................................................................................................. 102
III. X lý các s ki n trên windowử ự ệ ......................................................................................... 103
IV. Các l p thích nghiớ .............................................................................................................. 104
V. X lý các s ki n chu tử ự ệ ộ .................................................................................................. 106
Bài t pậ ...................................................................................................................................... 107
Đ tài 9. Appletề ............................................................................................................................ 108
I. Xây d ng m t Applet đ n gi nự ộ ơ ả ........................................................................................... 108
II. C u trúc c b n và vòng đ i c a m t Appletấ ơ ả ờ ủ ộ ................................................................... 108
III. An ninh và kh năng c a Appletả ủ ....................................................................................... 110
IV. ng d ng Applet v i c a s PopupỨ ụ ớ ủ ổ ................................................................................. 110
V. Các th HTML c a Appletẻ ủ ................................................................................................. 111
VI. Các ph ng th c, l p trình đ h a và b t s ki n c a appletươ ứ ậ ồ ọ ắ ự ệ ủ ........................................ 112
Đ tài 10. L p trình giao di n đ h a GUIề ậ ệ ồ ọ ................................................................................ 114
I. Gi i thi u AWT ớ ệ .................................................................................................................. 114
II. V t ch a (Container)ậ ứ .......................................................................................................... 115
II.1 JFrame ............................................................................................................................ 115
II.2 JPanel ............................................................................................................................. 115
II.3 JDialog ........................................................................................................................... 116
II.4 JScrollPane ..................................................................................................................... 118
III. Gi i thi u v các thành ph n GUI c b nớ ệ ề ầ ơ ả ....................................................................... 118
III.1 Nút nh n ấ ...................................................................................................................... 118
III.2 Nhãn (Label) ................................................................................................................. 118
III.3 Nút đánh d u (checkbox)ấ ............................................................................................. 120
III.4 Nút ch n (radio button)ọ ................................................................................................ 122
III.5 H p tho i Combo ộ ạ ....................................................................................................... 122
III.6 Danh sách (Lists) .......................................................................................................... 123
III.7 Ô văn b n (text field) và vùng văn b n (text areas)ả ả .................................................... 125
III.8 Thanh tr t (Scrollbar)ượ ................................................................................................ 128
IV. Thành ph n Menuầ .............................................................................................................. 129
V. B qu n lý cách trình bày (Layout Manager)ộ ả ..................................................................... 132
V.1 Cách trình bày FlowLayout: .......................................................................................... 133
V.2 Cách trình bày GridLayout: ........................................................................................... 133
V.3 Cách trình bày BorderLayout ........................................................................................ 133
VI. Các h p tho iộ ạ ..................................................................................................................... 133
VI.1 H p tho i thông báoộ ạ .................................................................................................... 133
VI.2 H p tho i ch n Fileộ ạ ọ ..................................................................................................... 134
VI.3 H p tho i ch n màuộ ạ ọ .................................................................................................... 135
Bài t pậ ...................................................................................................................................... 135
Đ tài 11. Threadingề .................................................................................................................... 137
4
I. Khái ni m threadệ .................................................................................................................. 137
I.1 Khái ni m:ệ ...................................................................................................................... 137
I.2. L p Threadớ ..................................................................................................................... 137
I.3 Các b c đ t o m t threadướ ể ạ ộ .......................................................................................... 138
II. Các tr ng thái c a thread.ạ ủ ................................................................................................... 138
III. Các thu c tính c a threadộ ủ .................................................................................................. 139
III.1 Đ u tiên c a threadộ ư ủ .................................................................................................. 139
III.2 Nhóm thread ................................................................................................................. 140
III.3 Qu n lý các ngo i l c a threadả ạ ệ ủ ................................................................................. 140
IV. Đi u khi n các threadề ể ........................................................................................................ 141
IV.1 Interrupt m t threadộ ..................................................................................................... 141
IV.2 D ng m t threadừ ộ .......................................................................................................... 142
IV.3 T m d ng và ph c h i m t threadạ ừ ụ ồ ộ ............................................................................. 143
IV.4 Gi i phóng th i gian cho CPUả ờ .................................................................................... 143
IV.5 Đ i m t thread k t thúc công vi cợ ộ ế ệ ............................................................................. 143
V. Đ ng b threadồ ộ ................................................................................................................... 144
V.1 Tình tr ng “đua tranh”ạ .................................................................................................. 144
V.2 Khóa đ i t ngố ượ ............................................................................................................. 145
V.3 Đ i t ng đi u ki nố ượ ề ệ ..................................................................................................... 146
Bài t pậ ...................................................................................................................................... 148
Ph l c A. Các t khóa c a Javaụ ụ ừ ủ ................................................................................................ 149
Ph l c B M t s hàm hay s d ngụ ụ ộ ố ử ụ ........................................................................................... 150
Tài li u tham kh oệ ả ....................................................................................................................... 151
5
Đ tài 0. Gi i thi u v Javaề ớ ệ ề
I. L ch s hình thành và phát tri n ngôn ng l p trình Javaị ử ể ữ ậ
I.1. Gi i thi u v Javaớ ệ ề
Java là m t ngôn ng l p trình m nh đang đ c s d ng r t r ng rãi hi n nay trên toànộ ữ ậ ạ ượ ử ụ ấ ộ ệ
th gi i. Trên th c t , Java đ c bi t đ n không ch là m t ngôn ng l p trình mà là m tế ớ ự ế ượ ế ế ỉ ộ ữ ậ ộ
platform – m t môi tr ng và công ngh phát tri n – riêng bi t. Khi làm vi c v i Java, ng iộ ườ ệ ể ệ ệ ớ ườ
l p trình đ c s h u m t th vi n l n, có tính m v i m t l ng mã ngu n tái s d ngậ ượ ở ữ ộ ư ệ ớ ở ớ ộ ượ ồ ử ụ
kh ng l luôn có trên internet. Ngoài ra, các ch ng trình vi t b ng Java có môi tr ng th cổ ồ ươ ế ằ ườ ự
thi riêng v i các tính năng b o m t, kh năng tri n khai trên nhi u h đi u hành khác nhau vàớ ả ậ ả ể ề ệ ề
nhi u tính năng u vi t khác chúng ta s xem xét trong ph n sau.ề ư ệ ẽ ầ
I.2 Tóm t t l ch s hình thành c a Java ắ ị ử ủ
Năm 1991, m t nhóm k s c a hãng SUN bao g m Patrick Naughton, Sun Fellow vàộ ỹ ư ủ ồ
James Gosling có ý t ng phát minh ra m t ngôn ng l p trình nh g n có th th c thi đ cưở ộ ữ ậ ỏ ọ ể ự ượ
trên các thi t b d ng nh b chuy n kênh c a truy n hình cáp vì các thi t b ki u này có bế ị ạ ư ộ ể ủ ề ế ị ể ộ
nh nh . Bên c nh đó, do các hãng khác nhau s d ng các chíp x lý (CPUs) khác nhau nênớ ỏ ạ ử ụ ử
m t đ c tính quan tr ng mà ngôn ng này ph i có là đ c l p v i các dòng CPUs khác nhau –ộ ặ ọ ữ ả ộ ậ ớ
g i là đ c tính di đ ng. Nhóm đã m m t d án có tên là Green đ hi n th c hóa ý t ng này.ọ ặ ộ ở ộ ự ể ệ ự ưở
Đ gi i quy t v n đ di đ ng, nhóm đã s d ng ý t ng c a k s Niklaus Wirth –ể ả ế ấ ề ộ ử ụ ưở ủ ỹ ư
ng i sáng l p ngôn ng Pascal – v vi c s d ng c ch thông d ch và máy o (virtualườ ậ ữ ề ệ ử ụ ơ ế ị ả
machine).
V n n t ng ngôn ng , do hãng SUN phát tri n trên n n UNIX nên h s d ng ngônề ề ả ữ ể ề ọ ử ụ
ng l p trình C++ là ch y u. Do đó, ngôn ng m i thiên v h ng đ i t ng (Objectữ ậ ủ ế ữ ớ ề ướ ố ượ
Oriented) c a C++ h n là h ng th t c nh Pascal.ủ ơ ướ ủ ụ ư
Ban đ u nhóm đ t tên cho ngôn ng m i là “Oak” nh ng sau đó đ c chuy n thànhầ ặ ữ ớ ư ượ ể
Java do Oak cũng đã là tên m t ngôn ng l p trình khác.ộ ữ ậ
Năm 1992, d án Green cho ra đ i s n ph m đ u tiên có tên là “*7” nh ng đã khôngự ờ ả ẩ ầ ư
đ c chào đón nh mong đ i. Sau đó nhóm đã ph i m t c năm 1993 và n a đ u 1994 đ điượ ư ợ ả ấ ả ử ầ ể
ti p th công ngh c a mình. T năm 1994, s phát tri n c a Internet đã t o c h i đ Javaế ị ệ ủ ừ ự ể ủ ạ ơ ộ ể
phát tri n nhanh chóng. Nhóm đã phát tri n m t trình duy t có tên là HotJava cho phép cácể ể ộ ệ
ch ng trình Java nhúng đ c trong đó (applet). Đây chính là minh ch ng rõ ràng v s c m nhươ ượ ứ ề ứ ạ
c a Java đã nhanh chóng đ c c ng đ ng ng i s d ng internet bi t đ n và là ti n đ đủ ượ ộ ồ ườ ử ụ ế ế ề ề ể
Java phát tri n r c r nh ngày hôm nay.ể ự ỡ ư
Phiên b n đ u tiên 1.0 c a Java ra đ i vào năm 1996, sau đó là phiên b n 1.1 m c dùả ầ ủ ờ ả ặ
khá m nh nh ng cũng còn nhi u h n ch .ạ ư ề ạ ế
Năm 1998 đánh đ u b c chuy n mình m nh m c a Java v i s ra đ i c a phiên b nấ ướ ể ạ ẽ ủ ớ ự ờ ủ ả
1.2 làm cho Java ti n g n t i m c tiêu “vi t m t l n, ch y kh p n i” (Write once, Runế ầ ớ ụ ế ộ ầ ạ ắ ơ
Anywhere). Các nhân viên ti p th c a Java g i đây là phiên b n “Java 2 Standard Editionế ị ủ ọ ả
Software Development Kit Version 1.2” ý nói t i s có m t đ ng th i c a 2 phiên b nớ ự ặ ồ ờ ủ ả
“Standard Edition” là Micro Edition và Enterprise Edition trong Java.
Các phiên b n 1.3, 1.4 là s phát tri n m r ng ti p theo c a phiên b n 1.2. Phiên b nả ự ể ở ộ ế ủ ả ả
1.5 (chuy n sang g i là phiên b n 5.0) đánh d u s tích h p đ y đ nh t các công ngh Java.ể ọ ả ấ ự ợ ầ ủ ấ ệ
B ng sau cho th y s phát tri n th vi n Java qua các phiên b n:ả ấ ự ể ư ệ ả
6
Phiên
b nả
S các Class và Interfaceố
1.0 211
1.1 477
1.2 1524
1.3 1840
1.4 2723
5.0 3270
Hi n t i, Java đã phát tri n t i phiên b n 1.6.ệ ạ ể ớ ả
II. Các đ c tr ng c a Javaặ ư ủ
Java đ c bi t đ n v i các đ c tr ng sau:ượ ế ế ớ ặ ư
II.1. Tính đ n gi nơ ả
Java đ c phát tri n d a trên C++ nh ng l c b t đi ho c thay th các khái ni m khóượ ể ự ư ượ ớ ặ ế ệ
hi u nh header file, con tr , structures, union, operator overloading, virtual base class. Trongể ư ỏ
Java ch có th a k đ n mà không có tính đa th a k nh c a C++. Tuy nhiên tính đa th a kỉ ừ ế ơ ừ ế ư ủ ừ ế
đ c bi u hi n thông qua vi c s d ng các Interface.ượ ể ệ ệ ử ụ
II.2. Tính h ng đ i t ngướ ố ượ
Nh đã trình bày trên, Java đ c phát tri n t C++ nên nó là ngôn ng l p trìnhư ở ượ ể ừ ữ ậ
h ng đ i t ng.ướ ố ượ
II.3. Tính phân tán
Java cho phép l p trình truy c p các đ i t ng t xa thông qua các giao th c HTTP,ậ ậ ố ượ ừ ứ
FTP b ng các ph ng th c nh RMI hay Socket.ằ ươ ứ ư
Java hoàn toàn thích h p cho các ng d ng Internet. Các công ngh JSP, Servlet choợ ứ ụ ệ
phép xây d ng các website t ng tác v i các tính năng th c thi t i uự ươ ớ ự ố ư
II.4. Tính m nh mạ ẽ
Vi c lo i b con tr làm tăng đ tin c y c a ch ng trình. L p trình viên không c nệ ạ ỏ ỏ ộ ậ ủ ươ ậ ầ
quan tâm đ n thao tác c p phát ế ấ và gi i phóng b nh . V i Java, b nh đ c gi i phóng tả ộ ớ ớ ộ ớ ượ ả ự
đ ng.ộ
II.5. Tính an toàn
Ngôn ng Java đ c thi t k đ tránh các s c :ữ ượ ế ế ể ự ố
• N p ch ng stack lúc runtime.ạ ồ
• nh h ng t i b nh n m ngoài ph m vi đ c c p phát.Ả ưở ớ ộ ớ ằ ạ ượ ấ
• Đ c và ghi file t doọ ự
7
II.6. Tính trung l pậ
Các ch ng trình vi t b ng Java không b ph thu c vào h đi u hành. Đi u này cóươ ế ằ ị ụ ộ ệ ề ề
đ c là do mã ngu n ch ng trình không đ c biên d ch thành mã máy ngay mà thành mãượ ồ ươ ượ ị
Bytecode. Khi đem mã Bytecode này ch y trên h máy tính nào thì m t trình thông d ch virtualạ ệ ộ ị
machine (Java Vitual Machine-JVM) s thông d ch chúng sang mã máy t ng ng đ th c thi.ẽ ị ươ ứ ể ự
Mã ngu n -> ByteCodes -> machine code.ồ
T mã ngu n -> Bytecodes: Trình biên d ch Java.ừ ồ ị
T Bytecodes -> machine code: Trình thông d ch Virtual machine. ừ ị
Java Virtual Machine – JVM
Máy o là m t ph n m m d a trên c s máy tính o. Nó có t p h p các l nh logic đả ộ ầ ề ự ơ ở ả ậ ợ ệ ể
xác đ nh các ho t đ ng c a máy tính. Ng i ta có th xem nó nh m t h đi u hành thu nh .ị ạ ộ ủ ườ ể ư ộ ệ ề ỏ
JVM thi t l p các l p tr u t ng cho ph n c ng bên d i, h đi u hành, mã đã biên d ch.ế ậ ớ ừ ượ ầ ứ ướ ệ ề ị
Trình biên d ch chuy n mã ngu n thành t p các l nh c a máy o mà không ph thu cị ể ồ ậ ệ ủ ả ụ ộ
vào ph n c ng c th . Trình thông d ch trên m i máy s chuy n t p l nh này thành ch ngầ ứ ụ ể ị ỗ ẽ ể ậ ệ ươ
trình th c thi. Máy o t o ra m t môi tr ng bên trong đ th c thi các l nh b ng cách: ự ả ạ ộ ườ ể ự ệ ằ
• N p các file .classạ
• Qu n lý b nh ả ộ ớ
• D n “rác”, thu h i b nh c p cho các bi n không còn đ c s d ng.ọ ồ ộ ớ ấ ế ượ ử ụ
Vi c không nh t quán c a ph n c ng làm cho máy o ph i s d ng ngăn x p đ l uệ ấ ủ ầ ứ ả ả ử ụ ế ể ư
tr các thông tin sau:ữ
• Các “Frame” ch a các tr ng thái c a các ph ng th c.ứ ạ ủ ươ ứ
• Các toán h ng c a mã bytecode.ạ ủ
• Các tham s truy n cho ph ng th c.ố ề ươ ứ
• Các bi n c c b .ế ụ ộ
II.7. Tính di đ ngộ
Không gi ng C++ và C, các ki u d li u nguyên th y c a Java đ c c p phát m tố ể ữ ệ ủ ủ ượ ấ ộ
l ng b nh c đ nh. Ch ng h n ki u d li u int c a Java luôn là 4 byte (32 bit) trong khiượ ộ ớ ố ị ẳ ạ ể ữ ệ ủ
ki u int c a C++ có th hi u là 2 byte ho c 4 byte. Thi t k này giúp cho trình biên d ch luônể ủ ể ể ặ ế ế ị
có s bytecode nh nhau trên m i h máy và sau đó phát sinh mã máy theo khuôn d ng cố ư ọ ệ ạ ố
đ nh.ị
Trong các phiên b n đ u c a Java, v n đ giao di n đ h a cho ng i s d ng (GUI)ả ầ ủ ấ ề ệ ồ ọ ườ ử ụ
ch a đ c x lý tri t đ và ph thu c vào h máy. Ngày nay, th vi n GUI c a Java đã đ cư ượ ử ệ ể ụ ộ ệ ư ệ ủ ượ
Macintosh
Trình
biên
d chị
Bytecode
Trình
thông
d ch ị
Java
(Java
Interpreter)
IBM
Sparc
8
vi t l i hoàn toàn và có tính đ c l p cao giúp cho ch ng trình Java có giao di n gi ng nhauế ạ ộ ậ ươ ệ ố
trên m i h máy.ọ ệ
II.8. Tính thông d chị
Trình thông d ch Java s thông d ch mã bytecode sang mã máy n i mà nó đ c cài đ t.ị ẽ ị ơ ượ ặ
Quá trình này cũng làm các ch ng trình Java ch y ch m h n. Tuy nhiên đây l i là gi i phápươ ạ ậ ơ ạ ả
cho tính di đ ng.ộ
II.9. Tính th c thi caoự
Java s d ng công ngh Just-In-Time (JIT) giúp quá trình thông d ch th c hi n nhanhử ụ ệ ị ự ệ
h n. V i công ngh này, nh ng mã bytecode gi ng nhau s ch c n thông d ch m t l n. Ngàyơ ớ ệ ữ ố ẽ ỉ ầ ị ộ ầ
nay, công ngh này liên t c đ c c i ti n và cho k t qu v t tr i so v i các trình thông d chệ ụ ượ ả ế ế ả ượ ộ ớ ị
truy n th ng. Ví d nh JIT có th qu n lý các đo n mã đ c s d ng th ng xuyên trongề ố ụ ư ể ả ạ ượ ử ụ ườ
ch ng trình, t i u chúng đ nâng cao t c đ c th c hi n.ươ ố ư ể ố ộ ự ệ
II.10. Tính đa lu ngồ
V i ch ng trình Java, l p trình viên có th cùng lúc qu n lý nhi u ti n trình khácớ ươ ậ ể ả ề ế
nhau. Đi u này giúp cho vi c cài đ t các thu t toán song song b ng Java trên các máy tínhề ệ ặ ậ ằ
nhi u CPU đ c d dàng h n, đ c bi t trong các ng d ng th i gianề ượ ễ ơ ặ ệ ứ ụ ờ th c.ự
II.11. Tính đ ng ộ
Các ch ng trình Java có th đ c nâng c p mà không nh h ng t i ng i s d ng.ươ ể ượ ấ ả ưở ớ ườ ử ụ
Các ph ng th c m i có th đ c cài đ t thêm vào các l p đ i t ng hay các giao di n trongươ ứ ớ ể ượ ặ ớ ố ượ ệ
th vi n c a ch ng trình đang ch y.ư ệ ủ ươ ạ
III. Các lo i ng d ng c a Javaạ ứ ụ ủ
• ng d ng console: Không có giao di n GUI.Ứ ụ ệ
• ng d ng đ ho : Có giao di n GUI.Ứ ụ ồ ạ ệ
• Applet: Nhúng trong các trang Web.
• Servlet: Các class th c thi phía ự web server.
• JSP: Các file nhúng mã Java và HTML.
• ng d ng EJB, RMI, JMS: Xây d ng ng d ng b i nhi u thành ph n ghép l i,Ứ ụ ự ứ ụ ở ề ầ ạ
giao ti p t xa.ế ừ
IV. Công c và môi tr ng l p trình Javaụ ườ ậ
Hi n nay có r t nhi u môi tr ng phát tri n Java (Integrated Development Environmentệ ấ ề ườ ể
- IDE). M i môi tr ng cung c p cho l p trình viên nh ng ti n ích l p trình m c đ khácỗ ườ ấ ậ ữ ệ ậ ở ứ ộ
nhau. M t s IDE thông d ng là:ộ ố ụ
• Netbeans (mi n phí t i http://ễ ạ www.netbeans.org).
• Jcreator (th ng m i).ươ ạ
• Jbuilder (th ng m i).ươ ạ
• Eclipse (mi n phí ễ />9
V. Cài đ t Java ặ
Java phiên b n Java m i nh t có th download t i đ a ch Sauả ớ ấ ể ạ ị ỉ
đó cài đ t nh ng d ng bình th ng. ặ ư ứ ụ ườ
Th m c cài đ t m c đ nh c a Java trên ư ụ ặ ặ ị ủ Windows là C:\Program Files\Java\jdk1.6.0_02
(n u phiên b n cài là jdk1.6.0_02). Trong đó có ch a các th m c v i ý nghĩa sau:ế ả ứ ư ụ ớ
bin Ch a các công c và trình biên d ch Java ứ ụ ị
demo Ch a các ch ng trình Java Demoứ ươ
docs Ch a các tài li u mô t th vi n c a Javaứ ệ ả ư ệ ủ
includes Ch a các file dùng đ biên d ch các đo n mã ngu n vi t b ng ngôn ng khácứ ể ị ạ ồ ế ằ ữ
(native).
jre Ch a các file l u thông tin môi tr ng lúc th c thiứ ư ườ ự
lib Ch a các file th vi nứ ư ệ
src Ch a mã ngu n javaứ ồ
Trong th m c \bin có ch a các công c chính c a Java:ư ụ ữ ụ ủ
Trình biên d ch, 'javac' ị
Cú pháp:javac [options] sourcecodename.java
Trình thông d ch, 'java' ị
Cú pháp:java [options] classname
Trình d ch ng c, 'jaị ượ vap'
javap d ch ng c bytecode và in ra thông tin v các thu c tính (các tr ng), các ph ngị ượ ề ộ ườ ươ
th c c a m t l p.ứ ủ ộ ớ
Cú pháp:javap [options] classname
Công c sinh tài li u, 'javadoc' ụ ệ
Ti n ích này cho phép ta t o ra t p HTML d a trên các l i gi i thích trong mã ch ngệ ạ ệ ự ờ ả ươ
trình (ph n n m trong c p d u /*.... */).ầ ằ ặ ấ
Cú pháp:javadoc [options] sourcecodename.java
Ch ng trình tìm l i - Debug, 'jdb‘ươ ỗ
Cú pháp:jdb [options] sourcecodename.java
hay
jdb -host -password [options] sourcecodename.java
Cài đ t đ ng d n m c đ nh.ặ ườ ẫ ặ ị
1. M Control Panelở
2. Ch n Systemọ
10
3. Ch n Tab Advancedọ
4. Ch n Environment Variablesọ
5. Thêm đ ng d n C:\Program Files\Java\jdk1.6.0_02\bin vào bi n môi trườ ẫ ế ng Pườ ath
- Ch n Variable Pathọ
11
- Ch n Editọ
12
Đ tài 1. Ngôn ng mô hình hóa UMLề ữ
I. Xây d ng h th ng ph n m m theo h ng đ i t ngự ệ ố ầ ề ướ ố ượ
I.1 Các khái ni m căn b n c a công ngh h ng đ i t ngệ ả ủ ệ ướ ố ượ
H ng đ i t ng là m t công ngh đ s n sinh ra các mô hình ph n ánh m t cách tướ ố ượ ộ ệ ể ả ả ộ ự
nhiên các nghi p v th c t . Xét cho cùng thì m i quy trình nghi p v trong th c t đ u là sệ ụ ự ế ọ ệ ụ ự ế ề ự
t ng tác c a các đ i t ng theo m t trình t nh m đ t đ c m t m c đích c th . Nói cáchươ ủ ố ượ ộ ự ằ ạ ượ ộ ụ ụ ể
khác, các đ i t ng và m i quan h gi a chúng ph n ánh quy trình nghi p v . Ví d nhố ượ ố ệ ữ ả ệ ụ ụ ư
nghi p v tuy n nhân s cho m t công ty có th đ c tóm t t qua m t chu i các t ng tácệ ụ ể ự ộ ể ượ ắ ộ ỗ ươ
nh sau:ư
1. Công ty đ a ra thông báo tuy n nhân s t i các ng viên có nhu c uư ể ự ớ ứ ầ
2. ng viên g i h s d tuy n t i công tyỨ ử ồ ơ ự ể ớ
3. Công ty duy t h s và g i gi y h n ph ng v n t i ng viênệ ồ ơ ử ấ ẹ ỏ ấ ớ ứ
4. Công ty ph ng v n ng viênỏ ấ ứ
5. Công ty ký h p đ ng v i ng viên ho c t ch iợ ồ ớ ứ ặ ừ ố
Trong ví d trên có s tham gia c a hai đ i t ng “công ty” và “ ng viên”. S trao đ iụ ự ủ ố ượ ứ ự ổ
thông tin gi a hai đ i t ng này cho th y m i quan h ph thu c gi a chúng (dependence).ữ ố ượ ấ ố ệ ụ ộ ữ
M t ví d khác là trong h th ng qu n lý nhân s chúng ta có các đ i t ng nh : nhânộ ụ ệ ố ả ự ố ượ ư
viên, qu n lý,…cho th y m i quan h d ng khác: các nhân viên làm công vi c qu n lý t tả ấ ố ệ ạ ệ ả ấ
nhiên cũng là nhân viên c a công ty nh ng có thêm các thu c tính riêng bi t – m t quan h kủ ư ộ ệ ộ ệ ế
th a (inheritance).ừ
Trong m t h th ng bán hàng, m i đ n hàng bao g m trong nó các thông tin v kháchộ ệ ố ỗ ơ ồ ề
hàng, ngày gi , …và m t danh m c các m t hàng. Khi này ta nói r ng gi a đ n hàng và m tờ ộ ụ ặ ằ ữ ơ ặ
hàng t n t i m t quan h bao g m (aggregation) ồ ạ ộ ệ ồ
M c tiêu c a công ngh h ng đ i t ng chính là th hi n đ c các đ i t ng vàụ ủ ệ ướ ố ượ ể ệ ượ ố ượ
m i quan h gi a chúng vào trong các h th ng ph n m m. Vì v y, các h th ng ph n m mố ệ ữ ệ ố ầ ề ậ ệ ố ầ ề
theo công ngh h ng đ i t ng ph n ánh m t cách t nhiên và trung th c nghi p v th c tệ ướ ố ượ ả ộ ự ự ệ ụ ự ế
và có kh năng đáp ng các thay đ i d dàng.ả ứ ổ ễ
Phát tri n m t h th ng ph n m m theo h ng đ i t ng d a trên 5 khái ni m cể ộ ệ ố ầ ề ướ ố ượ ự ệ ơ
b n: L p (class), đ i t ng (object), thông đi p (mesage), th a k (inheritance) và đa hìnhả ớ ố ượ ệ ừ ế
(polymorphism).
L p là s tr u t ng hóa các đ i t ng th c t theo ph m vi nghi p v . L y ví d vớ ự ừ ượ ố ượ ự ế ạ ệ ụ ấ ụ ề
h th ng qu n lý sinh viên c a tr ng ĐHBK Hà N i c n qu n lý r t nhi u đ i t ng sinhệ ố ả ủ ườ ộ ầ ả ấ ề ố ượ
viên khác nhau nh ng có th ch đ c tr u t ng hóa thành m t l p đ i t ng có tênư ể ỉ ượ ừ ượ ộ ớ ố ượ
SinhVien ch ng h n. S tr u t ng hóa m t l p đ i t ng cho ta k t qu m t t p các thu cẳ ạ ự ừ ượ ộ ớ ố ượ ế ả ộ ậ ộ
tính (attributes) và các hành vi (operations) đ c tr ng cho b t kỳ đ i t ng nào thu c l p đó.ặ ư ấ ố ượ ộ ớ
Đ i t ng th c t thì có vô s thu c tính và hành vi nh ng ch thu c tính và hành vi trongố ượ ự ế ố ộ ư ỉ ộ
ph m vi nghi p v là đ c xét đ n. S chi ti t ph thu c vào ph m vi nghi p v .ạ ệ ụ ượ ế ự ế ụ ộ ạ ệ ụ
S tr u t ng hóa di n ra nhi u c p đ . L y ví d : l p đ ng v t có vú bao g m l pự ừ ượ ễ ở ề ấ ộ ấ ụ ớ ộ ậ ồ ớ
đ ng v t 4 chân, l p 4 chân l i bao g m các l p nh l p mèo, l p trâu,…ộ ậ ớ ạ ồ ớ ư ớ ớ
M i đ i t ng là m t bi u hi n th c t c a m t l p.ỗ ố ượ ộ ể ệ ự ế ủ ộ ớ
object = name + attributes + operations
H th ng h ng đ i t ng n u đ c mô hình đúng s r t linh ho t, d hi u ch nh,ệ ố ướ ố ượ ế ượ ẽ ấ ạ ễ ệ ỉ
đ c cài đ t d dàng b ng các ngôn ng h ng đ i t ng. Các h th ng ph n m m h ngượ ặ ễ ằ ữ ướ ố ượ ệ ố ầ ề ướ
đ i t ng cũng đ c cài đ t b i các ngôn ng l p trình h ng đ i t ng.ố ượ ượ ặ ở ữ ậ ướ ố ượ
13
H ng đ i t ng không ch là m t lý thuy t mà đã đ c ch ng minh b ng nh ng ngướ ố ượ ỉ ộ ế ượ ứ ằ ữ ứ
d ng r t thành công trong th c t nhi u lĩnh v c khác nhau. Tuy nhiên, lĩnh v c này v n c nụ ấ ự ế ở ề ự ự ẫ ầ
đ c chu n hóa h n n a.ượ ẩ ơ ữ
I.2 Quy trình chung phát tri n h th ng ph n m mể ệ ố ầ ề
Xây d ng m t h th ng ph n m m h ng đ i t ng cũng tuân theo quy trình chungự ộ ệ ố ầ ề ướ ố ượ
nh m i công ngh khác:ư ọ ệ
1. Requirements : Thu th p yêu c uậ ầ
2. Analysis : Phân tích
3. Design: Thi t kế ế
4. Implementation: Cài đ tặ
5. Test: Ki m thể ử
6. Deployment: Tri n khaiể
Theo nguyên t c chung này, m i công ty l i ng d ng nh ng công ngh khác nhau đắ ỗ ạ ứ ụ ữ ệ ể
phát tri n ng d ng nh các mô hình water fall, mô hình h ng ch c năng,…ể ứ ụ ư ướ ứ
I.3 Nh ng thách th c c a ngành công nghi p ph n m m hi n nayữ ứ ủ ệ ầ ề ệ
M c dù đã ng d ng các công ngh ti n ti n và quy trình phát tri n chu n hóa nh ngặ ứ ụ ệ ế ế ể ẩ ư
ngành công nghi p ph n m m v n ph i đ i m t v i nh ng thách th c:ệ ầ ề ẫ ả ố ặ ớ ữ ứ
1. S gia tăng v quy mô t nh đ n l n c a ng d ngự ề ừ ỏ ế ớ ủ ứ ụ
2. S c ép v th i gian hoàn thànhứ ề ờ
3. S phân tán v không gian làm vi cự ề ệ
4. Đa d ng v n i dungạ ề ộ
5. S thay đ i các yêu c u c a ng i s d ngự ổ ầ ủ ườ ử ụ
Nh ng thách th c này có th nói là g n li n v i m i công ty ph n m m đ c bi t là ữ ứ ể ắ ề ớ ọ ầ ề ặ ệ ở
Vi t Nam, n i mà vai trò c a quá trình kh o sát, phân tích còn b xem nh cũng nh các côngệ ơ ủ ả ị ẹ ư
ty còn đang b ng v i s m r ng v quy mô và thi u nhân l c chuyên môn v phân tíchỡ ỡ ớ ự ở ộ ề ế ự ề
thi t k .ế ế
II. L ch s phát tri n ngôn ng mô hình hóa UMLị ử ể ữ
II.1. Tóm t t l ch s UMLắ ị ử
Nh ng năm 1980 là th i kỳ bùng n s l ng các công ty ph n m m s d ng ngônữ ờ ổ ố ượ ầ ề ử ụ
ng l p trình h ng đ i t ng(Object Oriented Programming - OOP) đ xây d ng các ngữ ậ ướ ố ượ ể ự ứ
d ng. Đi u này d n t i m t đòi h i ph i có m t quy trình làm ph n m m ti p c n theo h ngụ ề ẫ ớ ộ ỏ ả ộ ầ ề ế ậ ướ
phân tích và thi t k h ng đ i t ng (Object Oriented Analyze and Design - OOAD). Nhi uế ế ướ ố ượ ề
nhà nghiên c u ph ng pháp trong đó có Booch, Rumbaugh và Jacobson đã làm vi c đ c l pứ ươ ệ ộ ậ
và đã đ xu t các quy trình th a mãn yêu c u này. M i m t quy trình có m t t p ký hi u môề ấ ỏ ầ ỗ ộ ộ ậ ệ
hình riêng đ truy n đ t và di n t các k t qu phân tích và thi t k .ể ề ạ ễ ả ế ả ế ế
Vào đ u nh ng năm 1990, các công ty khác nhau, th m chí là các b ph n khác nhauầ ữ ậ ộ ậ
c a cùng m t công ty đã s d ng các quy trình khác nhau. Thêm vào đó, các công ty này l iủ ộ ử ụ ạ
mu n s d ng các công c ph n m m h tr các quy trình c a h . V i quá nhi u quy trìnhố ử ụ ụ ầ ề ỗ ợ ủ ọ ớ ề
khác nhau, các công ty ph n m m đã r t khó khăn trong vi c cung c p các công c này. Đi uầ ề ấ ệ ấ ụ ề
này cho th y vi c c n thi t ph i có m t quy trình v i t p ký hi u th ng nh t.ấ ệ ầ ế ả ộ ớ ậ ệ ố ấ
Năm 1994, James Rumbaugh đã h p tác cùng Grady Booch t i công ty ph n m mợ ạ ầ ề
Rational Software Corporation đ cùng xây d ng m t quy trình th ng nh t d a trên k t quể ự ộ ố ấ ự ế ả
14
c a t ng ng i. Sau đó Ivar Jacobson cũng s m gia nh p nhóm này. Năm 1996, nhóm đã choủ ừ ườ ớ ậ
xu t b n phiên b n đ u tiên c a UML t i c ng đ ng phát tri n ph n m m và yêu c u ph nấ ả ả ầ ủ ớ ộ ồ ể ầ ề ầ ả
h i. Cũng cùng th i gian đó, m t t ch c có tên Object Management Group (OMG) đã m iồ ờ ộ ổ ứ ờ
nhóm đ trình m t ngôn ng mô hình. OMG là m t t ch c phi l i nhu n chuyên xúc ti n vi cệ ộ ữ ộ ổ ứ ợ ậ ế ệ
s d ng công ngh h ng đ i t ng trong ngành công nghi p ph n m m thông qua vi c đ aử ụ ệ ướ ố ượ ệ ầ ề ệ ư
ra các h ng d n và đ c t OOP. Các thành viên c a OMG ban đ u là 3Com Corporation;ướ ẫ ặ ả ủ ầ
American Airlines; Canon, Inc.; Data General; Hewlett-Packard; Philips Telecommunications
N.V.; Sun Microsystems; và Unisys Corporation. Các t p đoàn l n nh HP, IBM, Microsoft,ậ ớ ư
Oracle và Rational Software đã nh n th y l i ích c a UML và đã nh n l i tài tr cho các d ánậ ấ ợ ủ ậ ờ ợ ự
v UML c a OMG. Năm 1997, OMG ti p t c xem xét l i UML và đ n năm 2001 thì phiênề ủ ế ụ ạ ế
b n UML 1.4 ra đ i. Hi n nay OMG đã phát hành t i phiên b n UML 2.0 và đang nghiên c uả ờ ệ ớ ả ứ
phiên b n 2.1.ả
II.2. Khái ni m v UMLệ ề
UML – Unified Modeling Language là m t ngôn ng dùng các s đ và mô hình th ngộ ữ ơ ồ ố
nh t đ mô hình các h th ng ph n m m.ấ ể ệ ố ầ ề
M c đích c a UML là:ụ ủ
• Tr thành ngôn ng mô hình mà t t c m i ng i làm mô hình có th s d ngở ữ ấ ả ọ ườ ể ử ụ
• T p trung h ng t i gi i quy t các v n đ t n t i trong phát tri n ph n m mậ ướ ớ ả ế ấ ề ồ ạ ể ầ ề
hi n nay.ệ
• Đ n gi n nh t có th trong khi v n mô hình đ c ph n l n các ng d ng.ơ ả ấ ể ẫ ượ ầ ớ ứ ụ
• Nâng cao tính tái s d ng các thành ph n c a m t h th ng ph n m mử ụ ầ ủ ộ ệ ố ầ ề
• UML là m t ngôn ng di n t , UML không ph i là m t quy trình. ộ ữ ễ ả ả ộ
Thu t ng “Unified” đây có m t ý nghĩa quan tr ng, nó nói lên các nguyên t c c aậ ữ ở ộ ọ ắ ủ
UML:
• Th ng nh t ph ng th c, ký hi u, thu t ngố ấ ươ ứ ệ ậ ữ
• G n k t gi a các chu trình phát tri nắ ế ữ ể
• Không ph thu c vào lĩnh v c ng d ngụ ộ ự ứ ụ
• Không ph thu c vào ngôn ng l p trình và môi tr ng th c hi nụ ộ ữ ậ ườ ự ệ
• Không ph thu c vào quy trình phát tri nụ ộ ể
• G n k t ch t ch các khái ni m n i t i c a h th ng.ắ ế ặ ẽ ệ ộ ạ ủ ệ ố
II.3 Đ c tr ng c a UMLặ ư ủ
Hi n nay, UML là m t ngôn ng đã đ c OMG chu n hóa và đ c đ c t rõ ràng. T tệ ộ ữ ượ ẩ ượ ặ ả ấ
c các mô hình, s đ c a UML đ u theo h ng đ i t ng.ả ơ ồ ủ ề ướ ố ượ
Các đ c tính c a UML bao g m:ặ ủ ồ
• Mô hình class (class diagrams) mô t c u trúc tĩnh c a h th ng và m i quan hả ấ ủ ệ ố ố ệ
gi a các đ i t ngữ ố ượ
• Mô hình t ng tác (interaction diagrams), mô hình tr ng thái (state diagrams), môươ ạ
hình ho t đ ng (activity diagrams) mô t các hành vi đ ng c a các đ i t ngạ ộ ả ộ ủ ố ượ
trong h th ng cũng nh các thông đi p gi a chúng.ệ ố ư ệ ữ
• Mô hình Use-case và mô hình ho t đ ng mô t các yêu c u và các lu ng côngạ ộ ả ầ ồ
vi c trong h th ng.ệ ệ ố
• Các mô hình c u trúc h n h p (composite structure diagrams) mô t s h p tácấ ỗ ợ ả ự ợ
cũng nh các đ c đi m v cài đ t.ư ặ ể ề ặ
15
• Mô hình tri n khai (deployment diagrams) mô t vi c tri n khai ph n m m trênể ả ệ ể ầ ề
m t môi tr ng xác đ nh.ộ ườ ị
III. Ngôn ng UMLữ
III.1. Các thành ph n c a UMLầ ủ
Xét trên khía c nh ngôn ng di n t , UML có đ y đ các mô hình và s đ đ thạ ữ ễ ả ầ ủ ơ ồ ể ể
hi n h u hêt các khía c nh c a h th ng ph n m m. Các thành ph n c a ngôn ng UML baoệ ầ ạ ủ ệ ố ầ ề ầ ủ ữ
g m:ồ
• Các Views (các h ng nhìn): Các view th hi n các cách nhìn khác nhau t i hướ ể ệ ớ ệ
th ng. M t h th ng không th ch đ c mô t b i m t s đ . Nhi u h ngố ộ ệ ố ể ỉ ượ ả ở ộ ơ ồ ề ướ
nhìn khác nhau cho ta nhi u s đ mô t đ y đ v h th ng. Các h ng nhìnề ơ ồ ả ầ ủ ề ệ ố ướ
cũng liên k t ngôn ng mô hình v i các quy trình đ c ch n cho vi c phát tri nế ữ ớ ượ ọ ệ ể
h th ng.ệ ố
• Các Diagrams (các s đ ): Các s đ bao g m các ph n t hình v dùng đ môơ ồ ơ ồ ồ ầ ử ẽ ể
t nôi dung c a các View. UML 2.0 bao g m 13 lo i s đ khác nhau.ả ủ ồ ạ ơ ồ
• Các Model Elements (các ph n t mô hình): Các khái ni m đ c s d ng trongầ ử ệ ượ ử ụ
các s đ và các ph n t c a s đ di n t các khái ni m ph bi n c a côngơ ồ ầ ử ủ ơ ồ ễ ả ệ ổ ế ủ
ngh h ng đ i t ng nh class, object, message (thông đi p) và m i quan hệ ướ ố ượ ư ệ ố ệ
gi a chúng bao g m quan h dependence, inheritance và aggregation. M t ph nữ ồ ệ ộ ầ
t mô hình có th đ c s d ng trong nhi u s đ nh ng chúng luôn có cùng ýử ể ượ ử ụ ề ơ ồ ư
nghĩa và ký hi u gi ng nhau.ệ ố
16
Cỏc General Mechanisms (cỏc c t chung m r ng): Mụ t cỏc thụng tin chỳ
thớch, ng ngha c a cỏc ph n t mụ hỡnh, thu t ng .
III.2. Cỏc h ng nhỡn (view)
Use-case view: õy l h ng nhỡn v m t ch c nng c a h th ng c th c hi n b i
cỏc tỏc nhõn bờn ngoi.
ud Primary Use Cases
Hệ thống bán hàng qua mạng Interrnet
Chọn hàng
Khách hàng
Đ ăng ký
khách hàng
Quản trị hệ
thống
Nhân viên kinh
doanh
Lập đơn mua
hàng
Gửi thông
tin phản hồi
Xem chi tiết
sản phẩm
Cập nhật giỏ
hàng
Cập nhật
thông tin
mặt hàng
Quản lý
danh mục
hàng hóa
Trả lời
khách hàng
Theo dõi
đơn hàng
Cỏc nguyờn t c cho vi c xõy d ng use-case view l:
Cỏc use-case c hỡnh thnh trờn c s nhỡn t bờn ngoi vo trong h th ng
(out-> in).
Cỏc use-case ph i y , chỳng c t ng h p theo ph ng phỏp i t t i a
n t i thi u (ban u m r ng t i a cỏc use-case cú th sau ú thu h p l i
theo nhu c u khỏch hng).
Cỏc use-case c n cú tớnh c l p t ng i d t ch c nhúm lm vi c v cú
tớnh tỏi s d ng cao.
Bờn c nh s , ng i lm mụ hỡnh cú th s d ng mụ t b ng vn b n chi ti t cho
m i use-case (text detail). M i mụ t c n m b o cỏc thụng tin sau:
17
1. Tên use-case
2. M c tiêu c a use-caseụ ủ
3. Ph m vi c a use-caseạ ủ
4. Các tác nhân chính
5. Ti n đi u ki nề ề ệ
6. Dòng chính
7. Dòng phụ
8. Ngo i lạ ệ
9. H u đi u ki nậ ề ệ
Sau đây là m t ví d v use-case text detail:ộ ụ ề
Use-case: Đòi ti n b i th ngề ồ ườ
Ph m vi: ạ Công ty B o hi m PCMả ể
Actor chính: Ng i đòi b i th ngườ ồ ườ
Dòng chính
1. Ng i đòi b i th ng g i đ n yêu c u v i các d li u b ng ch ng v tai n nườ ồ ườ ử ơ ầ ớ ữ ệ ằ ứ ề ạ
2. Công ty b o hi m xác nh n ng i vi t đ n có quy n l i b o hi m h p lả ể ậ ườ ế ơ ề ợ ả ể ợ ệ
3. Công ty b o hi m phân công cho m t đ i lý xác minh tr ng h p nàyả ể ộ ạ ườ ợ
4. Đ i lý đ i chi u t t c các chi ti t trong đ n theo chính sách b o hi m c aạ ố ế ấ ả ế ơ ả ể ủ
công ty
5. Công ty b o hi m tr ti n b o hi mả ể ả ề ả ể
Dòng phụ
1a. B ng ch ng tai n n không đ y đằ ứ ạ ầ ủ
1a1. Công ty b o hi m yêu c u d li u thi uả ể ầ ữ ệ ế
1a2. Ng i đòi b i th ng g i l i các d li u thi uườ ồ ườ ử ạ ữ ệ ế
2a. Ng i đòi b i th ng không có chính sách b o hi m h p lườ ồ ườ ả ể ợ ệ
2a1. Công ty b o hi m t ch i yêu c u, nh c nh , ghi l i và k t thúc x lý v vi cả ể ừ ố ầ ắ ở ạ ế ử ụ ệ
3a. Không có đ i lý nào r nh r iạ ả ỗ
3a1. (Công ty b o hi m s làm gì trong tr ng h p này???)ả ể ẽ ườ ợ
4a. V tai n n vi ph m chính sách b o hi m c b nụ ạ ạ ả ể ơ ả
4a1. Công ty b o hi m t ch i yêu c u, nh c nh , ghi l i và k t thúc x lý v vi cả ể ừ ố ầ ắ ở ạ ế ử ụ ệ
4b. V tai n n ch vi ph m chính sách b o hi m nhụ ạ ỉ ạ ả ể ỏ
4b1. Công ty b o hi m đi u đình v i ng i đòi b o hi m và đ ng ý tr b o hi mả ể ề ớ ườ ả ể ồ ả ả ể
Trong tr ng h p các use-case quá ph c t p và ch a đ c mô t rõ ràng, chúng có thườ ợ ứ ạ ư ượ ả ể
đ c tác ra thành các use-case nh h n theo hai d ng:ượ ỏ ơ ạ
• Include: use-case m i đ c tách ra và đ c bao g m trong use-case chính m tớ ượ ượ ồ ộ
cách vô đi u ki nề ệ
18
uc Use Case Model
Use Case Principal
Use Case Include
«include»
• Extend: use-case m i x y ra khi m t đi u ki n x y ra trong use-case chính. ớ ả ộ ề ệ ả
uc Use Case Model
Use Case Principal
Use Case Extend
«extend»
Nói chung, use-case view giúp ta tr l i câu h i WHAT? v h th ng.ả ờ ỏ ề ệ ố
Logical views
Đây là h ng nhìn cho bi t các ch c năng đ c thi t k vào trong h th ng nh thướ ế ứ ượ ế ế ệ ố ư ế
nào (HOW?) thông qua vi c mô t các c u trúc tĩnh và các hành vi đ ng c a h th ng. Sau đâyệ ả ấ ộ ủ ệ ố
là m t s s đ quan tr ng th ng đ c s d ng.ộ ố ơ ồ ọ ườ ượ ử ụ
Các c u trúc tĩnh (static structure):ấ C u trúc tĩnh đ c mô hình b ng UML chính là cácấ ượ ằ
class diagrams. Đây là s mô hình các khái ni m trong ng d ng, các đ c đi m n i t i cũngự ệ ứ ụ ặ ể ộ ạ
nh m i quan h gi a chúng.ư ố ệ ữ
19
Ví d v mô hình class:ụ ề
cd Jav a M odel
Account
- billingAddress: String
- closed: boolean
- deliveryAddress: String
- emailAddress: String
- name: String
+ createNewAccount() : void
+ loadAccountDetails() : void
+ markAccountClosed() : void
+ retrieveAccountDetails() : void
+ submitNewAccountDetails() : void
+ validateUser(String, String)
property get
+ getBasket() : ShoppingBasket
+ getBillingAddress() : String
+ getClosed() : boolean
+ getDeliveryAddress() : String
+ getEmailAddress() : String
+ getName() : String
+ getOrder() : Order
property set
+ setBasket(ShoppingBasket) : void
+ setBillingAddress(String) : void
+ setClosed(boolean) : void
+ setDeliveryAddress(String) : void
+ setEmailAddress(String) : void
+ setName(String) : void
+ setOrder(Order) : void
LineItem
- quantity: int
property get
+ getItem() : StockItem
+ getQuantity() : int
property set
+ setItem(StockItem) : void
+ setQuantity(int) : void
Order
- date: Date
- deliveryInstructions: String
- orderNumber: String
+ checkForOutstandingOrders() : void
property get
+ getDate() : Date
+ getDeliveryInstructions() : String
+ getLineItem() : LineItem
+ getOrderNumber() : String
+ getStatus() : OrderStatus
property set
+ setDate(Date) : void
+ setDeliveryInstructions(String) : void
+ setLineItem(LineItem) : void
+ setOrderNumber(String) : void
+ setStatus(OrderStatus) : void
«enumeration»
OrderStatus
enum
- closed: int
- delivered: int
- dispatched: int
- new: int
- packed: int
ShoppingBasket
- shoppingBasketNumber: String
+ addLineItem() : void
+ createNewBasket() : void
+ deleteItem() : void
+ processOrder() : void
property get
+ getLineItem() : LineItem
property set
+ setLineItem(LineItem) : void
StockItem
- Author: string
- catalogNumber: string
- costPrice: number
- listPrice: number
- title: string
property get
+ getAuthor() : string
+ getCatalogNumber() : string
+ getCostPrice() : number
+ getListPrice() : number
+ getTitle() : string
property set
+ setAuthor(string) : void
+ setCatalogNumber(string) : void
+ setCostPrice(number) : void
+ setListPrice(number) : void
+ setTitle(string) : void
Transaction
- date: Date
- orderNumber: String
+ loadAccountHistory() : void
+ loadOpenOrders() : void
property get
+ getAccount() : Account
+ getDate() : Date
+ getLineItem() : LineItem
+ getOrderNumber() : String
property set
+ setAccount(Account) : void
+ setDate(Date) : void
+ setLineItem(LineItem) : void
+ setOrderNumber(String) : void
-history
-accou nt
-status
-item
-basket
-account
Các hành vi đ ng:ộ
State machine:
Các khái ni m ệ
Mô hình hóa
Classes
Attributes Operations
Object
20
Đây là mô hình mô t vi c chuy n đ i tr ng thái c a đ i t ng trong quá trình thamả ệ ể ổ ạ ủ ố ượ
gia các ho t đ ng nghi p v c a h th ng. Tr ng thái c a đ i t ng b thay đ i b i m t hànhạ ộ ệ ụ ủ ệ ố ạ ủ ố ượ ị ổ ở ộ
vi nào đó.
S đ hành đ ng (activity diagrams):ơ ồ ộ Đây là s đ mô t lu ng nghi p v trong hơ ồ ả ồ ệ ụ ệ
th ng.ố
21
S đ t ng tác (interaction diagram):ơ ồ ươ Đây là s đ mô t s t ng tác gi a các đ iơ ồ ả ự ươ ữ ố
t ng theo trình t th i gian (còn g i là sequence diagram). Các s đ sequence có th đ cượ ự ờ ọ ơ ồ ể ượ
mô t m c h th ng (Sequence System – ch có user t ng tác v i h th ng) ho c m c chiả ở ứ ệ ố ỉ ươ ớ ệ ố ặ ứ
ti t (Sequence Detail – Các đ i t ng và thông đi p gi a chúng đã đ c đ nh hìnhế ố ượ ệ ữ ượ ị ):
22
Các class trong h th ng đ c chia thành ba lo i tách bi t: M (Model) – V (View) – Cệ ố ượ ạ ệ
(Control). Các class V ch u trách nhi m hi n th giao di n t ng tác v i ng i s d ng, cácị ệ ể ị ệ ươ ớ ườ ử ụ
class M l u tr d li u đ c mô hình hóa t thông tin đ i t ng qu n lý trong khi các class Cư ữ ữ ệ ượ ừ ố ượ ả
là n i đi u khi n vi c d li u t M đ c đ a t i giao di n V nh th nào ho c x lý các yêuơ ề ể ệ ữ ệ ừ ượ ư ớ ệ ư ế ặ ử
c u t V sau đó c p nh t vào M.ầ ừ ậ ậ
S đ tri n khai (Deployment Diagram)ơ ồ ể :
sd Sequence
Khach mua
hang
DangKy
Page
AccountUtilities AccountTable
Nhap thong tin dang ky
Click "Dang Ky"
XacNhanT hongT inDangKy()
DangKyKhachHang()
sd MuaHang
TrangChuKhach Hang SanPhamUti liti esT rangDanhMucSanPham SanPhamTable
Chon xem san pham theo hang
Redirect
LayDanhSachSanPham
HienT hi
MV C
MV
C
23
III.3 ng d ng UML trong quy trình làm ph n m mỨ ụ ầ ề
Nh đã trình bày trên, UML ch thu n túy là m t ngôn ng mô hình. Các công ty ph nư ở ỉ ầ ộ ữ ầ
m m khác nhau tuy đ u ng d ng UML nh ng có th s d ng các quy trình phát tri n khácề ề ứ ụ ư ể ử ụ ể
nhau.
24
S đ trên cho th y m t trình t s d ng các mô hình UML đ xây d ng m t ngơ ồ ấ ộ ự ử ụ ể ự ộ ứ
d ng. Xu t phát t ý t ng ban đ u thu n túy mang tính nghi p v , các b c ti p theo c nụ ấ ừ ưở ầ ầ ệ ụ ướ ế ầ
làm song song là xây d ng mô hình use-case và v phác th o giao di n ch ng trình. Ti p theoự ẽ ả ệ ươ ế
xây d ng mô hình sequence system vì thông qua giao di n ta đã bi t user t ng tác v i systemự ệ ế ươ ớ
nh th nào. Sau đó xây d ng mô hình class m c phác th o, s đ tr ng thái và s đ hànhư ế ự ở ứ ả ơ ồ ạ ơ ồ
đ ng. Đ n đây ta đã bi t user t ng tác v i c th đ i t ng nào c a system và các thôngộ ế ế ươ ớ ụ ể ố ượ ủ
đi p gi a các đ i t ng t mô hình class. Đây là c s đ xây d ng sequence detail và hoànệ ữ ố ượ ừ ơ ở ể ự
ch nh mô hình class v i các quan h đ y đ .ỉ ớ ệ ầ ủ
Theo quan đi m v phân tích thi t k b ng UML thì vi c l p trình rõ ràng không chể ề ế ế ằ ệ ậ ỉ
b t đ u khi cài đ t các class và các sequence detail b ng m t ngôn ng l p trình mà th c tắ ầ ặ ằ ộ ữ ậ ự ế
chúng ta đã l p trình ngay t khi xây d ng mô hình use-case và vi t text detail cho nó. Nh v yậ ừ ự ế ư ậ
vi c l p trình cài đ t ch đ c ti n hành sau khi cac mô hình đã hoàn t t. Trong quá trình xâyệ ậ ặ ỉ ượ ế ấ
d ng các mô hình c n liên t c ti p xúc v i khách hàng đ đ m b o tính chính xác c a môự ầ ụ ế ớ ể ả ả ủ
hình. M t khi các mô hình và tài li u đ c t đã hoàn ch nh, vi c coding th c s ch chi mộ ệ ặ ả ỉ ệ ự ự ỉ ế
kho ng 20% t ng s th i gian.ả ổ ố ờ
Sau đây là m t s công c giúp s d ng UML trong phát tri n h th ng ph n m m:ộ ố ụ ử ụ ể ệ ố ầ ề
25