lap trinh huong doi tuong

26 7 0
lap trinh huong doi tuong

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

class PhanSo { private: int m_tuSo; int m_mauSo; public: PhanSo; }; Phương pháp lập trình hướng đối tượng – GV.. Nguyễn Minh Huy..[r]

(1)Hàm dựng, Hàm hủy, Hàm toán tử Phương pháp lập trình hướng đối tượng – GV Nguyễn Minh Huy (2) Nội dung     Hàm dựng Hàm hủy Hàm toán tử Bài tập Phương pháp lập trình hướng đối tượng – GV Nguyễn Minh Huy (3) Nội dung     Hàm dựng Hàm hủy Hàm toán tử Bài tập Phương pháp lập trình hướng đối tượng – GV Nguyễn Minh Huy (4) Hàm dựng  Khi đối tượng vừa tạo: Giá trị các thuộc tính bao nhiêu?  Đối tượng cần có thông tin ban đầu  Giải pháp:    PhanSo Tử số?? Mẫu số?? Xây dựng phương thức cung cấp thông tin  Người dùng quên gọi?! “Làm khai sinh” cho đối tượng! HocSinh Họ tên?? Điểm văn?? Điểm toán?? Phương pháp lập trình hướng đối tượng – GV Nguyễn Minh Huy Hàm dựng đời!! (5) Hàm dựng  Tính chất hàm dựng (constructor): Bắt buộc gọi tạo đối tượng  Có thể nạp chồng nhiều hàm dựng  Trong C++, hàm dựng có tên trùng tên lớp  class PhanSo { private: int m_tuSo; int m_mauSo; public: PhanSo(int tuSo, int mauSo); PhanSo(int giaTri); }; Phương pháp lập trình hướng đối tượng – GV Nguyễn Minh Huy void main() { PhanSo PhanSo PhanSo } p1(1, 2); p2(2, 3); *p3 = new PhanSo(2, 3); (6) Hàm dựng  Hàm dựng mặc định (default constructor): Không có tham số  Dùng tạo đối tượng với thông tin mặc định  Lớp không có hàm dựng  Trình biên dịch cung cấp  class PhanSo { private: int m_tuSo; int m_mauSo; public: PhanSo(); }; Phương pháp lập trình hướng đối tượng – GV Nguyễn Minh Huy void main() { PhanSo p; PhanSo q = new PhanSo; } (7) Hàm dựng  Hàm dựng chép (copy constructor): Có tham số là đối tượng cùng lớp  Dùng tạo đối tượng từ đối tượng cùng loại  Lớp không có hàm dựng chép  Trình biên dịch cung cấp  class PhanSo { private: int m_tuSo; int m_mauSo; public: PhanSo(const PhanSo &p); }; Phương pháp lập trình hướng đối tượng – GV Nguyễn Minh Huy void main() { PhanSo PhanSo PhanSo } p1(1, 2); p2(p1); p3 = p2; (8) Hàm dựng  Dr Guru khuyên:  Một lớp nên có tối thiểu hàm dựng:    Hàm dựng mặc định Hàm dựng có đầy đủ tham số Hàm dựng chép class PhanSo { private: int m_tuSo; int m_mauSo; public: PhanSo(); PhanSo(int tuSo, int mauSo); PhanSo(const PhanSo &p); }; Phương pháp lập trình hướng đối tượng – GV Nguyễn Minh Huy (9) Nội dung     Hàm dựng Hàm hủy Hàm toán tử Bài tập Phương pháp lập trình hướng đối tượng – GV Nguyễn Minh Huy (10) Hàm hủy  Vấn đề rò rỉ nhớ (memory leak): Khi hoạt động, đối tượng có cấp phát nhớ  Khi hủy đi, nhớ không thu hồi!!  Giải pháp:    Xây dựng phương thức thu hồi  Người dùng quên gọi! Làm “khai tử” cho đối tượng HocSinh Họ tên Điểm văn Điểm toán Thu hồi Phương pháp lập trình hướng đối tượng – GV Nguyễn Minh Huy Rò Ròrỉrỉbộ bộnhớ!! nhớ!! Hàm hủy vào cuộc!! 10 (11) Hàm hủy  Tính chất hàm hủy (destructor): Tự động gọi đối tượng bị hủy  Mỗi lớp có hàm hủy  Trong C++, hàm hủy có tên ~<Tên lớp>  class HocSinh { private: char *m_hoTen; float m_diemVan; float m_diemToan; public: ~HocSinh() { delete m_hoTen; } }; Phương pháp lập trình hướng đối tượng – GV Nguyễn Minh Huy void main() { HocSinh h; HocSinh *p = new HocSinh; delete p; } 11 (12) Nội dung     Hàm dựng Hàm hủy Hàm toán tử Bài tập Phương pháp lập trình hướng đối tượng – GV Nguyễn Minh Huy 12 (13) Hàm toán tử  Khái niệm hàm toán tử: Có thể dùng toán tử đặt tên hàm?  Trong C++, dùng từ khóa operator  PhanSo operator +(const PhanSo &p1, const PhanSo &p2);  Hệ quả?  Định nghĩa lại cách thực toán tử PhanSo p1, p2; PhanSo p3 = p1 + p2;  Định nghĩa nhiều cách thực khác cho toán tử nạp chồng hàm PhanSo operator +(const PhanSo &p, int so); float opeartor +(const PhanSo &p, float so); Phương pháp lập trình hướng đối tượng – GV Nguyễn Minh Huy 13 (14) Hàm toán tử  Ưu điểm:  Thực toán tử trên kiểu liệu tự định nghĩa PhanSo p1, p2; PhanSo p3 = p1 + p2;  HocSinh h1, h2; if (h1 > h2) h1++; Hạn chế: Không thể tạo toán tử  Không thể định nghĩa lại toán tử trên kiểu  Ngôi toán tử giữ nguyên  Độ ưu tiên toán tử không đổi  Đôi gây nhầm lẫn!!  Phương pháp lập trình hướng đối tượng – GV Nguyễn Minh Huy 14 (15) Hàm toán tử  Phân loại hàm toán tử:  Toán tử độc lập:   Không thuộc lớp nào Ngôi toán tử là số tham số truyền vào PhanSo operator +(const PhanSo &p1, const PhanSo &p2); bool operator >(const PhanSo &p1, const PhanSo &p2);  Toán tử thuộc lớp:   Là phương thức lớp Ngôi toán tử: đối tượng lớp + số tham số PhanSo PhanSo::operator +(const PhanSo &p); bool PhanSo::operator >(const PhanSo &p);  Cách sử dụng loại là nhau!! Phương pháp lập trình hướng đối tượng – GV Nguyễn Minh Huy 15 (16) Hàm toán tử  Toán tử có thể định nghĩa lại: Ngôi Ngôi (Unary) Ngôi (Binary) Nhóm Toán tử Tăng giảm ++, Dấu số học +, - Logic !, ~ Con trỏ *, & Ép kiểu int, float, double, … Số học +, -, *, /, %, +=, -=, *=, /=, %= So sánh >, <, ==, >=, <=, != Logic &&, ||, &, | Nhập xuất <<, >> Gán = Lấy số mảng [] Phương pháp lập trình hướng đối tượng – GV Nguyễn Minh Huy 16 (17) Hàm toán tử  Toán tử không thể định nghĩa lại: Toán tử Ý nghĩa Truy xuất phần tử .* Truy xuất trỏ phần tử :: Toán tử :: ?: Toán tử điều kiện # Chỉ thị tiền xử lý ## Chỉ thị tiền xử lý Phương pháp lập trình hướng đối tượng – GV Nguyễn Minh Huy 17 (18) Hàm toán tử  Dr Guru khuyên:  Những lưu ý định nghĩa lại toán tử:     Ngôi: số lượng tham số Toán hạng: kiểu liệu tham số Kết quả: kiểu trả Ví dụ: Toán tử >  Toán tử =  Toán tử [ ]  Phương pháp lập trình hướng đối tượng – GV Nguyễn Minh Huy 18 (19) Tóm tắt  Hàm dựng: Khởi tạo thông tin ban đầu cho đối tượng  Bắt buộc gọi tạo đối tượng  Mỗi lớp có thể có nhiều hàm dựng   Hàm hủy: Dọn dẹp nhớ cho đối tượng  Tự động gọi đối tượng bị hủy  Mỗi lớp có hàm hủy  Phương pháp lập trình hướng đối tượng – GV Nguyễn Minh Huy 19 (20) Tóm tắt  Hàm toán tử: Hàm có tên là toán tử  Dùng định nghĩa lại toán tử  Ràng buộc:       Ngôi toán tử giữ nguyên Độ ưu tiên toán tử không đổi Không thể tạo toán tử Không thể định nghĩa lại toán tử cho kiểu Có loại hàm toán tử:   Toán tử độc lập Toán tử thuộc lớp Phương pháp lập trình hướng đối tượng – GV Nguyễn Minh Huy 20 (21) Nội dung     Hàm dựng Hàm hủy Hàm toán tử Bài tập Phương pháp lập trình hướng đối tượng – GV Nguyễn Minh Huy 21 (22) Bài tập  Bài tập 3.1: Bổ sung vào lớp phân số phương thức sau: (Nhóm tạo hủy)  Khởi tạo mặc định phân số =  Khởi tạo với tử và mẫu cho trước  Khởi tạo từ giá trị nguyên cho trước  Khởi tạo từ phân số khác (Nhóm toán tử)  Toán tử số học: +, -, *, /, =, +=, -=  Toán tử so sánh: >, <, ==, >=, <=, !=  Toán tử ngôi: ++, (tăng, giảm 1)  Toán tử ép kiểu: (float), (int)  Toán tử nhập, xuất: >>, << Phương pháp lập trình hướng đối tượng – GV Nguyễn Minh Huy 22 (23) Bài tập  Bài tập 3.2: Bổ sung vào lớp số phức phương thức sau: (Nhóm tạo hủy)  Khởi tạo mặc định số phức =  Khởi tạo với phần thực và phần ảo cho trước  Khởi tạo từ giá trị thực cho trước  Khởi tạo từ số phức khác (Nhóm toán tử)  Toán tử số học: +, -, *, /, =, +=, -=  Toán tử so sánh: >, <, ==, >=, <=, !=  Toán tử ngôi: ++, (tăng, giảm 1)  Toán tử ép kiểu: (float), (int)  Toán tử nhập, xuất: >>, << Phương pháp lập trình hướng đối tượng – GV Nguyễn Minh Huy 23 (24) Bài tập  Bài tập 3.3: Bổ sung vào lớp đơn thức phương thức sau: (Nhóm tạo hủy)  Khởi tạo mặc định đơn thức =  Khởi tạo với hệ số và số mũ cho trước  Khởi tạo từ đơn thức khác (Nhóm toán tử)  Toán tử số học: +, -, *, /, =, +=, -=  Toán tử so sánh: >, <, ==, >=, <=, !=  Toán tử ngôi:    ++, (tăng, giảm bậc) ! (đạo hàm), ~ (nguyên hàm) Toán tử nhập, xuất: >>, << Phương pháp lập trình hướng đối tượng – GV Nguyễn Minh Huy 24 (25) Bài tập  Bài tập 3.4: Bổ sung vào lớp học sinh phương thức sau: (Nhóm tạo hủy)  Khởi tạo với họ tên và điểm văn, toán cho trước  Khởi tạo với họ tên cho trước, điểm văn, toán =  Khởi tạo từ học sinh khác  Hủy đối tượng học sinh, thu hồi nhớ (Nhóm toán tử)  Toán tử so sánh (ĐTB): >, <, ==, >=, <=, !=  Toán tử gán: =  Toán tử nhập, xuất: >>, << Phương pháp lập trình hướng đối tượng – GV Nguyễn Minh Huy 25 (26) Bài tập  Bài tập 3.5: Bổ sung vào lớp mảng phương thức sau: (Nhóm tạo hủy)  Khởi tạo mặc định mảng kích thước =  Khởi tạo với kích thước cho trước, các phần tử =  Khởi tạo từ mảng int [ ] với kích thước cho trước  Khởi tạo từ đối tượng IntArray khác  Hủy đối tượng mảng, thu hồi nhớ (Nhóm toán tử)  Toán tử gán: =  Toán tử lấy phần tử: [ ]  Toán tử ép kiểu: (int *)  Toán tử nhập, xuất: >>, << Phương pháp lập trình hướng đối tượng – GV Nguyễn Minh Huy 26 (27)

Ngày đăng: 07/06/2021, 21:14

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan