我們先來看看 Encrypt 的建構子 (constructor) ,這部份很單純
Encrypt::Encrypt() { setoArray(); setcArray(); }
Encrypt 的建構子就是呼叫 setoArray() 與 setcArray() ,建立兩個成員變數 (member variable) oArray 與 cArray 。
oArray 為按字母順序的英文小寫字母,我們提供的 setoArray() 如下
void Encrypt::setoArray() { string s; char c = 'a'; int i; for (i = 0; i < N; i++) { s += c++; } oArray = s; }
由於 c 為 char 型態 (type) ,初值為 'a' ,我們把初值為 'a' 的 c 加進 s 之中,之後 c 用遞增運算子遞增 1 變成 'b' ,再加進 s 之中,直到最後為 'z' 的 c 也加進 s 內後,迴圈 (loop) 才結束。
為什麼 string 型態的 s 可以直接用 += 的運算子 (operator) 增加元素 (element) 呢?這是因為 += 在 string 中經過重載 (overload) 改寫,因此可以這樣使用。
我們先給給初值建立 cArray() , a 給 3 , b 給 5 好了,其他就按照公式囉
void Encrypt::setcArray() { int a = 3; int b = 5; int x, y, m; char r; char c = 'a'; string s; int i; for (i = 0; i < N; i++) { x = c; y = x * a + b; m = y % N; s += (char) m + DIFF; c++; } cArray = s; }
因此包括 getoArray() 與 getcArray() 的 Encrypt.cpp 如下
#include "Encrypt.h" Encrypt::Encrypt() { setoArray(); setcArray(); } void Encrypt::setoArray() { string s; char c = 'a'; int i; for (i = 0; i < N; i++) { s += c++; } oArray = s; } void Encrypt::setcArray() { int a = 3; int b = 5; int x, y, m; char r; char c = 'a'; string s; int i; for (i = 0; i < N; i++) { x = c; y = x * a + b; m = y % N; s += (char) m + DIFF; c++; } cArray = s; } string Encrypt::getoArray() { return oArray; } string Encrypt::getcArray() { return cArray; } string Encrypt::toEncode(string s) {} string Encrypt::toDecode(string s) {} /* 《程式語言教學誌》的範例程式 http://pydoing.blogspot.com/ 檔名:Encrypt.cpp 功能:示範 C++ 程式 作者:張凱慶 時間:西元 2012 年 10 月 */
雖然 toEncode() 與 toDecode() 還沒寫出來,沒關係,先留空就可以了,我們先寫 EncryptDemo.cpp 來測試看看囉
#include <iostream> using std::cout; using std::endl; #include "Encrypt.h" int main() { Encrypt encryptor; cout << endl; cout << encryptor.getcArray() << endl << endl; return 0; } /* 《程式語言教學誌》的範例程式 http://pydoing.blogspot.com/ 檔名:EncryptDemo.cpp 功能:示範 C++ 程式 作者:張凱慶 時間:西元 2012 年 10 月 */
編譯執行結果如下
嗯,結果還不錯,不過我們希望可以有不同的密碼表,所以接下來要繼續測試囉!
中英文術語對照 | |
---|---|
類別 | class |
實作 | implementation |
測試 | test |
建構子 | constructor |
成員變數 | member variable |
型態 | type |
迴圈 | loop |
運算子 | operator |
元素 | element |
重載 | overload |
您可以繼續參考
軟體開發
相關目錄
回 C++ 入門指南
回 C++ 教材目錄
回首頁
參考資料
http://www.cplusplus.com/doc/tutorial/classes/
http://www.cplusplus.com/doc/tutorial/classes2/
沒有留言:
張貼留言