Kommentierung von FactorySystem und UI

main
Drees 2023-01-09 18:29:56 +01:00
parent 97287d2deb
commit 459977389c
4 changed files with 162 additions and 82 deletions

View File

@ -1,22 +1,16 @@
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;
@ -25,19 +19,13 @@ public class C3PO extends Robots{
}
@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++) {
@ -53,8 +41,7 @@ public class C3PO extends Robots{
}
return zahlen;
}
}
public RobotType getRobotType() {
return this.robotType;

View File

@ -18,50 +18,109 @@ 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<Robots> robotStock = rf.getRobotStock();
String[] liste = new String[robotStock.size()];

View File

@ -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));

View File

@ -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,6 +54,9 @@ public class UI {
}
}
/**
* Zeigt alle erstellten Roboter an
*/
private void showRobots() {
String[] robots = fs.getRobotStock();
if (robots.length > 0) {
@ -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<EFBFBD>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<EFBFBD>ck ins Hauptmen<65>");
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<Integer> 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));
}
}