こんにちは、yusuke#9です。
今回はObjective-Cとオブジェクト指向についてまとめます。
まとめたいことがたくさんあるのに、ちょっとしたことでも
まとめだすと結構なボリュームになってしまうので、
ビビってます。。。
Objective-Cというのは、iPhoneアプリの開発に使う言語なのですが、
その名の通り、オブジェクト指向的なC言語だな、って思います。
C言語というのは、一番機械語に近い記述ができるプログラミング言語、だと
思っているのですが、違いますかね。あまり他いろいろ知らないもので。。。
とにかく、JavaとかActionScriptなんかよりずっと、iPhoneに近いところで
作ってるのかな、って思ってます。
で、オブジェクト指向というのは、モノに例えるとかなんとか、
いろんなところでいろんなことをいわれていますが、
要するに、構造体と処理をセットにしたものだと思ってます。
構造体というのは、パラメータの集合体で。。。
この辺はもう、C言語の世界なのでちょっと説明しきれないので飛ばします。

例:たしざんクラス
要するに処理をしつつ、自分の状態も記憶できるので、とっても
優秀でいい子なのです。
オブジェクト指向では、あるオブジェクトに対して、その設計を定義
したものをクラスといい、クラスを実体化したものをオブジェクトと
いいます。作る時は、まずクラスの定義を記述して、その処理の中でクラス
を実体化する記述をするわけです。実体化するというのは、メモリ上に
そのオブジェクトの使う領域を確保する、ということです。
と、ここまでが前振りです。(長・・・)
それでは、本題。
Objective-Cでの記述について説明します。
実際に何か例があったほうがいいので、先ほどの足し算クラスを作ってみましょう。
まず、左のファイルの一覧でClassesフォルダを選択した状態で、
"command + N"を押します。
ダイアログが出てくるので、Objective-C classを選択、Subclass ofのプルダウン
をNSObjectにして次へを押す。
ファイル名を指定。"Tashizan"と入力し完了。
Classesフォルダ内にTashizan.hとTashizan.mができています。
まず、.hに手を入れます。
.hは処理を書かず、変数とメソッドの宣言をします。メソッドというのは
処理を行う関数です。
メソッドの宣言は
となります。
次に、.mにメソッド宣言した3つのメソッドの実際の処理を書きます。
valueは、.hで宣言したオブジェクト変数です。ここには値が残っています。
この変数valueに対しての処理を記述します。
メソッドの書き方は
です。
これでクラス定義完成です!
では、これを実体化して使うところを作りましょう。
記述するのは、**AppDelegate.hと.mです。
まず、.h
#importのところに1行追加。作ったTashizanクラスを読み込みます。
そして、.m
まず、1行目でオブジェクトを生成します。allocはメモリの割り当て、
initはオブジェクトの初期化をします。
ここで、Objective-Cのメソッドの呼び出しについて説明します。
メソッドは
で呼び出します。
ちなみに、引数が2個以上の場合は
引数がない場合は
となります。
Tashizan* となっているのは、変数tashiがメモリ上の割り当てられた場所を
持っていることを示しています。参照ってやつです。Objective-Cでは、
オブジェクトの実体を変数に持つことはできません。
img
オブジェクトを生成したあとは、順次、値を設定し、足して、結果を取得していきます。
この場合、画面上に
とでればOKです。
最後に、もう変数は必要ないのでメモリから解放します。それが8行目のreleaseです。
このメモリの解放についてはそのうち説明します。
わかればそれほどでもないのですが、ちょっとめんどくさいです。
あと、とっても重要です。
では。今回はここまで。
その他のこまかいこと↓

今回はObjective-Cとオブジェクト指向についてまとめます。
まとめたいことがたくさんあるのに、ちょっとしたことでも
まとめだすと結構なボリュームになってしまうので、
ビビってます。。。
Objective-Cというのは、iPhoneアプリの開発に使う言語なのですが、
その名の通り、オブジェクト指向的なC言語だな、って思います。
C言語というのは、一番機械語に近い記述ができるプログラミング言語、だと
思っているのですが、違いますかね。あまり他いろいろ知らないもので。。。
とにかく、JavaとかActionScriptなんかよりずっと、iPhoneに近いところで
作ってるのかな、って思ってます。
で、オブジェクト指向というのは、モノに例えるとかなんとか、
いろんなところでいろんなことをいわれていますが、
要するに、構造体と処理をセットにしたものだと思ってます。
構造体というのは、パラメータの集合体で。。。
この辺はもう、C言語の世界なのでちょっと説明しきれないので飛ばします。

