2017-01-30 4 views
0

離散数学の世界で働いていて、いくつかの関数があるとします。メソッドを所有するオブジェクトはどれですか?離散数学からの翻訳

f: A x B x C -> D

この機能では、f(a,b,c) = dのような計算を行うことができます。 (私はここであいまいになっています)。

ここで、いくつかの最新のOOプログラミング言語でこの計算を明示的に実装したいとします。だから、ClassAaという変数を初期化し、bcというように初期化します。じゃあ何?どのオブジェクトが自身であるべきです計算?または、それをイニシャライザにすることもできます。それは静的関数ですか?

私が持っている可能性があり:

  • d = ZStatic.f_4(a,b,c)
  • すべてとしてもっともらしい

    • d = a.f_1(b,c)
    • d = b.f_2(a,c)
    • d = c.f_3(a,b)
    • d = new ObjD(a,b,c)を、オプション、私はできませんでしたか?

      対称性が必要な場合は、これらのオプションをすべて実装する必要がありますか?

      私はコンストラクタのアプローチを完全に避けることを好むでしょうが、それを超えて、本質的に任意の情報の前提以外の進歩を知ることはできません。

      したがって、関数$ f $を所有するオブジェクトは何ですか?

    答えて

    2

    最良の答えを得るには、使用する変数の種類を知ることが重要です。

    oopの非常に重要なメトリックは、達成することです。高い凝集性。結束は、モジュールの要素がどの程度属しているかを表します。変数a、b、cが特定のコンテキストで一緒に属している場合は、それらを厳密に1つのクラスに入れるのが最良の解決策であるはずです。そして、それらが1つのクラスにある場合は、どのクラスが計算を所有すべきかについて心配するべきではありません(あなたの4番目のソリューション)。

    あなたの最後の提案は、静的関数を使用することも考えられます。このアプローチは、異なる種類の言語(例えば、Java:Math class)の数学ライブラリでよく使用されます

    関連する問題