Macromedia Flash非公式テクニカルノート 9. 黙示的なget/setメソッド
Platform: All オブジェクト指向プログラミングを実践する際には、クラスのプロパティに直接アクセスすることは推奨されません。クラスではよく、特定のプロパティの読取り用のアクセスに"get"メソッド、書込み用のアクセスに"set"メソッドを定義するということが行われます。たとえば、クラスにuserNameというプロパティがあるとします。 var userName:String; このときクラスのインスタンスからプロパティに直接アクセスさせる(たとえば、obj.userName = "Jody")のでなく、クラスに2つのメソッドgetUserNameとsetUserNameをつぎのように実装します。 function getUserName():String { 上記では、getUserNameはuserNameの設定値を返します。そして、setUserNameは、userNameの値に、メソッドの引数として渡されたストリングを設定します。クラスのインスタンスは、つぎのようなシンタックスを使って、userNameプロパティの取得または設定を行いすま。 // "get"メソッドの呼出し しかし、もっと簡潔なシンタックスを使いたいときは、「黙示的」(implicit)なget/setメソッドを使用します。黙示的なget/setメソッドなら、クラスプロパティに直接的なスタイルでアクセスできます。しかも、オブジェクト指向プログラミング(OOP)を正しく実践するという点は変わりません。 これらのメソッドを定義するには、'get'および'set'メソッド属性(attributes)を使用します。プロパティを取得(get)あるいは設定(set)するメソッドを作成して、キーワード'get'または'set'をメソッド名の前に加えます。 function get user():String { 'get'メソッドは、引数を取ることができません。'set'メソッドは、必要なただひとつの引数のみを取る必要があります。'set'メソッドは、'get'メソッドと同一のスコープで同じ名前にすることができます。'get'/'set'メソッドは、他のプロパティと同じ名前にすることはできません。たとえば、上記のサンプルコードは、'get'および'set'メソッドをuserという名前で定義しています。そうすると、同じクラスのなかに、さらにuserという名前のプロパティをもつことはできません。 通常のメソッドとは異なり、'get'/'set'メソッドは括弧や引数なしに呼出されます。たとえば、以下のシンタックスを使うと、上記に定義した'get'や'set'メソッドが使用されて、userNameの値にアクセスしたり、それを変更したりすることができます。 var name = obj.user; 注記: 黙示的な'get'/'set'メソッドは、ActionScript 1の'Object.addProperty()'メソッドをシンタックス的に簡潔にしたものです。
出典 _____ Copyright © 2001-2003 Fumio Nonaka. All rights reserved. |
||||