From 149300de247ce044903cf0f12f05c96f19b22609 Mon Sep 17 00:00:00 2001 From: Michael <micha.bechtel@web.de> Date: Fri, 29 Nov 2019 11:20:56 +0100 Subject: [PATCH] =?UTF-8?q?Klasse=20Steckbrett=20und=20Reflektor:=20Kommen?= =?UTF-8?q?tare=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/enigma/model/Reflektor.java | 28 ++++----- src/main/java/enigma/model/Steckbrett.java | 69 +++++++++++++++++----- 2 files changed, 65 insertions(+), 32 deletions(-) diff --git a/src/main/java/enigma/model/Reflektor.java b/src/main/java/enigma/model/Reflektor.java index 4aabb1b..1e58a8e 100644 --- a/src/main/java/enigma/model/Reflektor.java +++ b/src/main/java/enigma/model/Reflektor.java @@ -2,42 +2,40 @@ package enigma.model; /** * Klasse Reflektor - * <p> + * <br> * Der Reflektor nimmt einen Buchstaben der Klasse Walze entgegen und und kodiert diesen. * Der kodierte Buchstabe wird an die Klasse Walze wieder zurückgegeben. - * <p> - * 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 + * <br> + * Prinzipiell verhält sich die Klasse Reflektor wie die Klasse Walze, außer das sie sich + * nach Betätigung einer Taste nicht dreht (quasi starr montiert ist) und sie gibt keine Signale * an andere Walzen zum drehen. */ public class Reflektor { /** - * Konstanten und Variablen der Klasse Reflektor - * <p> * 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'}; + + /** + * WALZE_REFLEKTOR : konstanter Char-Array mit den Werten des Reflektors (26 Werte) + */ 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'}; /** - * Funktion Codiere - * <p> + * Funktion codiere + * <br> * 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 + * @return WALZE_REFLEKTOR[iPositionReflektor]: Character: Der kodierte Buchstabe aus dem Reflektor */ public char codiere(Character buchstabe) { int iPositionReflektor = 0; - /*Ermittelt die Position des Buchstaben buchstabe auf der Alphabetswalze*/ + //Ermittelt die Position des Buchstaben "buchstabe" auf der Alphabetswalze for (int index = 0; index < WALZE_ALPHABET.length; index++) { if (buchstabe.equals(WALZE_ALPHABET[index])) { iPositionReflektor = index; @@ -45,8 +43,6 @@ public class Reflektor { } } - /*Im Char-Array WALZE_REFLEKTOR wird der Character an der Position iPositionReflektor ausgegeben*/ return WALZE_REFLEKTOR[iPositionReflektor]; } - } diff --git a/src/main/java/enigma/model/Steckbrett.java b/src/main/java/enigma/model/Steckbrett.java index 63bf834..58971ec 100644 --- a/src/main/java/enigma/model/Steckbrett.java +++ b/src/main/java/enigma/model/Steckbrett.java @@ -1,18 +1,34 @@ package enigma.model; /** - *TODO: Dokumentieren + * Klasse Steckbrett + * <br> + * Das Steckbrett diente dazu Buchstaben paarweise zu vertauschen noch bevor diese durch die Walzen codiert werden. + * Die Klasse Steckbrett nimmt bis zu 10 paarweise zu vertauschende Buchstabenpaare entgegen, prueft diese auf + * Zulaessigkeit und tauscht diese dann paarweise aus. */ public class Steckbrett { + /** - *TODO: Dokumentieren + * zaehler: Int, der als Laufvariable genutzt wird */ private int zaehler; + + /** + * orginalBuchstaben: Character-Array, der jeweils den ersten zu vertauschenden Buchstaben enthält + */ private Character[] orginalBuchstaben; + + /** + * getauschteBuchstaben: Character-Array, der jeweils den zweiten zu vertauschenden Buchstaben enthält + */ private Character[] getauschteBuchstaben; + /** - *TODO: Dokumentieren + * Konstruktor Steckbrett + * <br> + * Erzeugt zwei Charakter-Arrays (orginalBuchstaben und getauschteBuchstaben) der Länge 10. */ public Steckbrett() { @@ -21,14 +37,20 @@ public class Steckbrett { } /** - *TODO: Dokumentieren + * TODO: Fehlerfall kommentieren, bzw. Exceptions werfen ????? + * TODO: Überprüfe Vertauschungen für jeden Buchstaben aufrufen + * Funktion setzeVertauschung + * <br> + * Der Funktion setzeVertauschung werden 2 Buchstaben (buchstabe1 und buchstabe2) übergeben. + * buchstabe1 wird in das Character-Array orginalBuchstaben geschrieben. + * buchstabe2 wird in das Character-Array getauschteBuchstaben geschrieben. + * Anschließend wird die Funktion ueberpruefeVertauschungen aufgerufen. * - * @param buchstabe1 : char - * @param buchstabe2 : char - * @return boolean + * @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. + * @return ueberpruefeVertauschungen(): Ueberprueft ob die Vertauschungen zulaessig sind. */ public boolean setzeVertauschung(char buchstabe1, char buchstabe2) { - if (zaehler < orginalBuchstaben.length) { orginalBuchstaben[zaehler] = buchstabe1; getauschteBuchstaben[zaehler++] = buchstabe2; @@ -40,15 +62,29 @@ public class Steckbrett { } /** - *TODO: Dokumentieren + * TODO: Fehlerfall kommentieren, bzw. Exceptions werfen ????? + * TODO: Buchstabe zum überpüfen übergeben + * 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). * - * @return boolean + * @return boolean : result : Flag, der die Zulassigkeit der Vertauschungen zurueckgibt. */ public boolean ueberpruefeVertauschungen() { - boolean result = true; + + /*Es wird geprüft: + 1. Ob im Array originalBuchstaben Dopplungen enthalten sind. + 2. Ob im Array originalBuchstaben Buchstaben im Array getauschteBuchstaben enthalten sind. + 3. Ob im Array getauschteBuchstaben Dopplungen enthalten sind. + Tritt einer der Fälle ein, erfolgt eine Konsolenausgabe und der Flag wird auf false gesetzt. + */ for (int n = 0; n < orginalBuchstaben.length; n++) { - if (orginalBuchstaben.equals(orginalBuchstaben[n]) || getauschteBuchstaben.equals(orginalBuchstaben[n]) || getauschteBuchstaben.equals(getauschteBuchstaben[n])) { + if (orginalBuchstaben.equals(orginalBuchstaben[n]) || + getauschteBuchstaben.equals(orginalBuchstaben[n]) || + getauschteBuchstaben.equals(getauschteBuchstaben[n])) { System.err.println("Vertauschungen enthalten unzulässige Dopplungen"); result = false; } @@ -58,13 +94,14 @@ public class Steckbrett { } /** - * TODO: Dokumentieren + * Funktion codiere + * <br> + * Die Funktion codiere tauscht den uebergebenen Character buchstabe mit dem zu tauschenden Character aus. * - * @param buchstabe : Character - * @return char + * @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]; -- GitLab