actionPerformed()
class のメソッドで計算を行っていますA
。C[]
結果は、doubleとを含む 2 つの配列になりD[]
ます。どうすれば別のクラスに送信できB
ますか?
4 に答える
これを達成する方法はいくつもあります。
重要な部分は次のとおりです。
- を参照してください
B
B
送信したい値を受け取るための何らかの手段を用意してください。ある種のセッターメソッドをお勧めします
本質的に同じである共通のモデルを使用することもできますが、いたずらなことをするのをより困難にするB
ことA
はおそらくすべきではありません;)A
B
あなたにはたくさんの方法があります。適切なものは、使用するオブジェクト モデルの構造によって異なります。
ただし、理解する必要がある基本的な概念が 2 つあります。
1.「交点」とは?
のA
インスタンス ( と呼ぶ) がのインスタンス ( )a1
と通信できるようにするには、 への参照に「手を加える」方法が必要です。それを行う方法の例は次のとおりです。B
b1
a1
b1
- 各
A
get は、B
コンストラクターまたは別の「set」メソッドへの引数としてのインスタンスへの参照であり、その目的のために作成されたフィールドとして格納します。 a1
b1
class の共通インスタンスを共有しますC
。とc
の両方の「親」(つまり、両方を含む)、またはプログラム内の特定のプロセスを管理する「マネージャー」コンポーネントにすることができます。a1
b1
static
\singleton
方法。B
クラスはそれ自体の静的インスタンスを格納し、プログラムのどこからでも参照できるようにします。
2. 望ましい通信インターフェースは何ですか
A
あるクラスが他のクラスに公開するインターフェイスは、多くの重要な概念を実現するために適切に設計する必要があります。たとえば、コードの読みやすさ、セキュリティと「隠蔽」、信頼性などですB
。相互のクラス、または相互に継承されていることさえあります。
通信するためのいくつかの標準的な方法は次のとおりです。
- 直接書き込みアクセス: のフィールド
B
はpublic
公開されており、直接書き込むことができます。これはほとんどの場合、悪い動作です (経験則では、すべてのフィールドは少なくとも である必要がありますprotected
)private
。 set
メソッド:B
計算されたデータを受け取り、それを処理し、そのフィールドに格納する (または渡す) set メソッドがあります。- リスニング -
A
計算されたデータをそれ自体に保存し、登録されているすべての「リスナー」に、適切なメソッドを呼び出すことによって新しいデータが利用可能であることを知らせます。リスナーは関連するフィールドへの読み取りアクセス権を持っているか、データが引数として渡され、リスナー (b1
) がデータの処理方法を決定します。
クラス B のインスタンスを作成し、計算結果をそのインスタンスに渡します。
これは非常に基本的な問題で、経験があれば簡単に解決できます。オブジェクト指向プログラミングに関する wiki が役に立つかもしれません。それを理解すると、その強力なもの。
ここにあなたのためのいくつかの例があります...
public class ClassB{
double multiplier;
public ClassB(){
//this will be called when you create an instance of class B
//with no arguments. Also called the default constructor, or empty-arg
//constructor.
multiplier = 2;
}
public void setMultiplier(double value){
multiplier = value;
}
public void calculate(double[] c, double[] d){
//do nifty stuff, like multiply every value in c and d!
for(int i=0;i<c.length;i++){
c[i] *= multiplier;
d[i] *= multiplier;
}
}
}
// and in your class having the action performed method...
//create an instance of class b. This will call the empty-arg constructor.
ClassB classB1 = new ClassB();
ClassB classB2 = new ClassB();
public void actionPerformed(ActionEvent e){
double[] c1 = new double[10];
double[] d1 = new double[10];
double[] c2 = new double[10];
double[] d2 = new double[10];
//call classB1 calculate method. This will multiply c1 and d1 by 2,
//as classb1's multiplier is 2.
classB1.calculate(c1, d1);
classB2.setMultiplier(4);
//call classB2 calculate method. This will multiply c2 and d2 by 4,
//as classb2's multipler has been set to 4.
classB2.calculate(c2, d2);
}
これは、オブジェクト指向プログラミングで何ができるかを示す簡単な例です。これ以外にも学ぶべきことは山ほどありますが、明らかに始めたばかりなので、圧倒されることはありません。