Thành phần tĩnh Thành phần của lớp class members: Thành phần đối tượng instance members.. Tóm tắt Thành phần tĩnh: Thuộc tính và phương thức thuộc phạm vi lớp.. Các đối tượng dùn
Trang 1Chương 3: Thành phần
tĩnh, Ba vấn đề con trỏ
Trang 2Nội dung
Thành phần tĩnh.
Ba vấn đề con trỏ.
Bài tập.
Trang 3Nội dung
Ba vấn đề con trỏ.
Bài tập.
Trang 4Thành phần tĩnh
Thành phần của lớp (class members):
Thành phần đối tượng (instance members).
Thuộc tính và phương thức thông thường
Mỗi đối tượng có bản sao riêng
Trang 5PhanSo p1(1, 2);
PhanSo p2(2, 3);
int x1 = PhanSo::layGiaTriLN(); int x2 = p1.layGiaTriLN();
}
Trang 6Nội dung
Thành phần tĩnh.
Bài tập.
Trang 7Array a1(5);
… }
Trang 9Array a1(5);
… }
Trang 10Array a1(5);
Array a2(a1);
… }
Trang 11Dùng chung
bộ nhớ!!
Dùng chung
Trang 12m_data = new int[m_size];
for (int i = 0; i < m_size; i++)
m_data[ i ] = a.m_data[ i ];
}
Trang 13Array a1(5);
Array a2(6);
… a2 = a1;
… }
Trang 15Array a1(5);
Array a2(6);
… a2 = a1;
Array & Array::operator =(const Array &a) {
delete m_data;
m_size = a.m_size;
m_data = new int[m_size];
for (int i = 0; i < m_size; i++)
m_data[ i ] = a.m_data[ i ];
return *this;
}
Trang 16Ba vấn đề con trỏ
Dr Guru khuyên: luật “ba ông lớn”
Lớp có thuộc tính con trỏ, phải luôn kèm theo:
Hàm hủy: thu hồi bộ nhớ
Trang 17Tóm tắt
Thành phần tĩnh:
Thuộc tính và phương thức thuộc phạm vi lớp.
Các đối tượng dùng chung thành phần tĩnh của lớp.
Phương thức tĩnh chỉ truy xuất được thành phần tĩnh.
Trang 18Nội dung
Thành phần tĩnh.
Ba vấn đề con trỏ.
Bài tập.
Trang 19Bài tập
Bài tập 5.1:
Dùng thành phần tĩnh để xây dựng bộ đếm đối tượng cho lớp Time
(Gợi ý)
Khai báo thuộc tính tĩnh lưu số đối tượng được tạo ra
Tăng giá trị thuộc tính này khi khởi tạo đối tượng
Giảm giá trị thuộc tính này khi hủy đối tượng
Xây dựng phương thức tĩnh để truy xuất thuộc tính này
Trang 20Bài tập
Bài tập 5.2:
Bổ sung vào lớp Date phương thức tĩnh cho phép tạo đối tượng từ
chuỗi “dd/MM/yyyy” cho trước
(Gợi ý)
Phân tích chuỗi “dd/MM/yyyy” ra thành ngày, tháng, năm
Khởi tạo đối tượng từ ngày, tháng, năm vừa phân tích
Trả về đối tượng vừa tạo
Trang 21Bài tập
Bài tập 5.3:
Xây dựng lớp đa thức có những phương thức sau:
(Nhóm tạo hủy)
Khởi tạo mặc định đa thức = 0
Khởi tạo với bậc và mảng hệ số cho trước
Khởi tạo từ một đối tượng đa thức khác
Hủy đa thức, thu hồi bộ nhớ
(Nhóm truy xuất thông tin)
Lấy bậc đa thức
Lấy hệ số tại bậc nào đó
Trang 23Bài tập
Bài tập 5.4:
Xây dựng lớp chuỗi có những phương thức sau:
(Nhóm tạo hủy)
Khởi tạo mặc định chuỗi rỗng
Khởi tạo với từ chuỗi ký tự cho trước
Khởi tạo từ một đối tượng chuỗi khác
Hủy chuỗi, thu hồi bộ nhớ
(Nhóm truy xuất thông tin)
Lấy chiều dài chuỗi