Ich habe eine Java-Aufgabe, bei der mein Professor von mir verlangt, dass ich einen LeJOS NXT benutze, um einen Roboter zu bauen, der das Verhalten eines bestimmten Tieres simuliert. Ich habe mich für entwickeln. ein Drache. Alle möglichen Verhaltensweisen, die mir bis jetzt eingefallen sind, sind:
- Wenden, wenn es zu nahe an einem Hindernis ist.
- Einschlafen, wenn der Akku leer ist.
- Schieben eines Objekts bei Berührung.
- Wenn es zu hell ist, suchen Sie sich eine dunkle Stelle.
- usw.
Ich bin jetzt ziemlich verwirrt, weil ich nicht weiß, ob ich sie nacheinander in einer Klasse entwickeln oder alle Verhaltensweisen des Drachens in verschiedene Klassen aufteilen soll. Bitte sehen Sie sich meine Erklärung unten an.
Anstatt alles in eine Klasse zu schreiben, wie hier:
Drache.java
public class Dragon {
LightSensor ls = new LightSensor
public static main(String args[]) {
while (!BUTTON.Escape.IsPressed()) {
if (this.closeToObject()) {
this.turnAround();
}
// more conditions
}
}
private boolean closeToObject() {
//TODO
return false;
}
private void turnAround() {
//TODO
}
//... more methods
}
Ich möchte jedoch, dass es mehr objektorientiert erscheint, da der Kurs uns helfen soll, mehr OOP-Kenntnisse zu erwerben. Meine zweite Option besteht darin, Aktionsklassen zu erstellen, die die abstrakte Klasse Dragon's Behavior wie folgt erweitern (ungefähr):
Drache.java
public class Dragon {
Detect detect = new Detect(); // carry all the detection methods: distance, sound, etc.
TurnAround turnAround = new TurnAround();
public static main(String args[]) {
while (!BUTTON.Escape.IsPressed()) {
if (detect.tooCloseToObject()) {
turnAround.prepare(); // beep beep alert
turnAround.setDerection(true); // e.g. turn right
turnAround.turn();
}
}
}
}
DragonBehaviors.java
abstract class DragonBehavior {
abstract void prepare();
public void setDirection(boolean direction) {
//...
}
}
TurnAround.java
public class TurnAround extends DragonBehaviors {
String direction;
public void TurnAround() {}
public void prepare() {
// sound alert
}
public void setDirection(boolean direction) {
if (direction) this.direction = "Right";
else this.direction = "Left";
}
public void turn() {
// TODO
}
}
Der obige Code ist nur ein grober Entwurf, konzentrieren Sie sich nicht auf ihn. Schließlich möchte ich fragen, ob meine Idee über die OO-Struktur oben vernünftig ist, sonst ist es viel einfacher, das Ganze in einer Klasse zu entwickeln, aber das hat nichts mit OOP zu tun. Ich habe auch mehrere Gruppenmitglieder, um den Code fertig zu stellen, also denke ich, dass es besser sein könnte, wenn wir die Klassen teilen, um in einer OOP-Art zu entwickeln.
Welchen Weg sollte ich unter diesen Umständen einschlagen?
Ich freue mich über alle Kommentare (: