Skip to content
Snippets Groups Projects
Commit f1f192f2 authored by Uli Bähr's avatar Uli Bähr
Browse files

Merge remote-tracking branch 'origin/master'

parents 56d0f28d 7cf2e2f3
No related branches found
No related tags found
No related merge requests found
...@@ -406,25 +406,24 @@ public class Codierer { ...@@ -406,25 +406,24 @@ public class Codierer {
/** /**
* Setzt das Kabel in beide Ports ein und fügt es dem Steckbrett Array hinzu. * Setzt das Kabel in beide Ports ein und fügt es dem Steckbrett Array hinzu.
* * @param port : int : Kabel Nummer welches am Steckbrett eingesteckt wird
* @param feldNr : int : Kabel Nummer welches am Steckbrett eingesteckt wird * @param verbindung : String : Verbindung welche die vertauschten Buchstaben angibt
* @param verbindung : String : Verbindung welche die vertauschten Buchstaben angibt * @return
*/ */
public void setSteckbrett(int feldNr, String verbindung) { public boolean setSteckbrett(int port, String verbindung) {
this.hardware.getSteckbrett().setzeVertauschung(verbindung.charAt(0), verbindung.charAt(1)); return this.hardware.getSteckbrett().setzeVertauschung(port, verbindung.charAt(0), verbindung.charAt(1));
} }
/** /**
* Prüft ob der Port auf den das Kabel gesteckt werden soll, noch frei ist. * Prüft ob der Port auf den das Kabel gesteckt werden soll, noch frei ist.
* <p> * <p>
* TODO: Prüfen ob im aktuellen Feld bereits zwei Buchstaben stehen, wenn ja, nach erfolg dieser Funktion,
* setSteckbrett ausführen mit beiden Buchstaben als String * setSteckbrett ausführen mit beiden Buchstaben als String
* *
* @param buchstabe : char : Der zuletzt eingegebene Buchstabe * @param buchstabe : char : Der zuletzt eingegebene Buchstabe
* @return boolean : Wenn der Buchstabe nicht vorhanden ist, wird true zurückgegeben, ansonsten false * @return boolean : Wenn der Buchstabe nicht vorhanden ist, wird true zurückgegeben, ansonsten false
*/ */
public boolean pruefeSteckbrettPort(char buchstabe) { public boolean pruefeSteckbrettPort(char buchstabe) {
return true; return this.hardware.getSteckbrett().ueberpruefeVertauschungen(buchstabe);
} }
/** /**
...@@ -439,14 +438,29 @@ public class Codierer { ...@@ -439,14 +438,29 @@ public class Codierer {
return nachricht[2]; return nachricht[2];
} }
/**
* Gibt die Ringstellungen aus dem Codebuch zurück
*
* @return int[] : Array mit den Ringstellungen der drei eingesetzten Walzen
*/
public int[] fetchRingstellung() { public int[] fetchRingstellung() {
return this.codebuch.getRingstellung(); return this.codebuch.getRingstellung();
} }
/**
* Gibt die Walzennummer aus dem Codebuch zurück
*
* @return int[] : Array mit den Nummern der drei eingesetzten Walzen
*/
public int[] getchWalzenNr() { public int[] getchWalzenNr() {
return this.codebuch.getWalzenlage(); return this.codebuch.getWalzenlage();
} }
/**
* Gibt die Steckverbindungen aus dem Codebuch zurück
*
* @return char[][] : Array mit den gesteckten Verbindungen im Steckbrett
*/
public char[][] getSteckverbindungen() { public char[][] getSteckverbindungen() {
return this.codebuch.getSteckverbindung(); return this.codebuch.getSteckverbindung();
} }
......
...@@ -9,108 +9,143 @@ package projekt.enigma.model; ...@@ -9,108 +9,143 @@ package projekt.enigma.model;
*/ */
public class Steckbrett { public class Steckbrett {
/** /**
* zaehler: Int, der als Laufvariable genutzt wird * zaehler: Int, der als Laufvariable genutzt wird
*/ */
private int zaehler; private int zaehler;
/** /**
* orginalBuchstaben: Character-Array, der jeweils den ersten zu vertauschenden Buchstaben enthält * orginalBuchstaben: Character-Array, der jeweils den ersten zu vertauschenden Buchstaben enthält
*/ */
private Character[] orginalBuchstaben; private Character[] orginalBuchstaben;
/** /**
* getauschteBuchstaben: Character-Array, der jeweils den zweiten zu vertauschenden Buchstaben enthält * getauschteBuchstaben: Character-Array, der jeweils den zweiten zu vertauschenden Buchstaben enthält
*/ */
private Character[] getauschteBuchstaben; private Character[] getauschteBuchstaben;
/** /**
* Konstruktor Steckbrett * Konstruktor Steckbrett
* <br> * <br>
* Erzeugt zwei Charakter-Arrays (orginalBuchstaben und getauschteBuchstaben) der Länge 10. * Erzeugt zwei Charakter-Arrays (orginalBuchstaben und getauschteBuchstaben) der Länge 10.
*/ */
public Steckbrett() { public Steckbrett() {
orginalBuchstaben = new Character[10]; orginalBuchstaben = new Character[10];
getauschteBuchstaben = new Character[10]; getauschteBuchstaben = new Character[10];
} }
/** /**
* TODO: Fehlerfall kommentieren, bzw. Exceptions werfen ????? * Funktion setzeVertauschung
* TODO: Überprüfe Vertauschungen für jeden Buchstaben aufrufen * <br>
* Funktion setzeVertauschung * Der Funktion setzeVertauschung werden 2 Buchstaben (buchstabe1 und buchstabe2) übergeben.
* <br> * Zuerst wird überprüft ob einer der beiden Buchstaben bereits enthalten ist, was unzulässig wäre.
* Der Funktion setzeVertauschung werden 2 Buchstaben (buchstabe1 und buchstabe2) übergeben. * <br>
* buchstabe1 wird in das Character-Array orginalBuchstaben geschrieben. * Anschließend wird:
* buchstabe2 wird in das Character-Array getauschteBuchstaben geschrieben. * <p>
* Anschließend wird die Funktion ueberpruefeVertauschungen aufgerufen. * buchstabe1 in das Array orginalBuchstaben auf den nächsten, freien Index geschrieben
* * buchstabe2 in das Array getauschteBuchstaben auf den nächsten, freien Index geschrieben.
* @param buchstabe1 : char: Gibt den ersten Buchstaben an, der getauscht werden soll. * </p>
* @param buchstabe2 : char: gibt den zweiten Buchstaben an, mit dem der erste getauscht werden soll. *
* @return ueberpruefeVertauschungen(): Ueberprueft ob die Vertauschungen zulaessig sind. * @param buchstabe1 : char: Gibt den ersten Buchstaben an, der getauscht werden soll.
*/ * @param buchstabe2 : char: gibt den zweiten Buchstaben an, mit dem der erste getauscht werden soll.
public boolean setzeVertauschung(char buchstabe1, char buchstabe2) { * @return boolean : Wenn die Vertauschung zulässig ist, true, ansonsten false
if (zaehler < orginalBuchstaben.length) { */
orginalBuchstaben[zaehler] = buchstabe1; public boolean setzeVertauschung(char buchstabe1, char buchstabe2) {
getauschteBuchstaben[zaehler++] = buchstabe2;
} else { if (!ueberpruefeVertauschungen(buchstabe1) && !ueberpruefeVertauschungen(buchstabe2)) {
System.err.println("Zu viele Vertauschungen angegeben!"); return false;
} } else {
if (zaehler < orginalBuchstaben.length) {
return ueberpruefeVertauschungen(); orginalBuchstaben[zaehler] = buchstabe1;
} getauschteBuchstaben[zaehler++] = buchstabe2;
/** return true;
* TODO: Fehlerfall kommentieren, bzw. Exceptions werfen ????? } else {
* TODO: Buchstabe zum überpüfen übergeben return false;
* Funktion ueberpruefeVertauschungen }
* <br> }
* Die Funktion ueberpruefeVertauschungen prueft ob die Buchstabenvertauschung zulaessig ist. }
* Eine Buchstabenvertauschung ist zulaessig, wenn keine Dopplungen der zu vertauschenden Buchstaben auftritt
* (ein Buchstabe nicht mehrmals vertauscht wird). /**
* * Funktion setzeVertauschung mit angabe eines Ports von 1 - 10
* @return boolean : result : Flag, der die Zulassigkeit der Vertauschungen zurueckgibt. * <br>
*/ * Der Funktion setzeVertauschung werden 2 Buchstaben (buchstabe1 und buchstabe2) sowie der Port übergeben.
public boolean ueberpruefeVertauschungen() { * Zuerst wird überprüft ob einer der beiden Buchstaben bereits enthalten ist, was unzulässig wäre.
boolean result = true; * <br>
* Anschließend wird:
/*Es wird geprüft: * <p>
1. Ob im Array originalBuchstaben Dopplungen enthalten sind. * buchstabe1 in das Array orginalBuchstaben auf den Index (steckbrettPort) geschrieben
2. Ob im Array originalBuchstaben Buchstaben im Array getauschteBuchstaben enthalten sind. * buchstabe2 in das Array getauschteBuchstaben auf den Index (steckbrettPort) geschrieben.
3. Ob im Array getauschteBuchstaben Dopplungen enthalten sind. * </p>
Tritt einer der Fälle ein, erfolgt eine Konsolenausgabe und der Flag wird auf false gesetzt. *
*/ * @param buchstabe1 : char: Gibt den ersten Buchstaben an, der getauscht werden soll.
for (int n = 0; n < orginalBuchstaben.length; n++) { * @param buchstabe2 : char: gibt den zweiten Buchstaben an, mit dem der erste getauscht werden soll.
if (orginalBuchstaben.equals(orginalBuchstaben[n]) || * @return boolean : Wenn die Vertauschung zulässig ist, true, ansonsten false
getauschteBuchstaben.equals(orginalBuchstaben[n]) || */
getauschteBuchstaben.equals(getauschteBuchstaben[n])) { public boolean setzeVertauschung(int steckbrettPort, char buchstabe1, char buchstabe2) {
System.err.println("Vertauschungen enthalten unzulässige Dopplungen");
result = false; if (!ueberpruefeVertauschungen(buchstabe1) && !ueberpruefeVertauschungen(buchstabe2)) {
} return false;
} } else {
orginalBuchstaben[steckbrettPort - 1] = buchstabe1;
return result; getauschteBuchstaben[steckbrettPort - 1] = buchstabe2;
}
return true;
/** }
* Funktion codiere
* <br> }
* Die Funktion codiere tauscht den uebergebenen Character buchstabe mit dem zu tauschenden Character aus.
* /**
* @param buchstabe : Character : Buchstabe der codiert werden soll. * Funktion ueberpruefeVertauschungen
* @return buchstabe : Character : Codierter Buchstabe. * <br>
*/ * Die Funktion ueberpruefeVertauschungen prueft ob der übergebene Buchstabe bereits in den beiden Arrays
public char codiere(Character buchstabe) { * (orginalBuchstaben) und (getauschteBuchstaben) vorhanden ist.
for (int index = 0; index < getauschteBuchstaben.length; index++) { * Eine Buchstabenvertauschung ist zulaessig, wenn keine Dopplungen der zu vertauschenden Buchstaben auftritt
if (buchstabe.equals(getauschteBuchstaben[index])) { * (ein Buchstabe nicht mehrmals vertauscht wird).
buchstabe = orginalBuchstaben[index]; *
} else if (buchstabe.equals(orginalBuchstaben[index])) { * @return boolean : Wenn false, dann darf der Buchstabe genutzt werden.
buchstabe = getauschteBuchstaben[index]; * Wenn er schon vorhanden ist, wird true zurück gegeben
} */
} public boolean ueberpruefeVertauschungen(char buchstabe) {
return buchstabe; boolean result = false;
}
for (char c : orginalBuchstaben) {
if (c == buchstabe) {
result = true;
break;
}
}
for (char c : getauschteBuchstaben) {
if (c == buchstabe) {
result = true;
break;
}
}
return result;
}
/**
* Funktion codiere
* <br>
* Die Funktion codiere tauscht den uebergebenen Character buchstabe mit dem zu tauschenden Character aus.
*
* @param buchstabe : Character : Buchstabe der codiert werden soll.
* @return buchstabe : Character : Codierter Buchstabe.
*/
public char codiere(Character buchstabe) {
for (int index = 0; index < getauschteBuchstaben.length; index++) {
if (buchstabe.equals(getauschteBuchstaben[index])) {
buchstabe = orginalBuchstaben[index];
} else if (buchstabe.equals(orginalBuchstaben[index])) {
buchstabe = getauschteBuchstaben[index];
}
}
return buchstabe;
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment