Javadoc wurde geschrieben.
parent
87815a7318
commit
40ed734a79
|
@ -4,6 +4,13 @@ import tpe.exceptions.roboter.exceptions.RobotException;
|
||||||
import tpe.exceptions.roboter.exceptions.RobotIllegalStateException;
|
import tpe.exceptions.roboter.exceptions.RobotIllegalStateException;
|
||||||
import tpe.exceptions.roboter.exceptions.RobotMagicValueException;
|
import tpe.exceptions.roboter.exceptions.RobotMagicValueException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Die Klasse C3PO erbt von Roboter.
|
||||||
|
* @param name wie der Roboter heißen soll.
|
||||||
|
* @param id eine zufällig vergebene Zahl zwischen 9999-19999.
|
||||||
|
*
|
||||||
|
*/
|
||||||
public class C3PO extends Roboter {
|
public class C3PO extends Roboter {
|
||||||
private int id;
|
private int id;
|
||||||
private RobotType robotType;
|
private RobotType robotType;
|
||||||
|
@ -13,16 +20,24 @@ public class C3PO extends Roboter {
|
||||||
this.robotType = RobotType.C3PO;
|
this.robotType = RobotType.C3PO;
|
||||||
this.id = id;
|
this.id = id;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* @see RobotControl#getid(int)
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public int getId() {
|
public int getId() {
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* @see RobotInstructions#think(int[])
|
||||||
|
* @throws RobotIllegalStateException wenn der Roboter ausgeschaltet ist.
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public int[] think(int[] zahlen) throws RobotException {
|
public int[] think(int[] zahlen) throws RobotException {
|
||||||
int remember;
|
int remember;
|
||||||
|
/**
|
||||||
|
* hier wird geschaut ob zahlen die Zahl 42 enthält, wenn true
|
||||||
|
* wird eine RobotMagicException geworfen.
|
||||||
|
*/
|
||||||
if (isPowerOn() == true) {
|
if (isPowerOn() == true) {
|
||||||
for (int zahl : zahlen) {
|
for (int zahl : zahlen) {
|
||||||
if (zahl == 42) {
|
if (zahl == 42) {
|
||||||
|
@ -30,11 +45,17 @@ public class C3PO extends Roboter {
|
||||||
throw fehler;
|
throw fehler;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* hier werden die Zahlen absteigend mit dem InsertionSort sortiert.
|
||||||
|
* hier wird immer die nächste Zahl im Array angeschaut.
|
||||||
|
*/
|
||||||
for (int i = 1; i < zahlen.length; i++) {
|
for (int i = 1; i < zahlen.length; i++) {
|
||||||
remember = zahlen[i];
|
remember = zahlen[i];
|
||||||
int k = i;
|
int k = i;
|
||||||
|
/**
|
||||||
|
* hier wird die Zahl solange nach links getauscht bis die Zahl links nicht mehr kleiner
|
||||||
|
* ist als die Zahl rechts, oder die Zahl ganz links ist.
|
||||||
|
*/
|
||||||
while (k > 0 && zahlen[k - 1] < remember) {
|
while (k > 0 && zahlen[k - 1] < remember) {
|
||||||
zahlen[k] = zahlen[k - 1];
|
zahlen[k] = zahlen[k - 1];
|
||||||
k--;
|
k--;
|
||||||
|
@ -47,7 +68,10 @@ public class C3PO extends Roboter {
|
||||||
throw fehler;
|
throw fehler;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* @see Roboter#getRobotType(RoboType)
|
||||||
|
* @return roboTyoe
|
||||||
|
*/
|
||||||
public RobotType getRobotType() {
|
public RobotType getRobotType() {
|
||||||
return this.robotType;
|
return this.robotType;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,10 @@ package Domäne;
|
||||||
|
|
||||||
import tpe.exceptions.roboter.exceptions.RobotException;
|
import tpe.exceptions.roboter.exceptions.RobotException;
|
||||||
import tpe.exceptions.roboter.exceptions.RobotIllegalStateException;
|
import tpe.exceptions.roboter.exceptions.RobotIllegalStateException;
|
||||||
|
/**
|
||||||
|
* Die Klasse Nexus6 hat ein einziges Objekt namens Pris
|
||||||
|
* Pris ist defekt und hat immer die gleiche id:19281982
|
||||||
|
*/
|
||||||
public class Nexus6 extends Roboter {
|
public class Nexus6 extends Roboter {
|
||||||
|
|
||||||
private String name;
|
private String name;
|
||||||
|
@ -16,7 +19,12 @@ public class Nexus6 extends Roboter {
|
||||||
robotType = RobotType.NEXUS6;
|
robotType = RobotType.NEXUS6;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Falls es noch kein Objekt gibt wird eins erzeugt.
|
||||||
|
* Besteht jedoch schon ein Objekt, so wird das Objekt zurückgegeben
|
||||||
|
* und kein neues erzeugt.
|
||||||
|
* @return Pris
|
||||||
|
*/
|
||||||
public static Nexus6 getInstance() {
|
public static Nexus6 getInstance() {
|
||||||
if (PRIS == null) {
|
if (PRIS == null) {
|
||||||
PRIS = new Nexus6();
|
PRIS = new Nexus6();
|
||||||
|
@ -24,18 +32,28 @@ public class Nexus6 extends Roboter {
|
||||||
}
|
}
|
||||||
return PRIS;
|
return PRIS;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* @see RobotControl#triggerPowerSwitch()
|
||||||
|
* hier bleibt jedoch power immer auf false
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void triggerPowerSwitch() {
|
public void triggerPowerSwitch() {
|
||||||
power = false;
|
power = false;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* @see RobotControl#getID(int)
|
||||||
|
* gibt immer die gleiche id zurück: 19281982
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public int getId() {
|
public int getId() {
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Methode soll Fehler ausgeben, da der Roboter nicht Funktioniert.
|
/**
|
||||||
|
* @see RobotInstructions#speak(String)
|
||||||
|
* @throws RobotIllegalStateException
|
||||||
|
* Methode soll Fehler ausgeben, da der Roboter nicht Funktioniert.
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String speak(int[] zahlen) throws RobotException {
|
public String speak(int[] zahlen) throws RobotException {
|
||||||
fehler = new RobotIllegalStateException("Roboter ausgeschaltet und Defekt!", this.name);
|
fehler = new RobotIllegalStateException("Roboter ausgeschaltet und Defekt!", this.name);
|
||||||
|
@ -43,14 +61,20 @@ public class Nexus6 extends Roboter {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Methode soll Fehler ausgeben, da der Roboter nicht Funktioniert.
|
/**
|
||||||
|
* @see RoboInstructions
|
||||||
|
* @throws RobotIllegalStateException
|
||||||
|
* Methode soll Fehler ausgeben, da der Roboter nicht Funktioniert.
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public int[] think(int[] zahlen) throws RobotException {
|
public int[] think(int[] zahlen) throws RobotException {
|
||||||
fehler = new RobotIllegalStateException("Roboter ausgeschaltet und Defekt!", this.name);
|
fehler = new RobotIllegalStateException("Roboter ausgeschaltet und Defekt!", this.name);
|
||||||
throw fehler;
|
throw fehler;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* @see Roboter#getRobotType(robotType)
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public RobotType getRobotType() {
|
public RobotType getRobotType() {
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,13 @@ package Domäne;
|
||||||
import tpe.exceptions.roboter.exceptions.RobotException;
|
import tpe.exceptions.roboter.exceptions.RobotException;
|
||||||
import tpe.exceptions.roboter.exceptions.RobotIllegalStateException;
|
import tpe.exceptions.roboter.exceptions.RobotIllegalStateException;
|
||||||
import tpe.exceptions.roboter.exceptions.RobotMagicValueException;
|
import tpe.exceptions.roboter.exceptions.RobotMagicValueException;
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Die Klasse R2D2 erbt von Roboter.
|
||||||
|
* @param name wie der Roboter heißen soll.
|
||||||
|
* @Param id eine zufällig vergebene Zahl zwischen 0-9999.
|
||||||
|
*
|
||||||
|
*/
|
||||||
public class R2D2 extends Roboter {
|
public class R2D2 extends Roboter {
|
||||||
private int id;
|
private int id;
|
||||||
private RobotType robotType;
|
private RobotType robotType;
|
||||||
|
@ -13,9 +19,15 @@ public class R2D2 extends Roboter {
|
||||||
this.robotType = RobotType.R2D2;
|
this.robotType = RobotType.R2D2;
|
||||||
this.id = id;
|
this.id = id;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* @see RobotInstructions#think(int[])
|
||||||
|
* @throws RobotIllegalStateException wenn der Roboter ausgeschaltet ist.
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public int[] think(int[] zahlen) throws RobotException {
|
public int[] think(int[] zahlen) throws RobotException {
|
||||||
|
/**
|
||||||
|
* Falls zahlen die Zahl 42 enthält, wird eine RobotMagicValueException geworfen.
|
||||||
|
*/
|
||||||
if (isPowerOn() == true) {
|
if (isPowerOn() == true) {
|
||||||
for (int zahl : zahlen) {
|
for (int zahl : zahlen) {
|
||||||
if (zahl == 42) {
|
if (zahl == 42) {
|
||||||
|
@ -23,7 +35,12 @@ public class R2D2 extends Roboter {
|
||||||
throw fehler;
|
throw fehler;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Hier werden die Zahlen aufsteigend mit dem SelectionSort sortiert.
|
||||||
|
* Hier wird immer die nächst kleinere Zahl gesucht.
|
||||||
|
* ist i(die Zahl links) größer als k(die Zahl rechts),
|
||||||
|
* so werden beide Zahlen getauscht.
|
||||||
|
*/
|
||||||
for (int i = 0; i < zahlen.length - 1; i++) {
|
for (int i = 0; i < zahlen.length - 1; i++) {
|
||||||
for (int k = i + 1; k < zahlen.length; k++) {
|
for (int k = i + 1; k < zahlen.length; k++) {
|
||||||
if (zahlen[i] > zahlen[k]) {
|
if (zahlen[i] > zahlen[k]) {
|
||||||
|
@ -39,12 +56,16 @@ public class R2D2 extends Roboter {
|
||||||
fehler = new RobotIllegalStateException("Roboter ausgeschaltet! Bitte einschalten.", this.name);
|
fehler = new RobotIllegalStateException("Roboter ausgeschaltet! Bitte einschalten.", this.name);
|
||||||
throw fehler;
|
throw fehler;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* @see RobotControl#getId(int)
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public int getId() {
|
public int getId() {
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* @see Roboter#getRobotType(robotType)
|
||||||
|
*/
|
||||||
public RobotType getRobotType() {
|
public RobotType getRobotType() {
|
||||||
return this.robotType;
|
return this.robotType;
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,13 @@ package Domäne;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
import tpe.exceptions.roboter.exceptions.RobotException;
|
import tpe.exceptions.roboter.exceptions.RobotException;
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Schnittstelle zwischen Roboter und FactorySystem.
|
||||||
|
* hier wird auch das Objekt Pris erzeugt.
|
||||||
|
* RobotFactory hat eine HashMap wo die Roboter gelagert werden.
|
||||||
|
*
|
||||||
|
*/
|
||||||
public class RobotFactory {
|
public class RobotFactory {
|
||||||
private String name;
|
private String name;
|
||||||
private Roboter pris = Nexus6.getInstance();
|
private Roboter pris = Nexus6.getInstance();
|
||||||
|
@ -13,7 +19,13 @@ public class RobotFactory {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
roboterLager.put(pris.getId(), pris);
|
roboterLager.put(pris.getId(), pris);
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Hier werden Roboter erzeugt und in die HashMap gespeichert.
|
||||||
|
* Außerdem wird durh die if-Abfrage zweischen R2D2 und C3PO unterschieden.
|
||||||
|
* @param robotType
|
||||||
|
* @param name
|
||||||
|
* @return id vom Roboter der gerade erzeugt worden ist.
|
||||||
|
*/
|
||||||
public int addRobot(RobotType robotType, String name) {
|
public int addRobot(RobotType robotType, String name) {
|
||||||
Roboter roboter;
|
Roboter roboter;
|
||||||
|
|
||||||
|
@ -29,15 +41,30 @@ public class RobotFactory {
|
||||||
} else
|
} else
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @return name um eventuell den Namen der RobotFactory zurückzugeben.
|
||||||
|
*/
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* gibt den gesuchten Roboter mit der passenden ID zurück.
|
||||||
|
* @param id
|
||||||
|
* @return Roboter objekt
|
||||||
|
*/
|
||||||
public Roboter findeRoboter(int id) {
|
public Roboter findeRoboter(int id) {
|
||||||
return roboterLager.get(id);
|
return roboterLager.get(id);
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Diese Methode ist wichtig um die Ids zufällig zur vergeben.
|
||||||
|
* Je nach robotType wird ein anders min und max übergeben. Das gibt
|
||||||
|
* dann den Bereich an wo die Zahl zufällig vergeben wird.
|
||||||
|
* Wurde diese ID schon vergeben, so ruft sich die Methode von selbst auf.
|
||||||
|
* @param min minimum vom Bereich
|
||||||
|
* @param max Maximum vom Bereich
|
||||||
|
* @return randomValue die zufällige und noch nicht vergebene ID
|
||||||
|
*/
|
||||||
private int idVergeben(int min, int max) {
|
private int idVergeben(int min, int max) {
|
||||||
|
|
||||||
int randomValue = (int) (Math.random() * (max - min)) + min;
|
int randomValue = (int) (Math.random() * (max - min)) + min;
|
||||||
|
@ -47,20 +74,36 @@ public class RobotFactory {
|
||||||
|
|
||||||
return randomValue;
|
return randomValue;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* gibt anhand der ID den Zustand des Roboters zurück.
|
||||||
|
* @param id
|
||||||
|
* @return zustand vom Roboter
|
||||||
|
*/
|
||||||
public boolean roboterZustand(int id) {
|
public boolean roboterZustand(int id) {
|
||||||
Roboter r = findeRoboter(id);
|
Roboter r = findeRoboter(id);
|
||||||
boolean zustand = r.isPowerOn();
|
boolean zustand = r.isPowerOn();
|
||||||
return zustand;
|
return zustand;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Um den richtigen Roboter anhand der ID An oder Aus zu schalten.
|
||||||
|
* @param id um den richtigen Roboter zu finden
|
||||||
|
* @return zustand vom Roboter
|
||||||
|
*/
|
||||||
public boolean schalterAnAus(int id) {
|
public boolean schalterAnAus(int id) {
|
||||||
Roboter r = findeRoboter(id);
|
Roboter r = findeRoboter(id);
|
||||||
r.triggerPowerSwitch();
|
r.triggerPowerSwitch();
|
||||||
boolean zustand = r.isPowerOn();
|
boolean zustand = r.isPowerOn();
|
||||||
return zustand;
|
return zustand;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Hier werden beide Methoden aufgerufen. Zuerst wird der richtige
|
||||||
|
* Roboter gefunden, dann werden die zahlen von der think()-methode sortiert, und
|
||||||
|
* anschließend mit den richtigen Trennzeichen mit der speak()-methode ausgegeben.
|
||||||
|
* @param id
|
||||||
|
* @param zahlen
|
||||||
|
* @return ausgabe als String Sortiert, mit den richtigen Trennzeichen
|
||||||
|
* @throws RobotException falls der Roboter Aus ist oder zahlen[] die Zahl 42 enthält.
|
||||||
|
*/
|
||||||
public String aufrufSpeakAndThink(int id, int[] zahlen) throws RobotException {
|
public String aufrufSpeakAndThink(int id, int[] zahlen) throws RobotException {
|
||||||
Roboter r = findeRoboter(id);
|
Roboter r = findeRoboter(id);
|
||||||
int[] sotiert = r.think(zahlen);
|
int[] sotiert = r.think(zahlen);
|
||||||
|
@ -68,12 +111,20 @@ public class RobotFactory {
|
||||||
return ausgabe;
|
return ausgabe;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Hier wird der letzte Fehler zurückgegeben, den der Roboter geworfen hat.
|
||||||
|
* @param id
|
||||||
|
* @return RobotException letzte Ausnahme vom Roboter
|
||||||
|
*/
|
||||||
public RobotException letzterFehler(int id) {
|
public RobotException letzterFehler(int id) {
|
||||||
Roboter r = findeRoboter(id);
|
Roboter r = findeRoboter(id);
|
||||||
return r.getLastException();
|
return r.getLastException();
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Hier werden anhand der Id Typ, Name und Seriennummer vom Roboter zurückgegeben.
|
||||||
|
* @param id
|
||||||
|
* @return ausgabe als String für die Daten des Roboters
|
||||||
|
*/
|
||||||
public String datenDesRoboters(int id) {
|
public String datenDesRoboters(int id) {
|
||||||
Roboter r = findeRoboter(id);
|
Roboter r = findeRoboter(id);
|
||||||
String robotType = r.getRobotType().toString();
|
String robotType = r.getRobotType().toString();
|
||||||
|
@ -83,11 +134,19 @@ public class RobotFactory {
|
||||||
return ausgabe;
|
return ausgabe;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* gibt die größe vom roboterLager zurück.
|
||||||
|
* Wird für das Testen verwendet.
|
||||||
|
* @return int größe des Lagers
|
||||||
|
*/
|
||||||
public int getRoboterLagerSize() {
|
public int getRoboterLagerSize() {
|
||||||
return roboterLager.size();
|
return roboterLager.size();
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Gibt einen boolean zurück um zu schauen ob dieser Roboter schon existiert.
|
||||||
|
* @param id um zu schauen ob diese Id schon vergeben wurde
|
||||||
|
* @return boolean true bedeutet, dass es diesen Roboter gibt
|
||||||
|
*/
|
||||||
public boolean istDieserRoboterDa(int id) {
|
public boolean istDieserRoboterDa(int id) {
|
||||||
return roboterLager.containsKey(id);
|
return roboterLager.containsKey(id);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,9 @@
|
||||||
package Domäne;
|
package Domäne;
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Hier sind die Typen die man bauen kann.
|
||||||
|
*
|
||||||
|
*/
|
||||||
public enum RobotType {
|
public enum RobotType {
|
||||||
R2D2, C3PO, NEXUS6
|
R2D2, C3PO, NEXUS6
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,14 +7,20 @@ import tpe.exceptions.roboter.exceptions.RobotException;
|
||||||
import tpe.exceptions.roboter.exceptions.RobotIllegalStateException;
|
import tpe.exceptions.roboter.exceptions.RobotIllegalStateException;
|
||||||
import tpe.exceptions.roboter.exceptions.RobotMagicValueException;
|
import tpe.exceptions.roboter.exceptions.RobotMagicValueException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Die Klasse Roboter implementiert Robot
|
||||||
|
*
|
||||||
|
*/
|
||||||
public abstract class Roboter implements Robot {
|
public abstract class Roboter implements Robot {
|
||||||
|
|
||||||
protected final String name;
|
protected final String name;
|
||||||
protected boolean power;
|
protected boolean power;
|
||||||
protected RobotException fehler;
|
protected RobotException fehler;
|
||||||
|
|
||||||
// Roboter wird in einem ausgeschalteten Zustand instanziiert!
|
/**
|
||||||
|
* Roboter wird in einem ausgeschalteten Zustand instanziiert!
|
||||||
|
*/
|
||||||
Roboter(String name) {
|
Roboter(String name) {
|
||||||
|
|
||||||
this.name = name;
|
this.name = name;
|
||||||
|
@ -22,18 +28,24 @@ public abstract class Roboter implements Robot {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// gibt die ID des Roboters zurück
|
/**
|
||||||
|
* @see RobotControl#getid(int)
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public abstract int getId();
|
public abstract int getId();
|
||||||
|
|
||||||
// gibt den Namen des Roboters zurück
|
/**
|
||||||
|
* @see RobotControl#getName(String)
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TrigerPowerSwitch dreht den Power zustand um, wenn er false ist wird er
|
/**
|
||||||
// eingeschaltet also true und umgekehrt
|
* @see RobotControl#triggerPowerSwitch
|
||||||
|
* der Zustand wird beim aufrufen zwischen true und false getauscht.
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void triggerPowerSwitch() {
|
public void triggerPowerSwitch() {
|
||||||
if (power == false)
|
if (power == false)
|
||||||
|
@ -44,7 +56,9 @@ public abstract class Roboter implements Robot {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Zustand wird geprüft, ob der Roboter an ist.
|
/**
|
||||||
|
* @see RobotControl#isPowerOn(boolean)
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean isPowerOn() {
|
public boolean isPowerOn() {
|
||||||
if (power == true)
|
if (power == true)
|
||||||
|
@ -53,13 +67,19 @@ public abstract class Roboter implements Robot {
|
||||||
else
|
else
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* @see RobotControl#getLastException(RobotException)
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public RobotException getLastException() {
|
public RobotException getLastException() {
|
||||||
|
|
||||||
return fehler;
|
return fehler;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* @see RobotInstructions#speak(int)
|
||||||
|
* @throws zahlen[] die Zahl 42 enthält, wird die RobotMagicValueException geworfen
|
||||||
|
*
|
||||||
|
*/
|
||||||
public String speak(int[] zahlen) throws RobotException {
|
public String speak(int[] zahlen) throws RobotException {
|
||||||
if (isPowerOn() == true) {
|
if (isPowerOn() == true) {
|
||||||
for (int zahl : zahlen) {
|
for (int zahl : zahlen) {
|
||||||
|
@ -73,7 +93,15 @@ public abstract class Roboter implements Robot {
|
||||||
fehler = new RobotIllegalStateException("Roboter ausgeschaltet! Bitte einschalten.", this.name);
|
fehler = new RobotIllegalStateException("Roboter ausgeschaltet! Bitte einschalten.", this.name);
|
||||||
throw fehler;
|
throw fehler;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Gibt die Zahlen als String zurück. Zwischen den Zahlen wird das richtige Trennzeichen verwendet
|
||||||
|
* Die Methode erkennt das richtige Trennzeichen, indem es die erste Zahl mit der letzen Zahl vergleicht.
|
||||||
|
* R2D2 sortiert die Zahlen aufsteigend, daher muss die erste Zahl kleiner als die letzte Zahl sein.
|
||||||
|
* Bei C3PO ist es anders herum.
|
||||||
|
* @param zahlen
|
||||||
|
* @return String der die Zahlen mit Trennzeichen zurück gibt.
|
||||||
|
*
|
||||||
|
*/
|
||||||
private String prepare(int[] zahlen) {
|
private String prepare(int[] zahlen) {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
if (zahlen[0] < zahlen[zahlen.length - 1]) {
|
if (zahlen[0] < zahlen[zahlen.length - 1]) {
|
||||||
|
@ -87,9 +115,13 @@ public abstract class Roboter implements Robot {
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* @see RobotInstructions#think(int[])
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public abstract int[] think(int[] zahlen) throws RobotException;
|
public abstract int[] think(int[] zahlen) throws RobotException;
|
||||||
|
/**
|
||||||
|
* gibt den Typ des Roboters zurück
|
||||||
|
*/
|
||||||
public abstract RobotType getRobotType();
|
public abstract RobotType getRobotType();
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,14 +3,25 @@ package facade;
|
||||||
import Domäne.RobotFactory;
|
import Domäne.RobotFactory;
|
||||||
import Domäne.RobotType;
|
import Domäne.RobotType;
|
||||||
import tpe.exceptions.roboter.exceptions.RobotException;
|
import tpe.exceptions.roboter.exceptions.RobotException;
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Ist die Schnittstelle zwischen RobotFactory und Factory.
|
||||||
|
* Hier wird eine neue RobotFactory erzeugt
|
||||||
|
*
|
||||||
|
*/
|
||||||
public class Factorysystem {
|
public class Factorysystem {
|
||||||
private RobotFactory robotFactory;
|
private RobotFactory robotFactory;
|
||||||
|
|
||||||
public Factorysystem(String name) {
|
public Factorysystem(String name) {
|
||||||
this.robotFactory = new RobotFactory(name);
|
this.robotFactory = new RobotFactory(name);
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Dieser Methode wird der Name des Roboters und ein int 1 oder 2 übergeben.
|
||||||
|
* Durch die if_Abfrage wird entweder dem Roboter den Typ R2D2 oder C3pO vergeben.
|
||||||
|
* @param name des Roboters
|
||||||
|
* @param auswahl um den Typ des Roboters zu bestimmen
|
||||||
|
* @return id vom Roboter
|
||||||
|
*/
|
||||||
public int roboterAnlegen(String name, int auswahl) {
|
public int roboterAnlegen(String name, int auswahl) {
|
||||||
RobotType robottype;
|
RobotType robottype;
|
||||||
if (auswahl == 1) {
|
if (auswahl == 1) {
|
||||||
|
@ -25,29 +36,55 @@ public class Factorysystem {
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Um den Zustand des Roboter zurückzugeben.
|
||||||
|
* @param id vom Roboter
|
||||||
|
* @return gibt den Zustand zurück
|
||||||
|
*/
|
||||||
public boolean zustandRoboter(int id) {
|
public boolean zustandRoboter(int id) {
|
||||||
return robotFactory.roboterZustand(id);
|
return robotFactory.roboterZustand(id);
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Um den Roboter An oder Aus zuschalten.
|
||||||
|
* @param id vom Roboter
|
||||||
|
* @return boolean True bedeutet An, False bedeutet Aus
|
||||||
|
*/
|
||||||
public boolean schalterBetätigen(int id) {
|
public boolean schalterBetätigen(int id) {
|
||||||
return robotFactory.schalterAnAus(id);
|
return robotFactory.schalterAnAus(id);
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Um die Methoden think() und speak() vom Roboter aufzurufen.
|
||||||
|
* @param id vom Roboter
|
||||||
|
* @param zahlen die Zahlen die sortiert werden sollen
|
||||||
|
* @return als String Sortiert, mit den richtigen Trennzeichen
|
||||||
|
* @throws RobotException falls der Roboter Aus ist oder zahlen[] die Zahl 42 enthält.
|
||||||
|
*/
|
||||||
public String sprechenAufruf(int id, int[] zahlen) throws RobotException {
|
public String sprechenAufruf(int id, int[] zahlen) throws RobotException {
|
||||||
String ausgabe = robotFactory.aufrufSpeakAndThink(id, zahlen);
|
String ausgabe = robotFactory.aufrufSpeakAndThink(id, zahlen);
|
||||||
return ausgabe;
|
return ausgabe;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* um den letzten Fehler zu lesen den der Roboter geworfen hat.
|
||||||
|
* @param id vom Roboter
|
||||||
|
* @return RobotException der letzte Fehler
|
||||||
|
*/
|
||||||
public RobotException fehlerAuslesen(int id) {
|
public RobotException fehlerAuslesen(int id) {
|
||||||
|
|
||||||
return robotFactory.letzterFehler(id);
|
return robotFactory.letzterFehler(id);
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Um die Daten des Roboters an Factory zu übergeben.
|
||||||
|
* @param id vom Roboter
|
||||||
|
* @return Daten vom Roboter
|
||||||
|
*/
|
||||||
public String roboterDaten(int id) {
|
public String roboterDaten(int id) {
|
||||||
return robotFactory.datenDesRoboters(id);
|
return robotFactory.datenDesRoboters(id);
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Um den boolean an Factory zu übergeben.
|
||||||
|
* @param id vom Roboter
|
||||||
|
* @return boolean ob dieser Roboter existiert oder nicht
|
||||||
|
*/
|
||||||
public boolean istDieserRoboterDa(int id) {
|
public boolean istDieserRoboterDa(int id) {
|
||||||
boolean istDa = robotFactory.istDieserRoboterDa(id);
|
boolean istDa = robotFactory.istDieserRoboterDa(id);
|
||||||
return istDa;
|
return istDa;
|
||||||
|
|
|
@ -7,7 +7,12 @@ import javax.management.loading.PrivateClassLoader;
|
||||||
|
|
||||||
import facade.Factorysystem;
|
import facade.Factorysystem;
|
||||||
import tpe.exceptions.roboter.exceptions.RobotException;
|
import tpe.exceptions.roboter.exceptions.RobotException;
|
||||||
|
/**
|
||||||
|
* Hier ist die Ui für den User.
|
||||||
|
* Um Roboter zu Bauen und sie zu steuern.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
public class Factory {
|
public class Factory {
|
||||||
Scanner sc = new Scanner(System.in);
|
Scanner sc = new Scanner(System.in);
|
||||||
private Factorysystem factorysystem;
|
private Factorysystem factorysystem;
|
||||||
|
@ -16,7 +21,11 @@ public class Factory {
|
||||||
this.factorysystem = factorysystem;
|
this.factorysystem = factorysystem;
|
||||||
hauptmenü();
|
hauptmenü();
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Das Hauptmenü wo sich der User entscheiden kann
|
||||||
|
* einen Roboter zu bauen oder einen auszuwählen um hin zu Steuern.
|
||||||
|
* @throws RobotException
|
||||||
|
*/
|
||||||
private void hauptmenü() throws RobotException {
|
private void hauptmenü() throws RobotException {
|
||||||
int input = 0;
|
int input = 0;
|
||||||
mainloop: while (true) {
|
mainloop: while (true) {
|
||||||
|
@ -27,7 +36,11 @@ public class Factory {
|
||||||
System.out.println("2 -> Roboter auswählen");
|
System.out.println("2 -> Roboter auswählen");
|
||||||
System.out.println("9 -> Beenden");
|
System.out.println("9 -> Beenden");
|
||||||
System.out.println();
|
System.out.println();
|
||||||
|
/**
|
||||||
|
* Die While-Schleife mit dem try und catch Block dient dazu,
|
||||||
|
* um zu verhindern dass das Programm durch eine Fehleingabe aufhört.
|
||||||
|
*
|
||||||
|
*/
|
||||||
while (true) {
|
while (true) {
|
||||||
System.out.println("> ");
|
System.out.println("> ");
|
||||||
try {
|
try {
|
||||||
|
@ -56,7 +69,10 @@ public class Factory {
|
||||||
|
|
||||||
System.out.println("Programm beendet!");
|
System.out.println("Programm beendet!");
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Hier wird der User gefragt welchen RoboterTyp und welchen Namen der
|
||||||
|
* Roboter haben soll. Fehleingaben oder Blank-Eingaben werden verhindert.
|
||||||
|
*/
|
||||||
private void roboterBauen() {
|
private void roboterBauen() {
|
||||||
int auswahl;
|
int auswahl;
|
||||||
String name;
|
String name;
|
||||||
|
@ -70,7 +86,11 @@ public class Factory {
|
||||||
System.out.println("Bitte 1 oder 2 eingeben");
|
System.out.println("Bitte 1 oder 2 eingeben");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* hier wird verhinder, dass der User seinen Roboter nicht benennt.
|
||||||
|
* Wenn die Eingabe nicht aus Blanks besteht, bricht die While-Schleife ab
|
||||||
|
* und das Programm läuft weiter.
|
||||||
|
*/
|
||||||
while (true) {
|
while (true) {
|
||||||
System.out.println("Wie wollen Sie ihren Roboter nennen?");
|
System.out.println("Wie wollen Sie ihren Roboter nennen?");
|
||||||
name = sc.nextLine();
|
name = sc.nextLine();
|
||||||
|
@ -82,7 +102,13 @@ public class Factory {
|
||||||
System.out.println(name + " mit der Seriennummer: " + seriennummer + " wurde erstellt.");
|
System.out.println(name + " mit der Seriennummer: " + seriennummer + " wurde erstellt.");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Führt zum nächsten Menü um den User den Roboter steuern zu lassen.
|
||||||
|
* istDieserRoboterDa() überprüft ob die eingegebene Seriennummer einem Roboter gehört.
|
||||||
|
* Ist das der Fall, wird die While-Schleife abgebrochen und das Programm läuft weiter.
|
||||||
|
* ISt das nicht der Fall, wird der User zurück ins Hauptmenü geschickt.
|
||||||
|
* @throws RobotException
|
||||||
|
*/
|
||||||
private void roboterAuswählen() throws RobotException {
|
private void roboterAuswählen() throws RobotException {
|
||||||
int id;
|
int id;
|
||||||
while (true) {
|
while (true) {
|
||||||
|
@ -135,12 +161,19 @@ public class Factory {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Schaut ob der Roboter schon im Roboter Lager existiert.
|
||||||
|
* @param id vom Roboter
|
||||||
|
* @return istDa ob der Roboter da ist oder nicht.
|
||||||
|
*/
|
||||||
private boolean istDieserRoboterDa(int id) {
|
private boolean istDieserRoboterDa(int id) {
|
||||||
boolean istDa = factorysystem.istDieserRoboterDa(id);
|
boolean istDa = factorysystem.istDieserRoboterDa(id);
|
||||||
return istDa;
|
return istDa;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Um zu prüfen ob der Roboter An oder Aus ist.
|
||||||
|
* @param id vom Roboter
|
||||||
|
*/
|
||||||
private void zustandAbfragen(int id) {
|
private void zustandAbfragen(int id) {
|
||||||
boolean zustand = factorysystem.zustandRoboter(id);
|
boolean zustand = factorysystem.zustandRoboter(id);
|
||||||
if (zustand == true) {
|
if (zustand == true) {
|
||||||
|
@ -149,7 +182,11 @@ public class Factory {
|
||||||
System.out.println("Der Roboter ist aus!");
|
System.out.println("Der Roboter ist aus!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Um den Roboter An oder Aus zuschalten.
|
||||||
|
* Pris bleibt ausgeschaltet.
|
||||||
|
* @param id vom Roboter
|
||||||
|
*/
|
||||||
private void schalterBetätigen(int id) {
|
private void schalterBetätigen(int id) {
|
||||||
boolean zustand = factorysystem.schalterBetätigen(id);
|
boolean zustand = factorysystem.schalterBetätigen(id);
|
||||||
if (zustand == true) {
|
if (zustand == true) {
|
||||||
|
@ -158,7 +195,13 @@ public class Factory {
|
||||||
System.out.println("Der Roboter wurde abgeschaltet!");
|
System.out.println("Der Roboter wurde abgeschaltet!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Um den Roboter sprechen zu lassen.
|
||||||
|
* User wird aufgefordert Zahlen einzugeben.
|
||||||
|
* User wird gefragt ob er noch mehr Zahlen hinzufügen möchte.
|
||||||
|
* Danach werden die Zahlen sortiert und mit dem richtigen Trennzeichen ausgegeben.
|
||||||
|
* @param id vom Roboter
|
||||||
|
*/
|
||||||
private void sprechen(int id) {
|
private void sprechen(int id) {
|
||||||
ArrayList<Integer> zahlenHinzufügen = new ArrayList<>();
|
ArrayList<Integer> zahlenHinzufügen = new ArrayList<>();
|
||||||
System.out.println("Geben Sie ein Array an!");
|
System.out.println("Geben Sie ein Array an!");
|
||||||
|
@ -169,7 +212,10 @@ public class Factory {
|
||||||
boolean weiter = true;
|
boolean weiter = true;
|
||||||
int i = 2;
|
int i = 2;
|
||||||
while (weiter) {
|
while (weiter) {
|
||||||
|
/**
|
||||||
|
* Gibt der User etwas anderes außer j oder J ein,
|
||||||
|
* werden die Zahlen per Stream dem Array hinzugefügt.
|
||||||
|
*/
|
||||||
System.out.println("Geben Sie die " + i + ". Zahl an");
|
System.out.println("Geben Sie die " + i + ". Zahl an");
|
||||||
zahl = Integer.parseInt(sc.nextLine());
|
zahl = Integer.parseInt(sc.nextLine());
|
||||||
zahlenHinzufügen.add(zahl);
|
zahlenHinzufügen.add(zahl);
|
||||||
|
@ -188,7 +234,6 @@ public class Factory {
|
||||||
System.out.println("Ausgabe: " + ausgabe);
|
System.out.println("Ausgabe: " + ausgabe);
|
||||||
} catch (RobotException e) {
|
} catch (RobotException e) {
|
||||||
System.out.println("Fehler! Bitte den letzten Fehler auslesen!");
|
System.out.println("Fehler! Bitte den letzten Fehler auslesen!");
|
||||||
// e.printStackTrace();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -196,12 +241,19 @@ public class Factory {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Gibt die letzte Fehlermeldung vom Roboter aus.
|
||||||
|
* @param id vom Roboter
|
||||||
|
*/
|
||||||
private void letzteFehlermeldung(int id) {
|
private void letzteFehlermeldung(int id) {
|
||||||
System.out.println(factorysystem.fehlerAuslesen(id));
|
System.out.println(factorysystem.fehlerAuslesen(id));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Gibt die Daten vom Roboter aus.
|
||||||
|
* RoboterTyp, Name und Seriennummer.
|
||||||
|
* @param id vom Roboter
|
||||||
|
*/
|
||||||
private void datenAbruf(int id) {
|
private void datenAbruf(int id) {
|
||||||
System.out.println(factorysystem.roboterDaten(id));
|
System.out.println(factorysystem.roboterDaten(id));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue