Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 291 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
291
Dung lượng
13,06 MB
Nội dung
TỦ SÁCH KMOA HỌC 1( M S: 86-KHTN-2013 n ĐHOGHN v! ĐẠI HỌC QUỐC GIA HẢ NỘI TRẦN THỊ MINH CHÂU - NGUYỄN v iệ t h GIÁO TRÌNH LẬP TRÌNH HƯỚNG ĐỒI TƯỢNG VỚIIAVA ' ■ TT TT-TV * ĐHQGHN TR-C 2013 H MỌI NHÀ XUẤT BẢN ĐẠI HỌC QUỐC GIA HÀ NỘI Trần Thị Minh Châu - Nguyễn Việt Hà í ị i o t r ì n h lập TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI JAVA NHẢ XUẤT BẢN ĐẠI HỌC Quốc GIA HÀ NỘI MỤC LUC ■ • Giới thiệu Chương MỞ ĐẦU 1.1 Khái niệm 18 1.2 Đối tượng lớp 18 1.3 Các nguyên tắc trụ c ộ t 21 Chương NGƠN NGỮ LẬP TRÌNH JAVA 2.1 Đặc tính java 27 2.1.1 Máy ảo Java - Java Virtual Machine 28 2.1.2 Các tảng java 31 2.1.3 Mơi trường lập trình Java 32 2.1.4 Cấu trúc mả nguồn Java .33 2.1.5 Chương trình Java 33 2.2 Biến 34 23 Các phép 2.3.1 2.3.2 2.3.3 2.3.4 2.4 Các cấu trúc điềukhiển 41 2.4.1 Các cấu trúc rẽ nhánh 41 2.4.2 Các cấu trúc lặp 47 2.4.3 Biểu thức điều kiện cấu trúc điều khiển 55 toán 37 Phép gán .38 Các phép toán số học 38 Các phép toán khác 39 Độ ƯU tiên phép to n 41 GIÁO TRÌNH LẬP TRÌNH HƯỚNG Đ ố l TƯỢNG VỚI ỊẠVA Chương LỚP VÀ ĐỐI TƯỢNG 3.1 Tạo sử dụng đối tượng 02 3.2 TƯơng tác gi ửa đối tượng 05 Chương BIẾN VÀ CÁC KIỂU DỮ LIỆU 4.1 Biến kiểu dử liệu b ả n 72 4.2 Tham chiếu đối tượng đối tượng 74 4.3 Phép gán 78 4.4 Các phép so sánh 4.5 Mảng 7() Chương HÀNH VI CỦA ĐỐI TƯỢNG 5.1 Phương thức trạng thái đối tượng 87 5.2 Truyền tham số giá trị trả v ề 89 5.3 Cơ chế truyền giá trị 92 5.4 Đóng gói phương thức truy nhập 93 5.5 Khai báo khới tạo biến thực th ế 98 5.6 Biến thực thể biến địa phương 100 Chương s DỤNG THƯ VĨỆN JAVA 6.1 ArrayList 105 6.2 Sử dụng Java a p i 107 6.3 Một số lớp thông dụng API 110 6.4 6.3.1 Math 110 6.3.2 Các lớp bọc kiểu dử liệu 110 6.3.3 Các lớp biểu diễn xâu kí tự 112 Trò chơi bắn t u 114 78 Mục lục _ Churơng THỪA KẾ VÀ ĐA HÌNH 7.1 Quan hệ thừa k ế 127 7.2 rhiết kế thừa kế 129 7.3 Cài đè - phương thức gọi? .133 7.4 Các quan hệ IS-A HAS-A 134 7.5 Khi nên dùng quan hệ thừa kế? 136 7.6 Lợi ích quan hệ thừa kế .137 7.7 Đa hình 139 7.8 Gọi phiên phương thức lớp c h a 142 7.9 Các quy tác cho việc cài đ è 143 7.10 Chồng phương thức 145 7.11 Các mức truy n h ập .146 Chương LỚP TRỪU TƯỢNG VÀ INTERFACE 8.1 Một số lớp không nên tạo thực thể 153 8.2 Lớp trừu tượng lớp cụ thể 156 8.3 Phương thức trừu tượng 157 8.4 Ví dụ đa hình 158 8.5 Lớp Object 161 8.6 Đổi kiểu - đối tượng hành VI .163 8.7 Đa thừa kế vấn đề hình thoi .167 8.8 Interface 170 Chương VÒISC ĐỜI CỦA ĐỐI TƯỢNG 9.1 Bộ nhớ stack nhớ heap 177 9.2 Khởi tạo đối tượng 180 9.3 Hàm khởi tạo vấn đề thừak ế .185 GIÁO TRÌNH LẬP TRÌNH HƯỚNG Đ ố l TƯỢNG VỚI JAVA G 9.3.1 Gọi hàm khới tạo lớp cha 136 9.3.2 Truyền đối số cho hàm khởi tạo lớp cha I 9.4 Hàm khởi tạo chồng 9.5 Tạo đối tượng 191 9.6 Cuộc đời đối tượng 1% Chương 10 THÀNH VIÊN LỚP VÀ THÀNH VIÊN THỰC THE 10.1 Biến lớ p 201 10.2 Phương thức lớp 202 10.3 Giới hạn phương thức lớ p 205 10.4 Khởi tạo biến lớp 20? 10.5 Mẩu thiết kế singleton 20a 10.6 Thành viên bất biến - final -09 Chương 11 NGOẠI LỆ 11.1 11.2 Ngoại lệ gì? ¿14 11.1.1 Tinh cố 214 11.1.2 Xử lý ngoại l ệ 217 11.1.3 Ngoại lệ đối tượng .218 Khối try/catch 220 11.2.1 Bắt nhiều ngoại l ệ 220 11.2.2 Hoạt động khối try/catch 221 11.2.3 Khối finally - nhửng việc dùthế củng phái l m 223 11.2.4 Thứ tự cho khối catch 224 11.3 Ném ngoại lệ .226 11.4 Né ngoại lệ 227 11.5 Ngoại lệ kiểm tra không kiếm t r a 231 11.6 Định nghĩa kiểu ngoại lệ 232 11.7 Ngoại lệ cácphương thức cài đè 233 M ục lục Chương 12 CHUỖI HÓA ĐỐI TƯỢNG VÀ VÀO RA FILE 12.1 Quy trình ghi đối tượng 241 12.2 Chuỗi hóa đối tượng 243 2.3 Khôi phục đối tượng 246 12.4 Chi chuỗi kí tự tệp văn 250 12.4.1 Lớp File • 251 2.4.2 Bộ nhớ đ ệ m 252 2.5 Đọc tệp văn b ả n 252 2.6 Các dòng vào/ra Java API 254 Chương 13 LẬP TRÌNH TỔNG QUÁT VÀ CÁC LỚP COLLECTION 3.1 Lớp tổng qu át 263 13.2 Phương thức tống q u t 266 13.3 Các cấu trúc dử liệu tống quát Java API 267 13.4 Iterator vòng lặp for each 269 13.5 So sánh nội dung đối tượng 272 13.5.1 So sánh 273 3.5.2 So sánh lớn hơn/nhỏ h n 275 13.6 Kí tự đại diện khai báo tham số kiểu .277 Phụ lục A DỊCH CHƯƠNG TRÌNH BANG JDK 283 Phụ lục B PACKAGE - Tổ CHỨC GÓI CÚA JAVA 287 Phụ lục c BẢNG THUẬT NGỮ ANH-VIỆT 291 Tài liệu tham khảo 293 GIỚI THIỆU Phần niềm ngày lớn phức tạp đòi hỏi cập nhật licn tục để đáp ứng yêu cầu người đùng Phương pháp lập trình thủ tục truyền thống dần trở nên khơng đáp ứng đòi hỏi cùa ngành cơng nghiệp phần mềm Lập trình hưởng đối tượng đời bổi cành để hỗ trợ sử dụng lại phát triển phần mềm qui mô lớn Giáo trình cung cấp cho sinh viên kiến thức từ bủn số kỳ thuật nâng cao phương pháp lập trinh hướng dối tượng Giáo trình dùng cho sinh viên ngành Cơng nghệ thơng tin đà có kiến thức lập trình Giáo trình sử dụng ngơn ngữ lộp trình Java để minh họa đồng thời giới thiệu số kiến thức ngôn ngừ Các nội dung phương pháp lập trình hướng đối tượng trình bày giáo trình bao gồm lớp đối tượng, đóng gói/che giấu thơng tin, kể thừa đa hình, xứ lý ngoại lệ lộp trình tổng qt Ngồi ra, giáo trình trình bày kiến thức Java bao gồm đặc trưng ngôn ngừ, thư viện bàn cách thức tổ chức vào/ra dừ liệu Thay cách trình bày theo tính hàn lâm chủ dề rộng, dể thuận tiện cho giảng dạy, giáo trình chọn cách trình bày theo học cụ thổ dược xếp theo trình tự kiến thức từ sở đến chuyên sâu Mỗi chủ dề dược giảng dạy với thời lượng 2-3 lý thuyết thực hành tương ứng Chương Chương 6, vái nội dung kiến thức ngôn ngữ lập trình Java, can thiết khơng phải nội dung trọng tâm mơn học Lập trình hướng đối tượng Các chương này, dó, nên để sinh viên tự hục Chương Chương 10 không thiết phải dược dạy thành chù đề độc lập mà dược tách rải rác nội duns kiến 10 GIÁO TRÌNH LẬP TRÌNH HƯỚNG Đ ố l TƯỢNG VỚUAVA thức giới thiệu kèm theo khái niệm hướng dối tượng cỏ liên quan, yêu cầu sinh viên tự đọc cần đến kiến thức trình thực hành Tuy giáo trình khơng trình bày sâu lập trình Java, kiến thức lập trình Java lại cần thiết sinh viên, với mục đích thực hành mơn học Do đó, ngồi mục đích thực hành nội dung liên quan đến lập trình hướng đối tượng, tập thực hành môn học nên có thêm dóng vai trò định hướng gợi ý giúp đỡ sinh vicn tự học đề túy Java mà giáo viên cho cần thiết, chảng hạn học vào dừ liệu đơn giản từ tuần môn học Các định hướng thể tập thực hành với đoạn chương trình mẫu, yêu cầu tìm hiểu tài liệu API số lóp tiện ích Một số tập cuổi chương ví dụ dạng tập Các thuật ngừ hướng đối tượng nguyên gốc tiếng Anh chuyền sang tiếng Việt theo cách khác tùy tác giá Sinh viên cần biết thuật ngữ nguyên gốc tiếng Anh cách dịch khác để tiện cho việc sử dụng tài liệu tiếng Anh để liên hệ kiến thức tài liệu tiếng Việt Vì lí đó, giáo trình cung cấp bảng thuật ngữ Anh-Việt với cách dịch khác Phụ lục c , bên cạnh Phụ lục A cơng cụ lộp trình JDK Phụ lục B tổ chức gói ngơn ngừ Java Các tác già chân thành cảm om PGS TS Nguyễn Đình Hóa, TS Trương Anh Hồng, TS Cao Tuấn Dũng, TS Đặng Đức Hạnh, đồng nghiệp sinh viên Khoa Công nghệ thông tin, Trường Dại học Cơng nghệ đọc thảo eiáo trình có góp ý quý báu nội dung chuyên mơn cách thức trình bày Tuy vậy, giáo trình nhiều khiếm khuyết, tác giả mong tiếp tục nhận góp ý để hồn thiện tương lai chương I MỞ DẦU Lập trình công đoạn quan trọne chủ chốt thiếu để tạo sản phâm phần mềm Phan mềm trở nên đa dạng ngành công nghiệp phần mềm phát triền người ta thấy rõ tầm quan trọng phương pháp lập trình Phương pháp lập trình tốt khơng đảm bảo tạo phần mềm tốt mà hỗ trợ thiết kế phần mềm có tính mở hỗ trợ khả sử dụng lại mơ đun Nhờ dễ dàng bảo trì, nâng cấp phần mềm giảm chi phí phát triển phần mềm Trong thập kỷ 1970, 1980, phương pháp phát triển phần mềm chủ yếu lập trình có cấu trúc (structured programming) Cách tiếp cận cấu trúc việc thiết kế chương trình dựa chiến lược chia để trị: Để giải tốn lớn, tìm cách chia thành vài toán nhỏ giải riêng bài; để giải bài, coi tốn tiếp tục chia thành toán nhỏ hơn; cuối cùng, ta di đến tốn giải mà không cần phải chia tiếp Cách tiếp cận gọi lập trình từ xuống (top-down programming) Lập trình từ xuống phương pháp tốt áp dụng thành công cho phát triển nhiều phần mềm Tuy nhiên, với đa dạng phức tạp phần mềm, phương pháp bộc lộ hạn chế Trước hết đáp ứnc việc tạo lệnh quy trình để giải tốn Dần dần, người ta nhận ràng thiết kế cấu trúc liệu cho chng trình có tầm quan trọng không việc thiết kế hàm/thủ tục cấu trúc điều khiển Lập trình từ xuống khơng quan tâm đủ đến dừ liệu mà chương trình cần xứ lý 280 GIÁO TRÌNH LẬP TRÌNH HƯỚNG Đ ố l TƯỢNG VỚI JAVA Sổ ArrayList loại cài interface Pet, ta khai báo sau: ArrayList khai báo, trình biên dịch khơng cho ta thêm vào danh sách mà tham số phương thức chiếu tới Ta gọi phương thức phần tử danh sách, ta thêm phần tử vào danh sách Do đó, ta n tâm chương trình chạy Ví dụ, makeASymphonyO với nội dung không gặp lỗi biên dịch, takeAnimals() với nội dung Hình 13.14 khơng biên dịch public void takeAnimals(ArrayList