Bài giảng Kỹ thuật lập trình hệ cơ điện tử: Chương 11 - TS. Đặng Thái Việt
lượt xem 3
download
Bài giảng "Kỹ thuật lập trình hệ cơ điện tử: Chương 11 - Kế thừa và đa hình" được biên soạn bao gồm các nội dung chính sau: Lớp cơ sở và Lớp thừa kế; Điều khiển truy cập và Tính kế thừa; Kiểu kế thừa; Đa kế thừa; Đa hình trong C++; Hàm virtual; Hàm pure virtual. Mời các bạn cùng tham khảo bài giảng!
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Kỹ thuật lập trình hệ cơ điện tử: Chương 11 - TS. Đặng Thái Việt
- TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI KỸ THUẬT LẬP TRÌNH HỆ CƠ ĐIỆN TỬ Programming Engineering in Mechatronics Giảng viên: TS. Đặng Thái Việt Đơn vị: Bộ môn Cơ điện tử, Viện Cơ khí Hà Nội, 09/2017 1
- KỸ THUẬT LẬP TRÌNH HỆ CƠ ĐIỆN TỬ 1. Tổng quan về ngôn ngữ lập trình 7. Cấu trúc 2. Giới thiệu sơ bộ ngôn ngữ C 8. Vào/ra trong C 3. Kiểu, toán tử và biểu thức 9. Cơ sở của C++ 4. Dòng điều khiển 10. Lớp 5. Hàm và cấu trúc chương trình 11. Kế thừa và đa hình 6. Con trỏ và mảng 12. Luồng vào/ra trong C++ 2
- CHƯƠNG 11. Kế thừa và Đa hình 11.1 Kế thừa Lớp cơ sở và Lớp thừa kế Điều khiển truy cập và Tính kế thừa Kiểu kế thừa Đa kế thừa 11.2 Đa hình Đa hình trong C++ Hàm virtual Hàm pure virtual 3
- Kế thừa 1. Kế thừa • Tính kế thừa (Inheritance). Tính kế thừa cho phép chúng ta định nghĩa một lớp trong điều kiện một lớp khác, mà làm cho nó dễ dàng hơn để tạo và duy trì một ứng dụng. • Lớp đang tồn tại này được gọi là Base Class - lớp cơ sở, và lớp mới được xem như là Derived Class – lớp thừa kế. 4
- Kế thừa Lớp cơ sở (Base Class) và Lớp thừa kế (Derived Class) trong C++ • Một lớp có thể được kế thừa từ hơn một lớp khác, nghĩa là, nó có thể kế thừa dữ liệu và hàm từ nhiều lớp cơ sở. • Để định nghĩa một lớp kế thừa (Derived Class), chúng ta sử dụng một danh sách để xác định các lớp cơ sở. Danh sách này liệt kê một hoặc nhiều lớp cơ sở và có form sau: 5
- Kế thừa Ví dụ 6
- Kế thừa Ví dụ 7
- Kế thừa Điều khiển truy cập và Tính kế thừa trong C++ Ø Một lớp kế thừa có thể truy cập tất cả thành viên không phải là private của lớp cơ sở của nó. Vì thế, các thành viên lớp cơ sở, mà là hạn chế truy cập tới các hàm thành viên của lớp kế thừa, nên được khai báo là private trong lớp cơ sở. Ø Chúng ta tổng kết các kiểu truy cập khác nhau, tương ứng với ai đó có thể truy cập chúng như sau: 8
- Kế thừa Ø Một lớp kế thừa (Derived Class) sẽ kế thừa tất cả các phương thức của lớp cơ sở, ngoại trừ: § Constructor, destructor và copy constructor của lớp cơ sở. § Overloaded operator (toán tử nạp chồng) của lớp cơ sở. § Hàm friend của lớp cơ sở. 9
- Kế thừa Kiểu kế thừa trong C++ Ø Khi kế thừa từ một lớp cơ sở, lớp cơ sở đó có thể được kế thừa thông qua kiểu kế thừa là public, protected hoặc private. Kiểu kế thừa trong C++ được xác định bởi Access- specifier đã được giải thíc ở trên. § Kiểu kế thừa Public: Khi kế thừa từ một lớp cơ sở là public, thì các thành viên public của lớp cơ sở trở thành các thành viên public của lớp kế thừa; và các thành viên protected của lớp có sở trở thành các thành viên protected của lớp kế thừa. Một thành viên là private của lớp cơ sở là không bao giờ có thể được truy cập trực tiếp từ một lớp kế thừa, nhưng có thể truy cập thông qua các lời gọi tới các thành viên public và protected của lớp cơ sở đó. 10
- Kế thừa Kiểu kế thừa trong C++ § Kiểu kế thừa protected: Khi kế thừa từ một lớp cơ sở là protected, thì các thành viên public và protected của lớp cơ sở trở thành các thành viên protected của lớp kế thừa § Kiểu kế thừa private: Khi kế thừa từ một lớp cơ sở là private, thì các thành viên public và protected của lớp cơ sở trở thành các thành viên private của lớp kế thừa 11
- Kế thừa Đa kế thừa trong C++ Ø Một lớp trong C++ có thể kế thừa các thành viên từ nhiều lớp, và đây là cú pháp: Tại đây, access_modifier là public, protected hoặc private và sẽ được cung cấp cho mỗi lớp cơ sở, và chúng sẽ được phân biệt với nhau bởi dấu phảy như trên. 12
- Kế thừa Ví dụ 13
- Kế thừa Ví dụ 14
- Kế thừa Ví dụ 15
- Đa hình Đa hình trong C++ Ø Đa hình (polymorphism) nghĩa là có nhiều hình thái khác nhau. Tiêu biểu là, đa hình xuất hiện khi có một cấu trúc cấp bậc của các lớp và chúng là liên quan với nhau bởi tính kế thừa. Ø Đa hình trong C++ nghĩa là một lời gọi tới một hàm thành viên sẽ làm cho một hàm khác để được thực thi phụ thuộc vào kiểu của đối tượng mà triệu hồi hàm đó. 16
- Đa hình Ví dụ 17
- Đa hình Ví dụ 18
- Đa hình Ví dụ Lý do cho output không chính xác đó là vì: lời gọi của hàm dientich() đang được thiết lập một lần bởi compiler như phiên bản được định nghĩa trong lớp cơ sở đó. Điều này gọi là static resolution (sự phân giải tĩnh) của lời gọi hàm, hoặc static linkage (sự liên hợp tĩnh) – lời gọi hàm được sửa trước khi chương trình được thực thi. Đôi khi nó cũng được gọi là early binding (hoặc static binding) bởi vì hàm dientich() được thiết lập trong khi biên dịch chương trình. 19
- Đa hình Ví dụ Bây giờ, chúng ta sửa chương trình trên một chút và đặt trước dòng int dientich() trong lớp Hinh với từ khóa virtual, khi đó nó trông như sau: 20
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Kỹ thuật thi công: Chương 7 - ThS. Nguyễn Hoài Nghĩa, PGS.TS. Lưu Trường Văn (Phần 3)
15 p | 140 | 19
-
Bài giảng Điều khiển logic - Chương 5: Kỹ thuật lập trình điều khiển trình tự
6 p | 152 | 14
-
Bài giảng Kỹ thuật thi công (Phần 3): Chương 1 - TS. Nguyễn Duy Long
18 p | 23 | 5
-
Bài giảng Kỹ thuật lập trình hệ cơ điện tử: Chương 9 - TS. Đặng Thái Việt
34 p | 17 | 4
-
Bài giảng Kỹ thuật lập trình hệ cơ điện tử: Chương 8 - TS. Đặng Thái Việt
43 p | 25 | 4
-
Bài giảng Kỹ thuật lập trình hệ cơ điện tử: Chương 13 - TS. Đặng Thái Việt
83 p | 24 | 3
-
Bài giảng Kỹ thuật lập trình hệ cơ điện tử: Chương 12 - TS. Đặng Thái Việt
16 p | 12 | 3
-
Bài giảng Kỹ thuật lập trình hệ cơ điện tử: Chương 10 - TS. Đặng Thái Việt
33 p | 11 | 3
-
Bài giảng Kỹ thuật lập trình hệ cơ điện tử: Chương 7 - TS. Đặng Thái Việt
31 p | 17 | 3
-
Bài giảng Kỹ thuật lập trình hệ cơ điện tử: Chương 6 - TS. Đặng Thái Việt
61 p | 12 | 3
-
Bài giảng Kỹ thuật lập trình hệ cơ điện tử: Chương 5 - TS. Đặng Thái Việt
35 p | 13 | 3
-
Bài giảng Kỹ thuật lập trình hệ cơ điện tử: Chương 4 - TS. Đặng Thái Việt
36 p | 7 | 3
-
Bài giảng Kỹ thuật lập trình hệ cơ điện tử: Chương 3 - TS. Đặng Thái Việt
48 p | 9 | 3
-
Bài giảng Kỹ thuật lập trình hệ cơ điện tử: Chương 2 - TS. Đặng Thái Việt
25 p | 15 | 3
-
Bài giảng Kỹ thuật lập trình hệ cơ điện tử: Chương 1 - TS. Đặng Thái Việt
33 p | 15 | 3
-
Bài giảng Kỹ thuật chế tạo 2: Chương 25
30 p | 10 | 3
-
Bài giảng Kỹ thuật thi công (Phần 2): Chương 2
36 p | 9 | 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