2011-07-23 14 views
0

私は現在、非常に早い段階にある乗算時間攻撃プログラムを作成しています。私はそれを4つのクラスに分割しました。 MainAppは、他のクラスを初期化し、JFramesを設定します。 設定。テストする番号を選択する画面が表示されます。 MainWindow、これは数字が表示される場所とユーザーの回答先です。私の最後のクラスはです。質問と回答が行われたを計算してください。私の問題は、を計算するにはチェックボックスをチェックする必要があります設定計算するは、ユーザーがいつ変更を完了したかを知る必要があります設定MainWindowには、表示する番号がからまでです。このような大きなクラスのクラスを持つのが普通ですか、私のクラスの組織は間違っていますか?そして、Javaが価値を持ち越しているので、各クラスに12クラスのブール値の配列のコピーを別のクラスのコピーに渡すことはできません。例えば。 計算するに10MBのデータが必要な場合は、MainWindowのコンストラクタ(以下に示す)にそのコピーをコピーすると、10 MB以上のRAMが必要になります。Javaクラス組織

public MainWindow(Calculate calc) { 

    super("Main Window"); 

    // Display Window 
    pnlMaster = new JPanel(new BorderLayout()); 
    pnlLabels = CreateLabelArea(); 
    pnlButtons = CreateButtonArea(); 

    pnlMaster.add(pnlLabels, BorderLayout.CENTER); 
    pnlMaster.add(pnlButtons, BorderLayout.SOUTH); 
    this.getContentPane().add(pnlMaster);  

    // Handler 
    cHandler handler = new cHandler(); 
    btnNext.addActionListener(handler); 
    btnQuit.addActionListener(handler); 
    txtAnswer.addActionListener(handler); 

    // Get Calculate class 
    this.calc = calc; 
}  

答えて

1

クラスはJavaのポインタで渡されます。

実際にオブジェクトのコピーではなくオブジェクトへのポインタを渡します。

4

いいえ、オブジェクトは実際にオブジェクトへの参照です。参照は値によってメソッドに渡されます(たとえば、オブジェクトへの参照のコピーであり、オブジェクト自体のコピーではありません)。

実際には、上記のケースではデータのコピーが1つしかないので、余分なメモリを気にする必要はありません。

クラスデザインが正しいか間違っているかについて、最も重要なことはプレゼンテーションからロジックを分離することです。あなたはこれで正しい軌道に乗っているように聞こえますが、この問題の一般的なパターンであるので、MVC(モデルビューコントローラ)を読んでも問題ありません。