プロパティ

提供: MonoBook
2012年4月3日 (火) 14:32時点におけるimported>Administratorによる版 (→‎関連項目)
ナビゲーションに移動 検索に移動

プロパティ(Property)とは、クラスの製作者からはメンバメソッドに見え、クラスの利用者からはメンバ変数に見える機能のことである。

プロパティを持たないオブジェクト指向プログラミング言語では、メンバ変数へ安全にアクセスさせるためにはゲッターセッターなどと呼ばれるアクセサメソッドを利用する必要があった。

クラス製作者からすると安全性のためにも入出力チェックを実装できるアクセサメソッドの利用を強制させたいが、クラス利用者からするとアクセサメソッドは見た目が数式っぽくなくソースコードの見通しが非常に悪くなるという問題点を抱えていた。

その問題点をスパッと解決してくれるのがプロパティである。 無くて困るものではない。

なお、プロパティはコンパイル時にアクセサメソッドに自動展開されるマクロのようなものであり、実行時はメソッド呼び出しとなるため、メンバ変数への直接アクセスよりもパフォーマンスは悪くなる。

プロパティをサポートする主なプログラミング言語

各プログラミング言語のプロパティ構文は個別のページに記載する。

記述例

C#での一般的なプロパティの記述例を示す。 なお、C#にはプロパティの発展系として「インデクサー」という機構もある。

class Hage {

    private String _name;

    public String Name {
        get { return _name; }
        set { _name = value; }
    }
}

// こんな感じで使う。
var hage = new Hage();
hage.Name = "hoge";

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;
    }
}

// こんな感じで使う
var hage = new Hage();
hage.name = "hage";

関連項目

参考文献

外部リンク