#java #interface #uml #polymorphism #lejos-nxj
#java #интерфейс #uml #полиморфизм #lejos-nxj
Вопрос:
Я создал проект с помощью lejos 0.9. Теперь я знаю, что я могу загружать и компилировать классы (от java до файлов nxj) с помощью плагина eclips только тогда, когда класс имеет public static void main(String[] args)
. Но мне нужно получить больше классов и интерфейсов в конструкторе lego mindstorm. Есть ли способ сделать это? Подключение напрямую к кирпичу не является хорошей идеей, потому что тогда файлы java будут помещены в кирпич, который нельзя запустить.
Другим вариантом решения этой проблемы может быть изменение дизайна uml. Это текущий дизайн
Итак, в основном существует класс robot, и другие роботы, такие как humanoid и т.д., Расширяют этот класс robot. Затем есть варианты поведения. Все они реализуют интерфейс Iwalk. Каждый робот может динамически изменять поведение из-за полиморфизма .
В humanoid.java:
package Robots;
импортируйте поведения.; импортируйте IBehaviours.;
публичный класс Humanoid расширяет Robot { частный Iwalk walker = новый ForwardLegs();
Iwalk getWalker() {
return walker;
}
public void setWalker(Iwalk walker) {
this.walker = walker;
}
public void moving() {
setWalker(walker);
walker.move();
}
}
В адском мире.класс Java (не связан ни с каким классом, просто для инициализации)
Humanoid asimov = new Humanoid();
asimov.setWalker(new ForwardLegs());
asimov.moving();
Итак, существуют ответы на мой вопрос: как разместить интерфейсы в кирпиче legomindstorm с помощью lejos. Или другой дизайн UML, который делает то же самое, но без интерфейсов. Заранее благодарю .
Комментарии:
1. Просто примечание: использовал Lejos для завершения семестрового проекта (вместо прилагаемого программного обеспечения) еще на первом курсе и в итоге сделал все за одну ночь (включая сборку / ассемблер / код). Получил самую высокую оценку во всем колледже. Было весело 🙂
2. хехе, очень приятно, у меня все еще есть несколько недель, чтобы завершить мой проект: p
Ответ №1:
Я решил проблему, не используя интерфейсы. Причина, по которой мне нужны были интерфейсы, заключалась в том, что мне нужен полиморфизм. Что также возможно путем изменения интерфейса iWalk на абстрактный класс и изменения реализаций на extends в поведении.