Bài giảng về Java
Trang 1M 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
Trang 2I.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
Trang 3VI 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
Trang 4I 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
Trang 5I 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
Trang 6Đ tài 0 Gi i thi u v 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 độ ữ ậ ỏ ọ ể ự ượ ctrê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 (ObjectOriented) 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
Trang 7Java đượ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ể ừ ữ ậ
Trang 8II.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ầ ứ ụ ể ị ỗ ẽ ể ậ ệ ươ ngtrì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
Trang 9vi 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.ự
• 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.ế ừ
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í ễ http://www.eclipse.org/)
Trang 10bin 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ứ ể ị ạ ồ ế ằ ữ
Cú pháp:java [options] classname
Trình d ch ngị ược, 'javap'
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ệ ạ ệ ự ờ ả ươ ngtrì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
hayjdb -host -password [options] sourcecodename.java
Cài đ t đ ặ ườ ng d n m c đ nh ẫ ặ ị
1 M Control Panelở
2 Ch n Systemọ
10
Trang 113 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 Path
- Ch n Variable Pathọ
Trang 12- Ch n Editọ
12
Trang 13Đ tài 1 Ngôn ng mô hình hóa UML ề ữ
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ệ ồ ơ ử ấ ẹ ỏ ấ ớ ứ
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 sinhviê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ênSinhVien 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
Trang 14Hướ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
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.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ụ ề ẫ ớ ộ ỏ ả ộ ầ ề ế ậ ướ ngphâ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
Trang 15c 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
• 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.ư ặ ể ề ặ
Trang 16• 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.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ả ở ộ ơ ồ ề ướ ngnhìn khác nhau cho ta nhi u s đ mô t đ y đ v h th ng Các hề ơ ồ ả ầ ủ ề ệ ố ướng nhìncũ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 trongcá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
Trang 17• Cỏc General Mechanisms (cỏc đ c t chung m r ng): Mụ t cỏc thụng tin chỳặ ả ở ộ ả
thớch, ng nghĩa 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 năng c a h th ng đề ặ ứ ủ ệ ố ược th c hi n b iự ệ ở
cỏc tỏc nhõn bờn ngoài
ud Primary Use Cases
Khách hàng
Đ ăng ký khách 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 thành trờn c s nhỡn t bờn ngoài vào 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 hàng).ầ
• Cỏc use-case c n cú tớnh đ c l p tầ ộ ậ ương đ i đ d t ch c nhúm làm vi c và cúố ể ễ ổ ứ ệ
tớnh tỏi s d ng cao.ử ụBờn c nh s đ , ngạ ơ ồ ười làm mụ hỡnh cú th s d ng mụ t b ng văn 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
Trang 18Use-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
Trang 19uc 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
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.ư ố ệ ữ
Trang 20+ getItem() : StockItem + getQuantity() : int
property set
+ setItem(StockItem) : void + setQuantity(int) : void
property set
+ setDate(Date) : void + setDeliveryInstructions(String) : void + setLineItem(LineItem) : void + setOrderNumber(String) : void + setStatus(OrderStatus) : void
+ 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 -account
-status
-item
-basket -account
Trang 21Đâ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 thamgia 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.ố
Trang 22S đ 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
Trang 23Cá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ư ớ ệ ư ế ặ ử
Chon xem san pham theo hang
Trang 24III.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
Trang 25S đ 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:ộ ố ụ ử ụ ể ệ ố ầ ề
Trang 26IV Quy trình Rational Unified Process (RUP) phát tri n ph n m m d a trên UML ể ầ ề ự
IV.1 Gi i thi u v RUP ớ ệ ề
Trong s các quy trình hi n nay, RUP đố ệ ược phát tri n b i công ty Rational Softwareể ở
đượ ử ục s d ng khá ph bi n ổ ế
L ch s :ị ử RUP là s ph i h p gi a cách ti p c n công ngh hự ố ợ ữ ế ậ ệ ướng đ i tố ượng c aủ Rational trong nh ng năm 1980s và 1990s v i công ngh x lý đ i tữ ớ ệ ử ố ượng c a Ival Jarcobson.ủ
Phiên b n m i nh t c a RUP là version 7.0 phát hành 2005 ả ớ ấ ủ
Đ ng c phát tri n RUP là tìm ra nguyên nhân c a các l i ph n m m và tìm cách kh cộ ơ ể ủ ỗ ầ ề ắ
ph c chúng thông qua m t quy trình.ụ ộ
IV.2 Các nguyên t c chính c a RUP: ắ ủ
1- Tuân th ti n trình (Adapt the process)ủ ế
2- Cân b ng các u tiên c a stakeholder (Balance stackeholder priorities) Stakeholder làằ ư ủ
nh ng ngữ ườ ưi đ a ra nh ng ý ki n có nh hữ ế ả ưởng l n t i t tớ ớ ư ưởng thi t k h th ng.ế ế ệ ố
3- C ng tác gi a các nhóm (Collaborate across teams)ộ ữ
4- Th hi n k t qu theo quy trình l p (Demonstrate value iteratively) K t thúc m iể ệ ế ả ặ ế ỗ quy trình c n theo dõi k t qu và ki m tra ch t ch ầ ế ả ể ặ ẽ
5- Nâng cao m c đ tr u tứ ộ ừ ượng (Elevate the level of abstraction)
6- T p trung theo dõi ch t lậ ấ ượng liên t c (Focus continuously on quality)ụ
IV.3 Vòng đ i c a ph n m m theo quy trình RUP ờ ủ ầ ề
Trong m t vòng đ i c a ph n m m, có 4 pha: Inception, Elaboration, Construction vàộ ờ ủ ầ ềTransition
Bi u đ trên cho bi t trình t các pha và lể ồ ế ự ượng tài nguyên s d ng cho m i pha ử ụ ỗ
• Inception: Đây là giai đo n chu n b , ti p xúc v i khách hàng đ n m b t ýạ ẩ ị ế ớ ể ắ ắ
tưởng và thu th p yêu c u, chu n b nhân l c, v t t k thu t.ậ ầ ẩ ị ự ậ ư ỹ ậ
• Elaboration: Sau khi đã thu th p đậ ược yêu c u thì đây là pha thi t k phác th oầ ế ế ả
s d ng các s đ UML đ mô hình hóa các yêu c u, các quy trình nghi p vử ụ ơ ồ ể ầ ệ ụ
Trang 27• Transition: Pha chuy n giao cho khách hàng.ể
M t bi u đ khác chi ti t h n cho ta th y các các giai đo n phát tri n độ ể ồ ế ơ ấ ạ ể ược ti n hànhếkhi nào và m c đ s d ng tài nguyên c a chúng trong các pha theo các nguyên t c chung ứ ộ ử ụ ủ ắ
Các giai đo n công vi c c a RUPạ ệ ủ bao g m:ồ
• Mô hình hóa nghi p v (business modeling): mô t c u trúc và quy trình nghi pệ ụ ả ấ ệ
v ụ
• Xác đ nh yêu c u (requirement): mô t nghi p v b ng phị ầ ả ệ ụ ằ ương pháp “tình
hu ng s d ng” (use case base method)ố ử ụ
• Phân tích và thi t k (analysis & design): mô t ki n trúc h th ng thông quaế ế ả ế ệ ốcác s đ phân tích thi t k ơ ồ ế ế
• L p trình (Implement): th c hi n các vi c xây d ng chậ ự ệ ệ ự ương trình b ng ngônằ
ng l p trình.ữ ậ
• Th nghi m (Test): mô t các tình hu ng và k ch b n th nghi m, ti n hành thử ệ ả ố ị ả ử ệ ế ử nghi m h th ng ph n m m.ệ ệ ố ầ ề
• Tri n khai (Deployment): đ a h th ng ph n m m vào s d ng.ể ư ệ ố ầ ề ử ụ
• Qu n tr c u hình và qu n tr thay đ i (Configuration & Change Management):ả ị ấ ả ị ổ
ki m soát các thay đ i và duy trì s h p nh t c a các thành ph n d án.ể ổ ự ợ ấ ủ ầ ự
• Qu n tr d án: qu n lý toàn b quá trình làm vi c c a d án.ả ị ự ả ộ ệ ủ ự
• Đ m b o môi trả ả ường: đ m b o các h t ng c n thi t đ có th phát tri n đả ả ạ ầ ầ ế ể ể ể ượ c
h th ng ệ ố
Trang 28IV.4 Các công c c a RUP ụ ủ
Đ áp d ng để ụ ược quy trình phát tri n h th ng ph n m m c a Rational thì yêu c uể ệ ố ầ ề ủ ầ không th thi u là h th ng các ph n m m công c h tr Hãng Rational đã xây d ng m t hể ế ệ ố ầ ề ụ ỗ ợ ự ộ ệ
th ng công c nh v y, mà tiêu bi u và thố ụ ư ậ ể ường dùng nh t là:ấ
• Ph n m m Rational Requisite Pro: cho phép phân tích các yêu c u, xây d ng kầ ề ầ ự ế
1 Xây d ng mô hình use-case cho h th ng qu n lý vi c mự ệ ố ả ệ ượn và tr sách t i thả ạ ư
vi n Hãy ti t text detail và xây d ng mô hình sequence system cho các use-case : “Mệ ế ự ượn sách”
và “Tr sách”.ả
2 Hãy mô t m t quy trình ng d ng UML trong phát tri n h th ng ph n m m.ả ộ ứ ụ ể ệ ố ầ ề
28
Trang 29Đ tài 2 Nh p môn Java ề ậ
I.1 Tìm hi u mã ngu n m t ch ể ồ ộ ươ ng trình đ n gi n ơ ả
1 /* Day la chuong trinh vi du*/
2 public class Vidu
Dòng 1: Dòng chú thích trong m t chộ ương trình Java Trong khi l p trình, ta c n chú ýậ ầ
vi t các dòng chú thích đ mô t v mã ngu n Đi u này r t quan tr ng khi chế ể ả ề ồ ề ấ ọ ương trình l nớ
và g p l i, các dòng chú thích giúp ta nhanh chóng nh n ra vai trò và ý nghĩa c a t ng đo nặ ỗ ậ ủ ừ ạ code
Các chú thích trong chương trình Java được đ t trong c p /* và */ khi c n chú thíchặ ặ ầnhi u dòng ho c đ sau c p // khi ch chú thích m t dòng Tuy nhiên các c p /* và */ hay đề ặ ể ặ ỉ ộ ặ ượ cdùng h n vì các đo n chú thích này s đơ ạ ẽ ượ ự ộc t đ ng đ a vào tài li u khi ta dùng công cư ệ ụ javadoc đ sinh tài li u cho mã ngu n.ể ệ ồ
Dòng 2: Khai báo m t l p có tên Vidu ộ ớ
Dòng 3 Cùng v i dòng 8 t o thành m t c p {} dùng đ đánh d u vi c m và đóng choớ ạ ộ ặ ể ấ ệ ở
m t kh i l nh, trong trộ ố ệ ường h p này, t t c các l nh n m trong c p này đ u thu c ph m viợ ấ ả ệ ằ ặ ề ộ ạ
c a l p Vidu.ủ ớ
Dòng 4: Khai báo hàm main Trong Java, m i chọ ương trình n u c n th c thi đ u b tế ầ ự ề ắ
đ u t hàm main Trình thông d ch s tìm hàm main làm đi m kh i phát cho m t ng d ngầ ừ ị ẽ ể ở ộ ứ ụ Java
Dòng 5 và 7 cũng là đánh d u m và đóng cho m t kh i l nh thu c hàm main.ấ ở ộ ố ệ ộ
Dòng 6: Câu l nh in ra màn hình dòng ch “Hello, World!” Các l nh trong Java luônệ ữ ệ
được k t thúc b i d u ;.ế ở ấ
I.2 Th c hi n ch ự ệ ươ ng trình Java.
Đ th c hi n chể ự ệ ương trình Java trong ví d trên, ta th c hi n theo các bụ ự ệ ước sau:
1 Dùng m t trình so n th o b t kỳ ho c m t IDE Java thì càng t t đ so n chộ ạ ả ấ ặ ộ ố ể ạ ươ ngtrình
2 Ghi file v a so n v i tên Vidu.java ừ ạ ớ Ở đây, tên file ph i b t bu c là Vidu gi ng nhả ắ ộ ố ư tên l p trong chớ ương trình Ph n m r ng cũng b t bu c là java đ trình biên d ch Java bi tầ ở ộ ắ ộ ể ị ế đây là file ch a mã ngu n Java Gi s ghi vào th m c c:\JavaSample ứ ồ ả ử ư ụ
3 G i c a s Command Line c a Windows: T Menu Start, ch n Run và gõ vào l nhọ ử ổ ủ ừ ọ ệ
Trang 30I.3 M t s chú ý khi l p trình Java ộ ố ậ
• Java phân bi t ch vi t hoa và vi t thệ ữ ế ế ường
• Hàm main ph i n m trong file g i th c hi nả ằ ọ ự ệ
• Tên khai báo ph i trùng v i tên t p “Vidu.java”ả ớ ệ
• Hàm main trong Java luôn luôn là static
• Trong Java t t c hàm và th t c đ u ph i đấ ả ủ ụ ề ả ược đ t trong m t l p c th ặ ộ ớ ụ ể
• Không được khai báo phương th c, hàm hay th t c bên ngoài l p.ứ ủ ụ ớ
• S d ng phử ụ ương th c (method) đ thay th cho hàm và th t c.ứ ể ế ủ ụ
I.4 C u trúc m t ch ấ ộ ươ ng trình Java
/*Khai bao goi*/
package <tên gói>;
/*Khai bao thu vien*/
import <tên gói th vi n>;ư ệ
/*Khai bao lop chua ham main*/
public class <tên l p>ớ
Trang 31Các thành ph n trong m t chầ ộ ương trình Java g m có:ồ
1 Khai báo gói:
Cú pháp: package <tên gói>
Khai báo này là không b t bu c v i m t chắ ộ ớ ộ ương trình Java Trong trường h p ngợ ứ
d ng g m nhi u class và c n t ch c các class vào các gói riêng thì ta c n khai báo gói Trongụ ồ ề ầ ổ ứ ầ
chương trình trên, class Vidu sau khi biên d ch s đị ẽ ược đ t trong gói my.java Tên c a gói cóặ ủ
ch a các d u “.” ch s bao g m, đây gói “java” n m trong gói “my” và class Vidu n m trongứ ấ ỉ ự ồ ở ằ ằgói “java” Khi m t chộ ương trình Java khác mu n truy c p t i l p Vidu, nó c n truy c p theoố ậ ớ ớ ầ ậ
đường d n gói “my.java.Vidu”.ẫ
Th c ra, ý nghĩa quan tr ng c a gói là vi c t ch c m t cách logic các l p vào trongự ọ ủ ệ ổ ứ ộ ớcác domain riêng đ ngể ười phát tri n ng d ng d dàng truy c p Trong hàng ngàn class để ứ ụ ễ ậ ượ cJava h tr trong các gói th vi n, chúng đ u đỗ ợ ư ệ ề ược nhóm l i theo ch c năng và m c đích sạ ứ ụ ử
d ng v i tên gói có tính ch t g i ý N u không làm nh v y, chúng ta s r t khó khăn đ tìmụ ớ ấ ợ ế ư ậ ẽ ấ ể
ra m t class đ s d ng.ộ ể ử ụ
2 Nh p th vi n.ậ ư ệ
Cú pháp: import <tên th vi n>ư ệ
N u có khai báo này, khi s d ng các class n m trong gói theo <tên th vi n> ta khôngế ử ụ ằ ư ệ
c n vi t đ y đ tên gói mà ch c n vi t tên class Java dùng ký t “*” đ ng ý vi c nh p t tầ ế ầ ủ ỉ ầ ế ừ ể ụ ệ ậ ấ
c các class trong <tên th vi n> Ví d : ả ư ệ ụ
import my.java.Vidu; // Nh p duy nh t class Vidu trong gói my.javaậ ấ
import my.java.*; // Nh p t t c các class có trong gói my.java, t t nhiên là bao g mậ ấ ả ấ ồ
c class Vidu ả
Sau đây là m t chộ ương trình ví d s d ng import:ụ ử ụ
import java.util.Date; //Khai báo th vi nư ệ
/*Chương trình in ra ngày tháng hi n hành*/ệ
public class Application {
public static void main(String[] args) {
Date date = new Date(); //t o bi n đ i tạ ế ố ượng thu c class Dateộ
System.out.println(“Hôm nay "+date);
4 Khai báo hàm main: Không ph i t t c các class trong Java đ u ch a hàm main Chả ấ ả ề ứ ỉ
có class được g i th c thi đ u tiên m i c n ch a hàm main ọ ự ầ ớ ầ ứ
5 Khai báo các l p khác: Thông thớ ường 1 file chương trình Java chúng ta ch khai báo 1ỉclass Tuy nhiên khi class đó quá ph c t p chúng ta có th tách ra thành các class khác.ứ ạ ể
Trong s 5 ph n trên, t t c các class đ u có ph n 3, các ph n còn l i có th có ho cố ầ ấ ả ề ầ ầ ạ ể ặ không tùy theo nhu c u.ầ
II.1 Các ki u d li u s nguyên ể ữ ệ ố
Java có 4 ki u s nguyên:ể ố
Trang 32int 4 bytes T –2,147,483,648 đ n 2,147,483, 647 ừ ế
short 2 bytes T –32,768 đ n 32,767ừ ế
long 8 bytes T –9,223,372,036,854,775,808ừ
đ n9,223,372,036,854,775,807ếbyte 1 byte T –128 đ n 127ừ ế
II.2 Các ki u s th c ể ố ự
Java có 2 ki u s th c d u ch m đ ng:ể ố ự ấ ấ ộ
float 4 bytes X p x ±3.40282347E+38F ấ ỉ
double 8 bytes X p x ±1.79769313486231570E+308 ấ ỉ
M t bi n ộ ế char s có m t giá tr là ẽ ộ ị m t ký tộ ự Unicode
II.4 Ki u logic (boolean) ể
Là ki u d li u ch có hai giá tr true và false dùng đ xác đ nh k t qu m t đi u ki n.ể ữ ệ ỉ ị ể ị ế ả ộ ề ệChú ý: ki u ể boolean không được th hi n là 0 và 1.ể ệ
II.5 Ki u chu i ể ỗ
Java xem chu i là m t đ i tỗ ộ ố ượng
Bi n đ i tế ố ượng chu i thỗ ường được khai báo t l p String n m trong góiừ ớ ằ
Trang 33III Khai báo bi n và h ng trong Java ế ằ
III.1 Quy t c đ t tên bi n ắ ặ ế
Khi khai báo các bi n trong chế ương trình Java, ta c n chú ý tuân th các đi m sau:ầ ủ ể
• Ch b t đ u b ng m t ký t (ch ), m t d u g ch dỉ ắ ầ ằ ộ ự ữ ộ ấ ạ ưới (_) hay m t d u dollardộ ấ($)
• Không có kho ng tr ng gi a tên.ả ố ữ
• Sau ký t đ u, có th dùng các ký t (ch ), ký t s , d u dollard, d u g chự ầ ể ự ữ ự ố ấ ấ ạ
dưới
• Không trùng v i các t khoá.ớ ừ
III.2 Khai báo bi n ế
Các bi n trong Java r i vào hai trế ơ ường h p:ợ
• Toán h c: Các bi n có ki u nguyên th y c a Java đ u thu c d ng này Sau khiọ ế ể ủ ủ ề ộ ạkhai báo, bi n đế ược c p phát m t vùng nh c đ nh tùy theo kích thấ ộ ớ ố ị ước c aủ
ki u d li u c a bi n đó.ể ữ ệ ủ ế
• Đ a ch : Các bi n đ i tị ỉ ế ố ượng đượ ư ở ạc l u d ng này Bi n ch l u giá tr đ a chế ỉ ư ị ị ỉ
đ u c a m t vùng nh đầ ủ ộ ớ ượ ấc c p phát cho đ i tố ượng
Ví d khai báo cho t ng ki u bi n toán h c:ụ ừ ể ế ọ
String strHello; //khai báo m t chu iộ ỗ
AudioClip music; // ví d l p c a AudioClipụ ớ ủ
boolean bQuit = true;
String strHello = “Hello everybody”;
đây c n chú ý r ng khi kh i t o giá tr cho các ki u s nên xác đ nh rõ ki u d li u
c a giá tr ủ ị
Trang 34M t bi n m ng độ ế ả ược khai báo theo hai cách:
• S d ng c p ngo c vuông đ t sau tên bi n.ử ụ ặ ặ ặ ế
• S d ng c p ngo c vuông đ t sau ki u d li u.ử ụ ặ ặ ặ ể ữ ệ
Ví d :ụ
int [] intArray; ho c int intArray[]; đ u cho ta m t m ng s nguyên có tên la intArray.ặ ề ộ ả ốThông thường ta dùng ki u khai báo th nh t đ có th khai báo nhi u bi n m ngể ứ ấ ể ể ề ế ả cùng ki u d li u:ể ữ ệ
int [] intArray1, intArray2, intArray3;
Đ nh v m ng ị ị ả
Sau khi khai báo, b n thân m ng ch a xác đ nh hay ch a đả ả ư ị ư ược đ nh v vì ch a đị ị ư ượ c
c p phát vùng nh Do đó, m ng c n đấ ớ ả ầ ượ ấc c p phát vùng nh trớ ước khi s d ng ử ụ
Dùng t khoá new đ đ nh v cho m t m ng trong vùng nh , ví d :ừ ể ị ị ộ ả ớ ụ
int IntArray[] = new int[100];//t o m ng 100ptạ ả
char [] charArray = {‘a’, ‘b’, ‘c’};
IntArray[] = new int[] {1, 2, 3, 4, 5};
Truy c p các ph n t c a m ngậ ầ ử ủ ả
Các ph n t trong m t m ng luôn đầ ử ộ ả ược đánh s b t đ u t s 0 Ki u d li u c a chố ắ ầ ừ ố ể ữ ệ ủ ỉ
s là ki u int Tuy nhiên n u dùng ki u char thì Java s t đ ng chuy n sang mã ASCII tố ể ế ể ẽ ự ộ ể ươ ng
ng Ví d b[‘a’] t ng ng v i b[97]
Ph n t đ u tiên là ph n t th 0, và ph n t cu i cùng c a m t m ng có n ph n t làầ ử ầ ầ ử ứ ầ ử ố ủ ộ ả ầ ử n-1 Các ph n t c a m ng đầ ử ủ ả ược truy c p m t cách tr c ti p b ng ch s c a nó.ậ ộ ự ế ằ ỉ ố ủ
Trang 35Ví d :ụ
int intList[] = new int[10]; //t o m ng 10ptạ ảintList[0] = 99; //Ph n t th 0 (đ u tiên) có giá tr là 99.ầ ử ứ ầ ịfor (sort i=1; i<10; i++)
Khai báo m ng 2 chi u: ả ề
<ki u ph n t >ể ầ ử [][] <tên m ng> = {<danh sách ph n t >};ả ầ ử
Ví d : int[][] b = {ụ {1,2},{3,4}};
Đây là khai báo và kh i t o giá tr cho m t m ng 2 chi u kích thở ạ ị ộ ạ ề ước 2 x 2 {1,2} là các
ph n t c a hàng 1; {3,4} là các ph n t trên hàng th 2.ầ ử ủ ầ ử ứ
Ho c ta có th khai báo rõ s hàng và s c t c a m ng:ặ ể ố ố ộ ủ ả
int b[][] = new int[ 3 ][ 4 ];
Th m chí ta có th khai báo m t m ng 3 chi u ho c h n.ậ ể ộ ả ề ặ ơ
int b[][][] = {{{1,2},{3,4}},{{5,6},{7,8}}};
Ta được b[0][0][0] =1; b[0][0][1]=2;b[1][1][1]=8;b[0][1][0]=3;
III.4 H ng s (literal) ằ ố
Là m t giá tr không đ i độ ị ổ ược s d ng trong chử ụ ương trình H ng s đằ ố ược bi u di nể ễ
nh chính nó ch không là m t giá tr c a bi n hay m t k t qu c a bi u th c Giá tr c aư ứ ộ ị ủ ế ộ ế ả ủ ể ứ ị ủ
h ng s không th b thay đ i.ằ ố ể ị ổ
Ví d : Pi = 3.1415.ụ
Tên c a h ng s đủ ằ ố ược đ t tên nh tên bi n Cách khai báo h ng cũng tặ ư ế ằ ương t nhự ư
bi n nh ng có dùng thêm t khóa final:ế ư ừ
<ph m vi> final <ki u d li u c a h ng> <tên h ng> = <giá tr > ạ ể ữ ệ ủ ằ ằ ị
Ví d : public final String mauda ="vang";ụ
Tương t nh h ng s nguyên, đ ch rõ h ng là float ta thêm vĩ ng “ f ” hay “F”,ự ư ằ ố ể ỉ ằ ữ
h ng là double ta thêm “d” hay “D”.ằ
H ng Boolean: ằ
M t h ng s ki u boolean có giá tr là ộ ằ ố ể ị true ho c ặ false Trong Java, các giá tr 0 và 1ịkhông được dùng thay th cho false và true nh trong C ho c C++.ế ư ặ
H ng ký t : ằ ự
Trang 36Là m t ký t đ n gi n hay m t chu i ESCAPE, h ng ký t độ ự ơ ả ộ ỗ ằ ự ược đ t trong hai d uặ ấ ngo c đ n ‘’ Các chu i ESCAPE:ặ ơ ỗ
M t h ng chu i ký t có th có 0 ký t (h ng chu i r ng) hay nhi u ký t ộ ằ ỗ ự ể ự ằ ỗ ỗ ề ự
Ví d : “A String”, “” //chu i r ng, “dong 1 \t\n dong 2”.ụ ỗ ỗ
III.5 Ph m vi ho t đ ng c a h ng và bi n: ạ ạ ộ ủ ằ ế
Kh i l nh Block 1 ch a 2 kh i l nh con Block 2, Block 3.ố ệ ứ ố ệ
Bi n hay h ng s ch có ý nghĩa trong ph m vi kh i l nh mà nó đế ằ ẽ ỉ ạ ố ệ ược khai báo
{
Block 3
}
Trang 37x += c ng k t h p phép gánộ ế ợ x+=y tương đương x=x+y
-= tr k t h p phép gánừ ế ợ x-=y tương đương x=x-y
*= nhân k t h p phép gánế ợ x*=y tương đương x=x*y
/= chia k t h p phép gánế ợ x/=y tương đương x=x/y
& phép và trên bit
! Toán t logic NOTử
&& Toán t logic ANDử
• Bi u th c logic ch cho ra k t qu là các giá tr ể ứ ỉ ế ả ị true hay false.
Khi s d ng câu l nh gán k t qu c a m t bi u th c cho m t bi n, ta c n chú ý t iử ụ ệ ế ả ủ ộ ể ứ ộ ế ầ ớ
v n đ đ ng nh t ki u d li u gi a hai v đ tránh m t thông tin Ví d :ấ ề ồ ấ ể ữ ệ ữ ế ể ấ ụ
Double delta = 0.0d; //khai báo m t bi n s th c có tên deltaộ ế ố ự
delta = 1/ 100; // Gán cho delta k t qu c a phép chia 1 cho 100.ế ả ủ
Trong tình hu ng này, ta không thu đố ược delta = 0.01 nh mong đ i mà là delta =0 Lýư ợ
do là các s 1 và 100 đ u đố ề ược hi u là các s nguyên và k t qu c a phép chia để ố ế ả ủ ượ ự ộ c t đ nglàm tròn thành m t giá tr nguyên trộ ị ước khi gán cho delta Đ kh c ph c tình tr ng này, ta c nể ắ ụ ạ ầ xác đ nh rõ các s 1 và 100 là các s double.ị ố ố
delta = 1d/100d;
Trang 38public class dkIfThen {
public static void main(String[] args) {
Ví d :ụ
public class dkIfThen {
public static void main(String[] args) {
Trang 39switch <bi u th c>{ể ứ
case <giá tr 1>: <kh i l nh 1>; break;ị ố ệcase <giá tr 2>: <kh i l nh 2>; break;ị ố ệ
case <giá tr n>: <kh i l nh n>; break;ị ố ệdefault: <kh i l nh default>; break;ố ệ}
M t s chú ý khi s d ng l nh switch-case:ộ ố ử ụ ệ
Các giá tr : <giá tr 1>, <giá tr 2>,…<giá tr n> ph i là các h ng s ị ị ị ị ả ằ ố
N u không s d ng l nh break m i khi k t thúc các kh i l nh thì sau khi th c hi nế ử ụ ệ ỗ ế ố ệ ự ệ xong kh i l nh, các l nh ti p theo s đố ệ ệ ế ẽ ược th c hi n.ự ệ
B t đ u v i giá tr <kh i t o> c a bi n đ m, <kh i l nh> đắ ầ ớ ị ở ạ ủ ế ế ố ệ ược th c hi n Sau m iự ệ ỗ
l n th c hi n xong <kh i l nh>, bi n đ m thay đ i giá tr m t lầ ự ệ ố ệ ế ế ổ ị ộ ượng b ng <bằ ước nh y> vàả
<bi u th c ki m tra> để ứ ể ược tính l i N u bi u th c ki m tra là true thì l i th c hi n kh i l nh,ạ ế ể ứ ể ạ ự ệ ố ệcòn n u là false, vòng l p ch m d t.ế ặ ấ ứ
Trang 40public class vdFor {
public static void main(String[] args) {
[các câu l nh; ]ệ
Kh i l nh ố ệ được th c hi n khi <bt boolean> còn có giá tr true ự ệ ị
Chú ý: trong kh i l nh ph i có câu l nh có tác d ng nh hố ệ ả ệ ụ ả ưởng t i k t qu <btớ ế ảboolean> đ vòng l p có th d ng.ể ặ ể ừ
L u ư đồ ự th c hi n:ệ
40
Bt boolean
Các câu l nhệ
Câu l nh ti p ệ ếtheo
false
true