2010-12-07 10 views
3

これは専門用語の質問です。質問するのが難しくなります。特定のクラスとは別のJavaメソッドの名前はありますか?

例を挙げておきます。シンボリックな微分アルゴリズムを書いているとします。私は抽象クラスExpを持っています。これは、表現型の束(和、積分など)のスーパークラスです。 e.derivative()が式eの派生であると想定されるような抽象メソッドの導関数があります。 Exp(すべての階層を想像してください)のすべての具体的なサブクラスは、その型の式を区別する方法の知識を取り込む派生メソッドを実装しています。与えられた方法は、通常、部分式の導関数を組み合わせることによって表現の派生を計算する。

この例の詳細は重要ではありません。重要なことは、これらの散在したメソッドのすべてが1つの(再帰的)アルゴリズムの一部とみなされることです。これはすべてのメソッドに当てはまるわけではありませんが、それらの多くに当てはまります(基本的に異なる操作のために同じメソッド名を再利用するためのオーバーロードの使用は悪い考えです)。問題は、「派生物」という用語は単一の機能と見なされますか?方法ではありません。別の言語では関数であり、さまざまな節(和と何をするか、積分とどうするか)は同じ場所にあります。私はどのアプローチや言語が優れているか、Javaでそのスタイルを使用できるかどうかは気にしません。私はちょうど単一の関数またはプロシージャ(概念は関数型プログラミングに限定されず、再帰は重要な機能でもありません)とみなされる '派生物'にどのような用語を使用するのかを知りたいだけです。今日私がやったことを誰かに伝えると、「私はシンボリックな差別化を実装しようとしたが、__だが、私が思ったすべてのアルゴリズムはうまくいかなかった」空白には何が入っていますか?

他のOO言語でも同じ問題が発生すると思いますが、Javaは私がよく知っているものです。私はそれに精通しているので、標準的な用語はないと確信していますが、私はその結論に飛ぶ前に、私たちが細かい専門家のバッテリーを頼むと思っていました。

+0

"メソッド"は正しい用語です。すべての "派生"呼び出しはExp.derivative()メソッドの実装であり、したがってメソッド自体です。 – DJClayworth

+0

私は自分自身を明確にしていないと思う。まず、Javaの仕組みと標準のJava用語をよく理解しています。 「サブタイプ多型」(pstの答えのように)のような用語は、私が望むことをしません。私はそれを定義するすべてのメソッド(ExpクラスのものとExpのサブクラスのもの)の集合として考えられる微分関数の名前が必要です。明らかに、「関数」という言葉はかなりうまくいくはずです。問題は、このニッチを埋める確立された使用法に他の用語があるかどうかです。 – airfoyle

答えて

1

これがあなたが探しているものなのかどうかは分かりませんが、私はこれをデザインパターンの用語で回答できると思います。あなたの例はGoF Strategy Patternのように曖昧に聞こえる。ここにはexample of the Strategy Pattern implemented in Javaがあります。

+1

私はこの答えが好きです(戦略パターン)は、作業中の多型を表示/許可しますが、それらを含むオブジェクトに関して関数を「純粋」に保ちます。 "パターン名"が検索されている場合、これはそうである可能性があります。 –

2

「正常」のように聞こえます。subtype polymorphismサブクラス/実装は作業を行いますが、インタフェースは基本型で定義されています。この「散布」方法は、Visitor Pattern(「Javaが得意なもの」)やパターンマッチング(Javaではない)や大きなmankyスイッチ/ if-elseコントローラとは対照的です。私は本当にそれを集約として何か他のものと呼ぶかどうかはわかりません。

補遺:Are Scala case-classes a failed experiment?が読みやすいかもしれません。具体的には、「列」対「行」の組織について話コメントや「地域の違い」それぞれのアプローチはあります

... OOでは、あなたが行で割ます。各行はクラスと呼ばれるモジュールです。そのデータバリアントに関連するすべての機能はグループ化されています。これは物を整理する合理的な方法であり、非常に一般的です。利点は、データバリアントを追加するのは簡単です...しかし、欠点は、データ型によって異なる新しい関数を追加することが難しいことです。新しいメソッドを追加するには、すべてのクラスを通過する必要があります。逆に

1

、私は「方法」 Javaのコンテキストで、このための標準的な用語であると思います。

0

多型関数は、異なる型の値に適用することができます。この関数は、複数のJavaメソッドで実装することができます。

関連する問題