Lớp và Đối tượng C ++ với Ví dụ

Mục lục:

Anonim

Class là gì?

Một lớp C ++ kết hợp dữ liệu và các phương thức để thao tác dữ liệu thành một. Các lớp cũng xác định các hình thức của đối tượng. Dữ liệu và các phương thức chứa trong một lớp được gọi là các thành viên của lớp. Lớp là một kiểu dữ liệu do người dùng định nghĩa. Để truy cập các thành viên của lớp, chúng tôi sử dụng một thể hiện của lớp. Bạn có thể xem một lớp như một bản thiết kế cho một đối tượng.

Một lớp học là một nguyên mẫu cho một ngôi nhà. Nó cho thấy vị trí và kích thước của cửa ra vào, cửa sổ, sàn nhà, vv Từ những mô tả này, chúng ta có thể xây dựng một ngôi nhà. Ngôi nhà trở thành đối tượng. Có thể tạo ra nhiều ngôi nhà từ nguyên mẫu. Ngoài ra, có thể tạo nhiều đối tượng từ một lớp.

Trong hình trên, chúng ta có một nguyên mẫu ngôi nhà duy nhất. Từ nguyên mẫu này, chúng tôi đã tạo ra hai ngôi nhà với các tính năng khác nhau.

Trong hướng dẫn này, bạn sẽ học:

  • Class là gì?
  • Ví dụ về lớp học
  • Từ khóa Riêng tư và Công khai
  • Định nghĩa đối tượng
  • Truy cập thành viên dữ liệu
  • Chức năng của thành viên trong lớp
  • Người xây dựng và Người phá hủy

Khai báo lớp học

Trong C +, một lớp được định nghĩa bằng cách sử dụng từ khóa class. Tiếp theo là tên lớp. Sau đó, phần thân của lớp được thêm vào giữa các dấu ngoặc nhọn {}.

Cú pháp:

class class-name{// data// functions};
  • Tên-lớp là tên để gán cho lớp.
  • Dữ liệu là dữ liệu cho lớp, thường được khai báo dưới dạng các biến.
  • Các hàm là các hàm lớp.

Từ khóa Riêng tư và Công khai

Chắc hẳn bạn đã xem qua hai từ khóa này. Chúng là bổ ngữ truy cập.

  • Riêng tư:

Khi từ khóa private được sử dụng để định nghĩa một hàm hoặc lớp, nó sẽ trở thành private. Như vậy chỉ có thể truy cập từ trong lớp.

  • Công cộng:

Mặt khác, từ khóa public làm cho dữ liệu / chức năng ở chế độ công khai. Chúng có thể truy cập từ bên ngoài lớp học.

Định nghĩa đối tượng

Các đối tượng được tạo từ các lớp. Các đối tượng lớp được khai báo theo cách tương tự như các biến được khai báo. Tên lớp phải bắt đầu, theo sau là tên đối tượng. Đối tượng của kiểu lớp.

Cú pháp:

class-name object-name;
  • Tên-lớp là tên của lớp mà từ đó một đối tượng sẽ được tạo.
  • Tên-đối tượng là tên được gán cho đối tượng mới.

Quá trình tạo một đối tượng từ một lớp được gọi là khởi tạo.

Truy cập thành viên dữ liệu

Để truy cập các thành viên công khai của một lớp, chúng tôi sử dụng toán tử dấu chấm (.). Đây là những thành viên được đánh dấu bằng công cụ sửa đổi quyền truy cập công khai.

Ví dụ 1:

#include using namespace std;class Phone {public:double cost;int slots;};int main() {Phone Y6;Phone Y7;Y6.cost = 100.0;Y6.slots = 2;Y7.cost = 200.0;Y7.slots = 2;cout << "Cost of Huawei Y6 : " << Y6.cost << endl;cout << "Cost of Huawei Y7 : " << Y7.cost << endl;cout << "Number of card slots for Huawei Y6 : " << Y6.slots << endl;cout << "Number of card slots for Huawei Y7 : " << Y7.slots << endl;return 0;}

Đầu ra:

Đây là ảnh chụp màn hình của mã:

Giải thích mã:

