CHƯƠNG 11: ĐỐI TƯỢNG VÀ LỚP
Nội dung
Đối tượng
Lớp
Con trỏ this
Hàm thiết lập
Hàm hy bỏ
Hàm thiết lập sao chép
Các thành phần tĩnh
Hàm bạn và lớp bạn
Đối ợng
Đối ợng là một khái niệm trong lập trình hướng đối tượng biểu thị sự liên kết
giữa dữ liệu các thủ tục (gọi là phương thức) thao tác trên dữ liệu
ĐỐI TƯỢNG = DỮ LIỆU + PHƯƠNG THỨC
Lớp
Lớp là một mô tả nhóm các đối ợng cùng bản chất, ngược lại mỗi một đối
tượng là một biểu hiện cụ thể cho những tả trừu tượng đó.
khai báo lớp
class <tên lớp>
{
private:
<khai báo các thành phần riêng trong từng đối tượng>
public:
<khai báo các thành phần công cộng trong từng đối ợng>
};
<định nga các hàm thành phần chưa được định nga bên trong khai báo lớp>
Các thành phần của lớp thể là thành phần dữ liệu (thuộc tính) hoặc hàm thành
phần (phương thức).
Thành phần dữ liệu được khai báo giống như khai báo biến
Hàm thành phần được khai báo giống như khai báo hàm trong C. Có hai
cách định nghĩa một hàm thành phần: định nghĩa trong lớp và ngoài lớp.
Tất cả các thành phần được liệt kê sau từ khóa private hoặc protected ch
được truy nhập bởi các thành phần bên trong lớp đó. Còn tất cả các thành
phần được liệt kê sau tkhóa public có thđược truy nhập trong bất k
hàm nào.
Ví d 1:
Class Diem
{
private:
int x, y; // Các thành phần dữ liệu riêng
public:
//Các hàm thành phần công cộng
void Nhap();
void Xuat();
};
//Định nghĩa các hàm thành phần bên ngoài lớp
void Diem::Nhap()
{ cout <<“Nhap toa do:”;
cin >> x >> y;
}
void Diem::Xuat()
{ cout << x <<“,” << y <<“\n”;
}
//Hàm chính
void main()
{
Diem a; //Khai báo một đối tượng a thuộc lớp Diem
a.Nhap(); //Đối tượng a thực hiện lời gọi hàm thành phần Nhap()
a.Xuat();
}
Chú ý: Lời gọi hàm thành phần luôn có một và chỉ một tham số ngầm định
đối tượng thực hiện lời gọi hàm. Như vậy các thành phần dữ liệu viết
trong các hàm thành phần được hiểu thuộc đối tượng dùng m tham số
ngầm định trong lời gọi hàm.
Con trỏ this
C++ sử dụng con trỏ đặc biệt this trong các hàm thành phần. Con trỏ này
luôn trỏ tới đối tượng dùng m tham số ngầm định trong lời gọi hàm thành
phần.
Ví d 2: Các hàm thành phần Nhap() và Xuat() có thviết theo cách khác
như sau
void Diem::Nhap()
{
cout <<“Nhap toa do:”;
cin >> this->x >> this->y;
}
void Diem::Xuat()
{
cout << this->x <<“,” << this->y <<“\n”;
}