Giả sử chúng ta phải xác định một lớp hộp với ít điều kiện. Những điều này như sau -
-
Có ba thuộc tính l, b và h tương ứng cho chiều dài, chiều rộng và chiều cao, (đây là các biến riêng)
-
Xác định một hàm tạo không được tham số hóa để đặt l, b, h thành 0 và một hàm tạo được tham số hóa để đặt các giá trị ban đầu.
-
Xác định các phương thức getter cho từng thuộc tính
-
Xác định một hàm tính toánVolume () lấy thể tích của hộp
-
Quá tải nhỏ hơn toán tử (<) để kiểm tra hộp hiện tại có nhỏ hơn hộp khác hay không.
-
Tạo một biến có thể đếm số hộp được tạo.
Vì vậy, nếu chúng ta lấy đầu vào cho ba hộp (0, 0, 0) (5, 8, 3), (6, 3, 8) và hiển thị dữ liệu từng hộp và kiểm tra xem hộp thứ ba có nhỏ hơn hộp thứ hai hay không, và tìm thể tích của hộp nhỏ hơn và cũng in ra bao nhiêu hộp bằng biến đếm.
Sau đó, đầu ra sẽ là
Box 1: (length = 0, breadth = 0, width = 0) Box 2: (length = 5, breadth = 8, width = 3) Box 3: (length = 6, breadth = 3, width = 8) Box 3 is smaller, its volume: 120 There are total 3 box(es)
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
Để tính toán khối lượng, chúng ta sẽ phải trả về l * b * h
-
để quá tải toán tử nhỏ hơn (<), chúng ta sẽ phải kiểm tra
-
nếu l của đối tượng hiện tại không giống với l của đối tượng khác đã cho, thì
-
trả về true nếu l của đối tượng hiện tại nhỏ hơn l của đối tượng khác
-
-
ngược lại khi b của đối tượng hiện tại không giống với b của đối tượng khác đã cho, thì
-
trả về true nếu b của đối tượng hiện tại nhỏ hơn b của đối tượng khác
-
-
ngược lại khi h của đối tượng hiện tại không giống với h của đối tượng khác đã cho thì
-
trả về true nếu h của đối tượng hiện tại nhỏ hơn h của đối tượng khác
-
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
#include <iostream> using namespace std; class Box { int l, b, h; public: static int count; Box() : l(0), b(0), h(0) { count++; } Box(int length, int breadth, int height) : l(length), b(breadth), h(height) { count++; } int getLength() const {return l;} int getBreadth() const {return b;} int getHeight() const {return h;} long long CalculateVolume() const { return 1LL * l * b * h; } bool operator<(const Box& another) const { if (l != another.l) { return l < another.l; } if (b != another.b) { return b < another.b; } return h < another.h; } }; int Box::count = 0; int main(){ Box b1; Box b2(5,8,3); Box b3(6,3,8); printf("Box 1: (length = %d, breadth = %d, width = %d)\n",b1.getLength(), b1.getBreadth(), b1.getHeight()); printf("Box 2: (length = %d, breadth = %d, width = %d)\n",b2.getLength(), b2.getBreadth(), b2.getHeight()); printf("Box 3: (length = %d, breadth = %d, width = %d)\n",b3.getLength(), b3.getBreadth(), b3.getHeight()); if(b3 < b2){ cout << "Box 3 is smaller, its volume: " << b3.CalculateVolume() << endl; }else{ cout << "Box 3 is smaller, its volume: " << b2.CalculateVolume() << endl; } cout << "There are total " << Box::count << " box(es)"; }
Đầu vào
b1; b2(5,8,3); b3(6,3,8);
Đầu ra
Box 1: (length = 0, breadth = 0, width = 0) Box 2: (length = 5, breadth = 8, width = 3) Box 3: (length = 6, breadth = 3, width = 8) Box 3 is smaller, its volume: 120 There are total 3 box(es)