Giả sử chúng ta muốn tạo kiểu dữ liệu sinh viên với tính năng ẩn và đóng gói dữ liệu. Học sinh phải có các mục first_name, last_name, age và class, nhưng không thể truy cập trực tiếp các biến này. Chúng ta sẽ phải xác định một số hàm như get_firstname () set_firstname (), get_age () set_age (), v.v. để truy xuất và cập nhật các giá trị biến, và một hàm to_string () để hiển thị chi tiết học sinh ở định dạng này (age, first_name, last_name, class ). Từ bảng điều khiển, lấy bốn tham số làm đầu vào và đặt chúng bằng các phương thức setter mà chúng tôi đã xác định, đồng thời hiển thị từng mục bằng cách sử dụng phương thức getter và cuối cùng là sử dụng phương thức to_string ().
Vì vậy, nếu đầu vào giống như
priyam kundu 16 10
thì đầu ra sẽ là
16 priyam kundu 10 (16, priyam, kundu, 10)
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
xác định một lớp với first_name, last_name của kiểu chuỗi và tuổi, cl thuộc kiểu số nguyên
-
xác định các hàm getter cho tất cả các thuộc tính
-
xác định các hàm setter cho tất cả các thuộc tính
-
xác định hàm to_string () bằng cách sử dụng đối tượng chuỗi dòng và tạo chuỗi được định dạng phù hợp với định dạng đầu ra
-
Từ phương thức chính, thực hiện như sau -
-
đọc từng dòng và lưu trữ lần lượt first_name, last_name, age, cl
-
gọi hàm setter để đặt các giá trị này thành các thành viên của lớp
-
in tất cả các thuộc tính bằng cách sử dụng các phương thức getter;
-
hiển thị thông tin học sinh ở định dạng này (age, first_name, last_name, cl) bằng cách sử dụng hàm to_string ().
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
#include <iostream> #include <sstream> using namespace std; class Student{ private: int age, cl; string first_name, last_name; public: int get_age(){return age;} int get_class(){return cl;} string get_firstname(){return first_name;} string get_lastname(){return last_name;} void set_age(int a){age = a;} void set_class(int c){cl = c;} void set_firstname(string fn){first_name = fn;} void set_lastname(string ln){last_name = ln;} string to_string(){ stringstream ss; ss << "(" << age << ", " << first_name << ", " << last_name << ", " << cl << ")"; return ss.str(); } }; int main() { Student stud; int age, cl; string first_name, last_name; cin >> first_name >> last_name >> age >> cl; stud.set_age(age); stud.set_class(cl); stud.set_firstname(first_name); stud.set_lastname(last_name); cout << stud.get_age() << endl; cout << stud.get_firstname() << endl; cout << stud.get_lastname() << endl; cout << stud.get_class() << endl; cout << endl << stud.to_string(); }
Đầu vào
priyam kundu 16 10
Đầu ra
16 priyam kundu 10 (16, priyam, kundu, 10)