diff --git a/src/main/java/Enigma/model/Reflektor.java b/src/main/java/Enigma/model/Reflektor.java new file mode 100644 index 0000000000000000000000000000000000000000..cc7c69dc5d6291056189ae515715aa2ddb1356a1 --- /dev/null +++ b/src/main/java/Enigma/model/Reflektor.java @@ -0,0 +1,83 @@ +package Enigma.model; + +/** + * Klasse Reflektor + * + * Der Reflektor nimmt einen Buchstaben der Klasse Walze entgegen und und kodiert diesen. + * Der kodierte Buchstabe wird an die Klasse Walze wieder zurückgegeben. + * + * Prinzipiell verhält sich die Klasse Refelktor wie die Klasse Walze, außer das sie sich + * nach Betätigung einer Taste nicht dreht (starr montiert) und sie gibt keine Signale + * an andere Walzen zum drehen. + */ +public class Reflektor { + + /** + * Konstanten und Variablen der Klasse Reflektor + * + * WALZE_ALPHABET : konstanter Char-Array mit den Werten des Alphabeths (26 Werte) + * WALZE_REFLEKTOR : konstanter Char-Array mit den Werten des Reflektors (26 Werte) + * reflektorBuchstabeRein : Character mit dem an die Klasse übergebenen Character + * reflektorBuchstabeRaus : Character nach der Codierung in der Klasse Reflektor + * iPositionReflektor : Integer mit der Positionsnummer des Characters im Array + */ + private final Character[] WALZE_ALPHABET = {'A','B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'}; + private final Character[] WALZE_REFLEKTOR= {'E', 'J', 'M', 'Z', 'A', 'L', 'Y', 'X', 'V', 'B', 'W', 'F', 'C', 'R', 'Q', 'U', 'O', 'N', 'T', 'S', 'P', 'I', 'K', 'H', 'G', 'D'}; + private Character reflektorBuchstabeRein; + private Character reflektorBuchstabeRaus; + private int iPositionReflektor; + + + /** + * Funktion Codiere + * + * Durchsucht das konstante Char-Array WALZE_ALPHABET nach der Position eines bestimmten + * Buchstabens und gibt den Character an der entsprechenden Position im konstanten + * Char-Array WALZE_REFLEKTOR zurück. + * + * @return reflektorBuchstabeRaus: Character: Der kodierte Buchstabe aus dem Reflektor + */ + public char codiere (){ + int index = 0; + + /*Ermittelt die Position des Buchstaben buchstabe auf der Alphabetswalze*/ + for(index = 0; index < WALZE_ALPHABET.length; index++) { + if(getReflektorBuchstabeRein().equals(WALZE_ALPHABET[index])) { + iPositionReflektor = index; + break; + } + } + /*Im Char-Array WALZE_REFLEKTOR wird der Character an der Position iPositionReflektor ausgegeben*/ + reflektorBuchstabeRaus = WALZE_REFLEKTOR[iPositionReflektor]; + return reflektorBuchstabeRaus; + } + + /** + * Getter getReflektorBuchstabeRein + * + * Gibt den Wert der Variablen reflektorBuchstabeRein zurück + * + * @return reflektorBuchstabeRein: Character: gibt den Buchstaben zurück + */ + public Character getReflektorBuchstabeRein() { + return reflektorBuchstabeRein; + } + + + /** + * Setter setReflektorBuchstabeRein + * + * Setzt den Wert der Variablen reflektorBuchstabeRein + * + * @param reflektorBuchstabeRein: Character: setzt den Wert des Buchstabens + */ + public void setReflektorBuchstabeRein(Character reflektorBuchstabeRein) { + if (Character.isLetter(reflektorBuchstabeRein)){ + this.reflektorBuchstabeRein = reflektorBuchstabeRein; + } else{ + System.err.println("Kein Buchstabe übergeben im Reflektor"); + } + + } + +} diff --git a/src/main/java/Enigma/model/Walze.java b/src/main/java/Enigma/model/Walze.java index 2d72adc6bf887c4593b4c591b2aaf1c7eba020de..06189d06cbb06c9e01d0557f2746bf4e995e6efd 100644 --- a/src/main/java/Enigma/model/Walze.java +++ b/src/main/java/Enigma/model/Walze.java @@ -2,12 +2,12 @@ package Enigma.model; public class Walze { - Character buchstabe = null; - Character ringstellung = null; - int walzennr = 0; - int iPositionBuchstabe = 0; - int iPositionBuchstabeRe = 0; - Character[] walze = new Character[25]; + private Character buchstabe = null; + private Character ringstellung = null; + private int walzennr; + private int iPositionBuchstabe; + private int iPositionBuchstabeRe; + private Character[] walze; /** * Gibt die Parameter der Walze mit @@ -17,6 +17,7 @@ public class Walze { * @param ringstellung : Character : Einstellung des Notch */ public Walze(int walzennr, Character buchstabe, Character ringstellung) { + this.walze = new Character[25]; this.walzennr = walzennr; this.buchstabe = buchstabe; this.ringstellung = ringstellung; @@ -25,7 +26,7 @@ public class Walze { /** * @return buchstabe : Character : gibt den neuen Buchstaben zurueck */ - public char getBuchstabe() { + public Character getBuchstabe() { return buchstabe; } @@ -37,7 +38,7 @@ public class Walze { * @param buchstabe : Character : Grundeinstellung der Walze */ private void setBuchstabe(Character buchstabe) { - this.buchstabe.toUpperCase(buchstabe); + this.buchstabe = Character.toUpperCase(buchstabe); if(buchstabe.isLetter(buchstabe)) { this.buchstabe = buchstabe; @@ -141,7 +142,7 @@ public class Walze { //Ermittelt die Position des Buchstaben buchstabe auf der Alphabetswalze for(index = 0; index < walzeAlpha.length; index++) { - if(buchstabe.equals(walzeAlpha[index])) { + if(getBuchstabe().equals(walzeAlpha[index])) { iPositionBuchstabe = index; break; } @@ -198,7 +199,7 @@ public class Walze { //Ermittelt die Position des Buchstaben buchstabe auf der Alphabetswalze for(index = 0; index < walze.length; index++) { - if(buchstabe.equals(walze[index])) { + if(getBuchstabe().equals(walze[index])) { iPositionBuchstabeRe = index; break; }