Lejos (java) 和接口 // UML 建议

发布于 2024-12-14 21:20:40 字数 1045 浏览 0 评论 0原文

我用 lejos 0.9 创建了一个项目。现在我知道的是,当类具有 public static void main(String[] args) 时,我只能使用 eclips 插件上传和编译类(从 java 到 nxj 文件)。但我必须在乐高头脑风暴积木上获得更多的类和接口。有办法做到这一点吗?直接连接到brick不是一个好主意,因为这样java文件将被放在brick上而无法运行。

解决此问题的另一个选择可能是更改 uml 设计。这是目前的设计 在此处输入图像描述

所以基本上有一个机器人类,其他机器人(如人形机器人等)扩展了这个机器人类。然后是行为。其中都实现了Iwalk接口。由于多态性,每个机器人都可以动态地获得行为。

在 humanoid.java 中:

package Robots;

导入 Behaviours.; 导入 IBehaviours。

公共类人形机器人扩展机器人{ 私人 Iwalk 步行者 = 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 设计,它具有相同的功能,但没有接口。提前。

I created a project with lejos 0.9. Now what i know is that i'm only able to upload and compile classes (from java to nxj files) with the eclips plugin when the class has a public static void main(String[] args) . But i have to get more classes and interfaces on the lego mindstorm brick. Is there a way to do this ? Connecting directly to the brick is not a good idea because then java files will be put on the brick which cannot be run.

Another option for this problem might be to change the uml design. This is the current design
enter image description here

So basically there is a robot class and other robots like humanoid etc extend this robot class. Then there are behaviours. Which all implement the interface Iwalk. Every robot can get behaviors dynamically because of polymorphism .

In humanoid.java:

package Robots;

import Behaviours.;
import 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();
}
}

In a helloworld.java class (not linked to any class , just to initiate)

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

So to answers exist to my question: How to put interfaces on the legomindstorm brick with lejos. Or another UML design wich does the same but without interfaces. Ty in advance .

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

树深时见影 2024-12-21 21:20:40

我通过不使用接口解决了这个问题。我需要接口的原因是因为我需要多态性。这也可以通过将 IWalk 接口更改为抽象类并将实现更改为行为中的扩展来实现。

I solved the problem by not using interfaces. The reason i needed interfaces was because i need polymorphism. Which is also possible by changing the IWalk interface to an abstract class and change the implements to extends in the behaviors.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文