トップページへ戻る
つくれる?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 オブジェクト指向って何?




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


クラスって何?

クラスって何?と思われている方にとっては、オブジェクト指向の言語はまさに不明の森だと思います。
というか、私も初めてオブジェクト指向に手を出したときは、同じ状態でした。

普通のブログラムであれば、ソースコードに書いてある単語は、基本的にはすべてリファレンスマニュアルに書いてあります。
なので、わからないながらもリファレンスマニュアルを追っていけばなんとか理解の糸口がつかめます。

はじめてObjective-Cのソースを見ると、わからない単語だらけなのに加え、その単語の意味をどこで見つければいいかわかりません。
そこで、このサイトではその5 ソースにある単語を手探るその7 クラスの名前と素性を手探るで、クラス名を手探る方法を書きました。

でも、それだけでは『わからないこと』から『わからないこと』がつながるだけかもしれません。
そこで、このページでは、今度は『クラスとは何ぞや』『どのように使えばいいのか』などを解説します。



クラスの成り立ち

クラスとは何?何でそんなもの使うの?の疑問は、その成り立ちを見ると良くわかります。

ここではクラスをやわらかく理解するために、『動物園コンピュータ』で命令する親方君と、それを実行するコロ君を使って例えます。

『10という数字を画面に表示しておいて』と、親方君はコロ君に指示を出します。

しかも、毎日毎日何回も。

PHPで言えば、

echo "10";
ですね。


そこで、親方君は考えました。
これは紙に書いておいて、それを見せればいいのではないかと。
その、先に『定義しておく』ものは、関数といわれるもので、実行するプログラムがかかれたものです。


PHPで言えば、

function echoNumber(){
echo "10";
}

という関数を定義しておいて、

echoNumber();

で、それを実行ですね。


あるとき、親方君は、10以外の数字を表示する必要に迫られました。
そこで、ふと気づいたのは、この数字の『10』のところだけ、差し替えられるようにしておけばいいのではないかと。



PHPで言えば、

function echoNumber($num){
echo "$num";
}

という関数を定義しておいて、

echoNumber(15);

で、それを実行ですね。




実は、この『数字を表示する』というのは、ある仕事の一部でした。
コロ君がやっていたのは、『ビリヤード大会』のビリヤードの玉に数字を表示することでした。

親方君は、『数字を表示する』以外にも、
 ・打たれたら玉を移動させる
 ・ぶつかったら方向とスピードがかわる
 ・穴に落ちたらステージから消す
などなどの仕事を、個別に支持していたのです。

あるとき、親方君は考えました。
ビリヤードの玉に関する命令を一まとめにして定義しておけばいいのではないかと。

そこで、紙にこう書きました。


ビリヤードの玉の仕事一覧
この一覧に『ボール』という名前(クラス名)をつけて定義

 『ボール』

・新規に玉を用意する(番号)
・玉を表示する(柄)
・玉に数字を表示する(数字)
  ↑
  コロ君がやってた仕事
・玉を移動する(x座標,y座標)
・穴にきたら玉を落として消す


これが、いわゆる『クラス』といわれるものです。
命令のひとグループですね。


PHPで言えば、

class ball {
    function setBall(){
    }
    function echoBallImg($type){
    }
    function echoNum($num){
    }
    function moveBallTo($x,$y){
    }
    function dellBall(){
    }
}

ですね。


この一覧を見せながら、『ボール』の『番号表示を(15)に』という感じで指示を出していました。
『ボール』をクラス、『番号表示を()に』をメソッドという言い方をします。




ここまでが、単純にクラスのお話です。
後で詳しく書きますが、クラスが出てきましたが、まだ、オブジェクト指向ではないです。