JavaでProperty
■ このスレッドは過去ログ倉庫に格納されています
0001D使い
NGNGBeansはネーミングルールでプロパティ(もどき)を実装してるらしいですが、
それだとコーディングするときには使えないですよね?
個人的にはDelphiみたいに直接private変数に割り当てることができるのが
いいと思います。
C#で唯一いいと思ったのがプロパティのサポートだったので・・・
言語仕様拡張もまだ間に合うと思うのですが、OO的には美しくないんでしょうか?
勘違いしてたらすんません。
0002Java使い
NGNGDelphi使ったこと無いので”プロパティ”と呼ばれるものが
どんなものなのかわからないっす。どなたか解説お願いします。
0003名無しさん@お腹いっぱい。
NGNG0004名無しさん@お腹いっぱい。
NGNGC#ではset/getって、今月のJavaWorldで立ち読みしました。
0005名無しさん@お腹いっぱい。
NGNGあららら。
それはC++/Javaでは普通にやってること(当然やらなきゃいけないこと。
サボると後で偉い目にあう可能性ありなこと。)ジャン。
0006>5
NGNG楽だって事。
演算子のオーバーロード同様いわゆるシンタックスシュガーってやつですか?
0007名無しさん@お腹いっぱい。
NGNG所謂、
a.setHoge(30)
ではなくて、
a.hoge=30;
とかき、実装のほうではset関数の中でprivateにアクセスするらしいですが
もしかしたら、違うことを行っているかもしれません。
00087
NGNGint i=(int)a.hoge;
とすると、aのget関数がprivateのhogeをかえすらしいです。
0009名無しさん@お腹いっぱい。
NGNG0010名無しさん@お腹いっぱい。
NGNG厳密には(C++Builder使いなのでDelphiの記述はとっさに出てこないが)
int GetInt();
void SetInt();
__property int Int = { read = GetInt@` write = SetInt };
とか書く。
意味は想像付くよね。
0011D使い
NGNGちなみに GetInt() と SetInto() はprivate
0012D使い
NGNG0013名無しさん
NGNG1)無理に関数化しなくていい やっぱり関数化した方がいいやとなった時点
で関数化すればいい。そして変更しても外部のソース変更は不要
2)実行時型情報とセットになって、いわゆるDelphiのコンポが出来ている
実行中にプロパティ一覧とかを自分で制御出来るので、上手く利用すると
結構面白い使い方も出来る(たとえば自作マクロからの制御とか)
0014名無しさん
NGNG>attr(name[@` assignable])
>そのモジュールをインクルードするクラスのインスタンスに対して nameという属性とそのアクセスメソッドを
>定義します.
>アクセスメソッドを再定義することで属性の挙動を変更できます.
0015>14
NGNGPropertyがGoodなのは、クラス書き換えるだけで、
”ただの変数←→Setメソッド”を逝き来出来ること。
設定・・・Obj.PropI := a;
クラス(ただの変数)・・・PropI: integer;
クラス(Setメソッド)・・・Property PropI: integer read SetPropI write F_PropI;
001610
NGNG完全にinlineで展開するので、propertyに相当する関数は無いんだよね。
15の例だと
this.Prop ;= 10 → this.SetProp(10)
として扱ってくれる。バイナリもそうなっている。
一方
foo := this.Prop → foo := this.F_Prop;
に化ける。
まあこれは表面上はあまり変わってないが、
メンバ関数の実装を1回サボれたぐらいだな。
001715
NGNGクラス(ただの変数)・・・Property PropI: integer read F_PropI write F_PropI;
クラス(メソッド張付け)・・・Property PropI: integer read GetPropI write SetPropI;
■ このスレッドは過去ログ倉庫に格納されています