RoboterFabrik/Roboter/tpe/exceptions/roboter/Robots.java

96 lines
2.2 KiB
Java
Raw Normal View History

2023-01-07 18:48:00 +01:00
package tpe.exceptions.roboter;
2023-01-09 11:30:15 +01:00
import java.util.Arrays;
import java.util.stream.Collectors;
2023-01-07 18:48:00 +01:00
import tpe.exceptions.RobotException;
import tpe.exceptions.RobotIllegalStateException;
import tpe.exceptions.RobotMagicValueException;
2023-01-09 17:36:33 +01:00
public abstract class Robots implements Robot {
2023-01-07 18:48:00 +01:00
protected String name;
protected RobotException error;
protected boolean powerStatus;
2023-01-09 17:36:33 +01:00
2023-01-09 18:02:30 +01:00
@Override
public String toString() {
return "Robots [name=" + name + ", Id=" + getId() + "]";
}
2023-01-09 13:30:24 +01:00
/**
2023-01-09 17:36:33 +01:00
* Legt fest das ein Roboter standardmäßig einen Namen hat und setzt den Power
* Knopf bei Erstellung auf aus
*
2023-01-09 13:30:24 +01:00
* @param name
*/
2023-01-07 18:48:00 +01:00
public Robots(String name) {
this.name = name;
this.powerStatus = false;
}
2023-01-09 17:36:33 +01:00
2023-01-07 18:48:00 +01:00
@Override
public abstract int getId();
2023-01-09 17:36:33 +01:00
2023-01-07 18:48:00 +01:00
@Override
public String getName() {
return name;
}
2023-01-09 17:36:33 +01:00
2023-01-07 18:48:00 +01:00
@Override
public void triggerPowerSwitch() {
2023-01-09 17:36:33 +01:00
if (powerStatus == false)
powerStatus = true;
2023-01-07 18:48:00 +01:00
else
2023-01-09 17:36:33 +01:00
powerStatus = false;
2023-01-07 18:48:00 +01:00
}
2023-01-09 17:36:33 +01:00
2023-01-07 18:48:00 +01:00
@Override
public boolean isPowerOn() {
2023-01-09 17:36:33 +01:00
2023-01-07 18:48:00 +01:00
return powerStatus;
}
2023-01-09 17:36:33 +01:00
2023-01-07 18:48:00 +01:00
@Override
public RobotException getLastException() {
return error;
}
2023-01-09 17:36:33 +01:00
2023-01-07 18:48:00 +01:00
public boolean checkRobotMagicValueException(int[] zahlen) {
2023-01-09 17:36:33 +01:00
boolean error = false;
for (int i = 0; i < zahlen.length; i++) {
if (zahlen[i] == 42) {
error = true;
2023-01-07 18:48:00 +01:00
}
}
return error;
}
2023-01-09 17:36:33 +01:00
/**
* Unterscheidung der Ausgabe durch die Art der Sortierung: <br>
2023-01-09 17:36:33 +01:00
* R2D2: sortiert aufsteigend Wert an der Stelle 0 des Arrays ist kleiner als an
* der letzten Stelle <br>
* C3PO: sortiert absteigend Wert an der Stelle 0 des Arrays ist größer als an
* der letzten Stelle
*/
2023-01-07 18:48:00 +01:00
public String speak(int[] zahlen) throws RobotException {
2023-01-09 17:36:33 +01:00
if (powerStatus == false) {
error = new RobotIllegalStateException("Der Roboter ist ausgeschaltet!", this.getName());
throw error;
} else if (checkRobotMagicValueException(zahlen) == true) {
error = new RobotMagicValueException("Zahl 42 kann nicht verarbeitet werden!", this.getName());
throw error;
} else if (zahlen[0] < zahlen[zahlen.length - 1]) {
return Arrays.stream(zahlen).mapToObj(String::valueOf).collect(Collectors.joining(", "));
} else {
return Arrays.stream(zahlen).mapToObj(String::valueOf).collect(Collectors.joining("; "));
2023-01-09 11:30:15 +01:00
}
2023-01-09 17:36:33 +01:00
2023-01-07 18:48:00 +01:00
}
2023-01-09 17:36:33 +01:00
2023-01-07 18:48:00 +01:00
@Override
public abstract int[] think(int[] zahlen) throws RobotException;
}