Yêu cầu mọi thông tin sao chép từ blog này phải được ghi rõ đầy đủ: Thông tin được sao chép từ "http://www.dangngochoangthanh.blogspot.com".

Cool wallpaper http://www.fancymessage.com

EMOJI KEYBOARD PRO http://emojiselector.com

THƯ VIỆN HÌNH ĐỘNG FLASH ANIMATION: http://flashanimationlibrary.blogspot.ru/

Hệ thống học trực tuyến đang được phát triển và sẽ đưa vào sử dụng vào cuối năm nay. Hãy xem qua một số demo của Học Trực Tuyến.


HỌC TRỰC TUYẾN ĐÃ CUNG CẤP PHIÊN BẢN TRUY CẬP QUA MOBILE http://dangngochoangthanh.blogspot.com/?m=1

XEM KÊNH HỌC TRỰC TUYẾN TRÊN YOUTUBE



Search on This Blog

Saturday, September 11, 2010

Lớp và đối tượng

Lớp là sự biểu diễn của đối tượng trong lập trình và ngược lại đối tượng là sự thể hiện của lớp. Một đối tượng gồm có: thuộc tính và phương thức. Bạn có thể xem một lớp như là một kiểu dữ liệu, còn đối tượng là biến.  Lớp được khai báo nhờ từ khóa class
class tên_lớp{ các_thuộc_tính
các_phương_thức
}tên_đối_tượng;
tên_lớp: là  tên của lớp.
tên_đối_tượng: là tên của đối tượng.
Bạn sẽ thấy khai báo lớp tương đối giống khai báo struct.
Các thuộc tính được khai báo như khai báo biến. Các phương thức được khai báo như khai báo hàm. Chúng có thể được chỉ định bằng một trong ba từ khóa: private, protected và public.
  • private: các thành viên (biến thành viên hoặc hàm thành viên) của cùng một lớp hoặc từ một hàm bạn của nó có thể truy cập.
  • protected: các thành viên của cùng một lớp hoặc từ một hàm bạn của nó hoặc từ một lớp dẫn xuất của nó hoặc bạn của một lớp dẫn xuất của nó đều có thể truy cập. Mức truy cập lớn nhất trong trường hợp này là bạn của lớp dẫn xuất. Chúng ta sẽ thảo luận thêm trong những phần sau.
  • public: các thành viên có thể truy cập lẫn nhau từ mọi lớp.
Theo mặc định, nếu bạn không chỉ định từ khóa, thì private được ấn định.

class Humans{ string name;
int age;
public:
void setName(string);
void setAge(string);
string getName(void);
int getAge(void);
}man;
Humans là tên lớp, chứa các thuộc tính là name và age, chúng không được chỉ định từ khóa, nên private sẽ được sử dụng. Các phương thức setName, setAge, getName và getAge được chỉ định là public. Trong trường hợp này, man là một đối tượng thể hiện của lớp Humans.
Sau khi khai báo lớp, bạn cần bổ sung phần thân lớp – tương ứng với các hàm thành viên. Bạn có thể bổ sung trực tiếp vào trong lớp – tương tự khai báo hàm trực tiếp, hoặc sử dụng khai báo prototype. Đối với khai báo prototype, để xác định một phương thức là của một lớp, ta sử dụng toán tử phạm vi ::
Chương trình Kết quả
#include using namespace std;
class Humans{
string name;
int age;
public:
void setName(string);
void setAge(int);
string getName(void);
int getAge(void);
};
void Humans::setName(string s){
name = s;
}
void Humans::setAge (int a){
age = a;
}
string Humans::getName(void){
return name;
}
int Humans::getAge(void){
return age;
}
int main(){
Humans man;
man.setName(“Jack”);
man.setAge(21);
cout<<”The man: “<<<”, age “<
return 0;
}
The man: Jack, age 21
Giải thích: Hàm setName sẽ gán biến s cho thành viên name, tương tự cho hàm setAge sẽ gán biến a cho thành viên age. Hàm getName trả về dữ liệu nhận được từ thành viên name và hàm getAge – nhận được dữ liệu  từ thành viên age. Hai phương thức setName và setAge gọi là phương thức setter. Phương thức getName và getAge gọi là phương thức getter. Các phương thức setter dùng để nhập dữ liệu cho các thuộc tính thành viên, các phương thức getter dùng để nhận giá trị từ các thuộc tính thành viên đã được nhập bởi setter (hoặc phương thức khởi tạo). Bạn lưu ý rằng, hàm main không thuộc lớp Humans, do đó, nó không thể truy xuất đến các thuộc tính thành viên trong trường hợp này, vì chúng được khai báo mặc định là private.
Toán tử phạm vi :: sẽ giới hạn sự truy cập bất hợp lệ của những hàm không thuộc lớp Humans hay là bạn của Humans. Đây là một cách thức để quy định một phương thức có phải là thành viên của một lớp hay không. Cách thức thứ hai, là bạn có thể khai báo hàm trực tiếp ngay bên trong lớp. Về bản chất, hai cách này không có sự khác biệt nào.
Lớp cũng có tác dụng như là một kiểu dữ liệu, do đó, ta cũng có thể khai báo nhiều đối tượng của cùng một lớp hay mảng các đối tượng.
Chương trình Kết quả
#include using namespace std;
class Humans{
string name;
int age;
public:
void setName(string);
void setAge(int);
string getName(void);
int getAge(void);
};
void Humans::setName(string s){
name = s;
}
void Humans::setAge (int a){
age = a;
}
string Humans::getName(void){
return name;
}
int Humans::getAge(void){
return age;
}
#define MAX 5
int main(){
Humans man[MAX];
for(int i=0; i
string s;
int a;
cout<<”Name and age of Student ” <<(i+1)<
cin>>s;
cin>>a;
man[i].setName(s);
man[i].setAge(a);
}
cout<<”=====Students=====”<
for(int i=0; i
cout<<”The man: “<<<”, age “<<
return 0;
}
Name and age of Student 1 Nam
21
Name and age of Student 2
Binh
22
Name and age of Student 3
Xuan
22
Name and age of Student 4
Tuan
21
Name and age of Student 5
Lan
22
=====Students=====
The man: Nam, age 21
The man: Binh, age 22
The man: Xuan, age 22
The man: Tuan, age 21
The man: Lan, age 22
Trong trường hợp này, biến man là một mảng các đối tượng Humans. Chương trình minh họa cho việc nhập tên sinh viên, tuổi của họ và lưu vào một mảng. Sau đó, xuất kết quả ra màn hình. Dù là cùng là sự thể hiện của lớp Humans, nhưng các đối tượng man[1], man[2],… có các thuộc tính hoàn toàn khác nhau.
Cơ sở của lập trình hướng đối tượng là dữ liệu thành viên và các hàm thành viên của một đối tượng. Chúng ta hoàn toàn không sử dụng một tập các biến toàn cục để truyền qua một hàm (hay tập các biến cục bộ truyền theo tham biến), mà thay vào đó, chúng ta sử dụng các đối tượng cùng với dữ liệu thành viên và hàm thành viên của nó. Các hàm thành viên tác động trực tiếp lên các dữ liệu thành viên.

No comments:

Post a Comment