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 .
LỚ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 Nộ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 1 . 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 “. #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(); } } Thà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 . Class <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 } } 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(); } CÁ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 Cá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. private và protected : phải được truy cập thông qua các hàm thành viên public của lớp . Hoặc thông qua các friend 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. [...]... 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 3 C C HÀM FRIEND ( HÀM... {//khai báo f là bạn c a b friend void f (…); }; Một số tính chất c a hàm firend : 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 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 C M ƠN THẦY VÀ C C BẠN ĐÃ LẮNG NGHE ! ... 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 Chữ Để một hàm trở thành bạn c a một lớp : Khai 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 ;...Tính chất c c thành viên tĩnh c a lớp 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ồn tại ngay c khi đối tượng c a lớp đó không tồn tại Thành viên dữ liệu tĩnh c thể... //khai bao cac thuoc tinh public: …//xay dung cac ham ban cua lop A friend void f1(…) { … } friend double f2(…) { …… } friend A f3(…) } Mộ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... ; 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(…); }; //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 : Một lớp là friend c a lớp kh c : friend ; Class . tất c c c thành viên dữ liệu c a lớp. 2 C 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. : phải đư c truy c p thông qua c c hàm thành viên public c a lớp . Ho c thông qua c c friend 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ừ 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. 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