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,49 +1,37 @@
package tpe.exceptions.roboter; package tpe.exceptions.roboter;
//import java.util.*;
import tpe.exceptions.RobotException;
import tpe.exceptions.RobotIllegalStateException; import tpe.exceptions.RobotIllegalStateException;
import tpe.exceptions.RobotMagicValueException; import tpe.exceptions.RobotMagicValueException;
public class C3PO extends Robots{ public class C3PO extends Robots {
RobotType robotType; RobotType robotType;
// private RobotException lastException;
// private String name;
// private boolean powerSwitch;
private int id; private int id;
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
public C3PO(String name, int id) { public C3PO(String name, int id) {
super(name); super(name);
this.id = id; this.id = id;
this.name = name; this.name = name;
robotType = RobotType.C3PO; robotType = RobotType.C3PO;
} }
@Override
@Override
public int[] think(int[] zahlen) throws RobotIllegalStateException, RobotMagicValueException { public int[] think(int[] zahlen) throws RobotIllegalStateException, RobotMagicValueException {
if(!isPowerOn()) if (!isPowerOn()) {
{
throw new RobotIllegalStateException("Der Roboter ist ausgeschaltet!", this.getName()); throw new RobotIllegalStateException("Der Roboter ist ausgeschaltet!", this.getName());
} } else if (checkRobotMagicValueException(zahlen) == true) {
else if(checkRobotMagicValueException(zahlen)==true) throw new RobotMagicValueException("Zahl 42 kann nicht verarbeitet werden!", this.getName());
{ } else {
throw new RobotMagicValueException("Zahl 42 kann nicht verarbeitet werden!",this.getName());
}
else {
int z; int z;
for (int i = 1; i < zahlen.length; i++) { for (int i = 1; i < zahlen.length; i++) {
z = zahlen[i]; z = zahlen[i];
int k = i; int k = i;
while (k > 0 && zahlen[k - 1] < z) { while (k > 0 && zahlen[k - 1] < z) {
zahlen[k] = zahlen[k - 1]; zahlen[k] = zahlen[k - 1];
k--; k--;
@ -51,10 +39,9 @@ public class C3PO extends Robots{
zahlen[k] = z; zahlen[k] = z;
} }
} }
return zahlen; return zahlen;
} }
public RobotType getRobotType() { public RobotType getRobotType() {
return this.robotType; return this.robotType;
@ -62,7 +49,7 @@ public class C3PO extends Robots{
@Override @Override
public int getId() { public int getId() {
return id; return id;
} }

View File

@ -18,57 +18,116 @@ public class FactorySystem {
this.rf = new RobotFactory(factoryName); 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) { public int constructRobot(int select, String name) {
if (select == 1) { if (select == 1) {
int id = rf.constructRobot(RobotType.R2D2, name); int id = rf.constructRobot(RobotType.R2D2, name);
return id; return id;
} else { } else {
int id = rf.constructRobot(RobotType.C3PO, name); int id = rf.constructRobot(RobotType.C3PO, name);
return id; return id;
} }
} }
/**
* Schaltet Roboter an
*
* @param id
* @return
*/
public boolean triggerPower(int id) { public boolean triggerPower(int id) {
return rf.triggerPower(id); return rf.triggerPower(id);
} }
/**
* Gibt den Satus des Roboters an
*
* @param id
* @return
*/
public boolean powerStatus(int id) { public boolean powerStatus(int id) {
return rf.powerStatus(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) { public RobotException robotBlackbox(int id) {
return rf.robotBlackbox(id); // Bei Rückgabe von null gab es noch keinen Fehler 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 { public String robotInstructions(int id, int[] zahlen) throws RobotException {
return rf.robotInstructions(id, zahlen); return rf.robotInstructions(id, zahlen);
} }
/**
* Bibt die Anzahl der Roboter zurück
*
* @return
*/
public int robotStockSize() { public int robotStockSize() {
return rf.robotStockSize(); return rf.robotStockSize();
} }
/**
* Prüft ob Roboter vorhanden ist
*
* @param id
* @return
*/
public boolean containsRobot(int id) { public boolean containsRobot(int id) {
return rf.containsRobot(id); return rf.containsRobot(id);
} }
/**
* Überprüft den Namen der Fabrik
*
* @return
*/
public String getFName() { public String getFName() {
return rf.getFactoryName(); return rf.getFactoryName();
} }
/**
* Gibt alle gespeicherten Roboter zurück
*
* @return
*/
public String[] getRobotStock() { public String[] getRobotStock() {
Collection<Robots> robotStock = rf.getRobotStock(); Collection<Robots> robotStock = rf.getRobotStock();
String[] liste = new String[robotStock.size()]; String[] liste = new String[robotStock.size()];
int i = 0; int i = 0;
for (Robots r : robotStock) { for (Robots r : robotStock) {
liste[i++] = r.toString(); liste[i++] = r.toString();
} }
return liste; return liste;

View File

@ -43,6 +43,13 @@ int[] testZahlen2= {1,4,3,41,78,20};
@Test @Test
void robotInstructions() throws RobotException { 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)); RobotIllegalStateException thrownState = Assertions.assertThrows(RobotIllegalStateException.class,() -> fs.robotInstructions(testid,testZahlen2));
assertEquals(thrownState.getMessage(),"Robotname-Testname: Der Roboter ist ausgeschaltet!"); assertEquals(thrownState.getMessage(),"Robotname-Testname: Der Roboter ist ausgeschaltet!");
@ -57,6 +64,7 @@ int[] testZahlen2= {1,4,3,41,78,20};
@Test @Test
void robotBlackBox() { void robotBlackBox() {
fs.triggerPower(testid); fs.triggerPower(testid);
RobotMagicValueException thrownValue=Assertions.assertThrows(RobotMagicValueException.class,() -> fs.robotInstructions(testid,testZahlen1)); RobotMagicValueException thrownValue=Assertions.assertThrows(RobotMagicValueException.class,() -> fs.robotInstructions(testid,testZahlen1));
assertEquals(thrownValue.getMessage(),fs.robotBlackbox(testid)); assertEquals(thrownValue.getMessage(),fs.robotBlackbox(testid));

View File

@ -36,7 +36,9 @@ public class UI {
System.out.println(); System.out.println();
switch (input) { switch (input) {
case 1: showRobots(); break; case 1:
showRobots();
break;
case 2: case 2:
buildRobot(); buildRobot();
break; break;
@ -52,7 +54,10 @@ public class UI {
} }
} }
private void showRobots() { /**
* Zeigt alle erstellten Roboter an
*/
private void showRobots() {
String[] robots = fs.getRobotStock(); String[] robots = fs.getRobotStock();
if (robots.length > 0) { if (robots.length > 0) {
System.out.println("Folgende Roboter sind verfügbar:"); System.out.println("Folgende Roboter sind verfügbar:");
@ -64,13 +69,9 @@ public class UI {
} }
} }
// private void showRobots() { /**
// * Gibt dem Nutzer die Möglichkeit C3PO oder R2D2 zu bauen
// System.out.println("Folgende Roboter wurden bereits erstellt: "); */
//
// // Seriennummer, Typ und Name aller Roboter soll aufgelistet werden
// }
private void buildRobot() { private void buildRobot() {
String name = null; 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() { private void choseRobot() {
System.out.println("Geben Sie die Seriennummer des Roboters ein, mit dem Sie arbeiten m<>chten."); 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()); int id = Integer.parseInt(sc.nextLine());
System.out.println(); System.out.println();
// if (id ist nicht vorhanden ) if (!fs.containsRobot(id))
// System.out.println("Es exisitiert kein Roboter mit der Seriennummer " + id " ."); System.out.println("Es exisitiert kein Roboter mit der Seriennummer " + id + " .");
// else else
loop: while (true) { loop: while (true) {
System.out.println("Was m<EFBFBD>chten Sie mit Ihrem Roboter tun?"); System.out.println("Was m�chten Sie mit Ihrem Roboter tun?");
System.out.println("1 -> Zustand des Roboters"); System.out.println("1 -> Zustand des Roboters");
System.out.println("2 -> AN oder Aus schalten"); System.out.println("2 -> AN oder Aus schalten");
System.out.println("3 -> Roboter spricht"); System.out.println("3 -> Roboter spricht");
System.out.println("4 -> Letzte Fehlermeldung auslesen"); // Haben bzw. brauchen wir solch eine Funktion 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("5 -> Daten des Roboters abrufen");
System.out.println("6 -> Zur<EFBFBD>ck ins Hauptmen<65>"); System.out.println("6 -> Zur�ck ins Hauptmen�");
System.out.print("> "); System.out.print("> ");
int input = Integer.parseInt(sc.nextLine()); 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."); System.out.println("Der Roboter ist ausgeschaltet.");
} }
/**
* Schaltet den Roboter ein oder aus
*
* @param id
*/
private void onoffbutton(int id) { private void onoffbutton(int id) {
boolean status = fs.triggerPower(id); boolean status = fs.triggerPower(id);
if (status == true) if (status == true)
@ -186,6 +196,12 @@ public class UI {
System.out.println(); 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) { private void robotSpeak(int id) {
ArrayList<Integer> arrayNumbers = new ArrayList<>(); 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) { private void lastError(int id) {
System.out.println(fs.robotBlackbox(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));
}
} }