例:たしざんクラス
要するに処理をしつつ、自分の状態も記憶できるので、とっても
優秀でいい子なのです。
オブジェクト指向では、あるオブジェクトに対して、その設計を定義
したものをクラスといい、クラスを実体化したものをオブジェクトと
いいます。作る時は、まずクラスの定義を記述して、その処理の中でクラス
を実体化する記述をするわけです。実体化するというのは、メモリ上に
そのオブジェクトの使う領域を確保する、ということです。
と、ここまでが前振りです。(長・・・)
それでは、本題。
Objective-Cでの記述について説明します。
実際に何か例があったほうがいいので、先ほどの足し算クラスを作ってみましょう。
まず、左のファイルの一覧でClassesフォルダを選択した状態で、
"command + N"を押します。
ダイアログが出てくるので、Objective-C classを選択、Subclass ofのプルダウン
をNSObjectにして次へを押す。
ファイル名を指定。"Tashizan"と入力し完了。
Classesフォルダ内にTashizan.hとTashizan.mができています。
まず、.hに手を入れます。
.hは処理を書かず、変数とメソッドの宣言をします。メソッドというのは
処理を行う関数です。
@interface Tashizan : NSObject {
int value; // 追加(変数宣言)
}
- (void)start:(int)v; // 追加(メソッド宣言)
- (void)add:(int)v; // 追加(メソッド宣言)
- (int)result; // 追加(メソッド宣言)
@end
メソッドの宣言は
- (戻り値の型)メソッド名:(引数の型)変数名;
となります。
次に、.mにメソッド宣言した3つのメソッドの実際の処理を書きます。
@implementation Tashizan
- (void)start:(int)v{
value = v; // 最初の値を設定
}
- (void)add:(int)v{
value = value + v; // 送られてきた値を足す
}
- (int)result{
return value; // 結果を返す
}
@end
valueは、.hで宣言したオブジェクト変数です。ここには値が残っています。
この変数valueに対しての処理を記述します。
メソッドの書き方は
- (戻り値の型)メソッド名:(引数の型)変数名{
処理
...
}
です。
これでクラス定義完成です!
では、これを実体化して使うところを作りましょう。
記述するのは、**AppDelegate.hと.mです。
まず、.h
#import <UIKit/UIKit.h>
#import "Tashizan.h" // ここに1行追加
#importのところに1行追加。作ったTashizanクラスを読み込みます。
そして、.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
// ここから
Tashizan* tashi = [[Tashizan alloc] init]; //1
[tashi start:1]; //2
[tashi add:5]; //3
[tashi add:4]; //4
[tashi add:7]; //5
[tashi add:8]; //6
NSLog(@"result = %d", [tashi result]); //7
[tashi release]; //8
// ここまで追加
[self.window makeKeyAndVisible];
return YES;
}
まず、1行目でオブジェクトを生成します。allocはメモリの割り当て、
initはオブジェクトの初期化をします。
ここで、Objective-Cのメソッドの呼び出しについて説明します。
メソッドは
[オブジェクト メソッド名:引数]
で呼び出します。
ちなみに、引数が2個以上の場合は
[オブジェクト メソッド名:引数 パラメータ名:引数 パラメータ名:引数 ...]
引数がない場合は
[オブジェクト メソッド名]
となります。
Tashizan* となっているのは、変数tashiがメモリ上の割り当てられた場所を
持っていることを示しています。参照ってやつです。Objective-Cでは、
オブジェクトの実体を変数に持つことはできません。
img
オブジェクトを生成したあとは、順次、値を設定し、足して、結果を取得していきます。
この場合、画面上に
2010-12-26 13:13:44.289 test101225[1157:207] result = 25
とでればOKです。
最後に、もう変数は必要ないのでメモリから解放します。それが8行目のreleaseです。
このメモリの解放についてはそのうち説明します。
わかればそれほどでもないのですが、ちょっとめんどくさいです。
あと、とっても重要です。
では。今回はここまで。
その他のこまかいこと↓
