「Section08-01 クラス定義の構造」の「クラスメンバーを定義する」(p.245)にサンプルを追加します。このサンプルのポイントは、コンストラクタにおいてクラスプロパティfriendListにインスタンスの参照であるthisを登録することで、作ったインスタンスを管理しているところです。
[:script:]Friend4クラスの定義
[:script:]Friend4クラスの定義
package {
public class Friend4 {
//クラスプロパティ
public static var seqNo:uint;
public static var friendList:Array=new Array();
//インスタンスプロパティ
public var no:uint;
public var name:String;
public var age:uint;
//コンストラクタ
public function Friend4(na:String,ag:uint) {
no= ++seqNo;
name=na;
age=ag;
//インスタンスのリストに参照を保管する
friendList.push(this);
}
//
// クラスメソッド
//
//平均年齢を求める
public static function getAgeAverage():Number {
if (friendList.length==0) {
return 0;
} else {
var ageSum:uint;
//年齢の合計を出す
for (var i:int=0; i<friendList.length; i++) {
var friend:Friend4=friendList[i];
ageSum+=friend.age;
}
//平均を計算する
var ave:Number=ageSum/friendList.length;
//小数点2位で四捨五入する
ave=Math.round(ave*10)/10;
return ave;
}
}
//最年長を求める
public static function getOldestProfile():String {
if (friendList.length==0) {
return null;
} else {
//friendListの複製
var tmpList:Array=friendList.slice();
//年齢でソートする
tmpList.sortOn("age",Array.NUMERIC);
//最後の人を取り出す
var oldest:Friend4=tmpList[tmpList.length-1];
//プロフィールを返す(インスタンスメソッドの実行)
return oldest.getProfile();
}
}
//
// インスタンスメソッド
//
//プロフィールを返す
public function getProfile():String {
var info:String="no."+no+" "+name+"、"+age+"歳です。";
return info;
}
}
}
→ファイル一式をダウンロードする。



![ActionScript 3.0辞典 [FlashPlayer10/9対応]](http://ecx.images-amazon.com/images/I/51ry2e8HtIL._SL75_.jpg)



