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
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
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
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
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óượ ể ự ư ượ ớ ặ ế ệ
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
• 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' ị
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ố ượ ự ế ố ộ ư ỉ ộ
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,ậ ớ ư
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)
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
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»
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
+ 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
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.ả ổ ố ờ