我有一个关于将单个 java 程序拆分为多个程序的问题。
假设我有一个计算器程序,它具有加、减、乘、除和求模除的功能。我想将这个冗长的程序划分/拆分为子程序,例如 add.java 用于加法,sub.java 用于减法,mul.java 用于乘法等等。
我该如何拆分它,并相互链接?
我有一个关于将单个 java 程序拆分为多个程序的问题。
假设我有一个计算器程序,它具有加、减、乘、除和求模除的功能。我想将这个冗长的程序划分/拆分为子程序,例如 add.java 用于加法,sub.java 用于减法,mul.java 用于乘法等等。
我该如何拆分它,并相互链接?
在我看来,您真正的问题是您不了解 Java 和面向对象设计 (OOD) 的基础知识。您刚刚将所有代码转储到一个类中,可能static
在所有地方都使用了方法和变量。(你谈到拆分成子程序,这有点放弃。)
Oracle Java 教程(或任何好的 Java 教科书)将解释什么是类,以及如何编写、编译和运行由多个类组成的程序。
将现有的单体类拆分为更小的组件更加困难,因为没有单一的“正确方法”可以做到这一点。(如果你理解 OOD,那对你来说显然是显而易见的......)
我建议您先阅读一些关于 OOD 的内容。这应该让您深入了解您的应用程序设计和结构应该是什么样子。一旦你了解了 OOD,阅读一本关于 Java 设计模式的书也会很有帮助。但是,您需要了解设计模式的 OOD 才能对您有意义。
您可以将 add、sub 等拆分到不同的文件中。但请注意,.java
文件名必须与类名匹配。例如,如果您拆分添加到add.java
,那么在 中add.java
,您必须有一个名为 的类add
。
之后,每个.java
文件将被编译成一个.class
文件。运行时,只需将所有.class
文件提供给 java,如下所示:
java Calc.class sub.class add.class
您也可以将所有 .class 文件打包成一个 .jar 文件。然后当你运行:
java Calc.jar
这不是如何做的问题,而是你是否应该做的问题。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 文件都被认为是在一个“包”中,这是默认包。如果您要声明自己的包,那将是另一回事。