Bai 08 - Lớp
Trang 1Bộ môn Khoa học máy tính Khoa Công nghệ thông tin Học viện Kỹ thuật quân sự
Trang 18Cần thiết trong một số trường hợp:
Cách gọi hàm trong thừa kế.
Tên thành viên bị che bởi biến cục bộ.
Ví dụ: Point(int xVal, int yVal) {
Point::xVal = xVal;
Point::yVal = yVal;
}
Trang 20Image(const int w, const int h);
private:
const int width;
const int height;
const int width = 256;
const int height = 168;
Trang 21 Được phép gọi trên hằng đối tượng.
Không được thay đổi giá trị dữ liệu thành viên
class Set { public:
Set(void){ card = 0; }
Bool Member(const int) const;
void AddElem(const int);
s.AddElem(10); // SAI
s.Member(10); // ok }
Trang 22// danh sách liên kết tất cả Window
static Window *first;
// con trỏ tới window kế tiếp
Trang 23Thành viên tĩnh
Chương 7: Lớp
23
Hàm thành viên tĩnh:
Tương đương với hàm toàn cục.
Gọi thông qua:
Window::PainProc();
}
Truy xuất hàm thành viên tĩnh
Khai báo Định nghĩa hàm thành viên tĩnh
Trang 24Thành viên tham chiếu
Trang 25Thành viên là đối tượng của 1 lớp
Chương 7: Lớp
25
Dữ liệu thành viên có thể có kiểu:
Dữ liệu (lớp) chuẩn của ngôn ngữ.
Lớp do người dùng định nghĩa (có thể là chính lớp đó).
class Point { …… };
class Rectangle { public:
Rectangle (int left, int top, int right, int bottom);
Trang 26Mảng các đối tượng
Chương 7: Lớp
26
1 Sử dụng hàm xây dựng không đối số (hàm
xây dựng mặc nhiên - default constructor).
VD: Point pentagon[5];
2 Sử dụng bộ khởi tạo mảng:
VD: Point triangle[3] = { Point(4,8), Point(10,20), Point(35,15) };
Ngắn gọn:
Set s[4] = { 10, 20, 30, 40 };
tương đương với:
Set s[4] = { Set(10), Set(20), Set(30), Set(40) };
Trang 27private:
Point *vertices; // các đỉnhint nVertices; // số các đỉnh};
Không cần biết kích thước mảng
Trang 30Point (int, int);
void OffsetPt(int, int);
int x, y;
};
class Point { public:
Point(int, int);
void OffsetPt(int, int);
int x, y;
};
Point p = { 10, 20 }; Có thể khởi tạo dạng này
nếu không có định nghĩa
hàm xây dựng
Trang 31enum ObjType {intObj, realObj, strObj, listObj};
ObjType type; // kiểu đối tượng Value val; // giá trị của đối tượng
//
};
Trang 32Các trường bit
Điều khiển đối tượng ở mức bit.
VD: Truy xuất các bit trong header của gói tin.
Chương 7: Lớp 32
typedef unsigned int Bit;class Packet {
Bit type : 2; // rộng 2 bit
Bit acknowledge : 1; // rộng 1 bit
Bit channel : 4; // rộng 4 bit
Bit sequenceNo : 4; // rộng 4 bit Bit moreData : 1; // rộng 1 bit