Các lớp
Số trang: 10
Loại file: pdf
Dung lượng: 267.39 KB
Lượt xem: 9
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Các lớpLớp là một phương thức logic để tổ chức dữ liệu và các hàm trong cùng một cấu trúc. Chúng được khai báo sử dụng từ khoá class, từ này có chức năng tương tự với từ khoá của C struct nhưng có khả năng gộp thêm các hàm thành viên. Dạng thức của nó như sau: class class_name { permission_label_1: member1; permission_label_2: member2; ... } object_name; trong đó class_name là tên của lớp ( kiểu người dùng tự định nghĩa) và trường mặc định object_name là một hay một vài tên đối tượng hợp lệ. Phần thân của...
Nội dung trích xuất từ tài liệu:
Các lớp Các lớpLớp là một phương thức logic để tổ chức dữ liệu và các hàm trong cùng một cấutrúc. Chúng được khai báo sử dụng từ khoá class, từ này có chức năng tương tựvới từ khoá của C struct nhưng có khả năng gộp thêm các hàm thành viên.Dạng thức của nó như sau:class class_name { permission_label_1: member1; permission_label_2: member2; ... } object_name;trong đó class_name là tên của lớp ( kiểu người dùng tự định nghĩa) và trườngmặc định object_name là một hay một vài tên đối tượng hợp lệ. Phần thân củakhai báo chứa các thành viên của lớp, đó có thể là dữ liệu hay các hàm và có thểlà các nhãn cho phép ( permission labels) là một trong những từ khoá sauđây: private:, public: hoặc protected:. • Các thành viên private của một lớp chỉ có thể được truy xuất từ các thành viên khác của lớp hoặc từ các lớp bạn bè. • Các thành viên protected có thể được truy xuất từ các thành viên trong cùng một lớp và các lớp bạn bè, thêm vào đó là từ các thành viên của các lớp thừa kế • Cuối cùng, các thành viên public có thể được truy xuất từ bất kì chỗ nào mà lớp nhìn thấy.Nếu chúng ta khai báo các thành viên của một lớp trước khi thêm vào các nhãncho phép thì các thành viên đó được coi là private.Ví dụ:class CRectangle { int x, y; public: void set_values (int,int); int area (void); } rect;Khai báo lớp CRectangle và một đối tượng có tên rect có kiểu là lớpCRectangle. Lớp này chứa bốn thành viên: hai viến có kiểu int (x và y) trongphần private (vì private là sự cho phép mặc định) và hai hàm trong phầnpublic: set_values() và area(), ở đây chúng ta chỉ mới khai báo mẫu.Hãy chú ý sự khác biệt giữa tên lớp và tên đối đối tượng: Trong ví dụ trước,CRectangle là tên lớp còn rect là tên một đối tượng có kiểu CRectangle.Trong các phần tiếp theo của chương trình chúng ta có thể truy xuất đến các thànhviên public của đối tượng rect như là đối với các hàm hay các biến thông thườngbằng cách đặt tên của đối tượng rồi sau đó là một dấu chấm và tên thành viên củalớp (như chúng ta đã làm với các cấu trúc của C). Ví dụ:rect.set_value (3,4);myarea = rect.area();nhưng chúng ta không có khả năng truy xuất đến x hay y vì chúng là các thànhviên private của lớp và chúng chỉ có thể được truy xuất từ các thành viên của cùngmột lớp. Bối rối? Đây là ví dụ đầy đủ về lớp CRectangle:// classes example area: 12#include class CRectangle { int x, y; public: void set_values(int,int); int area (void){return (x*y);}};voidCRectangle::set_values(int a, int b) { x = a; y = b;}int main () { CRectangle rect; rect.set_values (3,4); cout rect.area();}Một điều mới trong đoạn mã này là toán tử phạm vi :: được dùng trong khai báoset_values(). Nó được sử dụng để khai báo ở bên ngoài các thành viên củamột lớp. Chú ý rằng chúng ta đã định nghĩa đầy đủ hàm area() ngay bên tronglớp trong khi hàm set_values() mới chỉ được khai báo mẫu còn định nghĩacủa nó nằm ở ngoài lớp. Trong phần khai báo ở ngoài này chúng ta bắt buộc phảidùng toán tử ::.Sự khác biệt duy nhất giữa việc khai báo đầy đủ một hàm bên trong lớp và việc chỉkhai báo mẫu là trong trường hợp thứ nhất hàm sẽ được tự động coi là inline bởitrình dịch, còn trong trường hợp thứ hai nó sẽ là một hàm thành viên bình thường.Lý do khiến chúng ta khai báo x và y là các thành viên private vì chúng ta đãđịnh nghĩa một hàm để thâótc với chúng (set_values()) và không có lý do gìđể truy nhập trực tiếp đến các biến này. Có lẽ trong ví dụ rất đơn giản này bạnkhông thấy được một tiện ích lớn khi bảo vệ hai biến này nhưng trong các dự ánlớn hơn nó có thể là rất quan trọng khi đảm bảo được rằng các giá trị đó không bịthay đổi một cách không mong muốn.Một ích lợi nữa của lớp là chúng ta có thể khai báo một vài đối tượng khác nhau từnó. Ví dụ, tiếp sau đây là ví dụ trước về lớp CRectangle, tôi chỉ thêm phần khaibáo thêm đối tượng rectb.// class example rect area: 12#include rectb area: 30class CRectangle { int x, y; public: void set_values(int,int); int area (void){return (x*y);}};voidCRectangle::set_values(int a, int b) { x = a; y = b;}int main () { CRectangle rect, rectb; rect.set_values (3,4); rectb.set_values (5,6); cout CRectangle (int,int); int area (void){return (width*height);}};CRectangle::CRectangle(int a, int b) { width = a; height = b;}int main () { CRectangle rect (3,4); CRectangle rectb (5,6); cout Destructor đặc biệt phù hợp khi mà một đối tượng cấp phát bộ nhớ động trong quátrình tồn tại của nó và trong thời điểm bị huỷ bỏ chúng ta muốn giải phóng bộ nhớmà nó sử dụng.// example on constructors rect area: 12and destructors rectb area: 30#include class CRectangle { int *w ...
Nội dung trích xuất từ tài liệu:
Các lớp Các lớpLớp là một phương thức logic để tổ chức dữ liệu và các hàm trong cùng một cấutrúc. Chúng được khai báo sử dụng từ khoá class, từ này có chức năng tương tựvới từ khoá của C struct nhưng có khả năng gộp thêm các hàm thành viên.Dạng thức của nó như sau:class class_name { permission_label_1: member1; permission_label_2: member2; ... } object_name;trong đó class_name là tên của lớp ( kiểu người dùng tự định nghĩa) và trườngmặc định object_name là một hay một vài tên đối tượng hợp lệ. Phần thân củakhai báo chứa các thành viên của lớp, đó có thể là dữ liệu hay các hàm và có thểlà các nhãn cho phép ( permission labels) là một trong những từ khoá sauđây: private:, public: hoặc protected:. • Các thành viên private của một lớp chỉ có thể được truy xuất từ các thành viên khác của lớp hoặc từ các lớp bạn bè. • Các thành viên protected có thể được truy xuất từ các thành viên trong cùng một lớp và các lớp bạn bè, thêm vào đó là từ các thành viên của các lớp thừa kế • Cuối cùng, các thành viên public có thể được truy xuất từ bất kì chỗ nào mà lớp nhìn thấy.Nếu chúng ta khai báo các thành viên của một lớp trước khi thêm vào các nhãncho phép thì các thành viên đó được coi là private.Ví dụ:class CRectangle { int x, y; public: void set_values (int,int); int area (void); } rect;Khai báo lớp CRectangle và một đối tượng có tên rect có kiểu là lớpCRectangle. Lớp này chứa bốn thành viên: hai viến có kiểu int (x và y) trongphần private (vì private là sự cho phép mặc định) và hai hàm trong phầnpublic: set_values() và area(), ở đây chúng ta chỉ mới khai báo mẫu.Hãy chú ý sự khác biệt giữa tên lớp và tên đối đối tượng: Trong ví dụ trước,CRectangle là tên lớp còn rect là tên một đối tượng có kiểu CRectangle.Trong các phần tiếp theo của chương trình chúng ta có thể truy xuất đến các thànhviên public của đối tượng rect như là đối với các hàm hay các biến thông thườngbằng cách đặt tên của đối tượng rồi sau đó là một dấu chấm và tên thành viên củalớp (như chúng ta đã làm với các cấu trúc của C). Ví dụ:rect.set_value (3,4);myarea = rect.area();nhưng chúng ta không có khả năng truy xuất đến x hay y vì chúng là các thànhviên private của lớp và chúng chỉ có thể được truy xuất từ các thành viên của cùngmột lớp. Bối rối? Đây là ví dụ đầy đủ về lớp CRectangle:// classes example area: 12#include class CRectangle { int x, y; public: void set_values(int,int); int area (void){return (x*y);}};voidCRectangle::set_values(int a, int b) { x = a; y = b;}int main () { CRectangle rect; rect.set_values (3,4); cout rect.area();}Một điều mới trong đoạn mã này là toán tử phạm vi :: được dùng trong khai báoset_values(). Nó được sử dụng để khai báo ở bên ngoài các thành viên củamột lớp. Chú ý rằng chúng ta đã định nghĩa đầy đủ hàm area() ngay bên tronglớp trong khi hàm set_values() mới chỉ được khai báo mẫu còn định nghĩacủa nó nằm ở ngoài lớp. Trong phần khai báo ở ngoài này chúng ta bắt buộc phảidùng toán tử ::.Sự khác biệt duy nhất giữa việc khai báo đầy đủ một hàm bên trong lớp và việc chỉkhai báo mẫu là trong trường hợp thứ nhất hàm sẽ được tự động coi là inline bởitrình dịch, còn trong trường hợp thứ hai nó sẽ là một hàm thành viên bình thường.Lý do khiến chúng ta khai báo x và y là các thành viên private vì chúng ta đãđịnh nghĩa một hàm để thâótc với chúng (set_values()) và không có lý do gìđể truy nhập trực tiếp đến các biến này. Có lẽ trong ví dụ rất đơn giản này bạnkhông thấy được một tiện ích lớn khi bảo vệ hai biến này nhưng trong các dự ánlớn hơn nó có thể là rất quan trọng khi đảm bảo được rằng các giá trị đó không bịthay đổi một cách không mong muốn.Một ích lợi nữa của lớp là chúng ta có thể khai báo một vài đối tượng khác nhau từnó. Ví dụ, tiếp sau đây là ví dụ trước về lớp CRectangle, tôi chỉ thêm phần khaibáo thêm đối tượng rectb.// class example rect area: 12#include rectb area: 30class CRectangle { int x, y; public: void set_values(int,int); int area (void){return (x*y);}};voidCRectangle::set_values(int a, int b) { x = a; y = b;}int main () { CRectangle rect, rectb; rect.set_values (3,4); rectb.set_values (5,6); cout CRectangle (int,int); int area (void){return (width*height);}};CRectangle::CRectangle(int a, int b) { width = a; height = b;}int main () { CRectangle rect (3,4); CRectangle rectb (5,6); cout Destructor đặc biệt phù hợp khi mà một đối tượng cấp phát bộ nhớ động trong quátrình tồn tại của nó và trong thời điểm bị huỷ bỏ chúng ta muốn giải phóng bộ nhớmà nó sử dụng.// example on constructors rect area: 12and destructors rectb area: 30#include class CRectangle { int *w ...
Tìm kiếm theo từ khóa liên quan:
Công nghệ thông tin kỹ thuật lập trình quản trị mạng tin học máy tính Các lớpGợi ý tài liệu liên quan:
-
52 trang 429 1 0
-
24 trang 354 1 0
-
Top 10 mẹo 'đơn giản nhưng hữu ích' trong nhiếp ảnh
11 trang 312 0 0 -
74 trang 295 0 0
-
96 trang 291 0 0
-
Báo cáo thực tập thực tế: Nghiên cứu và xây dựng website bằng Wordpress
24 trang 289 0 0 -
Đồ án tốt nghiệp: Xây dựng ứng dụng di động android quản lý khách hàng cắt tóc
81 trang 279 0 0 -
EBay - Internet và câu chuyện thần kỳ: Phần 1
143 trang 274 0 0 -
Tài liệu dạy học môn Tin học trong chương trình đào tạo trình độ cao đẳng
348 trang 269 1 0 -
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 264 0 0