「プロパティ」を編集中
ナビゲーションに移動
検索に移動
この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 | 編集中の文章 | ||
1行目: | 1行目: | ||
− | '''プロパティ''' | + | '''プロパティ'''(Property)とは、[[オブジェクト指向プログラミング言語]]において、[[クラス]]の製作者からは[[メンバメソッド]]に見え、[[クラス]]の利用者からは[[メンバ変数]]に見える機能のことである。 |
− | + | プロパティを持たない[[オブジェクト指向]]な[[プログラミング言語]]では、メンバ変数へ安全にアクセスさせるためには[[ゲッター]]や[[セッター]]などと呼ばれる[[アクセサメソッド]]を利用する必要があった。クラス製作者からすると安全性のためにも入出力チェックを実装できる[[アクセサメソッド]]の利用を強制させたいが、クラス利用者からすると[[アクセサメソッド]]は見た目が数式っぽくなく[[ソースコード]]の見通しが非常に悪くなるという問題点を抱えていた。 | |
− | |||
− | |||
− | プロパティを持たない[[オブジェクト指向]]な[[プログラミング言語]]では、メンバ変数へ安全にアクセスさせるためには[[ゲッター]]や[[セッター]]などと呼ばれる[[アクセサメソッド]]を利用する必要があった。クラス製作者からすると安全性のためにも入出力チェックを実装できる[[アクセサメソッド]]の利用を強制させたいが、クラス利用者からすると[[アクセサメソッド]] | ||
その問題点をスパッと解決してくれるのがプロパティである。 | その問題点をスパッと解決してくれるのがプロパティである。 | ||
− | + | 無くて困るものではない。 | |
− | なお、プロパティは[[コンパイル]]時に[[アクセサメソッド]]に自動展開される[[マクロ]] | + | なお、プロパティは[[コンパイル]]時に[[アクセサメソッド]]に自動展開される[[マクロ]]のようなものであり、実行時はメソッド呼び出しとなるため、メンバ変数への直接アクセスよりもパフォーマンスは悪くなる。 |
== プロパティをサポートする主なプログラミング言語 == | == プロパティをサポートする主なプログラミング言語 == | ||
21行目: | 18行目: | ||
* [[ActionScript 3.0]] | * [[ActionScript 3.0]] | ||
** [[ActionScript 3.0/プロパティ]] | ** [[ActionScript 3.0/プロパティ]] | ||
− | |||
− | |||
== 記述例 == | == 記述例 == | ||
28行目: | 23行目: | ||
なお、C#にはプロパティの発展系として「[[インデクサー]]」という機構もある。 | なお、C#にはプロパティの発展系として「[[インデクサー]]」という機構もある。 | ||
<source lang="csharp"> | <source lang="csharp"> | ||
− | class Hage | + | class Hage { |
− | + | ||
private String _name; | private String _name; | ||
48行目: | 43行目: | ||
[[as3]]マジオススメ。 | [[as3]]マジオススメ。 | ||
<source lang="actionscript3"> | <source lang="actionscript3"> | ||
− | class Hage | + | class Hage { |
− | + | ||
private var _name:String; | private var _name:String; | ||
67行目: | 62行目: | ||
== 関連項目 == | == 関連項目 == | ||
− | * [[ | + | * [[インデクサ]] |
− | |||
* [[アクセサ・メソッド]] | * [[アクセサ・メソッド]] | ||
== 参考文献 == | == 参考文献 == | ||
− | + | <references/> | |
+ | == 外部リンク == | ||
{{stub}} | {{stub}} |