-3

単一の Java プログラムを複数のプログラムに分割することについて質問があります。

足し算、引き算、掛け算、割り算、モジュロ除算の機能を備えた電卓プログラムがあるとします。この長いプログラムを、加算用の add.java 、減算用の sub.java 、乗算用の mul.java などのサブプログラムに分割/分割したいと思います。

そのように分割し、相互にリンクするにはどうすればよいですか?

4

3 に答える 3

3

あなたの本当の問題は、Java とオブジェクト指向設計 (OOD) の基本を理解していないことだと私には思えます。staticおそらくあらゆる場所でメソッドと変数を使用して、すべてのコードを 1 つのクラスにダンプしました。(あなたはサブプログラムへの分割について話していますが、それはちょっとした言い訳です。)

Oracle Java チュートリアル (または適切な Java テキスト) では、クラスとは何か、複数のクラスで構成されるプログラムの作成、コンパイル、および実行の方法について説明しています。

既存のモノリシックなクラスを小さなコンポーネントに分割することは、より困難です。それを行うための単一の「正しい方法」がないからです。(そして、もしあなたが OOD を理解していれば、それは明らかに明白でしょう...)

OOD に関する記事を読むことから始めることをお勧めします。これにより、アプリケーションの設計と構造がどのように見えるべきかについての洞察が得られるはずです。OOD を理解したら、Java のデザイン パターンに関する本を読むことも役に立ちます。ただし、デザイン パターンを理解するには、OOD を理解する必要があります。

于 2013-03-30T01:28:27.013 に答える
0

これは方法の問題ではなく、そうすべきかどうかの問題です。Java には、非常に強力なオブジェクト指向言語であるという利点がありますが、それでも制限があります。

追加するプログラムごとに、新しいクラス ファイルと新しいクラスを作成する必要があります。Calculator.java などのメイン プログラムが必要であり、このプログラムで他のモジュールのバージョンをインスタンス化する必要があります。

Add adder = new Add();
Subtract subtracter = new Subtract();

特に、単純なタスクのように見えるものに個別のモジュールを用意する必要がない場合は特にそうです。

これを行う方法に答えるには:

Calculator.java //The main program that will import the others.
Add.java
Modulo.java
...etc

javac *.javaこれらのファイルがすべて 1 つのフォルダーにまとめられ、を使用してコンパイルすると仮定すると、上記Calculator.javaのように の新しいバージョンをインスタンス化するAdd.javaと、自動的にインポートされます (それが主な質問である場合)。

C++ や C とは異なり、実際の import ステートメントは必要ありません。1 つのフォルダー内のすべての Java ファイルは、デフォルトのパッケージである 1 つの「パッケージ」にあると見なされます。独自のパッケージを宣言する場合、それは別の問題になります。

于 2013-03-30T01:14:16.420 に答える
0

add、sub などを別のファイルに分割できます。ただし、.javaファイル名はクラス名と一致する必要があることに注意してください。たとえば、add を に分割するとadd.java、 にadd.javaという名前のクラスが必要になりますadd

その後、各.javaファイルはファイルにコンパイルされ.classます。実行するときは、次.classのようにすべてのファイルを Javaにフィードするだけです。

java Calc.class sub.class add.class

すべての .class ファイルを .jar ファイルにパッケージ化することもできます。次に、実行すると:

java Calc.jar
于 2013-03-30T01:08:29.420 に答える