Đây là bài giảng môn Lập trình hướng đối tượng. Bài giảng gồm các vấn đề tính đóng gói, thừa kế, đa hình, trừu tượng...Bài giảng có nhiều ví dụ minh họa cho phần lí thuyết. Học sinh sinh viên hoặc người đam mê lập trình có thể code lại để nâng cao kĩ năng lập trình. Dưới đây là nội dung bài giảng:BÀI 1. UML VÀ NHỮNG MỞ RỘNG CỦA C++91.Tổng quan về UML92.Những mở rộng của C++17BÀI 2. ĐỐI TƯỢNG VÀ LỚP (Object Class)311.Đối tượng (Object)312.Lớp (Class)323.Struct và class394.Hàm thiết lập (Constructor)475.Hàm hủy bỏ (destructor)526.Hàm thiết lập sao chép (Copy Constructor)567.Thành phần tĩnh (Static)588.Đối tượng hằng – Hàm hằng (Constant)609.Hàm bạn lớp bạn (friend)62BÀI 3. ĐỊNH NGHĨA TOÁN TỬ TRÊN LỚP (CLASS OPERATORS)711.Định nghĩa toán tử trên lớp712.Chuyển đổi kiểu86BÀI 4. KỸ THUẬT THỪA KẾ (Inheritance)951.Giới thiệu chung962.Đơn thừa kế, hàm thiết lập, hàm sao chép963.Tính đa hình (polymorphism)1024.Hàm hủy bỏ ảo1065.Đa thừa kế1106.Lớp cơ sở ảo1137.Tính trừu tượng (Abstraction) (Lớp trừu tượngHàm ảo thuần túy)121BÀI 5. KHUÔN HÌNH (TEMPLATE) – XỬ LÝ LỖI (Exception Handling)1261.Khuôn Hình (Template)1262.Khuôn hình hàm1263.Khuôn hình lớp1284.Xử Lý Lỗi (Exception Handling)129
BỘ NÔNG NGHIỆP VÀ PHÁT TRIỂN NÔNG THÔN TRƯỜNG CAO ĐẲNG NGHỀ CÔNG NGHỆ VÀ NÔNG LÂM NAM BỘ - - BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Mã số: MĐ NGHỀ: CƠNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ THÔNG TIN Địa chỉ: QL 1K, Phường Bình An, TX Dĩ An, Tỉnh Bình Dương Email: it.svoctaf@gmail.com [Lưu hành nội bộ] -201 - MỤC LỤC BÀI UML VÀ NHỮNG MỞ RỘNG CỦA C++ Tổng quan UML .9 Những mở rộng C++ 17 BÀI ĐỐI TƯỢNG VÀ LỚP (Object & Class) 31 Đối tượng (Object) 31 Lớp (Class) 32 Struct class 39 Hàm thiết lập (Constructor) 47 Hàm hủy bỏ (destructor) 52 Hàm thiết lập chép (Copy Constructor) 56 Thành phần tĩnh (Static) 58 Đối tượng – Hàm (Constant) 60 Hàm bạn - lớp bạn (friend) .62 BÀI ĐỊNH NGHĨA TOÁN TỬ TRÊN LỚP (CLASS OPERATORS) 71 Định nghĩa toán tử lớp 71 Chuyển đổi kiểu 86 BÀI KỸ THUẬT THỪA KẾ (Inheritance) 95 Giới thiệu chung 96 Đơn thừa kế, hàm thiết lập, hàm chép 96 Tính đa hình (polymorphism) 102 Hàm hủy bỏ ảo 106 Đa thừa kế 110 Lớp sở ảo .113 Tính trừu tượng (Abstraction) (Lớp trừu tượng-Hàm ảo túy) 121 BÀI KHN HÌNH (TEMPLATE) – XỬ LÝ LỖI (Exception Handling) 126 Khn Hình (Template) 126 Khn hình hàm 126 Khn hình lớp 128 Xử Lý Lỗi (Exception Handling) 129 TÀI LIỆU THAM KHẢO 133 Bài : UML VÀ NHỮNG MỞ RỘNG CỦA C++ Tổng quan UML • UML (Unified Model Language) ngơn ngữ dùng cho phân tích thiết kế hướng đối tượng (OOAD – Object Oriented Analys and Design) • Được trì phát triển OMG (Object Management Group), Jacobson, Booch, Rumbaugh sáng lập Ngoài có hàng trăm tập đồn lớn khác bảo trợ phát triển • UML 2.0 có 13 loại biểu đồ để thể khung nhìn khác (View) hệ thống • Các biểu đồ UML cho ta nhìn rõ hệ thống (cả nhìn tĩnh động) • Hiện UML sử dụng phổ biến dự án phần mềm • UML thể phương pháp phân tích hướng đối tượng nên khơng lệ thuộc ngơn ngữ LT • Có nhiều cơng cụ phần mềm hỗ trợ phân tích thiết kế dùng UML • Nhiều cơng cụ sinh mã từ UML ngược lại (từ mã thành UMLReverse Eng) • UML khơng phải ngơn ngữ lập trình UML ngơn ngữ dùng để: • Trực quan hóa (Visualizing) • Đặc tả (Specifying) • Xây dựng (Constructing) • Viết tài liệu (Documenting) Một số Case tool (Cơng cụ) hỗ trợ UML • Rational Rose (của hãng Rational) • Visual Paradiagm • Microsoft Visio • Power designer • Visual Case • Pacestar UML Diagrammer • … Biểu đồ ca sử dụng (Use Case Diagram) • Mô tả chức hệ thống dựa quan điểm người sử dụng • Mơ tả tương tác người dùng hệ thống • Cho biết hệ thống sử dụng ? Biểu đồ Lớp (Class Diagram) • • • • Là biểu đồ quan trọng Mô tả đối tượng mối quan hệ chúng hệ thống Mô tả thuộc tính hành vi (Behavior) đối tượng Có biểu đồ lớp mức phân tích mức cài đặt Biểu đồ lớp mức phân tích mức thiết kế: Quan hệ phụ thuộc (Dependence) Use case A gọi Include B xử lý A có gọi đến B lần Quan hệ phụ thuộc (Dependence) < Extend > Use case B gọi Exntend A use case B gọi A thỏa mãn điều kiện Quan hệ tổng quát hóa (thừa kế) Use case A gọi Generalization B B trường hợp riêng A (B kế thừa A) Còn gọi quan hệ Là (Is a) Quan hệ kết hợp Association Thể ứng với lớp A có (chứa, dạy, có, mua, đặt, ) phần tử lớp B? Quan hệ Aggregation Quan hệ Aggregation : Thể lớp A bao gồm lớp B Lớp B tồn độc lập mà khơng cần lớp A Quan hệ Composition Quan hệ Composition: thể lớp A bao hàm lớp B Nhưng lớp B tồn độc lập (Tức không thuộc lớp nào) Biểu đồ Tuần tự (Sequence Diagram ) • • • Mơ tả tương tác đối tượng theo trình tự thời gian Có liên kết chặt chẽ với biểu đồ lớp Mỗi biểu đồ mơ tả tình xử lý 10 - T T Mặc dù lớp A có thêm lớp cha O khai báo hàm thiết lập lớp D khơng có goi lại hàm thiết lập lớp O Lớp D có hàm display(), lớp A lớp O Lời gọi hàm display không kèm theo tên lớp hàm A::display()( B::display(), C::display()) khơng phải hàm O::display() Trình tự thực BƯỚC CÔNG VIỆC Xây dựng lớp O THỰC HIỆN PHƯƠN G TIỆN Từ khóa class, thành phần lớp, hàm khởi dựng, phương thức Xây dựng lớp A kế thừa O Từ khóa class, tốn tử :, thành phần lớp, hàm khởi dựng, phương thức 118 Xây dựng lớp B kế thừa ảo lớp A Từ khóa class, virtual, thành phần lớp, hàm khởi dựng, phương thức Xây dựng lớp C kế thừa ảo lớp A Từ khóa class, virtual, thành phần lớp, hàm khởi dựng, phương thức Xây dựng lớp D kế thừa lớp B C Sử dụng Từ khóa class, thành phần lớp, hàm khởi dựng, phương thức Đối tượng, Lời gọi hàm 119 Tính trừu tượng (Abstraction) (Lớp trừu tượng-Hàm ảo túy) 120 Trình tự thực T T BƯỚC CÔNG VIỆC Xây dựng hàm ảo túy Xây dựng lớp point THỰC HIỆN PHƯƠN G TIỆN Từ khóa class, virtual Từ khóa class, tốn tử :, thành phần lớp, hàm khởi dựng, phương thức Sử dụng Đối tượng, Lời gọi hàm Ví dụ tính trừu tượng 121 122 - Ta xây dựng danh sách chứa đối tượng khác nhau( khơng có kiểu lớp) Xây dựng lớp point , lớp complex lớp trừu tượng mere nhằm đại diện lớp Trình tự thực T T BƯỚC CÔNG VIỆC Xây dựng cấu trúc node THỰC HIỆN PHƯƠN G TIỆN Từ khóa struct Hàm ảo Từ khóa class, virtual 123 Xây dựng lớp point Các thành phần lớp, toán tử kế thừa Xây dựng lớp comple x Lớp danh sách Các thành phần lớp, toán tử kế thừa Sử dụng Đối tượng, lời gọi hàm Các thành phần lớp, câu lệnh thực thi 124 Bài KHN HÌNH (Template) – XỬ LÝ LỖI (Exception handling) Khn Hình (Template) Khn hình hàm cho phép sử dụng tên để thực công việc khác – Khn hình hàm – Khn hình lớp Khn hình hàm Khn hình hàm cho kiểu liệu sở: 125 Trình tự thực T T BƯỚC CƠNG VIỆC Xây dựng khn hình hàm Sử dụng THỰC HIỆN PHƯƠN G TIỆN Từ khóa template, , lệnh thực thi Các đối tượng, lệnh thực thi Khn hình cho kiểu liệu lớp: 126 Trình tự thực T T BƯỚC CÔNG VIỆC Xây dựng khn hình hàm THỰC HIỆN PHƯƠN G TIỆN Từ khóa template, , lệnh thực thi Sử dụng Các đối tượng, lệnh thực thi Khn hình lớp Trình tự thực 127 BƯỚC CƠNG VIỆC Xây dựng khn hình lớp Sử dụng T T THỰC HIỆN PHƯƠN G TIỆN Từ khóa template, class, , lệnh thực thi Các đối tượng, lệnh thực thi Xử Lý Lỗi (Exception Handling) 128 Trình tự thực T T BƯỚC CÔNG VIỆC Xây dựng lớp Loi_chia _0 THỰC HIỆN PHƯƠN G TIỆN Từ khóa class Hàm tìm Timphan so Phương thức, lệnh thực thi Xử lý lỗi Lệnh try {} catch() {}, lệnh thực thi - Dùng cấu trúc: try{ //phương thức phát lỗi } catch(lớp xử lý lỗi) { // Lệnh bắt lỗi } - Trong phương thức phát lỗi có lệnh throw() 129 - Sử dụng thuộc tính lớp Loi_chia_0 để thơng báo lỗi Truyền đối số cho throw() catch() Trình tự thực T T BƯỚC CÔNG VIỆC Xây dựng lớp Loi_chia_ THỰC HIỆN PHƯƠN G TIỆN Từ khóa class, lệnh thực thi 130 Hàm tìm Timphans o Xử lý lỗi Phương thức, lệnh thực thi Lệnh try {} catch() {}, lệnh thực thi 131 TÀI LIỆU THAM KHẢO [1] “Lập trình hướng đối tượng với C++”, Phạm Văn Ất, Nhà xuất Giao Thông Vận Tải, 2005 [2] “Lập trình hướng đối tượng”, Trần Đan Thư - Đinh Bá Tiến - Nguyễn Tấn Trần Minh Khang, Nhà xuất Khoa Học & Kỹ Thuật, 2010 [3] “Phát triển hệ thống hướng đối tượng với UML 2.0 C +”+, Nguyễn Văn Ba, Nhà xuất Đại Học Quốc Gia Hà Nội, 2005 [4] “Thinking in C++”, Bruce Eckel, Prentice Hall Inc, 2000 [5] “Beginning Visual C++ 2005”, Ivor Horton, Wiley Publising Inc, 2006 132