C++: Bài 1. Lớp và đối tượng

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
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; //Chiu dài ca box
    double width;  //Chiu rng ca box
    double height; //Chiu cao ca 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; //To đi tượng box1 kiu Box
  Box box2; //To đi tượng box2 kiu 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; //Chiu dài ca box
    double width;  //Chiu rng ca box
    double height; //Chiu cao ca box
};

main() {
  Box box1; //To đi tượng box1 kiu Box
  Box box2; //To đi tượng box2 kiu Box
  double volume = 0.0; //Biến lưu th tích ca box

  //np d liu cho các thuc tính ca box1
  box1.height = 5.0;
  box1.length = 6.0;
  box1.width = 7.0;

  //np d liu cho các thuc tính ca box2
  box2.height = 10.0;
  box2.length = 12.0;
  box2.width = 13.0;

  //tính và hin th th tích ca box1
  volume = box1.height * box1.length * box1.width;
  cout << "The tich cua box1: " << volume <<endl;

  //tính và hin th th tích ca 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.

» Tiếp: Bài 2. Thừa kế
« Trước: Bài 29. Cấu trúc
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!