Khái niệm : Lớp là tập hợp những đối tượng có chung một kiểu thuộc tính Lớp có 2 thành phần chính Thành viên dữ liệu ( Data member ) Hàm thành viên ( Member function ) Ví dụ : Định nghĩa lớp , mô tả và xử lý các điểm trên màn hình đồ họa . Lớp được đặt tên là “điểm “. include using namespace std; class diem { private: int x,y,m; public: void nhapsl(); void hien(); void set_value(int putpixel,int getbkcolor) { putpixel(x,y,getbkcolor()); }; void diem::nhap() { cout>x>>y; cout>m; } void set_value(int mau_ht,int ) { int mau_ht; mau_ht=getbkcolor(); putpixel(x,y,m); setcolor(mau_ht); }; void main() { diem a; a.nhap(); a.hien(); getch(); } } Hàm thành viên : định nghĩa bên trong lớp .
Trang 1LỚP , HÀM FRIEND VÀ CÁC THÀNH VIÊN TĨNH CỦA LỚP
TRƯỜNG ĐẠI HỌC QUẢNG BÌNH
KHOA KỸ THUẬT – CÔNG NGHỆ
NGÔN NGỮ LẬP TRÌNH C PLUS PLUS
Nhóm thực hiện :
1 Cao Đức Nghĩa
2 Mai Thanh Sang
3 Phạm Hữu Phú
4 Trần Nhật Linh
Trang 2Nội dung
LỚP
1
CÁC THÀNH VIÊN TĨNH CỦA LỚP
2
HÀM FRIEND ( HÀM BẠN )
3
Trang 31 Lớp
Chữ
Khái niệm :
Lớp là tập hợp những đối tượng có chung một kiểu thuộc tính
Lớp có 2 thành phần chính
Thành viên dữ liệu ( Data member )
Hàm thành viên ( Member function )
Ví dụ : Định nghĩa lớp , mô tả và xử lý các điểm trên màn hình đồ họa Lớp được đặt tên là “điểm “
Trang 4#include <iostream>
using namespace std;
class diem
{
private:
int x,y,m;
public:
void nhapsl();
void hien();
void set_value(int putpixel,int getbkcolor)
{
putpixel(x,y,getbkcolor());
};
void diem::nhap()
{
cout<<"\n nhap hoanh do (cot) va tung do ( hang ) cua diem :";cin>>x>>y; cout<<"\n nhap ma mau cua diem :";cin>>m;
}
void set_value(int mau_ht,int )
{
int mau_ht;
mau_ht=getbkcolor();
putpixel(x,y,m);
setcolor(mau_ht);
};
void main()
{
diem a;
a.nhap();
a.hien();
//getch();
}
}
Trang 5Thành viên của lớp
Thành viên dữ liệu được khai báo như sau :
Hàm thành viên : định nghĩa bên trong lớp
Trang 6Class <tên lớp>
{…
Public:
void set_value(int x , int y)
{
h = x ; w = y;
}
<Kiểu dữ liệu trả về><tên hàm>(<đối số>) {
//Thân hàm }
}
Trang 7 Hàm thành viên : định nghĩa bên ngoài lớp
<Kiểu dữ liệu trả về><tên lớp>::<tên hàm>(<đối số>)
{
//Thân hàm }
Class <tên lớp>
{
provite :
int h,w;
public :
void set_value(int x,int y) int area();
}
Trang 8CÁC THÀNH VIÊN TĨNH CỦA
LỚP
Mỗi đối tượng của một lớp có bản sao chép của chính nó
của tất cả các thành viên dữ liệu của lớp.
2
Trang 9Các thành viên tĩnh :
public
private
protected public :
• Có thể được truy cập thông qua bất kỳ đối tượng nào của lớp đó
• Hoặc truy cập thông qua tên lớp sử dụng toán tử định phạm vi
• Để truy cập một thành viên lớp tĩnh public khi các đối
tượng của lớp không tồn tại, đơn giản thêm vào đầu tên
lớp và toán tử định phạm vi cho thành viên dữ liệu
Trang 10private và protected :
viên public của lớp
Để truy cập một thành viên lớp
tĩnh private hoặc protected
khi các đối tượng của lớp không tồn tại, một hàm thành viên
public phải được cung cấp và hàm phải được gọi bởi thêm vào
đầu tên của nó với tên lớp và toán tử định phạm vi
Trang 11 Trong các trường hợp nhất định chỉ có duy nhất một bản chép thành viên dữ liệu đặc biệt cần phải dùng chung bởi tất cả các đối tượng của một lớp
Một thành viên dữ liệu tĩnh biểu diễn thông tin toàn lớp
(class-wide)
Khai báo một thành viên tĩnh bắt đầu với từ khóa STATIC.
Tính chất các thành viên tĩnh của lớp
Tồn tại ngay cả khi đối tượng của lớp đó không tồn tại
Trang 12 Thành viên dữ liệu tĩnh có thể giống như các biến toàn
cục, các thành viên dữ liệu tĩnh có phạm vi lớp
Các thành viên dữ liệu tĩnh phải được khởi tạo một lần
(và chỉ một lần) tại phạm vi file
Một hàm thành viên tĩnh không có con trỏ this
→ Các thành viên dữ liệu tĩnh và các hàm thành viên tĩnh tồn tại độc lập với bất kỳ đối tượng nào của lớp
Chú ý: Hàm thành viên dữ liệu tĩnh không được gọi
là const.
Trang 13CÁC HÀM FRIEND ( HÀM BẠN )
3
Trang 14Hàm friend ( Hàm bạn)
Chữ
Hàm friend của một lớp được định nghĩa bên ngoài
phạm vi của lớp đó
Có quyền truy cập đến các thành viên private hoặc
protected của một lớp.
Một hàm hay toàn bộ lớp có thể được khai báo là
một friend của lớp khác.
Trang 15Khai báo :
Một hàm là một friend của một lớp, đứng trước hàm nguyên mẫu của hàm trong định nghĩa lớp với từ khóa friend.
friend <function-declarator>;
Cách 1:dùng từ khóa friend để khai báo hàm trong lớp
Class A
{ private:
//khai bao cac thuoc tinh
public:
//khai bao cac ham ban cua lop A
Friend void f1(…);
Friend double f2(…);
Friend f3(…);
};
Để một hàm trở thành bạn của một lớp :
Trang 16//xay dung cac ham f1,f2,f3….
Void f1(…)
{
………
}
Double f2(…)
{
………
}
A f3(…)
{
….
}
Cách 2: dùng friend để xây dựng hàm trong định nghĩa lớp :
Trang 17 Một lớp là friend của lớp khác :
friend <class-name>;
Class A
{
private:
//khai bao cac thuoc tinh public:
…//xay dung cac ham ban cua lop A friend void f1(…)
{
… }
friend double f2(…) {
……
} friend A f3(…) }
Trang 18Một hàm có thể là bạn của nhiều lớp được không ?
- Câu trả lời là được
Class a;//khai bao truoc lop a
Class b;//khai bao truoc lop b
//định nghĩa lớp a
Class a
{//khai báo f là bạn của a
friend void f (…);
};
//định nghĩa lớp b
Class b
{//khai báo f là bạn của b
friend void f (…);
};
Trang 19 Chỉ định các hàm được đa năng hóa là các friend của lớp.
→ Mỗi hàm được đa năng hóa phải được khai báo tường minh
trong định nghĩa lớp như là một friend của lớp.
Phạm vi của hàm là toàn bộ chương trình
Đối của hàm có thể là các đối tượng
Một số tính chất của hàm firend :
Trang 20CẢM ƠN THẦY VÀ CÁC BẠN ĐÃ LẮNG NGHE !