トップページへ戻る
つくれる?iPhoneアプリ
cocos2dを使ってPHPぐらいはわかるプログラマーに解説してみる

クラスの解説


どのページでも
ご自由にリンクしてください。

感想ご要望はお気軽に!
info@taskinteractive.com


■順番に解説
・導入
その1
導入


その2
HelloWorld


その3
わからない単語でも安心


その4
いじるファイルと画面構成


その5
ソースにある単語を手探る


その6
実行の順を追って手探る


その7
クラスの名前と素性を手探る


・サンプル1
その8 ボール遊び1
Scene/Layer/Sprite


その9 ボール遊び2
ファイル名を変えてみる


その10 ボール遊び3
ソースをいじってみる



■項目ごとに解説
クラスの解説
その1 クラスって何?


クラスの解説
その2 インスタンスって何?


クラスの解説
その3 オブジェクト指向って何?




企画・販売元タスクインタラクティブ


オブジェクト指向とインスタンス

クラスまでわかったとしても、次に立ちはだかるのが『インスタンス』というものですね。 インスタンスを生成、なんていわれると、何を作るの?と思います。
この辺からオブジェクト指向に拒否反応を覚える30代以上のプログラマーも多いでしょう(笑)。

でも、親方君とコロ君に任せておけば大丈夫!



インスタンスを生成する

そんなこんなで、親方君とコロ君がいつもどおり仕事をしていたのですが、あるとき動物園のイベントとして、『動物ビリヤード大会』を開くことになりました。

動物が玉になってステージで動き回ります。
コロ君も、玉の被り物をして、ステージの上に上がることになりました。
ルールは普通のビリヤードとまったく同じです。


今まで個別に指示を出していた親方君が考えました。


『せっかくビリヤードの玉の仕事クラスを作ったんだから、
 そのクラスの表をコピーして渡し、その玉については担当者に任せてしまったほうがいいかも。』


そこで、動物ビリヤード大会が始まるときに、親方君はみんなを集めて言いました。



『ボールは15個+1個(手玉)があるので、ひとつのボールを一人に任せます。
 こないだまで紙に書いて見せていた『ボール』というクラスを、今度は担当者にコピーして渡します

 それで、コピーして渡すときに、誰がどれだか判らなくならないように、それぞれ別の名前をつけて渡します。』








そして、コロ君には7番のボール担当が決まりました。

親方はコロ君に『ボール』というクラスを『ボール7』という名前でコピーして渡しました。






ここまでの、『クラスを別名でコピーして用意する』が、いわゆるインスタンスの生成というやつです。



PHPで言えば、

$ball7 = new ball;


こんな感じですね。

Objective-c だと、

ball7 = [ball alloc];


こんな感じですね。

これでコロ君に $ball7 / ball7 というインスタンスが渡されたことになります。


言い方を変えると、『ボール7』というインスタンスは、紙に書かれていただけだった『ボール』というクラスをコピーして『ボール7』というオブジェクト(物体)にしたものです。

今後は、そのインスタンスに向けてメッセージを送ることで、指示を出すことが出来るようになったわけです。




初期化する


それから、忘れてはいけません。
こうしてボールを新規に用意するに当り、そのボールが何番かなどの情報が必要です。
便宜上『ボール7』という名前をつけていますが、それはただの名前です。
『ボール007』でも『ボール家七兵』でも『コロボール』でもいいのです。

ボールが何番かわからないと、何番という数字を表示していいのか、あるいはボールの色や柄はどうすればいいのかがわかりません。



そこで、親方は明確に、『7番だよ』ということを伝えて、7番ボールとしてのセッティングをしなければなりません。









これが、『初期化』といわれるやつで、『インスタンスの生成』→『初期化』という流れで、

クラスをコピーしてクラスオブジェクトという実体を生成
 ↓
初期化して使用開始


というところまで来ました。



この初期を Objective-c で書くと、

[ball7 init:7];

こんな感じですね。
この、『数字は7だよ』というのは、親方からコロ君演ずるインスタンスの『ボール7』に『メッセージ』として送られました。

これを、そのまま『メッセージを送る』という言い方をします。



次は、『オブジェクト指向』ってどう便利?を解説します。





別の例を出してみる

※おまけですので読み飛ばしてOKです。

『クラス』は設計図、『インスタンス』はそれを実装したもの、という言われ方をします。

ここではビリヤードの玉になぞらえていますが、別の例えとして、『クラス』は自動車の設計図、『インスタンス』はその設計図を実体化した自動車、のように言われることもあります。

自動車の設計図であるクラスオブジェクトから、自動車である『インスタンスオブジェクト』を生成して、『色』や『排気量』などを指定して『初期化』する、という感じです。


設計図に『加速して』とか『ラジオをつけて』と言ってもしょうがないですが、実体化したインスタンスに『右へ曲がって』とか『エアコンの温度を下げて』とメッセージを送ることができます。

実装とか実体化とか言っても、テキストで書かれたプログラムである『クラス』から、手で触れる『物』として『インスタンス』が出来上がるわけではないので、最初はなんとなくイメージしづらいかもしれません。

でも、慣れればすぐに理解できるようになるから大丈夫です。