Hallo!
Ich entschuldige mich erstmal, falls ich das Forum falsch nutze. Das ist meine erste Frage hier.
Ich muss für eine Abgabe in der Universität eine Mikrowelle als State Machine programmieren. Beim testen des Programms in meiner Main funktioniert alles fehlerfrei. Lade ich die Aufgabe aber hoch (wo der Code nochmals getestet wird) bekomme ich einen Compiler-Error.
Das Diagramm lässt sich leider nicht als Bild hochladen. Wenn ihr das brauchen solltet, dann versuche ich das nochmal irgendwie anders.
Ich habe die folgenden Klassen:
Microwave
public class Microwave {
State state = State.inactive; <- ist das eventuell der Fehler?
public State getState() {
System.out.println(state);
return state;
}
static void beep() {
System.out.println("BEEEEEEEP o.o");
}
static void boop() {
System.out.println("BOOOOP *~*");
}
static void mjamm() {
System.out.println("MJAMM *o*");
}
public void openDoor() {
state.openDoor(this);
}
public void closeDoor() {
state.closeDoor(this);
}
public void addTime() {
state.addTime(this);
}
public void timerUp() {
state.timerUp(this);
}
public void startMicrowaving() {
state.startMicrowaving(this);
}
}
State:
public abstract class State {
public static final Heating heating = new Heating();
public static final Open open = new Open();
public static final Inactive inactive = new Inactive();
public abstract void openDoor(Microwave a);
public abstract void closeDoor(Microwave a);
public abstract void addTime(Microwave a);
public abstract void timerUp(Microwave a);
public abstract void startMicrowaving(Microwave a);
}
Drei Subklassen von State, die alle die selben Funktionen haben, aber je nach aktuellem Status andere Ausgaben haben.
Beispiel Inactive:
public class Inactive extends State {
public String printState() {
return "Inactive";
}
@Override
public void openDoor(Microwave a) {
a.state = State.open;
}
@Override
public void closeDoor(Microwave a) {
System.out.println("Die Tuer geht nicht noch fester zu!");
}
@Override
public void addTime(Microwave a) {
Microwave.beep();
}
@Override
public void timerUp(Microwave a) {
System.out.println("Mikrowelle ist inaktiv!");
}
@Override
public void startMicrowaving(Microwave a) {
Microwave.beep();
a.state = State.heating;
}
}
Ich entschuldige mich erstmal, falls ich das Forum falsch nutze. Das ist meine erste Frage hier.
Ich muss für eine Abgabe in der Universität eine Mikrowelle als State Machine programmieren. Beim testen des Programms in meiner Main funktioniert alles fehlerfrei. Lade ich die Aufgabe aber hoch (wo der Code nochmals getestet wird) bekomme ich einen Compiler-Error.
Das Diagramm lässt sich leider nicht als Bild hochladen. Wenn ihr das brauchen solltet, dann versuche ich das nochmal irgendwie anders.
Ich habe die folgenden Klassen:
Microwave
public class Microwave {
State state = State.inactive; <- ist das eventuell der Fehler?
public State getState() {
System.out.println(state);
return state;
}
static void beep() {
System.out.println("BEEEEEEEP o.o");
}
static void boop() {
System.out.println("BOOOOP *~*");
}
static void mjamm() {
System.out.println("MJAMM *o*");
}
public void openDoor() {
state.openDoor(this);
}
public void closeDoor() {
state.closeDoor(this);
}
public void addTime() {
state.addTime(this);
}
public void timerUp() {
state.timerUp(this);
}
public void startMicrowaving() {
state.startMicrowaving(this);
}
}
State:
public abstract class State {
public static final Heating heating = new Heating();
public static final Open open = new Open();
public static final Inactive inactive = new Inactive();
public abstract void openDoor(Microwave a);
public abstract void closeDoor(Microwave a);
public abstract void addTime(Microwave a);
public abstract void timerUp(Microwave a);
public abstract void startMicrowaving(Microwave a);
}
Drei Subklassen von State, die alle die selben Funktionen haben, aber je nach aktuellem Status andere Ausgaben haben.
Beispiel Inactive:
public class Inactive extends State {
public String printState() {
return "Inactive";
}
@Override
public void openDoor(Microwave a) {
a.state = State.open;
}
@Override
public void closeDoor(Microwave a) {
System.out.println("Die Tuer geht nicht noch fester zu!");
}
@Override
public void addTime(Microwave a) {
Microwave.beep();
}
@Override
public void timerUp(Microwave a) {
System.out.println("Mikrowelle ist inaktiv!");
}
@Override
public void startMicrowaving(Microwave a) {
Microwave.beep();
a.state = State.heating;
}
}