[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends] Re: staticの使い方
前橋です。
ついでに便乗質問です。
OOP言語を使い慣れないので、初心者の質問ですが...
たとえば、aとbからcを算出する関数があったとして、Cで書けば、
c = calcC(a, b);
ですが、Javaの場合、
class Hoge {
private int a;
private int b;
private int c;
public void doHoge() {
...
}
}
の、doHoge()メソッドの中で、ひょいとcを算出したいとき、C流に
private int calcC(int a, int b)
というメソッドを定義してもいいですが、
この場合、a, b, c 共にHoge自身のデータメンバなので、
private void calcC();
でも書けることになっちゃいます。
でも、Cに慣れた身には、これはとてもとても読みにくいというか、
何やってるかわからんというか、まるでグローバル変数渡しばっか
りやってた(しかできなかった)BASICプログラマの頃に戻ったよう
だ、と感じてしまうのです。
こういうパターンは、a, b, cの関係に制約を付けたい場合など、
よくあると思うのです。
こういうとき、calcC()を、以下のようにstaticメソッドにすれば、
private static int calcC(int a, int b)
thisがないのでインスタンスメンバは全部見えないわけで、calcC
がそういうメンバにアクセスしていないことが保証できて、安心で
きるように思います。
でも、こういうstaticの使い方って、少なくとも入門書とかでは、
あんまり聞かないような気がするのですが...
こういう使い方は、間違ってるのでしょうか?
こういう使い方が間違っているのなら、上記のようなメソッドは、
どう書けば良いのでしょうか?
それとも、ひとつのクラスの中で、データメンバの参照や破壊に気
を使っている時点で、オブジェクトの粒度が大き過ぎるのでしょうか?
# ...とは言ってもねえ。
------------------------------------------------------------
前橋 和弥 maebashi@xxxxxxxxxx
中部ソフトエンジニアリング(株)
〒450 名古屋市中村区名駅4-10-25(名駅IMAIビル 5F)
Tel:(052)583-4511(代) 内線 252 Fax:(052)583-4566
------------------------------------------------------------