Class trong C++, cách khai báo và sử dụng
C++ được phát triển để bổ sung thêm tính năng hướng đối tượng cho C, trong đó Class trong C++ là tính năng chính. Trong bài viết này, cùng IoTZone tìm hiểu kỹ hơn về khái niệm này, cách khai báo và sử dụng chúng nhé!
Class trong C++ là gì
Class (lớp) trong lập trình C++ là một khái niệm được hiểu như một kiểu dữ liệu đơn giản, được khai báo bằng từ khóa Class. Bên trong chúng có chứa các hàm hoặc các biến.
Chúng là một mô tả trừu tượng của một nhóm đối tượng (object) cùng bản chất. Ngoài ra, mỗi một đối tượng sẽ là thể hiện cụ thể (instance) của các mô tả trừu tượng đó.
Class trong C++ bao gồm:
- Thành phần dữ liệu (Property hoặc thuộc tính)
- Phương thức (method hoặc hàm thành phần)
Bạn có thể hiểu đơn giản, class giống như một kiểu dữ liệu được chính người viết code định nghĩa và được bắt đầu bằng keyword class.
Mình sẽ lấy 1 ví dụ đơn giản để bạn dễ hiểu: Class Car. Một chiếc sẽ hơi sẽ có các thành phần chung như là đều có tay lái, động cơ, bánh xe,… Đây là 1 class, một mẫu hay 1 model mà nếu chúng giống như vậy thì chúng sẽ là xe hơi.
Tuy nhiên, xe hơi có thể có nhiều hãng khác nhau, như Vinfast, BMW, Vios,… nên mỗi hãng xe sẽ có những model xe khác nhau, tuy nhiên chúng đều là xe hơi.
Và Class trong C++ cũng vậy, class sẽ quy định ra 1 mẫu chung, 1 model mà các thể hiện (instance) hoặc đối tượng (objective) của nó phải tuân theo.
>> Xem thêm: Tìm hiểu về hàm max trong C từ A – Z
Cách tạo 1 class
Chúng ta sẽ dùng keyword class và theo sau là tên của class đó, để tạo 1 class trong C++.
Nội dung của class được xác định bên trong dấu ngoặc nhọn, và chúng ta dùng dấu chấm phẩy để kết thúc:
class ClassName { // some data // some functions };
Dưới đây là 1 ví dụ về cách tạo Class trong C++:
class Room { public: double chieu dai; double chieu rong; double chieu cao; double calculate_area(){ return chieu dai * chieu rong; } double calculate_volume(){ return chieu dai * chieu rong * chieu cao; } };
Ở đoạn code mẫu trên, mình đã tạo 1 Class có tên là Room:
- Các biến chieu dai, chieu rong và chieu cao được khai báo bên trong Class được gọi là thành phần dữ liệu (Data Member)
- Các hàm tính toán calculate_area() và calculate_volume() được gọi là phương thức (Member Functions)
Ngoài ra, từ khóa public trong code xác định rõ các thuộc tính truy cập của các thành phần class đăng sau nó. Khi dùng public, chúng ta có thể truy cập vào thành viên từ bên ngoài, miễn là còn nằm trong scope của đối tượng class đó.
Nếu không thích dùng public, bạn có thể đổi qua protected hoặc private nhé! Điểm khác biệt giữa 3 phương thức này:
- Public: Không có ràng buộc về điều kiện nào trước khi gán, bạn có thể truy cập vào từ bên ngoài dễ dàng, thông qua việc dùng các toán tử truy cập thành viên trực tiếp như dấu chấm (.)
- Private: Bạn cần thông qua các phương thức public để có thể truy cập vào Private. Phương thức này có 2 hình thức phổ biến là setter và getter.
- Protected: Chúng ta chỉ có thể truy cập vào các thuộc tính và phương thức thông qua các class kế thừa hoặc qua chính class đó. Đây là một phương thức khá nâng cao, đòi hỏi bạn phải hiểu rõ về Class trong C++ là gì và cách dùng.
Cách khai báo 1 Class trong C++
Sau khi tạo 1 Class, trong code chỉ có các đặc tả cho đối tượng đã xác định, chứ chưa phân bổ bộ nhớ cho chúng.
Tạo đối tượng trong C++
Để có thể sử dụng các hàm và dữ liệu đã tạo trong lớp, bạn cần khai báo và tạo các đối tượng (Objects), theo cú pháp sau:
ClassName ten_objects;
Cụ thể, chúng ta có thể tạo các đối tượng của Class Room mà mình đã giới thiệu ở phía trên như sau:
// sample function void sample_function() { // Tao objects Room room1, room2; } int main(){ // Tao objects Room room3, room4; }
Trong code trên, mình đã tạo 2 Object là room1, room2 bên trong sample_function().
Tương tự, các Object là room3, room4 được tạo trong main().
Như mình đã demo, bạn sẽ thấy chúng ta có thể tạo các object của 1 class trong bất kỳ chức năng nào của chương trình. Bạn cũng có thể tạo các Object của 1 class trong chính class đó hoặc trong các class khác, với số lượng bao nhiêu tùy thích.
Thành phần dữ liệu và các hàm phương thức trong Clss
Chúng ta có thể truy cập vào xem các thành phần dữ liệu và các hàm bên trong bằng cách dùng toán tử dấu chấm (.)
Ví dụ:
room2.calculate_area();
Câu lệnh trên sẽ gọi hàm calculate_area() bên trong Room cho class room2, và các thành phần dữ liệu sẽ được truy cập dưới dạng như sau:
room1.chieu dai= 5.5;
Trong ví dụ trên, Class trong C++ đã khởi tạo 1 biến chiều dài của room1 là 5.5.
Code mẫu cách tạo Class trong C++
Dưới đây là 1 ví dụ mẫu hoàn chỉnh về cách tạo Class và Object trong C++, bạn tham khảo nhé:
#include <iostream> using namespace std; // create a class class Room { public: double chieu dai; double chieu rong; double chieu cao; double calculate_area() { return chieu dai * chieu rong; } double calculate_volume() { return chieu dai * chieu rong * chieu cao; } }; int main() { // Tao object cho class Room Room room1; // Gan gia tri cho data members room1.chieu dai = 42.5; room1.chieu rong = 30.8; room1.chieu cao = 19.2; // Tinh toan va hien thi area va volume cua room cout << "Area of Room = " << room1.calculate_area() << endl; cout << "Volume of Room = " << room1.calculate_volume() << endl; return 0; }
Sau khi nạp code trên, bạn sẽ có kết quả đầu ra là:
Area of Room = 1309 Volume of Room = 25132.8
Trong đó, Area of Room là diện tích phòng, còn Volume of Room là thể tích của phòng.
Trong chương trình tạo Class trong C++ trên, mình đã sử dụng 1 class là Room và đối tượng của nó là Room1, nhằm tính ra thể tích và diện tích của 1 căn phòng.
Trong main(), mình gán giá trị của chiều dài, chiều rộng và chiều cao căn phòng vào trong code:
room1.chieu dai = 42.5; room1.chieu rong = 30.8; room1.chieu cao = 19.2;
Sau đó, mình sử dụng các hàm calculate_area()và calculate_volume() để tính ra các phép tính cần thiết.
Lời kết
Trên đây là hướng dẫn chi tiết cách tạo Class trong C++, chúc bạn thành công! Nếu bạn cần tìm hiểu thêm về các kiến thức khác trong lập trình C, bạn có thể xem qua những bài viết hướng dẫn khác của IoTZone tại Blog hướng dẫn ngôn ngữ C.
IoTZone – Chuyên cung cấp thiết bị điện tử & tài liệu cho Makers
- Website: https://www.iotzone.vn/
- Fanpage: https://www.facebook.com/Iotzonemaker
- SDT: 0364174499
- Zalo: https://zalo.me/0364174499