使用資料隱藏和封裝來儲存學生資訊的C++程式


假設我們想要建立一個包含資料隱藏和封裝的學生資料型別。學生必須具有first_name、last_name、age和class項,但這些變數不能直接訪問。我們將不得不定義一些函式,例如get_firstname()、set_firstname()、get_age()、set_age()等來檢索和更新變數值,以及一個to_string()函式以以下格式顯示學生詳細資訊(年齡、名字、姓氏、班級)。從控制檯獲取四個引數作為輸入,並使用我們定義的setter方法設定它們,並使用getter方法顯示每個專案,最後使用to_string()方法。

因此,如果輸入類似於

priyam
kundu
16
10

那麼輸出將是

16
priyam
kundu
10

(16, priyam, kundu, 10)

為了解決這個問題,我們將遵循以下步驟:

  • 定義一個類,其中first_name、last_name為字串型別,age、cl為整數型別。

  • 為所有屬性定義getter函式。

  • 為所有屬性定義setter函式。

  • 使用字串流物件定義to_string()函式,並建立與輸出格式匹配的格式化字串。

  • 從main方法執行以下操作:

  • 讀取每一行,並分別儲存first_name、last_name、age、cl。

  • 呼叫setter函式將這些值設定為類成員。

  • 使用getter方法列印所有屬性。

  • 使用to_string()函式以這種格式(年齡、名字、姓氏、cl)顯示學生資訊。

示例

讓我們看看下面的實現,以便更好地理解:

#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();
}

輸入

priyam
kundu
16
10

輸出

16
priyam
kundu
10

(16, priyam, kundu, 10)

更新於: 2021年10月7日

471 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.