diff --git a/Roboter/tpe/exceptions/roboter/C3PO.java b/Roboter/tpe/exceptions/roboter/C3PO.java index 216b6c8..06d45bb 100644 --- a/Roboter/tpe/exceptions/roboter/C3PO.java +++ b/Roboter/tpe/exceptions/roboter/C3PO.java @@ -1,49 +1,37 @@ package tpe.exceptions.roboter; -//import java.util.*; - -import tpe.exceptions.RobotException; import tpe.exceptions.RobotIllegalStateException; import tpe.exceptions.RobotMagicValueException; -public class C3PO extends Robots{ - +public class C3PO extends Robots { + RobotType robotType; -// private RobotException lastException; -// private String name; -// private boolean powerSwitch; + private int id; - + StringBuilder sb = new StringBuilder(); - public C3PO(String name, int id) { super(name); this.id = id; this.name = name; robotType = RobotType.C3PO; - + } - - - @Override + @Override public int[] think(int[] zahlen) throws RobotIllegalStateException, RobotMagicValueException { - if(!isPowerOn()) - { + if (!isPowerOn()) { throw new RobotIllegalStateException("Der Roboter ist ausgeschaltet!", this.getName()); - } - else if(checkRobotMagicValueException(zahlen)==true) - { - throw new RobotMagicValueException("Zahl 42 kann nicht verarbeitet werden!",this.getName()); - } - else { + } else if (checkRobotMagicValueException(zahlen) == true) { + throw new RobotMagicValueException("Zahl 42 kann nicht verarbeitet werden!", this.getName()); + } else { int z; - + for (int i = 1; i < zahlen.length; i++) { z = zahlen[i]; int k = i; - + while (k > 0 && zahlen[k - 1] < z) { zahlen[k] = zahlen[k - 1]; k--; @@ -51,10 +39,9 @@ public class C3PO extends Robots{ zahlen[k] = z; } } - + return zahlen; - } - + } public RobotType getRobotType() { return this.robotType; @@ -62,7 +49,7 @@ public class C3PO extends Robots{ @Override public int getId() { - + return id; } diff --git a/Roboter/tpe/facade/FactorySystem.java b/Roboter/tpe/facade/FactorySystem.java index 7b3a233..0391630 100644 --- a/Roboter/tpe/facade/FactorySystem.java +++ b/Roboter/tpe/facade/FactorySystem.java @@ -18,57 +18,116 @@ public class FactorySystem { this.rf = new RobotFactory(factoryName); } + /** + * Methode entscheidet, ob ein R2D2 oder ein C3PO erstellt wird + * + * @param select + * @param name + * @return + */ public int constructRobot(int select, String name) { if (select == 1) { int id = rf.constructRobot(RobotType.R2D2, name); return id; - } else { + } else { int id = rf.constructRobot(RobotType.C3PO, name); return id; } - - + } + /** + * Schaltet Roboter an + * + * @param id + * @return + */ public boolean triggerPower(int id) { return rf.triggerPower(id); } + /** + * Gibt den Satus des Roboters an + * + * @param id + * @return + */ public boolean powerStatus(int id) { return rf.powerStatus(id); } -// public String robotInfo(int id) { -// return rf.robotInfo(id).toString(); -// } - + /** + * Gibt die Informationen des Roboters aus + * + * @param id + * @return + */ + public String robotInfo(int id) { + return rf.robotInfo(id).toString(); + } + /** + * Wirft die letzte Fehlermeldung zurück + * + * @param id + * @return + */ public RobotException robotBlackbox(int id) { return rf.robotBlackbox(id); // Bei Rückgabe von null gab es noch keinen Fehler } + /** + * Gibt dem Roboter Zugriff auf think und speak methode + * + * @param id + * @param zahlen + * @return + * @throws RobotException + */ public String robotInstructions(int id, int[] zahlen) throws RobotException { return rf.robotInstructions(id, zahlen); } + /** + * Bibt die Anzahl der Roboter zurück + * + * @return + */ public int robotStockSize() { return rf.robotStockSize(); } + /** + * Prüft ob Roboter vorhanden ist + * + * @param id + * @return + */ public boolean containsRobot(int id) { return rf.containsRobot(id); } - + + /** + * Überprüft den Namen der Fabrik + * + * @return + */ public String getFName() { return rf.getFactoryName(); } + + /** + * Gibt alle gespeicherten Roboter zurück + * + * @return + */ public String[] getRobotStock() { Collection robotStock = rf.getRobotStock(); String[] liste = new String[robotStock.size()]; int i = 0; for (Robots r : robotStock) { - liste[i++] = r.toString(); + liste[i++] = r.toString(); } return liste; diff --git a/Roboter/tpe/facade/FactorySystemTest.java b/Roboter/tpe/facade/FactorySystemTest.java index 5b9de0c..fdd3833 100644 --- a/Roboter/tpe/facade/FactorySystemTest.java +++ b/Roboter/tpe/facade/FactorySystemTest.java @@ -43,6 +43,13 @@ int[] testZahlen2= {1,4,3,41,78,20}; @Test void robotInstructions() throws RobotException { + /** + * 1. Test Roboter soll sprechen ist aber ausgeschaltet + * 2. Roboter ist angeschaltet, kommt aber mit der 42 nicht zu Recht + * 3. Roboter C3P0 wirft Zahlenfolge absteigend aus + * 4. Roboter R2D2 wirft Zahlenfolge aufsteigend aus + */ + RobotIllegalStateException thrownState = Assertions.assertThrows(RobotIllegalStateException.class,() -> fs.robotInstructions(testid,testZahlen2)); assertEquals(thrownState.getMessage(),"Robotname-Testname: Der Roboter ist ausgeschaltet!"); @@ -57,6 +64,7 @@ int[] testZahlen2= {1,4,3,41,78,20}; @Test void robotBlackBox() { + fs.triggerPower(testid); RobotMagicValueException thrownValue=Assertions.assertThrows(RobotMagicValueException.class,() -> fs.robotInstructions(testid,testZahlen1)); assertEquals(thrownValue.getMessage(),fs.robotBlackbox(testid)); diff --git a/Roboter/tpe/ui/UI.java b/Roboter/tpe/ui/UI.java index 8160356..550b42a 100644 --- a/Roboter/tpe/ui/UI.java +++ b/Roboter/tpe/ui/UI.java @@ -36,7 +36,9 @@ public class UI { System.out.println(); switch (input) { - case 1: showRobots(); break; + case 1: + showRobots(); + break; case 2: buildRobot(); break; @@ -52,7 +54,10 @@ public class UI { } } - private void showRobots() { + /** + * Zeigt alle erstellten Roboter an + */ + private void showRobots() { String[] robots = fs.getRobotStock(); if (robots.length > 0) { System.out.println("Folgende Roboter sind verfügbar:"); @@ -64,13 +69,9 @@ public class UI { } } -// private void showRobots() { -// -// System.out.println("Folgende Roboter wurden bereits erstellt: "); -// -// // Seriennummer, Typ und Name aller Roboter soll aufgelistet werden -// } - + /** + * Gibt dem Nutzer die Möglichkeit C3PO oder R2D2 zu bauen + */ private void buildRobot() { String name = null; @@ -115,6 +116,10 @@ public class UI { } + /** + * Nutzer kann durch die EIngabe der Seriennummer den Roboter aussuchen, der + * genutzt werden soll + */ private void choseRobot() { System.out.println("Geben Sie die Seriennummer des Roboters ein, mit dem Sie arbeiten m�chten."); @@ -123,44 +128,44 @@ public class UI { int id = Integer.parseInt(sc.nextLine()); System.out.println(); -// if (id ist nicht vorhanden ) -// System.out.println("Es exisitiert kein Roboter mit der Seriennummer " + id " ."); -// else + if (!fs.containsRobot(id)) + System.out.println("Es exisitiert kein Roboter mit der Seriennummer " + id + " ."); + else - loop: while (true) { - System.out.println("Was m�chten Sie mit Ihrem Roboter tun?"); - System.out.println("1 -> Zustand des Roboters"); - System.out.println("2 -> AN oder Aus schalten"); - System.out.println("3 -> Roboter spricht"); - System.out.println("4 -> Letzte Fehlermeldung auslesen"); // Haben bzw. brauchen wir solch eine Funktion -// System.out.println("5 -> Daten des Roboters abrufen"); - System.out.println("6 -> Zur�ck ins Hauptmen�"); + loop: while (true) { + System.out.println("Was m�chten Sie mit Ihrem Roboter tun?"); + System.out.println("1 -> Zustand des Roboters"); + System.out.println("2 -> AN oder Aus schalten"); + System.out.println("3 -> Roboter spricht"); + System.out.println("4 -> Letzte Fehlermeldung auslesen"); // Haben bzw. brauchen wir solch eine Funktion + System.out.println("5 -> Daten des Roboters abrufen"); + System.out.println("6 -> Zur�ck ins Hauptmen�"); - System.out.print("> "); - int input = Integer.parseInt(sc.nextLine()); + System.out.print("> "); + int input = Integer.parseInt(sc.nextLine()); + + switch (input) { + case 1: + robotStatus(id); + break; + case 2: + onoffbutton(id); + break; + case 3: + robotSpeak(id); + break; + case 4: + lastError(id); + break; + case 5: + robotData(id); + break; + case 6: + break loop; + } - switch (input) { - case 1: - robotStatus(id); - break; - case 2: - onoffbutton(id); - break; - case 3: - robotSpeak(id); - break; - case 4: - lastError(id); - break; -// case 5: -// robotData(id); -// break; - case 6: - break loop; } - } - } /** @@ -176,6 +181,11 @@ public class UI { System.out.println("Der Roboter ist ausgeschaltet."); } + /** + * Schaltet den Roboter ein oder aus + * + * @param id + */ private void onoffbutton(int id) { boolean status = fs.triggerPower(id); if (status == true) @@ -186,6 +196,12 @@ public class UI { System.out.println(); } + /** + * Der Roboter kann, nachdem ihm eine Zahlenfolge gegeben wurde, diese je nach + * Typ verarbeiten und zurückgeben + * + * @param id + */ private void robotSpeak(int id) { ArrayList arrayNumbers = new ArrayList<>(); @@ -229,13 +245,23 @@ public class UI { } + /** + * Gibt die letzte Fehlermeldung des Roboters zurück + * + * @param id + */ private void lastError(int id) { System.out.println(fs.robotBlackbox(id)); } -// private void robotData(int id) { -// System.out.println(fs.robotInfo(id)); -// } + /** + * Gibt die Informationen eines Roboters zurück + * + * @param id + */ + private void robotData(int id) { + System.out.println(fs.robotInfo(id)); + } }