24.getとset

なんかあるなぁとは思っていたが

以前どこかでgetとsetなるものがあるのを聞いたことがあったのですが、おそらく使わなくても死なない(←この言い回しは大阪っぽいそうな)程度のものかと漠然と思っていました。

ところが、試しに使ってみると、これがすごく便利!!とちょっと感動したのでメモしておきます。

このgetとsetってAdobeのリファレンスを見てるとよく目にもするので、どういうものか理解しておく方がいいですよ。

getとsetを使わない場合

自分のお手製クラスがあったとします。なんでもいいのでここではHogeクラスとします。

このクラスを使う時には

var myHoge:Hoge = new Hoge();

って感じでオブジェクト作りますが、その後、このオブジェクトのプロパティをいじる時に、どうするか。

読み込むにしろ、値を設定するにしろ、なにかメソッドを使ってやりとりすることになりますよね。

例えば、myHogeのプロパティにpriceなんてあると、それをやりとりするために以下のようなメソッドをクラスに設定しておく必要があるでしょう。

//価格を設定するメソッド
public function kakakuin(yen:Number):void {
price=yen;
}
//価格を読み込むメソッド
public function kakakuout():Number {
return price;
}

これを使用するメイン側では、価格を設定する場合に、

myHoge.kakakuin(500);

また、価格を読み取る場合に、

total+=myHoge.kakakuout();

なんて感じで使ったりするわけです。

まあ、実際、これでもいいんですけどね(^^;

getとsetを使ってみると

「使わなくてもいい」でまとめてしまうと後が続かないので、早速getとsetを使って書いてみましょう。

クラスに下のようなメソッド(になるのかな?)を書きます。

//価格を設定する場合
public function set kakaku(yen:Number):void {
price=yen;
}
//価格を読み込む場合
public function get kakaku():Number {
return price;
}

こうしておくと、メイン側で使う時、価格を設定する場合に、

myHoge.kakaku=500;

また、価格を読み取る場合に、

total+=myHoge.kakaku;

なんて感じでプロパティpriceにアクセスできるわけです。

このように書くとあたかも、myHogeのプロパティを扱ってるみたいでしょ(実際そうなんだけど)?

この書き方、何がいいってコードを読む時に、非常にすんなり頭に入るんです。普段、よく見る

myMC.x=100

なんてのと同じですからね。

精神衛生上すごく楽になる書き方です。お試しあれ!

→25.1ファイルに複数のクラスを書く方法

23.XMLではまった!3←