Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 260 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
260
Dung lượng
1,84 MB
Nội dung
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỂN THÔNG CƠ SỞ TẠI TP. HỒ CHÍ MINH Bàigiảng: L L Ậ Ậ P P T T R R Ì Ì N N H H H H Ư Ư Ớ Ớ N N G G Đ Đ Ố Ố I I T T Ư Ư Ợ Ợ N N G G Tài liệu dùng cho hệ Đại học ngành Công Nghệ Thông Tin Đã được Hội đồng khoa học khoa Thông qua ngày 18/09/2010 Biên soạn :Ths. Bùi Công Giao LƯU HÀNH NỘI BỘ Tp. Hồ Chí Minh – Năm 2010 Lời nói đầu Lậptrình là một kỹ năng rất cần thiết cho sinh viên ngành Công nghệ thông tin. Sau khi đã học qua lậptrình căn bản với ngôn ngữ C, sinh viên sẽ được tiếp cận với một phương pháp lậptrình theo tư duy mới, gần với thế giới thực hơn, phù hợp với các dự án phần mềm lớn, đó là lậptrìnhhướngđối tượng. Nội dung môn học này bao gồm những khái niệm, mô hình về đốitượng và phương pháp lậptrìnhhướngđốitượng bằng ngôn ngữ lậptrình Java. Các đặc trưng quan trọng của lậptrìnhhướngđốitượng như đóng gói, kế thừa, đa hình…và các quan hệ lớp; xử lý vào/ra, xử lý ngoại lệ, lậptrình luồng xử lý và giao diện sẽ được thể hiện trong Java. Bài giảng này được biên soạn chủ yếu dựa vào hai quyển sách : Beginning Java Objects: From Concepts to Code, Second Edition, Apress, 2005 của Jacquie Barker và Bài giả ng LậptrìnhHướngđối tượng, Học viện Công nghệ Bưu chính Viễn thông của Trần Đình Quế và Nguyễn Mạnh Hùng, Người soạn chân thành cảm ơn các tác giả trên. Mục lục Chương 1. Tổng quan về lậptrìnhhướngđốitượng 1 1.1 Phương pháp tiếp cận của lậptrình truyền thống 1 1.1.1 Lậptrình tuyến tính 1 1.1.2 Lậptrình cấu trúc 1 1.2 Phương pháp tiếp cận lậptrìnhhướngđốitượng 3 1.3 Các đặc trưng của lậptrìnhhướngđốitượng 3 1.3.1 Tính đóng gói dữ liệu 3 1.3.2 Tính kế thừa 4 1.3.3 Tính đa hình 4 1.4 Trừu tượng hóa 4 1.4.1 Tổ chức trừu tượng theo sự phân cấp lớp 4 1.4.2 Trừu tượng hóa – cơ sở của phát triển phần mềm 5 1.5 Xu hướng phát triển của lậptrìnhhướngđốitượng 6 1.5.1 Lậptrìnhhướng thành phần (Component-oriented programming- COP) 6 1.5.2 Lậptrìnhhướng tác nhân 7 1.5.3 Lậptrìnhhướng khía cạnh 7 Chương 2. Cơ bản ngôn ngữ lậptrình Java 9 2.1 Đặc trưng của ngôn ngữ Java 9 2.2 Kiến trúc chương trình và cơ chế thực thi của Java 14 2.3 Các kiểu dữ liệu cơ bản và biến 18 2.3.1 Kiểu dữ liệu cơ bản 18 2.3.2 Biến 19 2.3.2.1 Khai báo biến 19 2.3.2.2 Phạm vi hoạt động của biến 20 2.3.2.3 Khởi tạo biến 20 2.3.2.4 Ép kiểu 20 2.4 Các toán tử và biểu thức 21 2.4.1 Các toán tử 21 2.4.2 Biểu thức 25 2.5 Các cấu trúc lệnh 26 2.5.1 Lệnh if-else 26 2.5.2 Lệnh switch-case 27 2.5.3 Vòng lặp while 28 2.5.4 Vòng lặp do-while 29 2.5.5 Vòng lặp for 29 2.6 Phong cách lậptrình 31 2.7 Case Study 33 Chương 3. Đốitượng và lớp 38 3.1 Phân rã phần mềm theo cách tiếp cận hướngđốitượng 38 3.2 Khái niệm đốitượng 39 3.3 Khái niệm lớp 42 3.4 Khái niệm đóng gói 43 3.5 Biến tham chiếu 44 3.6 Khởi tạo đốitượng 45 Chương 4. Tương tác giữa các đốitượng 50 4.1 Cộng tác giữa các đốitượng 50 4.2 Thuộc tính 51 4.3 Phương thức 52 4.3.1 Khai báo phương thức 52 4.3.2 Biến this 53 4.3.3 Gọi phương thức 53 4.3.4 Nạp chồng phương thức 54 4.3.5 Phương thức xây dựng 54 4.3.6 Che dấu thông tin 56 4.4 Truyền thông điệp giữa các đốitượng 57 Chương 5. Quan hệ giữa các đốitượng 61 5.1 Kết hợp và liên kết 61 5.2 Kế thừa 63 5.3 Đa hình 64 5.4 Lớp trừu tượng 71 5.5 Giao tiếp 74 5.6 Tính chất tĩnh 76 5.7 Kiểu liệt kê 79 5.8 Case Study 83 Chương 6. Tập đốitượng 95 6.1 Khái niệm tập đốitượng 95 6.2 Ba kiểu tập đốitượng cơ bản 95 6.3 Mảng 97 6.4 Các loại tập đốitượng thường gặp 100 6.4.1 LinkedList 100 6.4.2 HashMap 102 6.4.3 TreeMap 104 6.4.4 HashSet 106 6.4.5 TreeSet 107 6.5 Tạo kiểu tập hợp 108 6.6 Phương thức trả về kiểu tập hợp 110 Chương 7. Xử lý ngoại lệ 113 7.1 Giới thiệu ngoại lệ 113 7.2 Cơ chế xử lý ngoại lệ 115 7.2.1 Khối try 115 7.2.2 Khối catch 115 7.2.3 Khối finally 119 7.3 Bắt các ngoại lệ 121 7.4 Phân cấp lớp ngoại lệ 126 7.5 Các điểm cần lưu ý thêm về ngoại lệ 129 7.5.1 Bắt ngoại lệ tổng quát 129 7.5.2 Trình biên dịch Java yêu cầu phải có xử lý ngoại lệ 129 7.5.3 Tận dụng xử lý ngoại lệ để làm rõ lỗi phát sinh 131 7.5.4 try/catch lồng nhau 131 7.5.5 Kiểu ngoại lệ do người dùng định nghĩa 132 7.5.6 Ném nhiều kiểu ngoại lệ 134 7.6 Case Study 134 Chương 8. Xử lý vào/ra 137 8.1 Luồng vào/ra 137 8.1.1 Giới thiệu luồng vào/ra 137 8.1.2 Luồng byte 138 8.1.3 Luồng ký tự 140 8.1.4 Luồng bộ đệm 141 8.2 Scanning và Formatting 143 8.2.1 Scanning 143 8.2.2 Formatting 146 8.3 Vào ra từ chế độ dòng lệnh 148 8.3.1 Vào ra qua luồng chuẩn 148 8.3.2 Vào ra qua Console 154 8.4 Làm việc với CSDL 157 8.4.1 JDBC 157 8.4.1.1 Giới thiệu JDBC 157 8.4.1.2 Kiến trúc JDBC 157 8.4.2 MySQL và Java 158 8.4.2.1 Cài đặt Connector/J - JDBC Driver của MySQL 158 8.4.2.2 Kiểm tra Connector/J 159 8.4.2.3 Thực hiện các câu truy vấn 160 Chương 9. Lậptrìnhgiao diện 166 9.1 Giao diện với các đốitượng cơ bản 166 9.1.1 Các đốitượng container cơ bản 166 9.1.1.1 Frame 166 9.1.1.2 Panel 167 9.1.1.3 Dialog 168 9.1.2 Các đốitượng component cơ bản 169 9.1.2.1 Label 169 9.1.2.2 TextField và TextArea 170 9.1.2.3 Button 172 9.1.3 Xử lý sự kiện 173 9.2 Giao diện với các đốitượng Multimedia 180 9.2.1 Ô đánh dấu và nút chọn 180 9.2.2 Lựa chọn 182 9.2.3 Danh sách 184 9.3 Các kỹ thuật trình bày 186 9.3.1 Trình bày Flow Layout 186 9.3.2 Trình bày Grid Layout 187 9.3.3 Trình bày Border Layout 189 9.3.4 Trình bày GridBag Layout 190 9.3.5 Trình bày Null Layout 192 9.4 Applet 193 9.4.1 Cấu trúc của một Applet 194 9.4.2 Sử dụng Applet 195 9.4.3 Truyền tham số cho Applet 199 9.5 SWING 200 9.5.1 Mở rộng các đốitượng component 201 9.5.2 Mở rộng các đốitượng container 202 9.6 Case Study 210 Chương 10. Luồng xử lý 219 10.1 Giới thiệu luồng 219 10.2 Tạo và quản lý luồng 220 10.2.1 Tạo luồng 220 10.2.2 Phương thức của lớp luồng 223 10.2.3 Quyền ưu tiên của luồng 225 10.2.4 Luồng ngầm 226 10.2.5 Đa luồng với Applet 227 10.3 Nhóm luồng 229 10.3.1 Giới thiệu nhóm luồng 229 10.3.2 Sự đồng bộ luồng 233 10.3.3 Mã đồng bộ 233 10.3.4 Sử dụng khối đồng bộ 235 10.3.5 Kỹ thuật đợi – thông báo 237 10.3.6 Sự bế tắt 240 10.4 Thu rác 242 Tham khảo 247 Danh sách hình Hình 1.1 Sơ đồ phân cấp trừu tượng của các đốitượng tự nhiên. 5 Hình 2.1 Cách biên dịch truyền thống 10 Hình 2.2 Dịch chương trình Java 11 Hình 2.3 Máy ảo Java thực hiện mã bytecode độc lập môi trường hoạt động 12 Hình 2.4 Cùng mã bytecode có thể được hiểu bởi hai máy ảo 13 Hình 2.5 Phân tích một chương trình Java đơn giản 14 Hình 3.1 Phân rã ứng dụng từ trên xuống. 38 Hình 3.2 Gắn ứng dụng từ dưới lên. 39 Hình 3.3 Sử dụng một biến tham chiếu để chỉ tới đốitượng trong bộ nhớ. 45 Hình 3.4 Hai biến tham chiếu tới cùng một đối tượng. 46 Hình 3.5 Chuyển y tham chiếu tới Student thứ hai. 46 Hình 3.6 Chuyển x tham chiếu tới Student thứ hai. 47 Hình 3.7 Đốitượng Student mồ côi. 47 Hình 4.1 Các đốitượng trong hệ thống phải cộng tác với nhau để hoàn tất sứ mệnh SRS 51 Hình 4.2 Thông điệp được truyền qua lại giữa các đốitượng Course và Student 58 Hình 4.3 Người yêu cầu chỉ thấy chi tiết bên ngoài của việc trao đổi thông điệp. 58 Hình 5.1 Kết hợp ba ngôi 62 Hình 5.2 Một thể hiện tương đương bằng ba kết hợp hai ngôi 62 Hình 6.1 Hầu hết tập hợp tự động co lại khi một phần tử bị lấy ra 96 Hình 6.2 Dùng khoá để truy cập trực tiếp đốitượng trong tập hợp từ điển 96 Hình 6.3 Các tập hợp không phải là bộ cho phép nhiều tham chiếu tới cùng một đối tượng. 97 Hình 7.1 Khi máy ảo Java ném một ngoại lệ, như phát ra một pháo để thông báo cho ứng dụng một vấn đề phát sinh. 114 Hình 7.2 Nếu không có ngoại lệ được ném ra trong khối try, tất cả các khối catch được bỏ qua. 117 Hình 7.3 Nếu một ngoại lệ phát sinh, khồi catch đầu tiên chặn bắt, nếu có, được thực thi, và phần còn lại được bỏ qua. 118 Hình 7.4 Máy ảo Java theo dõi việc thứ tự các phương thức được gọi bằng cách tạo chồng gọi (call stack). 123 Hình 7.5 Khi một phương thức chấm dứt, nó bị lấy ra khỏi chồng. 123 Hình 7.6 Khối lệnh try/catch trong trong phương thức methodY nhận biết ngoại lệ trong mức hiện hành của chồng gọi. 123 Hình 7.7 Ngoại lệ thoát khỏi p.methodY() và chuyển xuống s.methodX() xử lý 124 Hình 7.8 NullPointerException thông qua chồng gọi được chuyển tới phương thức main. 125 Hình 7.9 Nếu ứng dụng bỏ qua xử lý ngoại lệ, máy ảo Java chấm dứt ứng dụng và báo cáo ngoại lệ tới cửa cửa sổ dòng lệnh cho người sử dụng để quan sát. 126 Hình 7.10 Lớp java.lang.Exception có nhiều lớp con 127 Hình 7.11 Cây thừa kế của kiểu ngoại lệ java.sql.DataTruncation 127 Hình 7.12 Kết quả demo của NumberOfDigits.java 135 Hình 8.1 Đọc dữ liệu vào chương trình. 137 Hình 8.2 Viết dữ liệu từ chương trình. 138 Hình 8.3 Luồng byte vào ra đơn giản 139 Hình 8.4 Các thành phần đặc tả qui cách. 148 Hình 9.1 Kết quả demo Frame 167 Hình 9.2 Kết quả demo Panel 168 Hình 9.3 Kết quả demo Dialog 169 Hình 9.4 Kết quả demo Label 170 Hình 9.5 Kết quả demo Text 172 Hình 9.6 Kết quả demo Button 173 Hình 9.7 Kết quả demo sự kiện 179 Hình 9.8 Kết quả demo Radio Button 182 Hình 9.9 Kết quả demo Choice Button 184 Hình 9.10 Kết quả demo Listbox 186 Hình 9.11 Kết quả demo Flow layout 187 Hình 9.12 Kết quả demo Grid layout 188 Hình 9.13 Kết quả demo Border layout 190 Hình 9.14 Kết quả demo Gridbag layout 192 Hình 9.15 Kết quả demo Null layout 193 Hình 9.16 Kết quả demo Applet 195 Hình 9.17 Kết quả demo Applet bảng tính 198 Hình 9.18 Kết quả demo Applet có tham số 200 Hình 9.19 Kết quả demo JButton 202 Hình 9.20 Kết quả demo gắn các đốitượng vào các tầng 205 Hình 9.21 Kết quả demo JMenu 210 [...]... về lậptrìnhhướngđốitượng Chương 1 Tổng quan về lập trìnhhướngđốitượng Nội dung chương này nhằm giới thiệu một cách tổng quan về cách tiếp cận hướngđốitượng Nội dung trình bày bao gồm: Giới thiệu về cách tiếp cận của lậptrình truyền thống Giới thiệu cách tiếp cận của lập trìnhhướngđốitượng Sự trừu tượng hóa là cơ sở của phát triển phần mềm hướngđốitượng Nêu các đặc trưng của lập. .. cơ bản của lập trìnhhướngđốitượng nhưng vẫn không phải là ngôn ngữ lậptrình thuần hướngđốitượng Java thật sự là một ngôn ngữ lậptrình thuần hướngđốitượng 1.3 Các đặc trưng của lập trìnhhướngđốitượng 1.3.1 Tính đóng gói dữ liệu Dữ liệu luôn được tổ chức thành các thuộc tính của lớp đốitượng Việc truy nhập đến dữ liệu phải thông qua các phương thức của đốitượng lớp Trong một đối tượng, dữ... các đặc trưng của lập trìnhhướngđốitượng Xu hướng hiện nay của lậptrìnhhướngđốitượng 1.1 Phương pháp tiếp cận của lậptrình truyền thống Lậptrình truyền thống đã trải qua hai giai đoạn: Giai đoạn sơ khai, khi khái niệm lậptrình mới ra đời, là lậptrình tuyến tính Giai đoạn tiếp theo, là lậptrìnhhướng cấu trúc 1.1.1 Lậptrình tuyến tính Đặc trưng cơ bản của lậptrình tuyến tính là tư... nhiều công sức lậptrình Trong xu hướnglậptrìnhhướng thành phần, một số phương pháp lậptrình khác đã nảy sinh và đang phát triển mạnh mẽ: Lậptrìnhhướng tác nhân (Agent-Oriented Programming) Lậptrìnhhướng khía cạnh (Aspect-Oriented Programming-AOP) 1.5.2 Lậptrìnhhướng tác nhân Lậptrìnhhướng agent có thể xem là một mức trừu tượng cao hơn của lậptrìnhhướng thành phần Trong đó, các agent... - 7 Chương 1: Tổng quan về lậptrìnhhướngđốitượng Các phương pháp tiếp cận truyền thống: lậptrình tuyến tính và lậptrình cấu trúc Phương pháp tiếp cận hướngđốitượng với các đặc trưng cơ bản: đóng gói dữ liệu, tính đa hình và sử dụng lại mã nguồn Lậptrìnhhướngđốitượng trên nền tảng là trừu tượng hoá là cơ sở lậptrình hiện đại Hiện nay, lậptrìnhhướng thành... xác định trong chương trình chính Các ngôn ngữ lậptrình cấu trúc phổ biến là Pascal, C và C++ Riêng C++ ngoài việc có đặc trưng của lậptrình cấu trúc do kế thừa từ C, còn có đặc trưng của lậptrìnhhướngđốitượng Cho nên C++ còn được gọi là ngôn ngữ lậptrình nửa cấu trúc, nửa hướngđốitượng Đặc trưng Đặc trưng cơ bản nhất của lậptrình cấu trúc thể hiện ở mối quan hệ: Chương trình = CTDL + Giải... tuần tự từ đầu đến cuối chương trình con 1.1.2 Lậptrình cấu trúc Trong lậptrìnhhướng cấu trúc, chương trình chính được chia nhỏ thành các chương trình con và mỗi chương trình con thực hiện một công việc xác định Chương trình Biên soạn : Bùi Công Giao- 1 Chương 1: Tổng quan về lậptrìnhhướngđốitượng chính sẽ gọi đến chương trình con theo một giải thuật,... Để gán chuỗi rỗng String s = ""; Để gán giá trị null (chưa được gán giá trị lần nào) String s = null; 2.4 Các toán tử và biểu thức 2.4.1 Các toán tử Java cung cấp các dạng toán tử sau: Toán tử số học Toán tử bit Toán tử quan hệ Toán tử logic Toán tử điều kiện Biên soạn : Bùi Công Giao- 21 Chương 2: Cơ bản ngôn ngữ lậptrình Java Toán tử gán Toán tử... toán hạng bên phải và gán giá trị trả về vào toán hạng bên trái Ví dụ c += a tương đương c = c + a -= Trừ và gán giá trị Trừ các giá trị của toán hạng bên trái vào toán toán hạng bên phải và gán giá trị trả về vào toán hạng bên trái Ví dụ c -= a tương đương với c=c-a *= Nhân và gán Nhân các giá trị của toán hạng bên trái với toán toán hạng bên phải và gán giá trị trả về vào toán hạng bên trái Ví dụ... programming-COP) Xuất phát từ lậptrìnhhướngđối tượng, tư duy lậptrìnhhướng thành phần theo ý tưởng: Giải quyết bài toán bằng cách xây dựng một tập các thành phần (component) có tính độc lậptươngđối với nhau Mỗi thành phần đảm nhiệm một phần công việc nhất định Sau đó, người ta ghép các thành phần với nhau để thu được một phần mềm thoả mãn một tập các yêu cầu xác định Với lậptrìnhhướng thành