1.何だか分からないけど,「クラス」
さて,プログラムを作りましょう.とりあえず「クラス」です.下のリストを見ましょう.
#include <stdio.h>
class TEST {
public:
float Input1, Input2;
float Addition (void);
};
float TEST::Addition (void) {
float Result;
Result = TEST::Input1 + TEST::Input2;
return (Result);
}
void main (void)
{
TEST A;
A.Input1 = 3;
A.Input2 = 4;
printf ("%f\n", A.Addition ());
}
|
何なのこれ?ってあきらめないでください.このプログラムは2つの値をたして答えを出すというものです.ともかく1行目から説明していきましょう.
#include<stdio.h>というのはどこかの誰かは「おまじない」などといって惑わせているのですが,本来は,この中に用意された関数を使うという宣言をするものです.例えていうなら,これから複雑な計算をするのに使うのに「計算機」という道具が必要だと思ったら,「計算機」の入った「道具箱」を持ってくるようなものです.もちろんこの道具箱には「計算機」以外のものも入っています.だから,stdio.hの中にはいろいろな関数が納められているのです.
ここから,本当の「クラス」の話.3行目でclassと定義されているのが「クラス」です.classの文法は,class クラスの名前 {……};で……の中に,変数や関数を定義します.この「クラス」の中で定義された変数や関数は特別の宣言なしにお互いに利用できます.ではこのTESTという「クラス」の中身を見ていきます.
最初のpublic:は,このあとに定義された変数・関数をそのまま外から直接利用できるのかを指定します.英語でpublicは「公」という意味ですから,外から直接利用できるという意味になります.float Input1, Input2;は,入力に2つの変数を「実数型」で用意するというものです.その次のfloat Addition (void);はあとで説明しますが,2つの入力を加算して答えを返す関数です.その関数をここで定義しています.これでTESTクラスは,2つの入力用変数とそれらを加算する関数からなるということが定義されました.
今度は先ほどのAdditionという関数の性格付け(?)です.まず,関数ですから引数を持たなくてはいけませんが,「クラス」の中で宣言したInput1とInput2を利用するので引数は必要ありません.そのときは(void)としてあげましょう.返す値はこの2つの変数の足し算ですからもちろん実数型.で,TESTクラスに所属している関数ですから,float TEST::Addition (void){……};という形で宣言されます.この関数の中身は,float Result;で足し算の結果用の変数を用意し,Result = TEST::Input1 + TEST::Input2;で足し算の結果を代入し,Return (Result);でこの関数の結果としてResultの内容を返します.
ここまでがTESTクラスの宣言になります.でも,これではプログラムが動きません.例を示せば,「クラス」は「2つの数を足して答えを出せる人が居ます」という宣言にしかなりません.この人に「計算をさせる」という動作が無ければ,プログラムではないのです.この動作をさせているのがint main (void) {……};の部分です.
TEST A;で,TESTクラスの性格を持った名前がAというものを用意しています.先ほどの例でいえば「2つの数を足して答えを出せるAという名前の人を用意します」ということになりますね.つぎにA.Input1 = 3;とA.Input2 = 4;で入力として3と4を代入することになります.言い換えれば「Aさんに足してもらう数を3と4にした」というところでしょうか?
printf ();というのは画面に何かを表示しなさい!という関数です.これは最初にいった,stdio.hに用意されている関数です.この関数を使うためにstdio.hを用意していたわけです.ではこのprintfの()の中身について.実際にはこの""の中にかかれた内容を表示するのですが,変な文字が並んでいます.%fというのはこのあとに続く実数の数の内容をここに当てはめて表示しなさいということになります.printf ("%f", 3.0);とすれば3.0と表示されます.それじゃあ,printf ("3.0")とやってもいいじゃないか?ということになりますが,3.0の部分が変数や関数の返り値だった場合はどうしますか?そのために前者のような書き方をするのです.\nというのは改行を表します.要するに,%fのところで数値が表示されたら改行をしなさいということになります.この%fのところに入る数は,Input1とInput2の足し算の結果ですので,先ほどのAddition()を使うわけですが,Aさんに足し算させる(?)ので,A.Addition ()ということになります.これでプログラムの動作が決まりました.
正しく実行できたら,入力の値を変えたりして,他の動作を確認してみてください.
|