  1. Bao gồm tệp tiêu đề iostream trong mã của chúng tôi để sử dụng các chức năng của nó.
  2. Bao gồm không gian tên std trong mã của chúng tôi để sử dụng các lớp của nó mà không cần gọi nó.
  3. Khai báo một lớp có tên là Điện thoại.
  4. Sử dụng công cụ sửa đổi quyền truy cập công khai để đánh dấu các biến chúng tôi sắp tạo là có thể truy cập công khai.
  5. Khai báo biến phí của kiểu dữ liệu kép.
  6. Khai báo một biến số nguyên có tên là slot.
  7. Kết thúc phần thân của lớp.
  8. Gọi hàm main (). Logic của chương trình nên được thêm vào bên trong phần thân của nó.
  9. Tạo một đối tượng có tên Y6 kiểu Điện thoại. Đây được gọi là khởi tạo.
  10. Tạo một đối tượng có tên Y7 kiểu Điện thoại. Đây được gọi là khởi tạo.
  11. Truy cập chi phí biến đổi / thành viên của lớp Điện thoại bằng cách sử dụng đối tượng Y6. Giá trị được đặt thành 100.0. Chi phí của Y6 hiện được đặt thành 100,0.
  12. Truy cập các vị trí biến / thành viên của lớp Điện thoại bằng cách sử dụng đối tượng Y6. Giá trị được đặt thành 2. Các vị trí cho Y6 hiện được đặt thành 2.
  13. Truy cập chi phí biến đổi / thành viên của lớp Điện thoại bằng cách sử dụng đối tượng Y7. Giá trị được đặt thành 200.0. Chi phí của Y7 hiện được đặt thành 200,0.
  14. Truy cập các vị trí biến / thành viên của lớp Điện thoại bằng đối tượng Y7. Giá trị được đặt thành 2. Các vị trí cho Y7 hiện được đặt thành 2.
  15. In chi phí của Y6 trên bảng điều khiển cùng với văn bản khác.
  16. In chi phí của Y7 trên bảng điều khiển cùng với văn bản khác.
  17. In số lượng vị trí cho Y6 cùng với văn bản khác.
  18. In số lượng vị trí cho Y7 cùng với văn bản khác.
  19. Chương trình phải trả về một giá trị sau khi hoàn thành thành công.
  20. Cuối phần thân của hàm main ().

Lớp học riêng là gì?

Các thành viên lớp được đánh dấu là riêng tư chỉ có thể được truy cập bằng các hàm được xác định trong lớp. Bất kỳ đối tượng hoặc chức năng nào được định nghĩa bên ngoài lớp đều không thể truy cập trực tiếp vào các thành viên đó. Một thành viên lớp riêng chỉ được truy cập bởi chức năng thành viên và bạn bè.

Lớp được bảo vệ là gì?

Các thành viên trong lớp được đánh dấu là được bảo vệ có lợi thế hơn những thành viên được đánh dấu là riêng tư. Chúng có thể được truy cập bởi các hàm trong lớp định nghĩa của chúng. Ngoài ra, chúng có thể được truy cập từ các lớp dẫn xuất.

Ví dụ 2:

#include using namespace std;class ClassA {public:void set_a(int val);int get_a(void);private:int a;};int ClassA::get_a(void) {return a;}void ClassA::set_a(int val) {a = val;}int main() {ClassA a;a.set_a(20);cout << "Value of a is: " << a.get_a();return 0;}

Đầu ra:

Đây là ảnh chụp màn hình của mã:

Giải thích mã:

  1. Bao gồm tệp tiêu đề iostream trong mã của chúng tôi để sử dụng các chức năng của nó.
  2. Bao gồm không gian tên std trong mã của chúng tôi để sử dụng các lớp của nó mà không cần gọi nó.
  3. Tạo một lớp có tên ClassA.
  4. Sử dụng công cụ sửa đổi quyền truy cập công khai để đánh dấu thành viên lớp được tạo là có thể truy cập công khai.
  5. Tạo hàm có tên set_a () nhận một giá trị nguyên là val.
  6. Tạo một hàm có tên get_a ().
  7. Sử dụng công cụ sửa đổi quyền truy cập riêng tư để đánh dấu thành viên lớp được tạo là có thể truy cập riêng tư.
  8. Khai báo một biến số nguyên có tên là a.
  9. Kết thúc phần thân của lớp.
  10. Sử dụng tên lớp và toán tử phân giải phạm vi để truy cập hàm get_a (). Chúng tôi muốn xác định chức năng làm gì khi được gọi.
  11. Hàm get_a () sẽ trả về giá trị của biến a khi được gọi.
  12. Kết thúc định nghĩa của hàm get_a ().
  13. Sử dụng tên lớp và toán tử phân giải phạm vi để truy cập hàm set_a (). Chúng tôi muốn xác định chức năng làm gì khi được gọi.
  14. Gán giá trị của biến val cho biến a.
  15. Kết thúc định nghĩa của hàm set_a ().
  16. Gọi hàm main (). Logic chương trình nên được thêm vào trong phần thân của hàm này.
  17. Tạo một thể hiện của ClassA và đặt tên cho nó là a.
  18. Sử dụng cá thể lớp ở trên và hàm set_a () để gán giá trị 20 cho biến a.
  19. In một số văn bản cùng với giá trị của biến a trên bảng điều khiển. Giá trị của biến a nhận được bằng cách gọi hàm get_a ().
  20. Chương trình phải trả về giá trị khi hoàn thành thành công.
  21. Cuối phần thân của hàm main ().

Ví dụ 3:

#include using namespace std;class ParentClass {protected:int value;};class ChildClass : public ParentClass {public:void setId(int x) {value = x;}void displayValue() {cout << "Value is: " << value << endl;}};int main() {ChildClass c;c.setId(21);c.displayValue();return 0;}

Đầu ra:

Đây là ảnh chụp màn hình của mã:

Giải thích mã:

