Lejos (Java) и интерфейсы // Предложение UML - PullRequest
2 голосов
/ 08 ноября 2011

Я создал проект с lejos 0.9. Теперь я знаю, что я могу загружать и компилировать классы (из java в nxj файлы) только с помощью плагина eclips, когда класс имеет public static void main(String[] args). Но я должен получить больше классов и интерфейсов на кирпиче Lego Mindstorm. Есть ли способ сделать это ? Прямое подключение к кирпичу не является хорошей идеей, потому что тогда на кирпич будут помещены java-файлы, которые не могут быть запущены.

Другим вариантом решения этой проблемы может быть изменение дизайна uml. Это текущий дизайн enter image description here

Таким образом, в основном есть класс роботов, и другие роботы, такие как гуманоид и т.д., расширяют этот класс роботов. Тогда есть поведения. Которые все реализуют интерфейс Iwalk. Каждый робот может получить поведение динамически из-за полиморфизма.

В humanoid.java:

package Robots;

Поведение при импорте. ; импорт IBehaviours. ;

публичный класс Humanoid расширяет Robot { частный ходок Iwalk = новый 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();

Так что ответы на мой вопрос существуют: как поставить интерфейсы на кирпич legomindstorm с lejos. Или другой дизайн UML, который делает то же самое, но без интерфейсов. Ты заранее.

1 Ответ

2 голосов
/ 15 ноября 2011

Я решил проблему, не используя интерфейсы. Причина, по которой мне нужны интерфейсы, была в том, что мне нужен полиморфизм. Это также возможно путем изменения интерфейса IWalk на абстрактный класс и изменения реализаций в поведении.

...