Objective-C オブジェクト指向プログラミング
Objective-Cはオブジェクト指向言語です。phpはフレームワーク等を使いオブジェクト指向のプログラミングができますが厳密にはスクリプト言語なのでオブジェクト指向言語ではありません。
javaや.netを経験しているんで大丈夫かと思いますが、Objective-Cではどうなんだろ?
とりあえず進めていきます。
目次
オブジェクトとクラス
私の認識で記述するとクラスは属性(プロパティ)を持ち、いろいろな振る舞い(メソッド)を行います。クラスは設計図みたいなものなのでそのまま使うことができない。インスタンス化して使えるもの(オブジェクト)にする必要がある。
ラジコンで例えるとラジコンを作るための設計図はあるが設計図だけでは走ったり曲がったりできない。というかものが無いので何もできない。頭の中で走らせたり曲がったりすることは可能だが。。。
設計図をもとにモーターやタイヤ等を組み合わせラジコンの本体を作って初めて走らせて遊ぶことができる。
色を赤にしたり、タイヤをイボイボのやつにかえたりもできる。
これがオブジェクト指向かと私は思ってます。設計図がクラス、設計図をもとにつくったラジコンがオブジェクト。走る、曲がるがメソッド。色、タイヤがプロパティ。
プロパティ
プロパティにはドットシンタックスでアクセスできる。
myObj.color = @"red"; myObj.tire = @"iboibo";
phpとは違うがjava等と一緒だね!
メソッド
[オブジェクト メソッド名 : 引数1 ラベル2 : 引数2 ラベル2 : 引数2 ...
[myObj run: 10] [myObj run: 10 speed: 60]
・・・
なんじゃこりゃ・・・
javaだと myObj.run(10); だよな。
何だこの書き方は。。。
なんじゃこりゃ・・・
javaだと myObj.run(10); だよな。
何だこの書き方は。。。
Objective-Cではオブジェクトにメソッドを送る「メッセージ式」を使ってメソッドを実行するそうです。
インスタンスの作成と初期化
インスタンス作成は基底クラスのallocメソッドを使用し初期化にはinitメソッドを使う。
// インスタンス作成 NSDate *dt = [NSDate alloc]; // 初期化 dt = [NSDate init]; // インスタンス作成して初期化 NSDate *dt2 = [[NSDate alloc] init];
うーーん。。
phpだと $obj = new MyObj(); だよな。
なんかややこしいぞ。。。
若干くじけそうになった。
phpだと $obj = new MyObj(); だよな。
なんかややこしいぞ。。。
若干くじけそうになった。