2

lejos0.9でプロジェクトを作成しました。今私が知っているのは、クラスにが含まれている場合にのみ、eclipsプラグインを使用してクラス(javaからnxjファイルへ)をアップロードおよびコンパイルできるということですpublic static void main(String[] args)。しかし、レゴマインドストームブリックでより多くのクラスとインターフェイスを取得する必要があります。これを行う方法はありますか?ブリックに直接接続することはお勧めできません。Javaファイルがブリックに配置されて実行できないためです。

この問題のもう1つのオプションは、UMLの設計を変更することです。これが現在のデザインです ここに画像の説明を入力してください

つまり、基本的にロボットクラスがあり、ヒューマノイドなどの他のロボットがこのロボットクラスを拡張します。次に、動作があります。これらはすべてインターフェースIwalkを実装しています。ポリモーフィズムにより、すべてのロボットは動的に動作を取得できます。

humanoid.javaの場合:

package Robots;

動作をインポートします。; IBehavioursをインポートします。;

public class Humanoid extends Robot {private Iwalk walker = new ForwardLegs();

Iwalk getWalker() {
    return walker;
}

public void setWalker(Iwalk walker) {
    this.walker = walker;
}

public void moving() {
    setWalker(walker);
    walker.move();
}
}

helloworld.javaクラス内(開始するためだけに、どのクラスにもリンクされていません)

        Humanoid asimov = new Humanoid();
    asimov.setWalker(new ForwardLegs());
    asimov.moving();

したがって、私の質問に対する答えが存在します。lejosを使用してlegomindstormブリックにインターフェイスを配置する方法。または、同じことを行うがインターフェースがない別のUML設計。事前にタイ。

4

1 に答える 1

2

インターフェイスを使わないことで問題を解決しました。インターフェイスが必要だったのは、ポリモーフィズムが必要だったからです。これは、IWalkインターフェイスを抽象クラスに変更し、動作を拡張するように実装を変更することでも可能です。

于 2011-11-15T10:21:59.080 に答える