Oop 哪些对象拥有该方法?从离散数学翻译

Oop 哪些对象拥有该方法?从离散数学翻译,oop,discrete-mathematics,Oop,Discrete Mathematics,假设我在离散数学领域工作,我有一些函数 f:A x B x C->D 有了这个函数,我可以进行类似f(a,b,c)=d的计算。(我在这里故意含糊其辞) 现在假设我想用一些现代OO编程语言显式地实现这个计算。因此,我初始化了一个名为a的变量,该变量属于ClassA类,依此类推,使用b和c。然后呢?哪个对象应该拥有计算?或者它可能是一个初始值设定项。它可能是一个静态函数吗 我本可以: d=a.f_1(b,c) d=b.f_2(a,c) d=c.f_3(a,b) d=新的ObjD(a、b、c) d=

假设我在离散数学领域工作,我有一些函数

f:A x B x C->D

有了这个函数,我可以进行类似
f(a,b,c)=d的计算。(我在这里故意含糊其辞)

现在假设我想用一些现代OO编程语言显式地实现这个计算。因此,我初始化了一个名为
a
的变量,该变量属于
ClassA
类,依此类推,使用
b
c
。然后呢?哪个对象应该拥有计算?或者它可能是一个初始值设定项。它可能是一个静态函数吗

我本可以:

  • d=a.f_1(b,c)
  • d=b.f_2(a,c)
  • d=c.f_3(a,b)
  • d=新的ObjD(a、b、c)
  • d=ZStatic.f_4(a,b,c)
所有这些都是合理的选择,不是吗

在这种情况下,我应该实施所有这些选项吗

我宁愿完全避免构造函数方法,但除此之外,我不知道除了基本上任意信息的假设之外还能取得什么进展


那么,哪个对象应该拥有函数$f$,如果有的话?

要给出最佳答案,重要的是要知道您使用的变量类型

oop中一个非常重要的指标是实现高内聚性。内聚性是模块中的元素在一起的程度。如果变量a、b和c都属于特定的上下文,那么最好将它们放在一个类中。如果它们在一个类中,您不必担心哪个类应该拥有计算(您的第四个解决方案)


您最后的建议,使用静态函数也是可以想象的。这种方法常用于不同语言(如Java:)的数学图书馆。

要给出最佳答案,重要的是要知道您使用的变量类型

oop中一个非常重要的指标是实现高内聚性。内聚性是模块中的元素在一起的程度。如果变量a、b和c都属于特定的上下文,那么最好将它们放在一个类中。如果它们在一个类中,您不必担心哪个类应该拥有计算(您的第四个解决方案)

您最后的建议,使用静态函数也是可以想象的。这种方法常用于不同语言的数学图书馆(如Java:)