 今回から、家計簿のプログラムに挑戦です。
今回から、家計簿のプログラムに挑戦です。
#include <iostream.h> class Kakeibo { int zankin; public: Kakeibo(); void Input(int); void Output(int); void Disp(void); }; Kakeibo::Kakeibo(void) { zankin = 0; } void Kakeibo::Input(int mon) { zankin += mon; return; } void Kakeibo::Output(int mon) { zankin -= mon; return; } void Kakeibo::Disp(void) { cout << "残金は" << zankin << "円です" << endl; return; } int main(void) { char sw; int okane; cout << "家計簿" << endl; cout << "I:収入 O:支出 D:残金表示 E:終了" << endl; Kakeibo Mykakei; while(1) { cout << "何をしますか="; cin >> sw; switch(sw) { case 'I':cout << "収入金額="; cin >> okane; Mykakei.Input(okane); break; case 'O':cout << "支出金額="; cin >> okane; Mykakei.Output(okane); break; case 'D':Mykakei.Disp(); break; case 'E':cout << "終了します" << endl; goto End; break; default:cout << "もう一度入力して下さい" << endl; break; } } End: return 0; }
 まずは、main関数からみてみましょう。
ここでは、MyKakeiオブジェクトを生成して、
処理を求めるプログラムです。
switch(ここ)の「ここ」にはint型の変数が入ることに
注意して下さい。どうして、char型のswが入っているか
わからない人はC言語編第7章をみて下さい。
switch文の中では、swの値によっていろいろなメンバ関数を
呼び出しています。Inputは収入、Outputは支出に関係
あるというのは、想像できますね。変数とか、クラス名とか、
関数名は、その名前をみただけでどんなものか、想像がつく
ものにしましょう。
まずは、main関数からみてみましょう。
ここでは、MyKakeiオブジェクトを生成して、
処理を求めるプログラムです。
switch(ここ)の「ここ」にはint型の変数が入ることに
注意して下さい。どうして、char型のswが入っているか
わからない人はC言語編第7章をみて下さい。
switch文の中では、swの値によっていろいろなメンバ関数を
呼び出しています。Inputは収入、Outputは支出に関係
あるというのは、想像できますね。変数とか、クラス名とか、
関数名は、その名前をみただけでどんなものか、想像がつく
ものにしましょう。
次に、Kakeiboクラスをみてみましょう。 データメンバは、zankinのみです。 しかも、これはprivateですから、クラス外からは 参照も、書き換えもできません。 間違って、残金を書き換えられたら大変ですから、 これは当然ですね。世の中では、 「情報公開」 というのが、流行していますが、プログラムの世界では、 「データの隠蔽」 というのが大流行です。
次に、メンバ関数をみてみましょう。 コンストラクタKakeiboは、残金の初期化をします。 いきなり、zankinにアクセスが起こった場合 まずいことになるのでこれは当然でしょう。 この場合、コンストラクタが呼ばれると常に 残金が0円になってしまいます。後々問題が 起こりそうですね。でも今回は簡単のためにこのまま にしておきましょう。
Inputメンバ関数は、残金にその引数を加えます。
という書き方は、わかりますね。zankin += mon;
と同じです。よくわからない人は、C言語編を 復習してみて下さい。zankin = zankin + mon;
Outputメンバ関数も、残金から引数を引くだけで 説明の必要はないでしょう。
Dispメンバ関数は、残金を表示します。
特別難しいことは、していないので
今回のプログラムは、すぐに理解できたことと思います。
 実行結果は、左の通りです。
実行結果は、左の通りです。
xなどという入力をすると「もう一度入力して下さい」 と注意を促している点に注意して下さい。
このプログラムでは、いろいろ不満がありますね。
たとえば、残金がマイナスになっても何も
注意されません。それと、一度終了してしまうと
次回は、残金0から再出発です。
その他、いろいろ問題点があります。
少しずつ問題を解決していきましょう。
Update Feb/21/1997 By Y.Kumei