おいしいAS3 -20ページ目

Object-C基礎の基礎2(クラスを作る1)

クラスを作る時はAS3と違って
interface(インターフェース)と
implementation(実装)
の二つにわけてクラスをつくります

先につくるクラスの名前、関数名
変数とかを宣言しておいて
後でその中身を作るカンジですね



@interface クラス名 : 継承元クラス{
 型 メンバ変数名;
 ....
}
@property (プロパティ属性...) 型 インスタンス変数名;
....
-(戻り値型)クラス関数名 : (引数型)引数名;
....
+(戻り値型)オブジェクト関数名 : (引数型)引数名;
....
@end



これでまず宣言

@interface~@endがインターフェース

関数の宣言はAS3では
『属性値 関数名(引数:引数型, ...) : 戻り値型 {...} 』
だったので並びがかなりごっちゃに感じます

関数の頭に-や+がついてますが
これがAS3でいうところのstaticなのか
そうでないのかを表してます

-がstaticで+がそうでないやつです
(Object-Cのそれはちょっと他とは
違うらしいのですがそれはまた先の話)


プロパティについてですが
Object-Cには実質AS3みたいな
public varみたいなもんがありません

基本的には全部メンバ変数で
(myObj.myVarみたいにドットで区切ってアクセスできない
[ ]くくりでオブジェクトに『~してください』って
メッセージ送らないと触る事ができないようになってる)
@propertyでプロパティのようなものを作る場合も
全部getter,setterで実装されて、メンバ変数の値を利用する形になり
AS3視点で見れば実質パブリックプロパティ(public var)なんてものは
存在しないようなカンジです

プロパティについては詳しくは次の実装部のパートでやります

Object-C基礎の基礎1(オブジェクトの操作)

ここからAppleのチュートリアルとか
リファレンスとか見ながらになります

AS3からの視点で自分なりに
噛み砕いて書いていきます

あれですよ

小学校の学習方法で
『先生から教わるだけじゃなく
誰かに教える事もすることで
よく身に付くようになる』
ってヤツです

リアルタイムで学習中のこと語るので
正確性はぜんぜん保障できません
良心ある方はぜひ間違ってたら
ツッコミ入れてください

まず、AS3から見て
『変わってるなぁ』と思った構文

他のオブジェクトに何かさせるときは
[ ]でくくって

[インスタンス 関数名:引数1,引数2.... 識別子:引数1,引数2....]
[インスタンス set変数名1:要素1値:要素2値...,変数名 変数名2:要素1値:要素2値...]

みたいなかんじにやります


[myObj MyFunc:100,100]
[myObj setMyVar:100:100]


みたいなカンジですね

これは変わってるなぁと思うと同時に
逆にそういえばAS3はオブジェクト指向な割に
他のオブジェクトをいじるのと
自分をいじるのにあんまり段差がないな
とも思ってしまいました

『自分の事は自分でする』のが基本のオブジェクト指向では
他のオブジェクトをいじるのところは
それなり段差があるのがむしろ自然
AS3の方がゆるすぎなのかな…

Object-Cの前にCの基礎の基礎2

変数宣言する時は

型 変数名=値

ってカンジです

AS3だと

var 変数名:型=値

ってカンジのとこですね



int a=3
unsigned int b=3
float c=3.0
char d="A"



AS3から見るとCのデータ型はデータベースのそれに近くて
『どの位メモリの領域つかうのか?』
ってことをちゃんと教えてくれっていってきます
(前回省きましたけどdoubleとかlong intとかshort intとかちゃんとあります)

配列を作る場合でも『何のデータ型の配列で要素数はいくつなの?』
ってちゃんと言ってあげなきゃいけません
int型3個の配列なら



int[3]={1,2,3}



みたいなカンジですね

あとString型っていうのは文字列って言うごとく
まさしく『char型の配列』で
これも要素数を求めてくるわけなんですが
文字列には『ここで文字列終了』っていう宣言が必要で
半角英数の場合でも文字数+1
全角日本語の場合は半角英数の2倍メモリ使うので
文字数×2+1の要素数が必要になります



string[4]="ABC"
string[7]="あいう"



みたいなカンジですね

まあでもここまで言っといてなんですが

Object-C使うにあたっては
このへんのは多分使いません

なぜなら配列も文字列も
Object-Cの一番基礎のクラスの
NSObjectクラスの拡張クラスである
NSArrayやNSStringを使う事になる
からです

Appleも『Object-C使うんならNSObject基本にしたクラスでやりなよ?
でないとどうなっても知らないよ?』って言ってるので
おとなしく従いましょう、Cさんこれにてさようなら