C++: Bài 1. Lớp và đối tượng
Giải phóng thời gian, khai phóng năng lực
Mục đích chính của lập trình C++ là thêm hướng đối tượng vào ngôn ngữ lập trình C và class là phần trung tâm của C++ đối với việc hỗ trợ lập trình hướng đối tượng và thường được gọi là kiểu do người dùng định nghĩa.
Class dùng để mô tả dạng của một đối tượng và nó kết hợp cả phần mô tả dữ liệu và các phương thức (hàm) cho việc thao tác dữ liệu đó. Dữ liệu và hàm trong một lớp gọi là các thành phần của lớp.
Định nghĩa lớp trong C++
Định nghĩa lớp bắt đầu bằng từ khóa class, theo sau là tên lớp, cặp ngoặc xoắn, dấu chấm phẩy. Ví dụ:
class Box { public: double length; //Chiều dài của box double width; //Chiều rộng của box double height; //Chiều cao của box };
Từ khóa public nói đến mức độ truy cập đối với thành phần của lớp. Theo đó một thành phần public có thể được truy cập từ bất kỳ lớp nào ngoài lớp hiện thời. Ta cũng có thể thiết lập mức độ truy cập là private hoặc protected.
Tạo đối tượng từ lớp
Lớp dùng để mô phỏng đối tượng, khi nó lớp rồi ta có thể tạo các đối tượng tương ứng. Ví dụ:
Box box1; //Tạo đối tượng box1 kiểu Box Box box2; //Tạo đối tượng box2 kiểu Box
Các đối tượng Box1 và Box2 đều bao gồm các thành phần của lớp.
Truy cập các thành phần của đối tượng
Để truy cập một thành phần của đối tượng ta dùng toán tử (.) giống như cấu trúc. Ví dụ:
#include <iostream> using namespace std; class Box { public: double length; //Chiều dài của box double width; //Chiều rộng của box double height; //Chiều cao của box }; main() { Box box1; //Tạo đối tượng box1 kiểu Box Box box2; //Tạo đối tượng box2 kiểu Box double volume = 0.0; //Biến lưu thể tích của box //nạp dữ liệu cho các thuộc tính của box1 box1.height = 5.0; box1.length = 6.0; box1.width = 7.0; //nạp dữ liệu cho các thuộc tính của box2 box2.height = 10.0; box2.length = 12.0; box2.width = 13.0; //tính và hiển thị thể tích của box1 volume = box1.height * box1.length * box1.width; cout << "The tich cua box1: " << volume <<endl; //tính và hiển thị thể tích của box2 volume = box2.height * box2.length * box2.width; cout << "The tich cua box2: " << volume <<endl; return 0; }
Kết quả của đoạn code trên:
The tich cua box1: 210 The tich cua box1: 1560
Lưu ý là các thành phần private và protected của đối tượng không thể được trực tiếp truy cập với toán tử (.).
Chi tiết về lớp và đối tượng
Dưới đây là những khái niệm hữu ích liên quan đến lớp và đối tượng và chúng ta sẽ bàn chi tiết hơn ở những bài sau:
Khái niệm và mô tả |
---|
Hàm của lớp Hàm của lớp còn gọi là phương thức dùng để mô phỏng hành vi của đối tượng. |
Bổ từ truy cập Một thành phần nào đó của lớp có thể được định nghĩa là public, private hoặc protected. Bổ từ truy cập mặc định là private. |
Hàm tạo (constructor) và hàm hủy (destructor) Hàm tạo là hàm đặc biệt trong lớp, nó được gọi khi đối tượng mới của lớp được tạo. Hàm hủy cũng là hàm đặc biệt và được gọi khi đối tượng bị xóa. |
Hàm tạo sao chép Hàm tạo sao chép là một phương thức khởi tạo tạo một đối tượng bằng cách khởi tạo nó với một đối tượng cùng lớp, đã được tạo trước đó. |
Hàm bạn bè Được phép truy cập đầy đủ vào các thành phần private và protected của một lớp. |
Hàm nội tuyến Với một hàm nội tuyến, trình biên dịch cố gắng mở rộng mã trong phần thân của hàm thay cho lời gọi hàm. |
Con trỏ this Mỗi đối tượng đều có một con trỏ đặc biệt, con trỏ này trỏ đến chính đối tượng gọi đến hàm chứa this. |
Con trỏ đến các lớp Một con trỏ đến một lớp được thực hiện giống hệt như cách con trỏ tới một cấu trúc. Trong thực tế, một lớp thực sự chỉ là một cấu trúc và có thêm các hàm trong đó. |
Thành phần tĩnh (static) của lớp Cả thành phần dữ liệu (thuộc tính) và thành phần phương thức (hàm-hành vi) của một lớp đều có thể được khai báo là static. |
Giải phóng thời gian, khai phóng năng lực