アプリケーションにタスクの概念を実装する必要があります。私のプロジェクトでは、タスクは実行する必要がある操作であり、名前で識別されます。各タスクには入力パラメーター (型と値) もあり、1 つ以上の出力を生成します。
Taskクラスを実装しなければならないのですが、「なんらかの結果を伴う操作」という概念をどのように表現すればよいでしょうか? 操作の名前を文字列属性に格納することはできますが、この操作によって返される型をどのように表現すればよいでしょうか? 同様に、操作の入力パラメータのリストを実装するにはどうすればよいですか? これらのパラメータも異なるタイプである可能性があります。
目標は、Task オブジェクトをシリアル化し、別のノードに送信することです。受信者は、受信した Task オブジェクトを分析し、操作の名前を読み取り、対応する関数を実行します。
たとえば、ノード A とノード B が次のメソッドを「持っている」とします...
ノード A のサービス:
- double getAreaOfRectangle(double length, double width);
- double getAreaOfTriangle(double base, double height);
- double getAreaOfParallelogram(double base, double height).
ノード B のサービス:
- double getAreaOfCircle(double radius);
- double getAreaOfTrapezoid(double base1, double base2, double height).
ノード C が長方形の面積を計算する必要がある場合、ノード A に接続し、操作 (double areaOfRectangle ) と入力 (double widthおよび double height )を指定して、ノード A にメッセージを送信する必要があることを認識します。同様に、ノード C が円の面積を計算する必要がある場合、操作と半径の長さを指定して、ノード B にメッセージを送信する必要があります。入力を送信するには、異なる型 (または新しいユーザー定義型) である可能性があるため、オブジェクトの配列を使用できます...
一部のタスクは他のタスクに依存する場合があります。つまり、入力パラメーターが別のタスクの出力を少なくとも 1 つ持つ場合があるため、タスクの出力と別のタスクの入力の間のリンクも実装する必要があります。
クラスを定義するにはどうすればよいですか?