  1. Bao gồm tệp tiêu đề iostream trong mã của chúng tôi để sử dụng các chức năng của nó.
  2. Bao gồm không gian tên std trong mã của chúng tôi để sử dụng các lớp của nó mà không cần gọi nó.
  3. Tạo một lớp có tên ParentClass.
  4. Sử dụng công cụ sửa đổi quyền truy cập được bảo vệ để đánh dấu thành viên lớp được tạo là được bảo vệ.
  5. Tạo một biến số nguyên có tên là giá trị.
  6. Kết thúc phần thân của lớp.
  7. Tạo một lớp mới có tên ChildClass kế thừa ParentClass.
  8. Sử dụng công cụ sửa đổi quyền truy cập được bảo vệ để đánh dấu thành viên lớp sẽ được tạo là lớp con có thể truy cập được.
  9. Tạo hàm có tên setId () nhận một giá trị nguyên x.
  10. Gán giá trị của biến x cho giá trị của biến.
  11. Kết thúc định nghĩa của hàm setId ().
  12. Tạo một hàm có tên là displayValue ().
  13. In giá trị của biến có tên giá trị trên bảng điều khiển cùng với văn bản khác.
  14. Cuối phần nội dung của hàm displayValue ().
  15. Cuối phần thân của lớp có tên là ChildClass.
  16. Gọi hàm main (). Logic chương trình nên được thêm vào trong phần thân của hàm này.
  17. Tạo một thể hiện của ChildClass và đặt tên cho nó c.
  18. Sử dụng cá thể lớp ở trên và hàm setId () để gán giá trị 21 cho biến x.
  19. Sử dụng cá thể lớp trên để gọi hàm có tên displayValue ().
  20. Chương trình phải trả về giá trị khi hoàn thành thành công.
  21. Cuối phần thân của hàm main ().

Chức năng của thành viên trong lớp

Các hàm giúp chúng ta thao tác với dữ liệu. Các hàm thành viên của lớp có thể được định nghĩa theo hai cách:

  • Bên trong định nghĩa lớp
  • Bên ngoài định nghĩa lớp

Nếu một hàm được định nghĩa bên ngoài định nghĩa lớp, chúng ta phải sử dụng toán tử phân giải phạm vi (: :). Điều này phải được đi kèm với tên lớp và hàm.

Ví dụ 2:

#include #include using namespace std;class Guru99{public:string tutorial_name;int id;void printname();void printid(){cout << "Tutorial id is: "<< id;}};void Guru99::printname(){cout << "Tutorial name is: " << tutorial_name;}int main() {Guru99 guru99;guru99.tutorial_name = "C++";guru99.id = 1001;guru99.printname();cout << endl;guru99.printid();return 0;}

Đầu ra:

Đây là ảnh chụp màn hình của mã:

Giải thích mã:

