1. Trang chủ
  2. » Giáo Dục - Đào Tạo

OOP 03 constructor destructor and operators

27 60 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 27
Dung lượng 4,48 MB

Nội dung

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 tố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 p1(1, 2); PhanSo p2(2, 3); PhanSo *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 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 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 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 void main() { PhanSo p1(1, 2); PhanSo p2(p1); PhanSo 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 tố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ỉ nhớ!! Hàm hủy vào cuộc!! 10 Hàm toán tử ◼ Khái niệm hàm tốn tử: Có thể dùng tố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 tố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 tốn tử ◼ Khơng thể định nghĩa lại tốn tử kiểu ◼ Ngơi tốn tử giữ ngun ◼ Độ ưu tiên tố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 tố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 tố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 tốn tử ◼ Tốn tử định nghĩa lại: Ngôi Ngôi (Unary) Ngôi (Binary) Tốn tử Nhóm 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 tố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 tốn tử Khơng thể định nghĩa lại toán tử cho kiểu Có loại hàm tốn tử: ➢ ➢ Tốn tử độc lập Tố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 tốn tử) ◼ Tốn tử số học: +, -, *, /, =, +=, -= ◼ Toán tử so sánh: >, =, >, , =, >, , =, >, , =, >, >,

Ngày đăng: 03/11/2019, 18:23