Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 26 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
26
Dung lượng
0,93 MB
Nội dung
Chương 2: 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 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 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 Hàm dựng Khi đối tượng vừa tạo: Giá trị 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 Hàm dựng đời!! 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 void main() { PhanSo PhanSo PhanSo } p1(1, 2); p2(2, 3); *p3 = new PhanSo(2, 3); 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 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 void main() { PhanSo p; PhanSo q = new PhanSo; } Hàm dựng Hàm dựng chép (copy constructor): Có tham số đối tượng lớp Dùng tạo đối tượng từ đối tượng loại Lớp 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 void main() { PhanSo PhanSo PhanSo } p1(1, 2); p2(p1); p3 = p2; 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 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 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 Rò Ròrỉrỉbộ bộnhớ!! nhớ!! Hàm hủy vào cuộc!! 10 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 12 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 13 Hàm toán tử Ưu điểm: Thực toán tử 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ử 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 14 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 Ngôi toán tử 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 nhau!! Phương pháp lập trình hướng đối tượng 15 Hàm toán tử Toán tử đị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 >, =, Toán tử = Toán tử [ ] Phương pháp lập trình hướng đối tượng 18 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ó 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 19 Tóm tắt Hàm toán tử: Hàm có tên 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 20 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 21 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ử 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: >, =, >, , =, >, , =, >, , =, >, >, [...]... nghĩa lại toán tử Ràng buộc: Ngôi của toán tử giữ nguyên Độ ưu tiên của toán tử không đổi Không thể tạo toán tử mới Không thể định nghĩa lại toán tử cho kiểu cơ bản Có 2 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 20 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 21 Bài tập Bài tập 3. 1: Bổ... Toán tử = Toán tử [ ] Phương pháp lập trình hướng đối tượng 18 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 khi 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 bộ nhớ cho đối tượng Tự động gọi khi đối tượng bị hủy Mỗi lớp có duy nhất một hàm hủy Phương pháp lập trình hướng đối tượng 19 Tóm tắt Hàm toán tử: Hàm có tên là toán tử Dùng... so); Phương pháp lập trình hướng đối tượng 13 Hàm toán tử Ưu điểm: Thực hiện toán tử trên kiểu dữ 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ử mới Không thể định nghĩa lại toán tử trên kiểu cơ bản Ngôi của toán tử giữ nguyên Độ ưu tiên của toán tử không đổi Đôi khi gây nhầm lẫn!! Phương pháp lập trình hướng đối. .. 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 con 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 17 Hàm toán tử Dr Guru khuyên: Những lưu ý khi định nghĩa lại toán tử: Ngôi: số lượng tham số Toán hạng: kiểu dữ liệu tham số Kết quả: kiểu trả về Ví dụ: Toán tử > Toán. .. 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 12 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 hiện toán tử PhanSo p1, p2; PhanSo p3 = p1 + p2; Định nghĩa nhiều cách thực hiện khác nhau cho toán tử bằng nạp chồng hàm PhanSo... nhau!! Phương pháp lập trình hướng đối tượng 15 Hàm toán tử Toán tử có thể định nghĩa lại: Ngôi 1 Ngôi (Unary) 2 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 >, =, >, , =, >, , =, >, =, >, ... 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 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 Hàm dựng Khi đối tượng. .. độc lập Toán tử thuộc lớp Phương pháp lập trình hướng đối tượng 20 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 21 Bài tập Bài tập 3. 1: Bổ sung... Lấy số mảng [] Phương pháp lập trình hướng đối tượng 16 Hàm toán tử Toán tử đị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 #