プロパティを定義しよう

最後にプロパティの定義方法です。
この「プロパティ」は、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 - Giemsa All Rights Reserved.
NOTES Software.