プロパティを定義しよう 最後にプロパティの定義方法です。 この「プロパティ」は、Delphiなどで取り入れられているもので、代入された際に何か処理をしたい場合に使います。 また、本来はカプセル化(隠蔽)の概念により、内部で宣言されたフィールドへの直接的なアクセスをできなくする、目的もあります。 セッターとゲッター なにやら怪しい響きの言葉ですが、とりあえずセッターとゲッターについて説明します。 ゲッターとは、プロパティ取得時に実行されるメソッドであり、 セッターとは、プロパティ設定時に実行されるメソッドです。 ゲッターは、引数が0で、メソッド名の先頭に「Get」をつけなければなりません。 同じように、セッターは引数が1で、メソッドの先頭に「Set」をつけなければなりません。 また、「Get」「Set」の後にはプロパティと同じ名前を書かなくてはなりません。 例を示します。
プロパティ
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    class CSample(){
      field FName;
      constructor Create;
      function GetName; //ゲッター
      function SetName(Name); //セッター
      property Name(SetName,GetName); //プロパティ
    }

    constructor CSample.Create(){
      FName = "CSample";
    }

    function CSample.GetName(){
      Return FName;
    }

    function CSample.SetName(Name){
      FName = Name;
    }

    Obj = CSample.Create;
    Name = Obj.Name;  //プロパティ呼び出し
    Mes(Name);
長くなってきてソース書くのが大変になってきました。 このように、フィールドを操作するように扱うことが出来ます。 読み込み(Name = Obj.Name)が実行される部分では、GetNameが呼び出されます。 書き込み(Obj.Name = 値)が実行される部分では、引数に値が渡され、SetNameが実行されます。 また、セッターのみを設定したいときは、プロパティ宣言部分を
セッターのみ
    1
    property Name(SetName);
こう書きます。 これは書き込み専用プロパティとして宣言されます。 同様に、ゲッターのみの場合は、読み込み専用プロパティとなります。
セッターのみ
    1
    property Name(GetName);

前へ / index / 次へ
プログラム言語「Spinel」
Copyright © 2005 - gabyou All Rights Reserved.
NOTES Software.