『絶対に挫折しない iPhoneアプリ開発「超」入門』chapter5
Objective-Cによるオブジェクト指向のプログラミングについて学びました。
よくいろいろな入門サイトとかで見る「クラス」「プロパティ」「インスタンス」「メソッド」についてとてもわかりやすく解説されています。
この辺が詳しく説明されているサイトがなくて、今までかなりぼんやり何となくやりすごしてきたのですが、ここの説明によって結構明確に整理できてきた気がします。
これらの関係性は書籍に書かれている図で視覚的にイメージするのが良いと思います。
とてもわかりやすい!
文字だけではわかりづらいけど、一応こういうことです。
・クラスは設計図(Animal)
・インスタンスは大きな箱(dog)→ 設計図に基いて作られる実物
・プロパティはインスタンスの中に入っている小さな箱(voice)→ クラスの特性
・メソッドはインスタンスが持っている機能(speak)→ 特性
ここで、他の入門サイトとかで見てもよくわからなかったけど、Objective-Cによるオブジェクト指向のプログラミングをすることについて重要なことをメモも兼ねて整理します。
インスタンスを使うためには以下の4つの手順が必要。
1.インスタンスを宣言する
2.インスタンスを生成する
3.インスタンスを初期化する
4.インスタンスを使用する
[インスタンスの宣言]
Animal *dog;
まず、インスタンスの名前を決めます。
クラス名 *インスタンス名; って感じです。
[インスタンスの生成]
dog = [Animal alloc];
allocとはallocationの略で、「割り当て」という意味です。ここではメモリ確保の意味で、[クラス名 alloc]という使い方をします。
メモリ確保した無名のインスタンスが返ってくるので、それをインスタンス(ここではdog)に代入して、dogという名前のついたインスタンスを作ります。
[インスタンスの初期化]
dog = [dog init];
インスタンスを初期化するにはinitというメソッドを使います。
initとはinitializeの略で、「初期化する」という意味です。その名の通りです。
初期化された無名のインスタンスが返ってくるので、それをインスタンス(ここではdog)に代入して、dogという名前が付いた状態にしてあげます。
[インスタンスの使用]
dog.voice = @"ワン!";
こんな感じで使っていきます。これは、dogインスタンスのvoiceプロパティに「ワン!」という鳴き声を代入しています。
Animal *dog;
dog = [Animal alloc];
dog = [dog init];
インスタンスを宣言して使えるようにするための準備としては細かく分けると上記の流れになりますが、普通はこれを全部一行にまとめます。
Animal *dog = [[Animal alloc] init];
これで、よくいろんなサイトのサンプルコードとかに出てくる形になりました。
まぁ、理屈としてはこういうことですが、インスタンスを作る時の決まり文句的にこの形を覚えちゃうのが良さそうです。
クラス名 *インスタンス名 = [[クラス名 alloc] init];
Objective-Cでプログラミングする上では基本的なことだけど、以外とWeb上で詳しい解説が見つからなかったので、今回とてもいい勉強になりました!
* この記事はこの書籍で勉強しています。