Lớp (class)

5 193 0
Tài liệu đã được kiểm tra trùng lặp
Lớp (class)

Đang tải... (xem toàn văn)

Thông tin tài liệu

Chương 2 Lớp , Đ ối tượng và tính đóng gói 18 18 I/ Lớp (class) • Cú pháp khai báo lớp class class_name { private : // khai báo các biến ; // khai báo các hàm; public : // khai báo các biến ; // khai báo các hàm; } objects_list ; class_name tên của lớp do người dùng đònh nghiã. objects_list danh sách các đối tượng, có thể tùy chọn. Các biến, các hàm khai báo bên trong một lớp gọi là các thành viên của lớp đó. Từ khoá Ý nghiã class khai báo một lớp private : qui đònh các biến, các hàm là các thành viên riêng của lớp, bên ngoài lớp không thể truy cập được. public : qui đònh các biến, các hàm là các thành viên chung của lớp, có thể truy cập chúng từ các thành viên khác của lớp và bởi các thành phần khác của chương trình có chứa lớp đó. • Cú pháp đònh nghiã hàm thành viên data_type class_name :: func_name (arg_list) { // body of function } data_type kiểu dữ liệu của phương thức trả về class_name tên lớp chứa hàm :: toán tử phân giải phạm vi (scope resolution operator) Chương 2 Lớp , Đ ối tượng và tính đóng gói 19 19 func_name tên hàm arg_list danh sách các đối số Ví dụ 1.1 Khai báo lớp có tên "myclass" class myclass { // private to myclass int a; public: void set_a(int num); int get_a(); }; void myclass::set_a(int num) // đònh nghiã hàm void set_a(int num) { a = num; } int myclass::get_a() // đònh nghiã hàm int get_a() { return a; } int main() { myclass ob1, ob2; // khai báo 2 đối tượng có tên ob1, ob2 ob1.set_a(10); // thiết lập giá trò 10 cho bản sao cuả biến a của ob1 ob2.set_a(99); // thiết lập giá trò 99 cho bản sao cuả biến a của ob2 cout << ob1.get_a() << "\n"; cout << ob2.get_a() << "\n"; return 0; } Chương 2 Lớp , Đ ối tượng và tính đóng gói 20 20 Ví dụ 1.2 Lỗi biên dòch khi truy cập đến biến riêng a từ bên ngoài lớp myclass int main() { myclass ob1, ob2; ob1.a = 10; // ERROR! cannot access private member ob2.a = 99; // by non-member functions. return 0; } Ví dụ 1.3 Khi a là biến chung, có thể truy cập a từ bên ngoài lớp myclass #include <iostream.h> class myclass { public: // now a is public int a; // and there is no need for set_a() or get_a() }; int main() { myclass ob1, ob2; // here, a is accessed directly ob1.a = 10; ob2.a = 99; cout << ob1.a << "\n"; cout << ob2.a << "\n"; return 0; } Chương 2 Lớp , Đ ối tượng và tính đóng gói 21 21 Ví dụ 1.4 Tạo lớp stack dùng để chứa các ký tự #include <iostream.h> #define SIZE 10 // Declare a stack class for characters class stack { char stck[SIZE]; // holds the stack int tos; // index of top-of-stack public: void init(); // initialize stack void push(char ch); // push character on stack char pop(); // pop character from stack }; // Initialize the stack void stack::init() { tos = 0; } // Push a character. void stack::push(char ch) { if(tos == SIZE) { cout << "Stack is full"; return; } stck[tos] = ch; tos++; } // Pop a character. char stack::pop() { if(tos == 0) { cout << "Stack is empty"; return 0; // return null on empty stack Chương 2 Lớp , Đ ối tượng và tính đóng gói 22 22 } tos--; return stck[tos]; } int main() { stack s1, s2; // create two stacks int i; // initialize the stacks s1.init(); s2.init(); s1.push('a'); s2.push('x'); s1.push('b'); s2.push('y'); s1.push('c'); s2.push('z'); for(i=0; i<3; i++) cout << "Pop s1: " << s1.pop() << "\n"; for(i=0; i<3; i++) cout << "Pop s2: " << s2.pop() << "\n"; return 0; } @ Kết quả xuất dữ liệu của chương trình ? • Lưu ý Khai báo lớp là một trừu tượng logic để đònh nghiã một kiểu dữ liệu mới. Khai báo một đối tượng dựa vào lớp, tạo ra một thực thể vật lý (có điạ chỉ trong bộ nhớ) có kiểu dữ liệu đó. . Chương 2 Lớp , Đ ối tượng và tính đóng gói 18 18 I/ Lớp (class) • Cú pháp khai báo lớp class class_name { private : // khai. thành viên của lớp đó. Từ khoá Ý nghiã class khai báo một lớp private : qui đònh các biến, các hàm là các thành viên riêng của lớp, bên ngoài lớp không thể

Ngày đăng: 29/09/2013, 06:20