単一の Java プログラムを複数のプログラムに分割することについて質問があります。
足し算、引き算、掛け算、割り算、モジュロ除算の機能を備えた電卓プログラムがあるとします。この長いプログラムを、加算用の add.java 、減算用の sub.java 、乗算用の mul.java などのサブプログラムに分割/分割したいと思います。
そのように分割し、相互にリンクするにはどうすればよいですか?
単一の Java プログラムを複数のプログラムに分割することについて質問があります。
足し算、引き算、掛け算、割り算、モジュロ除算の機能を備えた電卓プログラムがあるとします。この長いプログラムを、加算用の add.java 、減算用の sub.java 、乗算用の mul.java などのサブプログラムに分割/分割したいと思います。
そのように分割し、相互にリンクするにはどうすればよいですか?
あなたの本当の問題は、Java とオブジェクト指向設計 (OOD) の基本を理解していないことだと私には思えます。static
おそらくあらゆる場所でメソッドと変数を使用して、すべてのコードを 1 つのクラスにダンプしました。(あなたはサブプログラムへの分割について話していますが、それはちょっとした言い訳です。)
Oracle Java チュートリアル (または適切な Java テキスト) では、クラスとは何か、複数のクラスで構成されるプログラムの作成、コンパイル、および実行の方法について説明しています。
既存のモノリシックなクラスを小さなコンポーネントに分割することは、より困難です。それを行うための単一の「正しい方法」がないからです。(そして、もしあなたが OOD を理解していれば、それは明らかに明白でしょう...)
OOD に関する記事を読むことから始めることをお勧めします。これにより、アプリケーションの設計と構造がどのように見えるべきかについての洞察が得られるはずです。OOD を理解したら、Java のデザイン パターンに関する本を読むことも役に立ちます。ただし、デザイン パターンを理解するには、OOD を理解する必要があります。
これは方法の問題ではなく、そうすべきかどうかの問題です。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 つの「パッケージ」にあると見なされます。独自のパッケージを宣言する場合、それは別の問題になります。
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