  1. Bao gồm tệp tiêu đề iostream trong chương trình của chúng tôi để sử dụng các chức năng của nó.
  2. Bao gồm tệp tiêu đề chuỗi trong chương trình của chúng tôi để sử dụng các chức năng của nó.
  3. Bao gồm không gian tên std trong mã của chúng tôi để sử dụng các lớp của nó mà không cần gọi nó.
  4. Tạo một lớp có tên Guru99.
  5. Sử dụng công cụ sửa đổi quyền truy cập công khai để đánh dấu các thành viên lớp mà chúng tôi sắp tạo là có thể truy cập công khai.
  6. Tạo một biến chuỗi có tên là tutorial_name.
  7. Tạo một biến số nguyên có tên là id.
  8. Tạo một hàm có tên printname (). Hàm này không được định nghĩa trong định nghĩa lớp.
  9. Tạo một hàm có tên là print (). Hàm này được định nghĩa trong định nghĩa lớp. Phần thân của nó đã được thêm vào trong định nghĩa lớp.
  10. In giá trị của id biến cùng với văn bản khác trên bảng điều khiển. Lưu ý rằng điều này đã được thêm vào nội dung của hàm printid (). Nó sẽ chỉ được thực thi khi hàm printid () được gọi.
  11. Phần cuối của hàm printid ().
  12. Cuối phần thân của lớp Guru99.
  13. Bắt đầu định nghĩa của hàm printname ().
  14. In giá trị của biến tutorial_name trên bảng điều khiển cùng với văn bản khác. Lưu ý rằng điều này đã được thêm vào nội dung của hàm printname (). Nó sẽ chỉ được thực thi khi hàm printname () được gọi.
  15. Kết thúc định nghĩa của hàm printname ().
  16. Gọi hàm main (). Logic chương trình nên được thêm vào trong phần thân của hàm này.
  17. Tạo một thể hiện của lớp Guru99 và đặt tên là guru99.
  18. Sử dụng ví dụ trên để gán một giá trị của C ++ cho biến tutorial_name.
  19. Sử dụng cá thể guru99 để gán giá trị 1001 cho id biến.
  20. Sử dụng instance guru99 để gọi hàm printname ().
  21. Gọi lệnh end (dòng kết thúc) để in một dòng trống mới trên bảng điều khiển.
  22. Sử dụng instance guru99 để gọi hàm printid ().
  23. Chương trình phải trả về giá trị khi hoàn thành thành công.
  24. Cuối phần thân của hàm main ().

Người xây dựng và Người phá hủy

Constructors là gì?

Constructs là các hàm đặc biệt khởi tạo các đối tượng. Các trình biên dịch C ++ gọi một phương thức khởi tạo khi tạo một đối tượng. Các hàm tạo giúp gán giá trị cho các thành viên trong lớp. Tất nhiên, đây là sau khi chúng đã được cấp phát một số không gian bộ nhớ.

Kẻ hủy diệt là gì?

Mặt khác, các trình hủy giúp phá hủy các đối tượng của lớp.

Tên phương thức khởi tạo phải giống với tên lớp. Các hàm tạo không có kiểu trả về.

Hàm tạo có thể được định nghĩa bên trong hoặc bên ngoài thân lớp. Nếu được định nghĩa bên ngoài thân lớp, nó phải được định nghĩa bằng tên lớp và toán tử phân giải phạm vi (: :).

Ví dụ 3:

#include using namespace std;class ClassA {public:ClassA() {cout << "Class constructor called"<

Đầu ra:

Đây là ảnh chụp màn hình của mã:

Giải thích mã:

  1. Bao gồm tệp tiêu đề iostream vào mã để sử dụng các chức năng của nó.
  2. Bao gồm không gian tên std trong mã của chúng tôi để sử dụng các lớp của nó mà không cần gọi nó.
  3. Tạo một lớp có tên ClassA.
  4. Sử dụng công cụ sửa đổi quyền truy cập công khai để đánh dấu thành viên mà chúng tôi sắp tạo là có thể truy cập công khai.
  5. Tạo một phương thức khởi tạo cho lớp.
  6. Văn bản để in trên bảng điều khiển khi hàm tạo được gọi. Endl là một từ khóa C ++, có nghĩa là dòng kết thúc. Nó di chuyển con trỏ chuột đến dòng tiếp theo.
  7. Kết thúc phần thân của hàm tạo lớp.
  8. Tạo một hàm hủy cho lớp.
  9. Văn bản để in trên bảng điều khiển khi hàm hủy được gọi. Endl là một từ khóa C ++, có nghĩa là dòng kết thúc. Nó di chuyển con trỏ chuột đến dòng tiếp theo.
  10. Cuối phần thân của bộ hủy.
  11. Kết thúc phần thân của lớp.
  12. Gọi hàm main (). Logic chương trình nên được thêm vào trong phần thân của hàm này.
  13. Tạo một đối tượng lớp và đặt tên cho nó là a. Hàm tạo sẽ được gọi.
  14. Tạo một biến số nguyên có tên là p và gán giá trị của nó là 1.
  15. Tạo một khối lệnh if bằng cách sử dụng biến p.
  16. Tạo một đối tượng lớp và đặt tên cho nó b. Hàm hủy sẽ được gọi.
  17. Cuối phần nội dung của câu lệnh if.
  18. Cuối phần thân của hàm main ().

Tóm lược:

  • C ++ là hướng đối tượng.
  • Các lớp tạo thành các tính năng chính của C ++ làm cho nó hướng đối tượng.
  • Một lớp C ++ kết hợp dữ liệu và các phương thức để thao tác dữ liệu thành một.
  • Một lớp là một bản thiết kế cho một đối tượng.
  • Các lớp xác định hình thức của một đối tượng.
  • Dữ liệu và các phương thức chứa trong một lớp được gọi là các thành viên của lớp.
  • Để truy cập các thành viên của lớp, bạn nên sử dụng một thể hiện của lớp.
  • Để tạo một lớp, chúng ta sử dụng từ khóa lớp.
  • Các hàm thành viên của lớp có thể được định nghĩa bên trong hoặc bên ngoài một lớp.