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
767,5 KB
Nội dung
1Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy Hàm dựng, Hàm dựng, Hàm hủy, Hàm hủy, Hàm toán tử Hàm toán tử 2 Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy Nội dung Nội dung Hàm dựng. Hàm dựng. Hàm hủy. Hàm hủy. Hàm toán tử. Hàm toán tử. Bài tập. Bài tập. 3 Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy Nội dung Nội dung Hàm dựng. Hàm dựng. Hàm hủy. Hàm hủy. Hàm toán tử. Hàm toán tử. Bài tập. Bài tập. 4 Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy Hàm dựng Hàm dựng Khi đối tượng vừa được tạo: Khi đối tượng vừa được tạo: Giá trị các thuộc tính bằng bao nhiêu? Giá trị các thuộc tính bằng bao nhiêu? Đối tượng cần có thông tin ban đầu. Đối tượng cần có thông tin ban đầu. Giải pháp: Giải pháp: Xây dựng phương thức cung cấp thông tin. Xây dựng phương thức cung cấp thông tin. Người dùng quên gọi?! Người dùng quên gọi?! “ “ Làm khai sinh” cho đối tượng! Làm khai sinh” cho đối tượng! PhanSo Tử số?? Mẫu số?? PhanSo Tử số?? Mẫu số?? HocSinh Họ tên?? Điểm văn?? Điểm toán?? HocSinh Họ tên?? Điểm văn?? Điểm toán?? Hàm dựng ra đời!! Hàm dựng ra đời!! 5 Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy Hàm dựng Hàm dựng Tính chất hàm dựng (constructor): Tính chất hàm dựng (constructor): Tự động thực hiện khi đối tượng được tạo. Tự động thực hiện khi đối tượng được tạo. Có thể nạp chồng nhiều hàm dự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. Trong C++, hàm dựng có tên trùng tên lớp. class PhanSo class PhanSo { { private: private: int int m_iTuSo; m_iTuSo; int int m_iMauSo; m_iMauSo; public: public: PhanSo(int iTuSo, int iMauSo); PhanSo(int iTuSo, int iMauSo); PhanSo(int iGiaTri); PhanSo(int iGiaTri); }; }; void main() void main() { { PhanSo p1(1, 2); PhanSo p1(1, 2); PhanSo *p2 = new PhanSo(5); PhanSo *p2 = new PhanSo(5); } } 6 Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy Hàm dựng Hàm dựng Hàm dựng mặc định (default constructor): Hàm dựng mặc định (default constructor): Khi lớp không có hàm dựng? Khi lớp không có hàm dựng? Trình biên dịch cung cấp hàm hựng mặc định. Trình biên dịch cung cấp hàm hựng mặc định. Tính chất: Tính chất: Không tham số. Không tham số. Khởi tạo mặc định các thuộc tính. Khởi tạo mặc định các thuộc tính. class PhanSo class PhanSo { { private: private: int int m_iTuSo; m_iTuSo; int int m_iMauSo; m_iMauSo; }; }; void main() void main() { { PhanSo p1; PhanSo p1; } } 7 Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy Hàm dựng Hàm dựng Hàm dựng sao chép (copy constructor): Hàm dựng sao chép (copy constructor): Có tham số là đối tượng cùng lớp. Có tham số là đối tượng cùng lớp. Dùng khởi tạo từ đối tượng cùng loại. Dùng khởi tạo từ đối tượng cùng loại. Lớp không có hàm dựng sao chép? Lớp không có hàm dựng sao chép? Trình biên dịch cung cấp. Trình biên dịch cung cấp. class PhanSo class PhanSo { { private: private: int int m_iTuSo; m_iTuSo; int int m_iMauSo; m_iMauSo; public: public: PhanSo(const PhanSo &p); PhanSo(const PhanSo &p); }; }; void main() void main() { { PhanSo p1(1, 2); PhanSo p1(1, 2); PhanSo p2(p1); PhanSo p2(p1); PhanSo p3 = p2; PhanSo p3 = p2; } } 8 Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy Hàm dựng Hàm dựng Dr. Guru khuyên: Dr. Guru khuyên: Một lớp nên có tối thiểu 3 hàm dựng sau: Một lớp nên có tối thiểu 3 hàm dựng sau: Hàm dựng mặc định. Hàm dựng mặc định. Hàm dựng có đầy đủ tham số. Hàm dựng có đầy đủ tham số. Hàm dựng sao chép. Hàm dựng sao chép. class PhanSo class PhanSo { private: { private: int int m_iTuSo; m_iTuSo; int int m_iMauSo; m_iMauSo; public: public: PhanSo(); PhanSo(); PhanSo(int iTuSo, int iMauSo); PhanSo(int iTuSo, int iMauSo); PhanSo(const PhanSo &p); PhanSo(const PhanSo &p); }; }; 9 Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy Nội dung Nội dung Hàm dựng. Hàm dựng. Hàm hủy. Hàm hủy. Hàm toán tử. Hàm toán tử. Bài tập. Bài tập. 10 Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy Hàm hủy Hàm hủy Vấn đề rò rỉ bộ nhớ (memory leak): Vấn đề rò rỉ bộ nhớ (memory leak): Khi hoạt động, đối tượng có cấp phát bộ nhớ. Khi hoạt động, đối tượng có cấp phát bộ nhớ. Khi hủy đi, bộ nhớ có được thu hồi? Khi hủy đi, bộ nhớ có được thu hồi? Làm cách nào để thu hồi? Làm cách nào để thu hồi? Xây dựng phương thức thu hồi. Xây dựng phương thức thu hồi. Người dùng quên gọi?! Người dùng quên gọi?! HocSinh Họ tên Điểm văn Điểm toán Thu hồi HocSinh Họ tên Điểm văn Điểm toán Thu hồi Rò rỉ bộ nhớ!! Rò rỉ bộ nhớ!! Hàm hủy vào cuộc!! Hàm hủy vào cuộc!! [...]... Toán tử [ ] Phương pháp lập trình hướng đối tượng – GV Nguyễn 18 Tóm tắt Hàm dựng: Khởi tạo thông tin ban đầu cho đối tượng Tự động thực hiện khi đối tượng được tạo lập 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 thực hiện 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 – GV Nguyễn 19 Tóm tắt Hàm toán... đị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 – GV Nguyễn 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 – GV Nguyễn 21 Bài tập Bài tập 3. 1: Bổ sung vào lớp phân số những phương thức sau: (Nhóm tạo hủy) Khởi tạo mặc định phân số = 0 Khởi tạo với tử và mẫu... trình hướng đối tượng – GV Nguyễn 24 Bài tập Bài tập 3. 4: Bổ sung vào lớp học sinh những 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 = 0 Khởi tạo từ một học sinh khác (Nhóm toán tử) Toán tử gán: = Toán tử so sánh (ĐTB): >, =, >, , =, >, 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 tượng. .. >>, > Gán = Lấy chỉ số mảng 2 Ngôi (Binary) Tăng giảm [] Phương pháp lập trình hướng đối tượng – GV Nguyễn 16 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 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 – GV Nguyễn 17 Hàm toán tử Dr Guru khuyên: Những lưu ý khi định nghĩa... học: +, -, *, /, =, +=, -= Toán tử so sánh: >, =, >, (const PhanSo &p1, const PhanSo &p2); Toán tử thuộc lớp: Là phương thức của lớp Ngôi của toán tử: đối tượng của lớp + số tham số PhanSo PhanSo::operator +(const PhanSo &p); bool PhanSo::operator >(const PhanSo &p); Cách sử dụng 2 loại là như nhau!! Phương pháp lập trình hướng đối tượng – GV Nguyễn 15 Hàm toán tử Toán tử có thể định nghĩa lại: Ngôi 1 Ngôi (Unary) Nhóm Toán tử ++, Dấu . trình hướng đối tượng – GV. Nguyễn Minh Huy Nội dung Nội dung Hàm dựng. Hàm dựng. Hàm hủy. Hàm hủy. Hàm toán tử. Hàm toán tử. Bài tập. Bài tập. 13 Phương pháp lập trình hướng đối tượng. trình hướng đối tượng – GV. Nguyễn Minh Huy Nội dung Nội dung Hàm dựng. Hàm dựng. Hàm hủy. Hàm hủy. Hàm toán tử. Hàm toán tử. Bài tập. Bài tập. 10 Phương pháp lập trình hướng đối tượng. tử. Bài tập. Bài tập. 3 Phương pháp lập trình hướng đối tượng – GV. Nguyễn Minh Huy Nội dung Nội dung Hàm dựng. Hàm dựng. Hàm hủy. Hàm hủy. Hàm toán tử. Hàm toán tử. Bài tập. Bài tập. 4 Phương