Java 我应该如何处理OOP中的基本函数?

Java 我应该如何处理OOP中的基本函数?,java,oop,Java,Oop,在OOP程序中,我将把基本操作的函数放在哪里 例如,如果我有一个类,在其中一个函数中需要可以反转数组的代码,我可以在该类中创建一个名为invertArray()的方法 另一方面,我可以创建一个全新的函数类,在这个类中,我可以转储所有这些基本函数,比如将数组反转为。然而,使用这种方法,我必须在我使用的几乎所有其他类中实例化这个类。此外,它实际上不是一个“对象”,而是一个不属于其他任何地方的函数的集合,这有点违背了“面向对象”编程的目的 哪种实现更好?我是否应该使用更好的实现 提前谢谢 编辑:这种帖

在OOP程序中,我将把基本操作的函数放在哪里

例如,如果我有一个类,在其中一个函数中需要可以反转数组的代码,我可以在该类中创建一个名为
invertArray()
的方法

另一方面,我可以创建一个全新的
函数
类,在这个类中,我可以转储所有这些基本函数,比如将数组反转为。然而,使用这种方法,我必须在我使用的几乎所有其他类中实例化这个类。此外,它实际上不是一个“对象”,而是一个不属于其他任何地方的函数的集合,这有点违背了“面向对象”编程的目的

哪种实现更好?我是否应该使用更好的实现

提前谢谢


编辑:这种帖子应该属于堆栈溢出吗?如果没有,请您给我介绍一个更合适的Stack Exchange网站好吗?谢谢。

这取决于你的语言,也取决于你把东西放在哪里

但是,给出一个示例,invertArray存在于Array类中。在某些语言中,可以创建ArrayHelper或ArrayExtension类。但原理是“反转”是你想要告诉数组的东西

您通常会发现,所有函数通常都位于某个类的某个位置,并且它们都有一个合理的位置


创建一个包含大量函数的类通常不是一个好主意。你可以得到类似“数学”的东西,这是一堆“静态”函数(它们不在对象上工作),它们只是用参数进行一些计算并返回一个结果。但它们仍然是按照它们是常用数学函数的想法进行分组的,因为您的问题是关于Java的:

如果我有一个类,在其中一个函数中需要可以反转数组的代码,我可以在该类中创建一个名为invertArray()的方法

是的,您可以这样做,但如果您愿意在Java中实现OOPS概念,您也可以这样做:

我可以创建一个全新的Functions类,在这个类中我可以转储所有这些基本函数,比如将数组反转为

本部分:

我必须在我使用的几乎所有其他类中实例化这个类

您还可以创建一个接口,因为Java为您提供了这个功能,您可以在其中声明您的函数并在它们各自的类中提供它的实现。如果您希望同一个函数具有不同的功能,那么这也很有用,您可以选择这种方式,而不必一次又一次地重写函数定义


而且,当您处理具有n个类的大型项目时,OOPS概念非常方便。这取决于您是在学习还是在项目上实施。

这可能更适合您,因为这是一个基于观点或哲学的问题,而不是一个编程问题。答案将根据语言的不同而相似,但您指的是哪种语言?这将有助于代码示例,如果可能,应该包含在标记中。但是要在注释中回答问题,有多种方法,但您很可能需要静态(C#)或最终(JAVA)或模块(VB.NET)等类型的类。将类命名为ArrayHelper之类的名称,然后将方法设置为静态(C#和JAVA)共享(VB.NET)等。这样只初始化一次类,可以说是全局使用。查找这些关键词,你会学到更多。@MichaelPuckettII哦,谢谢。出于某种原因,我从未意识到我不必实例化一个类来在其中使用静态方法。谢谢你的回答!(顺便说一句,我使用Java,更新了标记)所以如果我使用Java,我会转到Java.util.Arrays,并添加一个invertArray()函数?您不能修改
Java.util.Arrays
,因为Java类是关闭的。在Java中,传统的方法是,正如答案中提到的那样,制作一个包含数组并定义所需新方法的装饰器对象(
ArrayHelper
,等等)。包含数组的
ArrayHelper
是什么意思?这是否意味着您将创建一个
ArrayHelper
(保留数组属性)而不是创建一个数组?@Frank我认为Silvio的意思是这样的<代码>int[]x=。。。;int[]xInverted=新装饰阵列(x).invert().toplianarray()这样做的想法是,您的装饰数组将是一个围绕普通数组的薄包装。像invert这样的消息可以返回另一个修饰数组或普通数组,并可以为您提供返回普通数组的方法。