Bài giảng Lập trình hướng đối tượng: Chương 4 - Châu Thị Bảo Hà
lượt xem 3
download
Bài giảng Lập trình hướng đối tượng - Chương 4 cung cấp cho người học những hiểu biết về tính kế thừa và tính đa hình trên java. Thông qua chương này người học có thể: Đánh giá được tầm quan trọng của kế thừa, hiện thực được tính kế thừa trong Java, vẽ được sơ đồ UML thể hiện tính kế thừa,... Mời các bạn cùng tham khảo.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Lập trình hướng đối tượng: Chương 4 - Châu Thị Bảo Hà
- Chương 4 KẾ THỪA VÀ ĐA HÌNH TRÊN JAVA
- Mục tiêu • Đánh giá được tầm quan trọng của kế thừa • Hiện thực được tính kế thừa trong Java • Vẽ được sơ đồ UML thể hiện tính kế thừa • Viết lớp trừu tượng • Hiện thực interface
- Nội dung 4.1. Khái niệm kế thừa 4.2. Kỹ thuật phân cấp kế thừa 4.3. Hiện thực tính kế thừa trong Java 4.4. Lớp trừu tượng (Abtract class) 4.5. Interface 4.6. Đa hình (Polymorphism) 4.7. Case Study 4.8. Một số lớp cơ bản trong Java 3
- 4.1. Khái niệm kế thừa Vấn đề • Ví dụ xét trường hợp bài toán quản lí nhân sự và sinh viên của một trường đại học Nhân viên Sinh viên Tên Tên Ngày sinh Ngày sinh Giới tính Giới tính Lương Lớp Nhập/xem tên Nhập/xem tên Nhập/xem ngày sinh Nhập/xem ngày sinh Nhập/xem giới tính Nhập/xem giới tính Nhập/xem lương Nhập/xem lớp
- 4.1. Khái niệm kế thừa Vấn đề • Ví dụ: Người Lớp cơ sở/ Tên Lớp cha Ngày sinh Giới tính Nhập/xem tên Nhập/xem ngày sinh Nhập/xem giới tính Nhân viên Sinh viên Lương Lớp Nhập/xem lương Nhập/xem lớp
- 4.1. Khái niệm kế thừa • Kế thừa là việc xây dựng lớp mới dựa trên lớp đã có sẵn o Lớp có sẵn gọi là parent class, hoặc super class, hoặc base class A o Lớp mới gọi là child class, hoặc subclass, hoặc derived class • Kế thừa cho phép tái sử dụng mã Tiết kiệm công sức xây dựng + test • Tránh tạo ra các đặc tính và hành vi có sẵn, chỉ sử dụng lại những cái có sẵn đó để tạo nên các thực thể mới B B kế thừa A 6
- 4.1. Khái niệm kế thừa • Kế thừa đơn (single inheritance): Một lớp chỉ có thể có tối đa một lớp cha • Kế thừa bội (đa thừa kế, multiinheritance): Một lớp có thể có nhiều lớp cha • Mỗi ngôn ngữ hỗ trợ khả năng kế thừa khác nhau: C++: đa kế thừa; Java, C#: đơn kế thừa • Chú ý: o Tính kế thừa thể hiện quan hệ “is a”, khác với quan hệ “has a” (composition) • Composition: một đối tượng chứa các đối tượng thuộc lớp khác. Ví dụ: ôtô có các bánh xe
- 4.2. Kỹ thuật phân cấp kế thừa 1. Liệt kê đặc điểm của các loại đối tượng cần quan tâm 2. Tìm tập giao của các tính chất giữa các lớp, tách tập giao này để xây dựng lớp cha 3. Đặt tên gọi có ý nghĩa cho lớp cha 4. Phần còn lại sau khi tách tập giao là các lớp con
- 4.2. Kỹ thuật phân cấp kế thừa • Ví dụ: Công ty du lịch V có quản lý thông tin các chuyến xe. Có 2 loại chuyến xe: • Chuyến xe nội thành: gồm Mã số chuyến, Họ tên tài xế, số xe, số tuyến, số km đi được, doanh thu. • Chuyến xe ngoại thành: gồm Mã số chuyến, Họ tên tài xế, số xe, nơi đến, số ngày đi được, doanh thu. Yêu cầu: Xây dựng các lớp với chức năng thừa kế (vẽ mô hình).
- Chuyến Xe Mã số chuyến Họ tên tài xế Số xe Doanh thu Chuyến xe nội thành Chuyến xe ngoại thành Số tuyến Nơi đến Số km đi được Số ngày đi được
- 4.3. Hiện thực tính kế thừa trong Java Cú pháp kế thừa trong Java: Cú pháp • public class DerivedClassName extends BaseClassName { // derived class methods extend and possibly override // those of the base class } 11
- 4.3. Hiện thực tính kế thừa trong Java public class ChuyenXe { Ví dụ private String MaSoChuyen, HoTenTaiXe, SoXe; private double DoanhThu; // các hàm khởi tạo… // các hàm get/set… public String toString() { return "\nMS chuyen: " + MaSoChuyen + "\nTai Xe: " + HoTenTaiXe +
- 4.3. Hiện thực tính kế thừa trong Java private double SoKm;Ví dụ class NoiThanh extends ChuyenXe { private String SoTuyen; class NgoaiThanh extends ChuyenXe { private String NoiDen; private int SoNgay; // các hàm khởi tạo… // các hàm khởi tạo… // các hàm get/set… // các hàm get/set… public String toString() { public String toString() { return "Chuyen Xe Noi Thanh " + return "Chuyen Xe Ngoai Thanh" + super.toString() + super.toString() + "\n So Tuyen: " + this.SoTuyen + "\nNoi Den: " + this.NoiDen + "\nSo Km: " + this.SoKm + "\nSo Ngay: " + this.SoNgay + "\nDoanh Thu: " + this.DoanhThu; "\nDoanh Thu: " + this.DoanhThu; } } } }
- 4.3. Hiện thực tính kế thừa trong Java Từ khóa super: Sử dụng để truy xuất các thành phần của lớp cha và các Từừ khóa super • hàm khởi tạo của chúng t lớp con • Sự thừa kế trong hàm khởi tạo Constructor inheritance o Khai báo về kế thừa trong hàm khởi tạo o Chuỗi các hàm khởi tạo (Constructor chaining) o Gọi tường minh hàm khởi tạo của lớp cha 14
- 4.3. Hiện thực tính kế thừa trong Java Trong Java, hàm khởi tạo không thể thừa kế từ lớp cha như các loại phương thK ế thừa trong hàm khởi tạo • ức khác • Khi tạo một thể hiện của lớp dẫn xuất, trước hết phải gọi đến hàm khởi tạo của lớp cha, tiếp đó mới là hàm khởi tạo của lớp con • Có thể gọi hàm khởi tạo của lớp cha bằng cách sử dụng từ khóa super trong phần khai báo hàm khởi tạo của lớp con 15
- 4.3. Hiện thực tính kế thừa trong Java class A { A() K ế thừ a trong hàm khở i tạ o { class Test { public static void main(String args[]) System.out.println("This is constructor of class A"); { } Optional B b1 = new B(); } } // End of class A } class B extends A { OUTPUT This is constructor of class A B() This is constructor of class B
- 4.3. Hiện thực tính kế thừa trong Parent Java F1 Chuỗi các hàm kh ởưới tc hạết phoải gọi • Ví dụ: Khi tạo một đối tượng của lớp con, tr đến hàm khởi tạo của lớp cha, F2 tiếp đó là hàm khởi tạo của lớp con 17
- 4.3. Hiện thực tính kế thừa trong Java class A { G ọ i t private int a; ường minh hàm khở i tạ o public A( int a) { this.a = a; B b1 = new B(8,10,8.6); System.out.println("This is constructor of class A"); OUTPUT This is constructor of class A } } This is constructor of class B class B extends A { private int b;
- 4.3. Hiện thực tính kế thừa trong Java Gọi tường minh hàm khởi tạo • Ví dụ: 19
- 4.3. Hiện thực tính kế thừa trong Java Phạm vi truy cập • Sử dụng truy cập protected trong thừa kế Access Levels Modifier Class Package Subclass World public Y Y Y Y protected Y Y Y N no modifier Y Y N N [ package ] private Y N N N 20
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - TS. Trần Công Án
57 p | 89 | 13
-
Bài giảng Lập trình hướng đối tượng: Chương 2 - Nguyễn Sơn Hoàng Quốc, ThS. Nguyễn Tấn Trần Minh Khang
14 p | 174 | 12
-
Bài giảng Lập trình hướng đối tượng - Chương 1: Phương pháp lập trình hướng đối tượng
9 p | 140 | 9
-
Bài giảng Lập trình hướng đối tượng C++ - Chương 2: Lập trình hướng đối tượng
53 p | 46 | 8
-
Bài giảng Lập trình hướng đối tượng (dùng Java): Chương 1 - Trần Minh Thái (2017)
55 p | 80 | 8
-
Bài giảng Lập trình hướng đối tượng - Bài 1: Tổng quan lập trình hướng đối tượng
53 p | 120 | 8
-
Bài giảng Lập trình hướng đối tượng (Dùng C#): Chương 2 - Trần Minh Thái
35 p | 103 | 8
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - Trần Thị Anh Thi
7 p | 197 | 7
-
Bài giảng Lập trình hướng đối tượng: Bài 1 - ThS. Trịnh Thành Trung
53 p | 86 | 7
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - Trần Minh Thái
40 p | 116 | 6
-
Bài giảng Lập trình hướng đối tượng 1: Chương 1 - ThS. Thái Kim Phụng
39 p | 100 | 6
-
Bài giảng Lập trình hướng đối tượng – Bài 01: Tổng quan về OOP
47 p | 63 | 5
-
Bài giảng Lập trình hướng đối tượng (dùng JAVA): Chương 1 - Trần Minh Thái
40 p | 99 | 5
-
Bài giảng Lập trình hướng đối tượng và C++: Chương 1
15 p | 103 | 4
-
Bài giảng Lập trình hướng đối tượng: Nhập môn - Trần Phước Tuấn
15 p | 139 | 4
-
Bài giảng Lập trình hướng đối tượng: Bài 1 - Tổng quan về lập trình hướng đối tượng
47 p | 11 | 4
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - Các khái niệm cơ bản trong lập trình hướng đối tượng
36 p | 15 | 3
-
Bài giảng Lập trình hướng đối tượng: Bài 1 - Nguyễn Khanh Văn
0 p | 83 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn