Giáo án - Bài giảng: BÀI GIẢNG: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

260 473 1
Giáo án - Bài giảng: BÀI GIẢNG: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỂN THÔNG CƠ SỞ TẠI TP. HỒ CHÍ MINH Bài giả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ập trì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ập trì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ập trì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ập trình hướ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ề đối tượng và phương pháp lập trình hướng đối tượng bằng ngôn ngữ lập trình Java. Các đặc trưng quan trọng của lập trình hướng đối tượ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ập trì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ập trình Hướ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ập trình hướng đối tượng 1 1.1 Phương pháp tiếp cận của lập trình truyền thống 1 1.1.1 Lập trình tuyến tính 1 1.1.2 Lập trình cấu trúc 1 1.2 Phương pháp tiếp cận lập trình hướng đối tượng 3 1.3 Các đặc trưng của lập trình hướng đối tượ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ập trình hướng đối tượng 6 1.5.1 Lập trình hướng thành phần (Component-oriented programming- COP) 6  1.5.2 Lập trình hướng tác nhân 7 1.5.3 Lập trình hướng khía cạnh 7 Chương 2. Cơ bản ngôn ngữ lập trì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ập trình 31 2.7 Case Study 33 Chương 3. Đối tượng và lớp 38 3.1 Phân rã phần mềm theo cách tiếp cận hướng đối tượng 38 3.2 Khái niệm đối tượ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 đối tượng 45 Chương 4. Tương tác giữa các đối tượng 50 4.1 Cộng tác giữa các đối tượ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 đối tượng 57 Chương 5. Quan hệ giữa các đối tượ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 đối tượng 95 6.1 Khái niệm tập đối tượng 95 6.2 Ba kiểu tập đối tượng cơ bản 95 6.3 Mảng 97 6.4 Các loại tập đối tượ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ập trình giao diện 166 9.1 Giao diện với các đối tượng cơ bản 166 9.1.1 Các đối tượ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 đối tượ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 đối tượ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 đối tượng component 201 9.5.2 Mở rộng các đối tượ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 đối tượ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 đối tượ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 Đối tượng Student mồ côi. 47 Hình 4.1 Các đối tượ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 đối tượ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 đối tượ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 đối tượng vào các tầng 205 Hình 9.21 Kết quả demo JMenu 210 [...]... về lập trình hướng đối tượng Chương 1 Tổng quan về lập trình hướng đối tượ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 đối tượ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ập trình truyền thống  Giới thiệu cách tiếp cận của lập trình hướng đối tượng  Sự trừu tượng hóa là cơ sở của phát triển phần mềm hướng đối tượng  Nêu các đặc trưng của lập. .. cơ bản của lập trình hướng đối tượng nhưng vẫn không phải là ngôn ngữ lập trình thuần hướng đối tượng Java thật sự là một ngôn ngữ lập trình thuần hướng đối tượng 1.3 Các đặc trưng của lập trình hướng đối tượ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 đối tượng Việc truy nhập đến dữ liệu phải thông qua các phương thức của đối tượng lớp Trong một đối tượng, dữ... các đặc trưng của lập trình hướng đối tượng  Xu hướng hiện nay của lập trình hướng đối tượng 1.1 Phương pháp tiếp cận của lập trình truyền thống Lập trình truyền thống đã trải qua hai giai đoạn:  Giai đoạn sơ khai, khi khái niệm lập trình mới ra đời, là lập trình tuyến tính  Giai đoạn tiếp theo, là lập trình hướng cấu trúc 1.1.1 Lập trình tuyến tính Đặc trưng cơ bản của lập trình tuyến tính là tư... nhiều công sức lập trình Trong xu hướng lập trình hướng thành phần, một số phương pháp lập trình khác đã nảy sinh và đang phát triển mạnh mẽ:  Lập trình hướng tác nhân (Agent-Oriented Programming)  Lập trình hướng khía cạnh (Aspect-Oriented Programming-AOP) 1.5.2 Lập trình hướng tác nhân Lập trình hướng agent có thể xem là một mức trừu tượng cao hơn của lập trình hướng thành phần Trong đó, các agent... - 7 Chương 1: Tổng quan về lập trình hướng đối tượng  Các phương pháp tiếp cận truyền thống: lập trình tuyến tính và lập trình cấu trúc  Phương pháp tiếp cận hướng đối tượ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ập trình hướng đối tượng trên nền tảng là trừu tượng hoá là cơ sở lập trình hiện đại  Hiện nay, lập trình hướng thành... xác định trong chương trình chính Các ngôn ngữ lập trì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ập trình cấu trúc do kế thừa từ C, còn có đặc trưng của lập trình hướng đối tượng Cho nên C++ còn được gọi là ngôn ngữ lập trình nửa cấu trúc, nửa hướng đối tượng Đặc trưng Đặc trưng cơ bản nhất của lập trì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ập trình cấu trúc Trong lập trình hướ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ập trình hướng đối tượ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ập trì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ập trình hướng đối tượng, tư duy lập trình hướ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ập tươ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ập trình hướng thành

Ngày đăng: 16/04/2014, 15:50

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan