Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 207 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
207
Dung lượng
9,45 MB
Nội dung
Bài 15: Tổng Quan Lập Trình Hướng Đối Tượng Bài 16: Đối Tượng (Object) & Lớp (Class) 12 Bài 17: Thuộc Tính Của Lớp 21 Bài 18: Phương Thức Của Lớp 30 Bài 19: Package 43 Bài 20: Phương Thức Khởi Tạo – Constructor 55 Bài 21: Làm Quen Với Kế Thừa 64 Bài 22: Từ Khóa this & Từ Khóa super 78 Bài 23: Tính Phủ Quyết (Overriding) Trong Kế Thừa 86 Bài 24: Lớp Object 92 Bài 25: Khả Năng Truy Cập (Access Modifier) 99 Bài 26: Từ Khóa final Trong OOP 107 Bài 27: Phương Thức Getter Và Setter 112 Bài 28: Từ Khóa static 119 Bài 29: Nạp Chồng Phương Thức (Overloading) 128 Bài 30: Đa Hình (Polymorphism) 138 Bài 31: Ép Kiểu Trong OOP 149 Bài 32: Tính Trừu Tượng (Abstraction) 156 Bài 33: Interface 169 Bài 34: Lớp Lồng 178 Bài 35: Lớp Vô Danh (Anonymous Class) 188 Bài 36: Lớp Wrapper 197 Trước xin cảm ơn bạn ủng hộ theo dõi viết Yellow Code Books Đây ebook thứ hai số ba mà dần mang đến cho bạn Ở có chia sẻ nhiều rồi, để nhắc lại chút vài thơng tin Đầu tiên, nói Yellow Code Books Đây trang blog lập trình, đặc biệt hướng đến lập trình thiết bị di động, sở trường Yellow Code Books tạo nên với mong muốn lưu trữ lại kiến thức kỹ lập trình cá nhân, đồng thời kiêm chức chia sẻ kiến thức cho tất bạn Vì có nói blog “lĩnh hội kiến thức để khơng mang chia sẻ tội ác” Nói Java Chắc bạn biết, ngơn ngữ lập trình phổ biến giới Java dễ học Vì cấu trúc rõ ràng Nó kế thừa từ ngơn ngữ lập trình C/C++, hướng đối tượng hồn tồn loại bỏ khó khăn mà ngơn ngữ tiền nhiệm mắc phải Chính vậy, việc tiếp cận Java bạn chưa biết phải học ngơn ngữ lập trình cả, theo điều đắn Một bạn nắm vững Java rồi, bạn hồn tồn tiếp thu nhanh chóng ngơn ngữ lập trình khác, tiến thêm bước để học cách xây dựng ứng dụng cho hệ điều hành Android Nói lại cấu trúc học Quyển ebook chia làm ba phần: Java - Các Bài Học Cơ Sở, J ava - Các Bài Học Hướng Đối Tượng, J ava - Các Bài Học Nâng Cao Tất bám theo viết blog Yellow Code Books, cập nhật phiên thường xuyên Bạn nên lưu trữ ebook thiết bị di động, máy tính, hay in giấy để học tập lúc nơi Nếu có thắc mắc hay thơng tin cần bổ sung, bạn online, có cách liên lạc hiệu sau giúp bạn có phản hồi nhanh chóng từ ● Vào học cụ thể để lại bình luận cuối học blog Link đến học blog để cuối học ebook ● Đến trang Liên Hệ Yellow Code Books để lại thông tin với lời nhắn bạn ● Bình luận để lại tin nhắn Fanpage Facebook địa https://www.facebook.com/yellowcodebooks/ ● Gửi mail trực tiếp đến địa yellowcode.books@gmail.com Một lần nữa, cảm ơn bạn ủng hộ cách đọc, theo dõi, chia sẻ, bình luận đánh giá viết Hi vọng nhận nhiều phản hồi từ phía bạn Chúc tất thành cơng! Ký tên Mình cảm nhận thời gian vừa qua dài mà bước làm quen với ngôn ngữ Java cách… không Hướng tối tượng Như bạn biết, từ học Java đầu tiên, có nói ngơn ngữ sinh để suy nghĩ theo H ướng đối tượng Vậy mà học tập cách trôi chảy theo lối suy nghĩ cũ thôi, xen vào vài kiến thức Hướng đối tượng Điều chứng tỏ Hướng đối tượng gần gũi dễ dàng tiếp cận Vậy Hướng đối tượng gì? Suy nghĩ theo Hướng cũ suy nghĩ theo H ướng đối tượng khác nào, chúng có bổ trợ cho khơng? Tại lại phải Hướng đối tượng? Vân vân mây mây… Tất câu hỏi làm sáng tỏ dần loạt Yellow Code Books Cịn hơm nay, đặt chân vào ngưỡng cửa Hướng đối tượng, tốt dạo qua khái niệm so sánh trước vào học cụ thể Các Hướng Tư Duy Trong Lập Trình Lập trình Hướng-đối-tượng hay Hướng-cái-gì giải pháp, tư lập trình mà thơi Nó khơng cao siêu hay phức tạp Nó khơng phụ thuộc vào ngơn ngữ lập trình Java hay Nó tập hợp phương pháp nguyên tắc để giúp bạn suy nghĩ tổ chức vấn đề, từ giúp làm chương trình phức tạp to lớn cách dễ dàng Và dĩ nhiên với việc suy nghĩ theo Hướng lập trình n đó, ngơn ngữ lập trình phải hỗ trợ lập trình viên cú pháp theo nguyên tắc Hướng Chính có ngơn ngữ lập trình Hướng đối tượng hay K hơng hướng đối tượng Như ngôn ngữ Java mà bạn tìm hiểu ngơn ngữ Hướng đối tượng Có thể nói có nhiều tài liệu mơ tả cụ thể lập trình theo Hướng đối tượng lập trình Khơng theo Hướng đối tượng Nhưng với vài tài liệu mà biết, chắn khó để bạn hiểu khác Vậy với học mời bạn tiếp cận Hướng lập trình theo cách hồn tồn khác, là, xem qua ví dụ đơn giản, thay đổi tư để bước khám phá cách thức xây dựng ứng dụng theo Hướng “cũ” H ướng đối tượng s ẽ Xây Dựng Ứng Dụng Theo Hướng “Cũ” Giả sử có yêu cầu bạn viết chương trình kêu người dùng nhập vào Bán kính Hình trịn, sau chương trình in console Chu vi Diện tích Hình trịn Nếu bạn bắt tay vào code nhanh sườn chương trình, trông // Kêu người dùng nhập vào Bán kính Hình trịn System.out.println("Hãy nhập vào Bán kính Hình tròn: "); Scanner scanner = new Scanner(System.in); float r = scanner.nextFloat(); // Tính Chu vi Hình trịn // // Tính Diện tích Hình trịn // // Xuất kết Chu vi Diện tích Hình trịn console System.out.println("Chu vi Hình trịn: "); System.out.println("Diện tích Hình trịn: "); Với cách tiếp cận từ Bài học số đến giờ, dễ để bạn bắt tay vào hồn thành chương trình khơng Để tính Chu vi Diện tích Hình trịn, cần áp dụng kiến thức tốn học vào mà thơi, bạn xem code hồn chỉnh sau // Khai báo số PI số final float PI = 3.14f; // Kêu người dùng nhập vào Bán kính Hình trịn System.out.println("Hãy nhập vào Bán kính Hình tròn: "); Scanner scanner = new Scanner(System.in); float r = scanner.nextFloat(); // Tính Chu vi Hình trịn float cv = 2*PI*r; // Tính Diện tích Hình trịn float dt = PI*r*r; // Xuất kết Chu vi Diện tích Hình trịn console System.out.println("Chu vi Hình trịn: " + cv); System.out.println("Diện tích Hình trịn: " + dt); Ơi có khó đâu! Vậy cách tư làm với ví dụ người ta gọi tư theo Hướng thủ tục (POP – Procedure Oriented Programming), hay gọi Hướng cấu trúc Bởi tư theo kiểu chia nhỏ yêu cầu thành “thủ tục”, thủ tục hành động có chương trình Chẳng hạn với ví dụ có thủ tục tính Chu vi Hình trịn, tính Diện tích Hình trịn Bạn tách thủ tục thành Hàm (chúng ta học đến hàm sau) cho chương trình dễ nhìn Câu chuyện chưa dừng lại Giả sử yêu cầu nâng tầm lên Địi hỏi chương trình in thêm Thể tích Hình trụ (Hình trụ có Bán kính mặt trịn với Bán kính Hình trịn kia) Từ u cầu mở rộng khơng cần kêu người dùng nhập vào bán kính khác, cần nhập thêm chiều cao Vậy với tư Hướng thủ tục, bạn kêu dễ, và… Boom! Code đời với số thủ tục // Khai báo số PI số final float PI = 3.14f; // Kêu người dùng nhập vào Bán kính Hình trịn System.out.println("Hãy nhập vào Bán kính Hình trịn: "); Scanner scanner = new Scanner(System.in); float r = scanner.nextFloat(); // Kêu người dùng nhập vào Chiều cao Hình trụ System.out.println("Hãy nhập vào Chiều cao Hình trụ: "); float h = scanner.nextFloat(); // Tính Chu vi Hình trịn float cv = 2*PI*r; // Tính Diện tích Hình trịn float dt = PI*r*r; // Tính Thể tích Hình trụ float ttHinhTru = dt*h; // Xuất kết Chu vi Diện tích Hình trịn, Thể tích Hình trụ console System.out.println("Chu vi Hình trịn: " + cv); System.out.println("Diện tích Hình trịn: " + dt); System.out.println("Thể tích Hình trụ: " + ttHinhTru); Cũng may hàm tính Chu vi, Diện tích, Thể tích ví dụ ngắn Nhưng bạn thấy yêu cầu ngày phát sinh, đòi hỏi tính thêm Chu vi hay Diện tích hay Thể tích cho Hình vng, Hình bình hành, Hình cầu,… thủ tục chương trình bạn phình đến mức nào, làm cho chương trình khó quản lý Do cần phải có kiểu tư khiến cho việc quản lý code dễ dàng hơn, chí rút ngắn thời gian code thông qua việc tận dụng lại thủ tục tính tốn Vậy từ mong muốn đó, tư Hướng đối tượng đời Có nhiều tài liệu cho rằng, phương thức suy nghĩ theo tư Hướng thủ tục tư kiểu top-down, tức theo kiểu từ trên-xuống, hay cịn hiểu tư theo kiểu tổng quát đến cụ thể Vậy sao? Tức bạn nhìn tổng thể u cầu chương trình trước, ví dụ bạn thấy yêu cầu tính Chu vi Diện tích hình trịn, bạn xây dựng thủ tục tính tốn trước Sau tiếp cận tổng thể đó, bạn thấy cần phải viết thêm thủ tục nhỏ dễ quản lý, chẳng hạn bạn muốn thêm thủ tục tính Bình phương, Thập phương số hạng Nếu cịn phân chia thủ tục nhỏ thành thủ tục nhỏ phân chia Đó tư kiểu top-down Xây Dựng Ứng Dụng Theo Hướng Đối Tượng Hướng đối tượng (OOP – Object Oriented Programming) Cách tư không hướng đến thủ tục nữa, mà hướng đến đối tượng Ngồi thực tế đối tượng thực thể hay vật mà cầm nắm, gọi tên Nói chung có trạng thái hành vi Áp dụng vào chương trình phần mềm khái niệm đối tượng y Chẳng hạn với ví dụ viết chương trình tính Chu vi Diện tích Hình trịn Thì đối tượng mà ta cần quan tâm Hình trịn Vậy để giải yêu cầu? Như bạn biết, đối tượng sinh lập trình (hay ngồi đời thực) có trạng thái hành vi (hành động) định, Hình trịn phải có trách nhiệm tính Chu vi Diện tích thân mình. Tức thủ tục tư Hướng thủ tục gán vào hết cho Hình trịn xử lý Thậm chí bạn xây dựng cho Hình trịn tự kêu người dùng nhập vào Bán kính lưu lại Rồi kêu Hình trịn tự in kết Chu vi Diện tích console ln Khỏe!!! Như minh họa code đây, bạn khơng cần phải biết xác code đâu, cần biết ý tưởng Hướng đối tượng // Khai báo Đối tượng Hình trịn lệnh cho đối tượng thực // yêu cầu HinhTron hinhTron = new HinhTron(); // Hình trịn tự kêu người dùng nhập Bán kính hinhTron.nhapBanKinh(); // Hình trịn tự biết cách tính Chu vi hinhTron.tinhChuVi(); // Hình trịn tự biết cách tính Diện tích hinhTron.tinhDienTich(); // Hình trịn tự in kết console hinhTron.inChuVi(); hinhTron.inDienTich(); Bạn có nhận gọn gàng dễ quản lý code khơng? Mình thích nhìn thấy code Khác biệt lớn mà thủ tục tính Chu vi, tính Diện tích thủ tục lớn phức tạp Khi thủ tục Đối tượng giao cho Đối tượng đó, tức bạn xây dựng thủ tục đặc thù bên Đối tượng (bạn biết cách xây dựng sau), cần đến thủ tục nào, cần gọi đến thủ tục thông qua đối tượng khai báo, đối tượng HinhTron Với việc bạn định Hình trịn phải có thủ tục Thì việc thêm vào Hình trụ việc khai báo thêm đối tượng mới, với thủ tục tương xứng Ngồi đối tượng Hình trụ cịn có đặc tính thủ tục giống Hình trịn, hồn tồn dùng lại thủ tục khai báo bên Hình tròn Người ta gọi việc dùng lại thủ tục tính K ế thừa Hướng đối tượng, thơng qua việc định Hình trụ Hình trịn (chúng ta xem xét mối quan hệ Kế thừa học sau) Việc Hình trụ Hình trịn khiến có hàm mà cha Hình trịn định nghĩa, nên việc quản lý sử dụng lại code dễ dàng Về sau xuất thêm Hình cầu, Hình abc, hay Hình xyz đó, hồn tồn tạo đối tượng chúng có mối quan hệ với nhau, kèm thủ tục đặc trưng hay kế thừa Mình ví dụ code cho mong muốn tính Thể tích Hình trụ sau // Khai báo Đối tượng Hình trịn Hình trụ // Và lệnh cho đối tượng thực // yêu cầu HinhTron hinhTron = new HinhTron();