-3

我有一个关于将单个 java 程序拆分为多个程序的问题。

假设我有一个计算器程序,它具有加、减、乘、除和求模除的功能。我想将这个冗长的程序划分/拆分为子程序,例如 add.java 用于加法,sub.java 用于减法,mul.java 用于乘法等等。

我该如何拆分它,并相互链​​接?

4

3 回答 3

3

在我看来,您真正的问题是您不了解 Java 和面向对象设计 (OOD) 的基础知识。您刚刚将所有代码转储到一个类中,可能static在所有地方都使用了方法和变量。(你谈到拆分成子程序,这有点放弃。)

Oracle Java 教程(或任何好的 Java 教科书)将解释什么是类,以及如何编写、编译和运行由多个类组成的程序。

将现有的单体类拆分为更小的组件更加困难,因为没有单一的“正确方法”可以做到这一点。(如果你理解 OOD,那对你来说显然是显而易见的......)

我建议您先阅读一些关于 OOD 的内容。这应该让您深入了解您的应用程序设计和结构应该是什么样子。一旦你了解了 OOD,阅读一本关于 Java 设计模式的书也会很有帮助。但是,您需要了解设计模式的 OOD 才能对您有意义。

于 2013-03-30T01:28:27.013 回答
0

您可以将 add、sub 等拆分到不同的文件中。但请注意,.java文件名必须与类名匹配。例如,如果您拆分添加到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 回答
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,那么如果Calculator.java要实例化Add.java如上所示的新版本,它将自动导入(如果这是您的主要问题所问的)。

与 C++ 或 C 不同,您不需要实际的导入语句。一个文件夹中的所有 java 文件都被认为是在一个“包”中,这是默认包。如果您要声明自己的包,那将是另一回事。

于 2013-03-30T01:14:16.420 回答