2013年8月4日日曜日

オブジェクトを生成して使ってみる

インスタンス化

クラスからオブジェクトを生成する方法です。定義したクラスはインスタンス化しないと
メモリ領域が確保されませんので、使用できません。

//前回定義した 桃の箱 クラス
class PeachBox {
public:
    void Add(int addpeach);
    void Del(int delpeach);
    void Empty();
    int GetTotal();
private:
    int m_total;
}; 


この場合に、桃の箱オブジェクトを生成してみます。

PeachBox myPeachBox;  //変数の宣言の仕方と同じですね^^

この myPeachBox  がオブジェクトになります。
通常の変数と同様に、好きな名前 がつけられます。

myPeachBoxはPeachBoxクラスのメンバ
Add(), Del(), Empty(), GetTotal(), m_totalを持っています。


また、オブジェクトは複数生成することができます。

PeachBox myPeachBox1;
PeachBox myPeachBox2;
PeachBox myPeachBox3;
          :

そして、各オブジェクトごとに別々のデータを格納することができます。

使い方イメージ
myPeachBox1には桃が12個、myPeachBox2には桃が8個あります。
それぞれから2個ずつ取り出し、myPeachBox3に入れます。

このような処理をプログラミングすることになります。^^




メンバ関数の呼び出し
次に、メンバ関数の呼び出し方法を説明します。

同じオブジェクト内のメンバ関数の呼び出し
void PeachBox::Empty()
{
    m_total = 0;
}

void PeachBox::Del(int delpeach)
{
    m_total -= delpeach;
 
    if (m_total < 0) Empty();
}


 同じオブジェクト内のメンバ関数を呼び出すときは、関数名だけの記述でOKです。
 ここでは桃の数(m_toal) が 0未満になりそうなときはメンバ関数Empty()を呼び出し
 0に設定しています。 桃の数がマイナスだったらおかしいですもんね(^_^;)
 

他のオブジェクト内のメンバ関数呼び出し
int main()
{
    PeachBox myPeachBox1;
    PeachBox myPeachBox2;

    myPeachBox1.Empty();
    myPeachBox2.Add(3);
        :


 他のオブジェクト内のメンバ関数を呼び出すときは、「.(ピリオド)」を使って
 どのオブジェクトのメンバなのかを指定します。

 ピリオドを使用するのは、Cの構造体のメンバ参照と同じですね^^



今日の名言
「やろう」と思う強い意志は、これまで行ってきた行動の回数と、そのときの決意の強さによって
決まります。そして行動にかかるたびに、人間の脳は成長します。そうなった時に、本当の信念が
生まれるのです。せっかく決心しても、また美しい気持ちを抱きかけても、実を結ぶことなく立ち消えに
なってしまえば、その損害は機会を失ったときよりはるかに大きいでしょう。その人の将来の目的の
達成が遅れてしまうし、心の冷たい人になってしまうからです。口先だけなら、誰でも強そうなことが
言えます。でも実際にその場で発揮できる勇気は、いつの場合でも十分ではありません。
私たちは、毎日勇気が少しずつ蒸発するに任せているからです。
                                           ヘレン・ケラー

何事にも動じない決断力ほど、気概のある人間を作り出す要因はおそらくあるまい。将来、大人物を
目指す若者や、死後何らかの点で大人物に数えられたいと願う若者は、単に底知れぬ障害を克服
する決心をするだけではダメだ。数知れぬ拒絶と敗北に出会っても、障害を克服してみせる決心が
必要である。
                                           セオドア・ルーズヴェルト


恐怖を克服する決心をしさえすれば、たいていの恐怖は克服できる。恐怖は人の心の中にしか
そんざいしないからだ。
恐ろしくなったら、自分のやるべき仕事のことを一心に考えることだ。すっかり仕事に対する心構えが
できれば、恐怖心は消え去る。
                                           デール・カーネギー