「プロパティ」の版間の差分
imported>Administrator |
imported>Administrator 編集の要約なし |
||
| 8行目: | 8行目: | ||
無くて困るものではない。 | 無くて困るものではない。 | ||
なお、プロパティは[[コンパイル]]時に[[アクセサメソッド]]に自動展開される[[マクロ]]のようなものであり、実行時はメソッド呼び出しとなるため、メンバ変数への直接アクセスよりもパフォーマンスは悪くなる。 | |||
== プロパティをサポートする主なプログラミング言語 == | == プロパティをサポートする主なプログラミング言語 == | ||
| 20行目: | 20行目: | ||
* [[ActionScript 3.0]] | * [[ActionScript 3.0]] | ||
** [[ActionScript 3.0/プロパティ]] | ** [[ActionScript 3.0/プロパティ]] | ||
== 記述例 == | |||
[[C Sharp|C#]]での一般的なプロパティの記述例を示す。 | |||
なお、C#にはプロパティの発展系として「[[インデクサー]]」という機構もある。 | |||
<source lang="csharp"> | |||
class Hage { | |||
private String _name; | |||
public String Name { | |||
get { return _name; } | |||
set { _name = value; } | |||
} | |||
} | |||
</source> | |||
[[ActionScript 3.0]]での一般的なプロパティの記述例を示す。 | |||
見てのとおり、プロパティをサポートしない[[プログラミング言語]]における[[アクセサ]]の書き方とほぼ同じ。 | |||
それなのにプロパティとして快適に扱える。 | |||
[[as3]]マジオススメ。 | |||
<source lang="actionscript3"> | |||
class Hage { | |||
private var _name:String; | |||
public function get name():String { | |||
return _name; | |||
} | |||
public function set name(value:String):void { | |||
_name = value; | |||
} | |||
} | |||
</source> | |||
== 関連項目 == | == 関連項目 == | ||
2012年4月3日 (火) 09:23時点における版
プロパティ(Property)とは、クラスの製作者からはメンバメソッドに見え、クラスの利用者からはメンバ変数に見える機能のことである。
プロパティを持たないオブジェクト指向なプログラミング言語では、メンバ変数へ安全にアクセスさせるためにはゲッターやセッターなどと呼ばれるアクセサメソッドを利用する必要があった。
クラス製作者からすると安全性のためにも入出力チェックを実装できるアクセサメソッドの利用を強制させたいが、クラス利用者からするとアクセサメソッドは見た目が数式っぽくなくソースコードの見通しが非常に悪くなるという問題点を抱えていた。
その問題点をスパッと解決してくれるのがプロパティである。 無くて困るものではない。
なお、プロパティはコンパイル時にアクセサメソッドに自動展開されるマクロのようなものであり、実行時はメソッド呼び出しとなるため、メンバ変数への直接アクセスよりもパフォーマンスは悪くなる。
プロパティをサポートする主なプログラミング言語
各プログラミング言語のプロパティ構文は個別のページに記載する。
記述例
C#での一般的なプロパティの記述例を示す。 なお、C#にはプロパティの発展系として「インデクサー」という機構もある。
class Hage {
private String _name;
public String Name {
get { return _name; }
set { _name = value; }
}
}
ActionScript 3.0での一般的なプロパティの記述例を示す。 見てのとおり、プロパティをサポートしないプログラミング言語におけるアクセサの書き方とほぼ同じ。 それなのにプロパティとして快適に扱える。 as3マジオススメ。
class Hage {
private var _name:String;
public function get name():String {
return _name;
}
public function set name(value:String):void {
_name = value;
}
}