Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

GUI

JavaDocには↓

http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/awt/FlowLayout.html

public class myButtons extends Applet {
     Button button1, button2, button3;
     public void init() {
         button1 = new Button("Ok");
         button2 = new Button("Open");
         button3 = new Button("Close");
         add(button1);
         add(button2);
         add(button3);
     }
 }
とあります。

しかしこっち↓のほうがよくないでしょうか。
public class myButtons extends Applet {
    
     public void init() {
         Button button1 = new Button("Ok");
         Button button2 = new Button("Open");
         Button button3 = new Button("Close");
         add(button1);
         add(button2);
         add(button3);
     }
 }

理由は、ローカル(init メソッド内)だからプライベートなので安全。上記の例だと、共同作業の場合、他のプログラマがBottunの内容を変更できますよね。
実際は後者のほうがいいですよね。

3

回答

78758

閲覧

3件の回答

評価

0

メソッド単位での分担というのは、あんまりないんじゃないでしょうか…。
オブジェクト的に考えて、ボタンがローカル変数(しかもメソッドを抜けても生きている)というのは、違和感があります。

評価

0

>ボタンがローカル変数(しかもメソッドを抜けても生きている)
「パネルに乗っかって生きてる」と考えればいいのかとも思ったりしますけど
それは別にいいとして

>他のプログラマが
「デフォルトだから・・」ってことなんでしょうけど
そのクラス内でどう扱うかなんじゃないでしょうか

サンプルって最小限解るための例を挙げるものだろうから
実際の実装でどのようにしていくかは組む人次第なんじゃないでしょうか

パネルに乗っけたら後は使うことはないということなら後者でもいいだろうし

クラス内の他のメソッドで触りたいなら前者の方が楽だろうし
当然適切なアクセスレベルを設けると思いますけど
逆にそこを後者でやるのだと、いちいちパネルからオブジェクトを探すコードとか書いたりするんでしょうか・・
それでもいいかも知れないけど

仮に継承して更に機能を増やしていくとか考えようとしたときにはどうなるんだろう・・

評価

0

>クラス内の他のメソッドで触りたいなら前者の方が楽だろうし
当然適切なアクセスレベルを設けると思いますけど

そうですよね。関連するメソッドが複数あったらそのとおりですよね。

>オブジェクト的に考えて、ボタンがローカル変数(しかもメソッドを抜けても生きている)というのは、違和感があります。

私もなんとなく違和感がありました。


>パネルに乗っけたら後は使うことはないということなら後者でもいいだろうし

目的にあわせてということが大切ですね。

勉強になりました。ありがとうございます。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。