2013年7月31日水曜日

クラスの概念

クラスとは一言で言うと、Cの構造体がレベルアップしたものです。

ですので、Cの構造体を構造体を少しだけ拡張したものと思ってください。

そもそもCの構造体とは、複数の型の変数を一纏めにしたものでした。

例えば、このような形で記述します。

学生構造体
struct Student {   //構造体タグ名
    int    number;     //int 型メンバ変数  学籍番号
    char name[20];   //char型メンバ変数 氏名
    int    japanese;   //int 型メンバ変数  国語
    int    math;        //int 型メンバ変数  数学
    int    science;     //int 型メンバ変数  理科
};

構造体では変数をまとめられるだけでしたが、C++のクラスでは関連する
手続き(関数)もまとめることができます。

例えば、このような形で記述します。(^_^;)

学生クラス
class Student {    //クラス名
public:  //キーワード
  //メンバ関数 学生情報を設定する
  int SetStudentInfo(int num, char *name, int ja, int ma, int sci);
  //メンバ関数 学籍番号から3教科の合計点を求める   
    int GetSum(int student_num);   
private:   //キーワード
    int number;    //メンバ変数 学籍番号
    char name[20];    //メンバ変数 氏名
    int japanese;       //メンバ変数 国語
    int math;            //メンバ変数 数学
    int science;        //メンバ変数 理科
};

classはクラス宣言をしているだけので、ちょうど構造体のstructと同じような役割ですね。 
クラスに含まれる要素を総称して、メンバといいます。

public, private は、以前 お約束 の記事で紹介したC++のキーワードになります。
詳しい説明はまた別の記事でしたいと思います。
まずは、こういう形式だというイメージを捉えてください。


オブジェクトの概念
クラスは、変数に対する型のようなもので、それ自体には値を格納することはできません。
そのため、クラスという設計図を元に値を格納できる実体を作る必要があります。

この実体がオブジェクトという モノ になります。
Cの構造体でも型を定義した後、使うときに実体を宣言しましたね。あれと同じです。


それでは、今日はこのへんで。成し遂げたいことのために挑みつづけると多忙な毎日が送れます^^
次回はクラスとメンバ関数の定義やオブジェクトの生成などを詳しく説明したいと思います。



今日の名言
自分の心に描く夢の実現に向かって努力する時、普段なら思いもよらぬ、成功が得られる。
空中に楼閣を建てても無駄骨には終わらない。楼閣は空中に建てるものだ。
さあ、その下に土台を建てよう。
                                    ヘンリー・デイビッド・ソロー

大胆は勇気を、臆病は恐怖をもたらす。
                                 プブリウス・シルス

結局のところ、「こんなことは馬鹿げてはいないか」という恐怖心以外に、
この世に馬鹿げたものは存在しない。
                                    アンリ・フォーコニエ