diff --git a/Praesentation/praesentation.md b/Praesentation/praesentation.md index bb8bcc59e07c57393205430b2a0b0fe0fd19c8e9..9ec29286517aaa59f220b3fa673dc6c9d5002fc4 100644 --- a/Praesentation/praesentation.md +++ b/Praesentation/praesentation.md @@ -55,7 +55,7 @@ * Merge Requests: 113 ## Klassendiagram - + ## Interesannte Codestellen * Walze: @@ -103,4 +103,5 @@ * Empfang einer Nachricht * Zurücksetzen * Setzen von Walzen und Ringen + * Setzen von gleichen Walzen und Fehler * Senden & Empfangen diff --git a/src/main/java/projekt/enigma/App.java b/src/main/java/projekt/enigma/App.java index 079b436842b840f2d4b7bb6f5a853cd127dbd237..fa705b2ed6d0f30ca2ffef815a19d5d05de37cdb 100644 --- a/src/main/java/projekt/enigma/App.java +++ b/src/main/java/projekt/enigma/App.java @@ -22,19 +22,19 @@ import java.io.IOException; public class App extends Application { /** - * Deklariert den GuiController + * Deklariert den GuiController. */ private static GuiController gc; /** - * debug : int : fuer die Funktion debug der Klasse Fehler notwendig + * debug : int : fuer die Funktion debug der Klasse Fehler notwendig. */ private static int debug; /** - * Startet die Klasse App und setzt den debug-Wert 1 + * Startet die Klasse App und setzt den debug-Wert 1. * - * @param args : String[] : Standard-Kommandozeilen-Argument + * @param args : String[] : Standard-Kommandozeilen-Argument. */ public static void main(String[] args) { debug = 1; @@ -42,20 +42,20 @@ public class App extends Application { } /** - * gibt der Getter einen int > 0 zurueck, wird eine Meldung auf der Konsole ausgegeben + * Gibt der Getter einen int > 0 zurueck, wird eine Meldung auf der Konsole ausgegeben. * - * @return debug : int : bestimmt die Eingabe der debung-Methode in der Klasse Fehler + * @return debug : int : bestimmt die Eingabe der debung-Methode in der Klasse Fehler. */ public static int getDebug() { return debug; } /** - * Initialisieren der Variablen fuer die JavaFX Scene Kenngruppe. + * Initialisierung der Variablen fuer die JavaFX Scene Kenngruppe. * Abfrage der Kenngruppe und Reaktion auf die Eingabe. * - * @param primaryStage : Stage : Fenster zur Eingabe der Kenngruppe - * @throws IOException : wird bei fehlerhafter Eingabe geworfen + * @param primaryStage : Stage : Fenster zur Eingabe der Kenngruppe. + * @throws IOException : wird bei fehlerhafter Eingabe geworfen. */ @Override public void start(Stage primaryStage) throws IOException { @@ -74,7 +74,7 @@ public class App extends Application { layout.getChildren().addAll(lblEingbae, tfEingabe, btnKenngruppe); Scene sceKenngruppe = new Scene(layout); - // laden der FXML und der Ansicht, um Ladezeiten zu verringern + // laden der FXML und der Enigma-Ansicht, um Ladezeiten zu verringern FXMLLoader guiLoader = new FXMLLoader(App.class.getResource("gui.fxml")); Scene sceApp = new Scene(guiLoader.load(), 962, 677); @@ -112,8 +112,8 @@ public class App extends Application { * Ueberprueft die Gueltigkeit der Kenngruppeneingabe. * Nur Zeichen von A-Z sind zugelassen und die Kenngruppe muss aus mind. 4 und max. 8 Zeichen bestehen. * - * @param kenngruppe : String : Eingabewert aus dem Fenster - * @return result : boolean : ist die Kenngruppe ungueltig wird false zurueckgegeben, sonst true + * @param kenngruppe : String : Eingabewert aus dem Fenster. + * @return result : boolean : ist die Kenngruppe ungueltig wird false zurueckgegeben, sonst true. */ private boolean enter(String kenngruppe) { String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; @@ -131,5 +131,4 @@ public class App extends Application { return result; } - } diff --git a/src/main/java/projekt/enigma/Main.java b/src/main/java/projekt/enigma/Main.java index e392797f63815a8ddc0c01a6afcd70d1a0ddd5c8..3bb7c547f8c1f33bda572d4885367f48a7f943b6 100644 --- a/src/main/java/projekt/enigma/Main.java +++ b/src/main/java/projekt/enigma/Main.java @@ -1,7 +1,5 @@ package projekt.enigma; -import java.sql.SQLException; - /** * Startpunkt des Programms. Startet die Klasse App und damit die GUI. */ @@ -10,9 +8,9 @@ public class Main { /** * Startet die App * - * @param args : String[] : Standard-Kommandozeilen-Parameter + * @param args : String[] : Standard-Kommandozeilen-Parameter. */ - public static void main(String[] args) throws SQLException { + public static void main(String[] args) { App.main(args); } } diff --git a/src/main/java/projekt/enigma/model/Fehler.java b/src/main/java/projekt/enigma/model/Fehler.java index 5625c5a4842c1066891592af4234abaf818375a4..92a17ede2c27245e189e69628fef0546ba4ff8d5 100644 --- a/src/main/java/projekt/enigma/model/Fehler.java +++ b/src/main/java/projekt/enigma/model/Fehler.java @@ -5,10 +5,12 @@ import javafx.scene.control.Alert.AlertType; import projekt.enigma.App; /** - * In dieser Klasse werden Fehler behandelt und an den User/Admin/Entwickler ausgegeben + * In dieser Klasse werden Fehler behandelt und an den User/Admin/Entwickler ausgegeben. */ public class Fehler { - + /** + * Konstanten die anzeigen ob es sich um eine Funktion oder um eine Nachricht handelt. + */ private static final String FUNCTION_PREFIX = "- "; private static final String MESSAGE_PREFIX = "--> "; @@ -23,7 +25,7 @@ public class Fehler { Alert alert; new Fehler().debug(this.getClass().getName() + "." - + new Throwable().getStackTrace()[0].getMethodName(), true); + + new Throwable().getStackTrace()[0].getMethodName(), true); /* Der Titel darf auch als leerer String uebergeben werden, dann wird ein Default gesetzt */ if (subject.equals("")) { @@ -61,7 +63,7 @@ public class Fehler { * Ueber diesen Getter kann man steuern ob Meldungen in der Konsole angezeigt werden sollen oder nicht. * * @param message : String : Nachricht - * @param isFunction : boolean : Gibt an ob ein Funktionsname übergeben wird oder eine Debug Meldung + * @param isFunction : boolean : Gibt an ob ein Funktionsname uebergeben wird oder eine Debug Meldung */ public void debug(String message, boolean isFunction) { if (App.getDebug() != 0) { @@ -74,15 +76,14 @@ public class Fehler { } /** - * Umter zuhilfenahme dieser Funktion koennen Debug Meldungen auf der Konsole ausgegeben werden, + * Unter Zuhilfenahme dieser Funktion koennen Debug Meldungen auf der Konsole ausgegeben werden, * wenn in der App.java der Getter getDebug einen int > 0 zurueck gibt. * Ueber diesen Getter kann man steuern ob Meldungen in der Konsole angezeigt werden sollen oder nicht. * * @param message : String : Nachricht - * @param isFunction : boolean : Gibt an ob ein Funktionsname übergeben wird oder eine Debug Meldung + * @param isFunction : boolean : Gibt an ob ein Funktionsname uebergeben wird oder eine Debug Meldung. */ public void debug(String message, boolean isFunction, int debugLevel) { - if (App.getDebug() != 0 && (App.getDebug() >= debugLevel || App.getDebug() == 3)) { if (isFunction) { System.out.println(FUNCTION_PREFIX + message); diff --git a/src/main/java/projekt/enigma/model/Funkraum.java b/src/main/java/projekt/enigma/model/Funkraum.java index e903f8cf51c9114fd62ee7c7f6a086fa86ea96cf..13a298a2b5f0f244fc5258d037008b1295ff50e7 100644 --- a/src/main/java/projekt/enigma/model/Funkraum.java +++ b/src/main/java/projekt/enigma/model/Funkraum.java @@ -34,8 +34,8 @@ public class Funkraum { * * @param kenngruppe : String : Kenngruppe dieser Enigma * @return funkspruch : String[] : String Array wobei Index 0 dem Empfangstag entspricht und Index 1 - * der empfangenen Nachricht - * @throws NullPointerException : Exception : Keine Nachricht + * der empfangenen Nachricht. + * @throws NullPointerException : Exception : Keine Nachricht vorhanden. */ public String[] empfangeFunkspruch(String kenngruppe) { String[] funkspruch = new String[2]; @@ -49,7 +49,7 @@ public class Funkraum { params.add(new BasicNameValuePair("k", kenngruppe)); httppost.setEntity(new UrlEncodedFormEntity(params, "UTF-8")); - // POST Request ausführen und Rückgabe verarbeiten + // POST Request ausfuehren und Rueckgabe verarbeiten HttpResponse response = httpclient.execute(httppost); HttpEntity entity = response.getEntity(); @@ -80,13 +80,13 @@ public class Funkraum { * Dem Service senden wir unsere Nachricht als POST Parameter (m) und unsere Kenngruppe (k). * Dieser nimmt die Daten entgegen und hierlerlegt sie auf seinem Stapel (Datenbank) von dem die Nachrichten * irgendwann, auf Anfrage, wieder abgerufen werden koennen. - * <p> + * <br> * Darauf antwortet der Server mit einem JSON Object in dem das Ergebnis der Anfrage zu sehen ist. * {'result': 200} - * <p> - * Die 200 heißt hier, dass alles erfolgreich durchgefuehrt werden konnte. Steht hier etwas anderes, ist ein Fehler + * <br> + * Die 200 heisst hier, dass alles erfolgreich durchgefuehrt werden konnte. Steht hier etwas anderes, ist ein Fehler * aufgetreten und die Anfrage war nicht erfolgreich. - * In letzterem Fall sollte eine Meldung an den Benutzer ausgegeben werden und ggf spaeter erneut versucht werden. + * In letzterem Fall sollte eine Meldung an den Benutzer ausgegeben werden und ggf. spaeter erneut versucht werden. * * @param funkspruch : String : Der zu sendende Funkspruch * @param kenngruppe : String : Die Kenngruppe dieser Engima @@ -102,7 +102,7 @@ public class Funkraum { params.add(new BasicNameValuePair("m", funkspruch)); httppost.setEntity(new UrlEncodedFormEntity(params, "UTF-8")); - // POST Request ausführen und Rückgabe verarbeiten + // POST Request ausfuehren und Rueckgabe verarbeiten HttpResponse response = httpclient.execute(httppost); HttpEntity entity = response.getEntity(); @@ -111,8 +111,8 @@ public class Funkraum { JSONObject result = new JSONObject(reader.readLine()); if (result.getInt("result") != 200) { new Fehler().showErrorDialog("error", "HTTP Exception", - "Der andere Funker mag deine Nachricht nicht. " + - "Rüge ihn wenn du ihn wieder siehst..."); + "Der andere Funker mag deine Nachricht nicht. " + + "Rüge ihn wenn du ihn wieder siehst..."); } } } diff --git a/src/main/java/projekt/enigma/model/Hardware.java b/src/main/java/projekt/enigma/model/Hardware.java index ff3d74545a9d697c1f7a4e765e50d6d0a54a6b73..b43e18b909a9b55609e320c36ae356b901e1df51 100644 --- a/src/main/java/projekt/enigma/model/Hardware.java +++ b/src/main/java/projekt/enigma/model/Hardware.java @@ -1,15 +1,15 @@ package projekt.enigma.model; /** - * In dieser Klasse wird die Hardware zusammen gefasst. - * Alle Komponenter der Enigma laufen hier zusammen. + * In dieser Klasse wird die Hardware zusammengefasst. + * Alle Komponenten der Enigma laufen hier zusammen. * * <p> * walzen : Walze[] : Ist ein Array der drei eingebauten Walzen Objekte * steckbrett : Steckbrett : Das Steckbrett mit den Verbindungen aus dem Codebuch * reflektor : Reflektor : Dies ist das Objekt der Reflektors - * nachricht : String : Die verschlüsselte Nachricht wird in diesem String zusammen gesetzt und gespeichert - * kenngruppe : String : Früher definierte die Kennzeichnung die Einheit welche diese Enigma benutzte. + * nachricht : String : Die verschluesselte Nachricht wird in diesem String zusammengesetzt und gespeichert + * kenngruppe : String : Frueher definierte die Kennzeichnung die Einheit welche diese Enigma benutzte. * Wir missbrauchen die Kenngruppe für einen Benutzernamen * </p> */ @@ -34,168 +34,174 @@ public class Hardware { //region Konstruktor - /** - * Im Konstruktor legen wir die Anzahl der Walzen fest welche die Hardware aufnehmen kann. - * Die Enigma I welche hier nachgebildet werden soll, konnte drei Walzen aufnehmen. - */ - public Hardware() { - this.walzen = new Walze[3]; - } - //endregion + /** + * Im Konstruktor legen wir die Anzahl der Walzen fest, welche die Hardware aufnehmen kann. + * Die Enigma I, welche hier nachgebildet werden soll, konnte drei Walzen aufnehmen. + */ + public Hardware() { + this.walzen = new Walze[3]; + } + //endregion //region Funktionen & Methoden - /** - * Setzt eine Walze ein - * - * @param walze : int : Setzt die Walze mit der angegebenen Nummer ein - * @param walzenNr : int : Die Nummer der einzusetzenden Walze - */ - public void setzeWalzenNr(int walze, int walzenNr, int ringstellung) { - this.walzen[walze] = new Walze(walzenNr, ringstellung); - } - - /** - * Setzt den Notch der Walze - * - * @param walze : int : Position der Walze - * @param position : int : Umspringpunkt auf der Walze - */ - public void setzeRing(int walze, int position) { - this.walzen[walze].setRingstellung(position); - } - - /** - * Setzt den Startwert (position) der Walze (walze) - * - * @param walze : int : Nummer der Walze - * @param buchstabe : char : Buchstabe der zugewiesen soll - */ - public void setzePosition(int walze, char buchstabe) { - this.walzen[walze].setPosition(buchstabe); - } - - /** - * Verschlüsselt den übergebenen Buchstaben und fügt ihn der Nachricht hinzu - * - * @param buchstabe char : Der zu ver/entschlüsselnde Buchstabe - * @return char : Der ver/entschlüsselte Buchstabe - */ - public char codiere(char buchstabe) { - - new Fehler().debug(this.getClass().getName() + "." + - new Throwable().getStackTrace()[0].getMethodName(), true); - buchstabe = Character.toUpperCase(buchstabe); - String debug = String.format("Positionen: W1:%s W2:%s W3:%s", - this.walzen[0].getPosition(), - this.walzen[1].getPosition(), - this.walzen[2].getPosition()); - debug += "\nI\tS\t3\t2\t1\tR\t1\t2\t3\tS\n" + buchstabe; + /** + * Setzt eine Walze ein. + * + * @param walze : int : Setzt die Walze mit der angegebenen Nummer ein. + * @param walzenNr : int : Die Nummer der einzusetzenden Walze. + * @param ringstellung : int : Setzt den Ring der Walze auf die angegebene Nummer. + */ + public void setzeWalzenNr(int walze, int walzenNr, int ringstellung) { + this.walzen[walze] = new Walze(walzenNr, ringstellung); + } + + /** + * Setzt den Notch der Walze. + * + * @param walze : int : Position der Walze. + * @param position : int : Umspringpunkt auf der Walze. + */ + public void setzeRing(int walze, int position) { + this.walzen[walze].setRingstellung(position); + } + + /** + * Setzt den Startwert (position) der Walze (walze). + * + * @param walze : int : Nummer der Walze. + * @param buchstabe : char : Buchstabe der zugewiesen werden soll. + */ + public void setzePosition(int walze, char buchstabe) { + this.walzen[walze].setPosition(buchstabe); + } + + /** + * Verschluesselt den uebergebenen Buchstaben und fuegt ihn der Nachricht hinzu. + * Debug Ausgabe auf der Konsole wird zusaetzlich ausgegeben. + * + * @param buchstabe char : Der zu ver/entschluesselnde Buchstabe. + * @return char : Der ver/entschluesselte Buchstabe. + */ + public char codiere(char buchstabe) { + new Fehler().debug(this.getClass().getName() + "." + + new Throwable().getStackTrace()[0].getMethodName(), true); + + buchstabe = Character.toUpperCase(buchstabe); + String debug = String.format("Positionen: W1:%s W2:%s W3:%s", + this.walzen[0].getPosition(), + this.walzen[1].getPosition(), + this.walzen[2].getPosition()); + debug += "\nI\tS\t3\t2\t1\tR\t1\t2\t3\tS\n" + buchstabe; this.dreheWalzen(1); - buchstabe = this.steckbrett.codiere(Character.toUpperCase(buchstabe)); - debug += "\t" + buchstabe; - buchstabe = this.walzen[2].codiere(buchstabe); - debug += "\t" + buchstabe; - buchstabe = this.walzen[1].codiere(buchstabe); - debug += "\t" + buchstabe; - buchstabe = this.walzen[0].codiere(buchstabe); - debug += "\t" + buchstabe; - buchstabe = this.reflektor.codiere(buchstabe); - debug += "\t" + buchstabe; - buchstabe = this.walzen[0].codiere2(buchstabe); - debug += "\t" + buchstabe; - buchstabe = this.walzen[1].codiere2(buchstabe); - debug += "\t" + buchstabe; - buchstabe = this.walzen[2].codiere2(buchstabe); - debug += "\t" + buchstabe; - buchstabe = this.steckbrett.codiere(buchstabe); - debug += "\t" + buchstabe; - new Fehler().debug(debug, false); + //Codiere Vorgang wird fuer jede Walze bis zum Reflektor mit der codiere Funktion durchgefuehrt. + //Auf dem Rueckweg wird mit der codiere2 Funktion codiert. + buchstabe = this.steckbrett.codiere(Character.toUpperCase(buchstabe)); + debug += "\t" + buchstabe; + buchstabe = this.walzen[2].codiere(buchstabe); + debug += "\t" + buchstabe; + buchstabe = this.walzen[1].codiere(buchstabe); + debug += "\t" + buchstabe; + buchstabe = this.walzen[0].codiere(buchstabe); + debug += "\t" + buchstabe; + buchstabe = this.reflektor.codiere(buchstabe); + debug += "\t" + buchstabe; + buchstabe = this.walzen[0].codiere2(buchstabe); + debug += "\t" + buchstabe; + buchstabe = this.walzen[1].codiere2(buchstabe); + debug += "\t" + buchstabe; + buchstabe = this.walzen[2].codiere2(buchstabe); + debug += "\t" + buchstabe; + buchstabe = this.steckbrett.codiere(buchstabe); + debug += "\t" + buchstabe; + new Fehler().debug(debug, false); return buchstabe; } - /** - * Nach jeder codierung eines Buchstabens müssen die Walzen gedreht werden. - * Hier überprüfen wir welche der Walzen gedreht werden müssen und stoßen die Vorgang an. - */ - public void dreheWalzen(int richtung) { - if (richtung > 0) { - for (int i = 0; i < richtung; i++) { - if (this.walzen[2].dreheWalze(1)) { - if (this.walzen[1].dreheWalze(1)) { - this.walzen[0].dreheWalze(1); - } - } - } - } else { - for (int i = 0; i > richtung; richtung++) { - if (this.walzen[2].dreheWalze(-1)) { - if (this.walzen[1].dreheWalze(-1)) { - this.walzen[0].dreheWalze(-1); - } - } - } - } - } - //endregion + /** + * Nach jeder Codierung eines Buchstabens muessen die Walzen gedreht werden. + * Hier ueberpruefen wir, welche der Walzen gedreht werden muessen und stossen den Vorgang an. + * + * @param richtung : int : +1 fuer eine Vorwaertsdrehung und -1 fuer eine Rueckwaertsdrehung. + */ + public void dreheWalzen(int richtung) { + if (richtung > 0) { + for (int i = 0; i < richtung; i++) { + if (this.walzen[2].dreheWalze(1)) { + if (this.walzen[1].dreheWalze(1)) { + this.walzen[0].dreheWalze(1); + } + } + } + } else { + for (int i = 0; i > richtung; richtung++) { + if (this.walzen[2].dreheWalze(-1)) { + if (this.walzen[1].dreheWalze(-1)) { + this.walzen[0].dreheWalze(-1); + } + } + } + } + } + //endregion //region Setter - /** - * Setzt eine Walze ein und speichert das Objekt im Walzen Array - * - * @param position : int : Position der Walze - * @param walze : int : Die Nummer der Walze - * @param ringstellung : int : Umsprung Punkt der Walze - */ - public void setWalzen(int position, int walze, int ringstellung) { - this.walzen[position] = new Walze(walze, ringstellung); - } - - /** - * Gibt das Objekt des Steckbretts zurück - * - * @return Steckbrett : Das eingesetzte Steckbrett mit seinen Kabeln wenn eingesteckt - */ - public Steckbrett getSteckbrett() { - return steckbrett; - } - - /** - * Setzt das übergebene Steckbrett Objekt in die Hardware ein - * - * @param steckbrett : Steckbrett : Objekt des Steckbretts mit allen verbundenen Kabeln - */ - public void setSteckbrett(Steckbrett steckbrett) { - this.steckbrett = steckbrett; - } - //endregion + /** + * Setzt eine Walze ein und speichert das Objekt im Walzen Array. + * + * @param position : int : Position der Walze. + * @param walze : int : Die Nummer der Walze. + * @param ringstellung : int : Umsprungpunkt der Walze. + */ + public void setWalzen(int position, int walze, int ringstellung) { + this.walzen[position] = new Walze(walze, ringstellung); + } + + /** + * Gibt das Objekt des Steckbretts zurueck. + * + * @return steckbrett : Steckbrett-Objekt: Das eingesetzte Steckbrett mit seinen Kabeln, wenn eingesteckt. + */ + public Steckbrett getSteckbrett() { + return steckbrett; + } + + /** + * Setzt das uebergebene Steckbrett Objekt in die Hardware ein. + * + * @param steckbrett : Steckbrett : Objekt des Steckbretts mit allen verbundenen Kabeln. + */ + public void setSteckbrett(Steckbrett steckbrett) { + this.steckbrett = steckbrett; + } + //endregion //region Getter - /** - * Setzt den Reflektor ein. - * In der Enigma I welche hier nachgebaut wird, gab es nur einen Reflektor. - * Spätere Versionen haten zwei oder mehr, deshalb haben wir hier auch schon ein Objekt dafür erstellt, - * welches ausgetauscht werden kann. - * - * @param reflektor : Reflektor : Das Obejtk des Reflektors - */ - public void setReflektor(Reflektor reflektor) { - this.reflektor = reflektor; - } - - /** - * Gibt die verbauten Walzen Objekte zurück - * - * @return Walze[] : Array mit den Walzen Objekten - */ - public Walze[] getWalzen() { - return this.walzen; - } - //endregion + /** + * Setzt den Reflektor ein. + * In der Enigma I, welche hier nachgebaut wird, gab es nur einen Reflektor. + * Spaetere Versionen hatten zwei oder mehr, deshalb haben wir hier auch schon ein Objekt dafuer erstellt, + * welches ausgetauscht werden kann. + * + * @param reflektor : Reflektor : Das Objekt des Reflektors. + */ + public void setReflektor(Reflektor reflektor) { + this.reflektor = reflektor; + } + + /** + * Gibt die verbauten Walzen Objekte zurück. + * + * @return walzen : Walze[] : Array mit den Walzen Objekten. + */ + public Walze[] getWalzen() { + return this.walzen; + } + //endregion } diff --git a/src/main/java/projekt/enigma/model/Morsecode.java b/src/main/java/projekt/enigma/model/Morsecode.java index bc3e56fdb184c6cd5fc393f4ade82236b9c04307..6b64354617f1ee831144f27f331cbe938b171f07 100644 --- a/src/main/java/projekt/enigma/model/Morsecode.java +++ b/src/main/java/projekt/enigma/model/Morsecode.java @@ -10,7 +10,7 @@ import java.util.TreeMap; public class Morsecode { /** - * Anlegen der codeMap als TreeMap + * Anlegen der codeMap als TreeMap. */ private TreeMap<String, String> codeMap; @@ -63,8 +63,8 @@ public class Morsecode { * Diese Funktion ueberprueft ob der uebergebene Buchstabe in der codeMap enthalten ist. * Wenn er enthalten ist, wird der zugehoerige Morsecode zurueck gegeben, ansonsten null. * - * @param buchstabe : char : Zu uebersetzender Buchstabe - * @return String : Der zugehoerige Morsecode aus der codeMap + * @param buchstabe : char : Zu uebersetzender Buchstabe. + * @return String : Der zugehoerige Morsecode aus der codeMap. */ private String getMorsecode(char buchstabe) { return this.codeMap.getOrDefault(String.valueOf(buchstabe).toUpperCase(), null); @@ -72,13 +72,13 @@ public class Morsecode { /** * Der uebergebene String wird in seine einzelnen Zeichen (char) zerlegt und an die Funktion getMorsecode - * uebergeben und der zugehoerige Morsecode raus gesucht. - * Mittels eines StringBuilders werden die Ergebnisse zu einem Rückgabe String zusammen gesetzt. + * uebergeben und der zugehoerige Morsecode rausgesucht. + * Mittels eines StringBuilders werden die Ergebnisse zu einem Rueckgabe-String zusammengesetzt. * Wenn kein zugehoeriger Code in der codeMap gefunden wurde, wird das Zeichen ignoriert da es bei der * Enigma nicht vorhanden war. * - * @param input : String : Zu konvertierender Text - * @return String : Der in Morsecode konvertierte Text + * @param input : String : Zu konvertierender Text. + * @return String : Der in Morsecode konvertierte Text. */ public String convertBuchstabeToMorsecode(String input) { StringBuilder sb = new StringBuilder(); @@ -97,10 +97,10 @@ public class Morsecode { /** * Diese Funktion ueberprueft ob der uebergebene Morsecode in der codeMap enthalten ist. - * Wenn er enthalten ist, wird der zugehoerige Buchstabe zurueck gegeben, ansonsten null + * Wenn er enthalten ist, wird der zugehoerige Buchstabe zurueckgegeben, ansonsten null. * - * @param morsecode : String : Der zu uebersetzende Morsecode - * @return : String : Der zugehoerige Buchstabe aus der codeMap + * @param morsecode : String : Der zu uebersetzende Morsecode. + * @return : String : Der zugehoerige Buchstabe aus der codeMap. */ private String getBuchstabe(String morsecode) { String result = null; @@ -116,15 +116,15 @@ public class Morsecode { } /** - * Der uebergebene String wird in ein String Array zerlegt. Als Trennzeichen wird das Leerzeichen genutzt. + * Der uebergebene String wird in ein String-Array zerlegt. Als Trennzeichen wird das Leerzeichen genutzt. * Anschließend wird das Array durchlaufen und die Elemente an die Funktion getBuchstabe uebergeben um den * zugehoerigen Buchstaben zu erhalten. * Mittels eines StringBuilders werden die Ergebnisse zu einem Rueckgabe String zusammengesetzt. - * Wenn kein zugehoeriger Buchstabe in der codeMap gefunden wurde, wird das Zeichen ignoriert da es bei der + * Wenn kein zugehoeriger Buchstabe in der codeMap gefunden wurde, wird das Zeichen ignoriert, da es bei der * Enigma nicht vorhanden war. * - * @param input : String : Zu konvertierender Morsecode - * @return String : Der in Text konvertierte Morsecode + * @param input : String : Zu konvertierender Morsecode. + * @return String : Der in Text konvertierte Morsecode. */ public String convertMorsecodeToBuchstabe(String input) { StringBuilder sb = new StringBuilder(); diff --git a/src/main/java/projekt/enigma/model/Reflektor.java b/src/main/java/projekt/enigma/model/Reflektor.java index 2e44b400eb99aadee6a6fb9fe5417129fd21541c..bafa846e05affcd3b01dbaf55eb35d8902b70100 100644 --- a/src/main/java/projekt/enigma/model/Reflektor.java +++ b/src/main/java/projekt/enigma/model/Reflektor.java @@ -3,10 +3,10 @@ package projekt.enigma.model; /** * Klasse Reflektor * <br> - * Der Reflektor nimmt einen Buchstaben der Klasse Walze entgegen und und codiert diesen. - * Der codierte Buchstabe wird an die Klasse Walze wieder zurückgegeben. + * Der Reflektor nimmt einen Buchstaben der Klasse Walze entgegen und codiert diesen. + * Der codierte Buchstabe wird an die Klasse Walze wieder zurueckgegeben. * <br> - * Prinzipiell verhaelt sich die Klasse Reflektor wie die Klasse Walze, außer das sie sich + * Prinzipiell verhaelt sich die Klasse Reflektor wie die Klasse Walze, ausser das sie sich * nach Betaetigung einer Taste nicht dreht (quasi starr montiert ist) und sie gibt keine Signale * an andere Walzen zum Drehen. */ @@ -18,14 +18,11 @@ public class Reflektor { * Durchsucht den String alphabet nach der Position des mitgegebenen Buchstabens und * gibt den Character an der entsprechenden Position im String reflektor zurueck. * - * @return char : Der codierte Buchstabe aus dem Reflektor + * @param buchstabe : Character : der zu codierende Buchstabe. + * @return char : Der codierte Buchstabe aus dem Reflektor. */ public char codiere(Character buchstabe) { - - // alphabet : String mit den Werten des Alphabeths (26 Werte) String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; - - // reflektor : String mit den Werten des Reflektors (26 Werte) String reflektor = "EJMZALYXVBWFCRQUONTSPIKHGD"; return reflektor.charAt(alphabet.indexOf(buchstabe)); diff --git a/src/main/java/projekt/enigma/model/Steckbrett.java b/src/main/java/projekt/enigma/model/Steckbrett.java index 727973d32a46aebcc060af83e198c41898c4a92c..97674abe9776b63e8a0729c1548775733b64b500 100644 --- a/src/main/java/projekt/enigma/model/Steckbrett.java +++ b/src/main/java/projekt/enigma/model/Steckbrett.java @@ -4,27 +4,26 @@ package projekt.enigma.model; * <p> * Klasse Steckbrett * <br> - * Das Steckbrett diente dazu Buchstaben paarweise zu vertauschen noch bevor diese durch die Walzen codiert werden. + * 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 { /** - * orginalBuchstaben: String : der jeweils den ersten zu vertauschenden Buchstaben enthaelt + * orginalBuchstaben: String : der jeweils den ersten zu vertauschenden Buchstaben enthaelt. */ private String originalBuchstaben; /** - * getauschteBuchstaben: String : der jeweils den zweiten zu vertauschenden Buchstaben enthaelt + * getauschteBuchstaben: String : der jeweils den zweiten zu vertauschenden Buchstaben enthaelt. */ private String getauschteBuchstaben; - /** * Konstruktor Steckbrett * <br> - * Erzeugt zwei Strings und initialisiert diese mit einer leeren Menge. + * Erzeugt zwei Strings und initialisiert diese. */ public Steckbrett() { originalBuchstaben = ""; @@ -37,15 +36,15 @@ public class Steckbrett { * Der Funktion setzeVertauschung werden 2 Buchstaben (buchstabe1 und buchstabe2) uebergeben. * Zuerst wird ueberprueft ob einer der beiden Buchstaben bereits enthalten ist, was unzulaessig waere. * <br> - * Anschließend wird: + * Anschliessend wird: * <p> * buchstabe1 dem String orginalBuchstaben angehaengt. - * buchstabe2 dem String getauschteBuchstaben angehaengt. + * buchstabe2 dem String getauschteBuchstaben angehaengt. * </p> * * @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 boolean : Wenn die Vertauschung zulaessig ist, true, ansonsten false + * @return boolean : Wenn die Vertauschung zulaessig ist, true, ansonsten false. */ public boolean setzeVertauschung(char buchstabe1, char buchstabe2) { if ((!ueberpruefeVertauschungen(buchstabe1)) && (!ueberpruefeVertauschungen(buchstabe2)) @@ -64,20 +63,21 @@ public class Steckbrett { * Der Funktion setzeVertauschung werden 2 Buchstaben (buchstabe1 und buchstabe2) sowie der Port uebergeben. * Zuerst wird ueberprueft ob einer der beiden Buchstaben bereits enthalten ist, was unzulaessig waere. * <br> - * Anschließend wird: + * Anschliessend wird: * <p> - * buchstabe1 in den String orginalBuchstaben auf die Position (steckbrettPorts) geschrieben + * buchstabe1 in den String orginalBuchstaben auf die Position (steckbrettPort) geschrieben. * buchstabe2 in den String getauschteBuchstaben auf die Position (steckbrettPort) geschrieben. * </p> * * @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 boolean : Wenn die Vertauschung zulässig ist, true, ansonsten false + * @return boolean : Wenn die Vertauschung zulaessig ist, true, ansonsten false. */ public boolean setzeVertauschung(int steckbrettPort, char buchstabe1, char buchstabe2) { if (!ueberpruefeVertauschungen(buchstabe1) && !ueberpruefeVertauschungen(buchstabe2)) { originalBuchstaben = originalBuchstaben.replace(originalBuchstaben.charAt(steckbrettPort), buchstabe1); - getauschteBuchstaben = getauschteBuchstaben.replace(getauschteBuchstaben.charAt(steckbrettPort), buchstabe2); + getauschteBuchstaben + = getauschteBuchstaben.replace(getauschteBuchstaben.charAt(steckbrettPort), buchstabe2); return true; } else { return false; @@ -87,13 +87,14 @@ public class Steckbrett { /** * Funktion ueberpruefeVertauschungen * <br> - * Die Funktion ueberpruefeVertauschungen prueft ob der uebergebene Buchstabe bereits in den beiden Strings + * Die Funktion ueberpruefeVertauschungen prueft, ob der uebergebene Buchstabe bereits in den beiden Strings * orginalBuchstaben und getauschteBuchstaben vorhanden ist. * Eine Buchstabenvertauschung ist zulaessig, wenn keine Dopplungen der zu vertauschenden Buchstaben auftritt * (ein Buchstabe nicht mehrmals vertauscht wird). * + * @param buchstabe : Character: zu pruefender Buchstabe. * @return result : boolean : Wenn false, dann darf der Buchstabe genutzt werden. Wenn er schon vorhanden ist, - * wird true zurueck gegeben + * wird true zurueckgegeben. */ public boolean ueberpruefeVertauschungen(Character buchstabe) { boolean result = false; @@ -125,10 +126,10 @@ public class Steckbrett { } /** - * Tauscht die Buchstaben im Alphabet aus und gibt ein modifiziertes Alphabet zurueck + * Tauscht die Buchstaben im Alphabet aus und gibt ein modifiziertes Alphabet zurueck. * - * @param port : int : Platz der getauschten Buchstaben - * @return alphabet : String : Alphabet mit getauschen Buchstabenpaaren + * @param port : int : Platz der getauschten Buchstaben. + * @return alphabet : String : Alphabet mit getauschtem Buchstabenpaar. */ public String fetchVerfuegbareBuchstaben(int port) { String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; diff --git a/src/main/java/projekt/enigma/model/Walze.java b/src/main/java/projekt/enigma/model/Walze.java index 15895de8399e5798b856f102e21cbd810c63a579..46eafd21b7002875f91a349f83b1eaf6aa4d8c66 100644 --- a/src/main/java/projekt/enigma/model/Walze.java +++ b/src/main/java/projekt/enigma/model/Walze.java @@ -5,34 +5,38 @@ package projekt.enigma.model; * <br> * Erzeugt ein Objekt des Typs Walze mit den Eigenschaften: * <br> - * 1. Walzennummer (Die Walze enthaelt die 26 Buchstaben des Alphabeths und codiert diese. - * fuenf verschiedene Walzen stehen zur Auswahl, die jeweils verschieden die Buchstaben des Alphabeths - * vertauschen) + * 1. Walzennummer (Die Walze enthaelt die 26 Buchstaben des Alphabets und codiert diese. + * Fuenf verschiedene Walzen stehen zur Auswahl, die jeweils verschieden die Buchstaben des Alphabets + * vertauschen). * <br> * 2. Ringstellung (Umspringpunkt der Walze wird festgelegt. Der Umspringpunkt bestimmt - * den Drehzeitpunkt der linken Nachbarwalze.) + * den Drehzeitpunkt der linken Nachbarwalze). */ public class Walze { //region Variablen /** - * Die Anzahl der getaetigten Walzen Drehungen + * Die Anzahl der getaetigten Walzendrehungen. */ private int turns; + /** - * Das String Array aller bekannter aktueller Walzen + * Das String-Array aller bekannter aktueller Walzen. */ private String[] walzen; + /** - * alphabet : String : enthaelt die Buchstaben des Alphabets + * alphabet : String : enthaelt die Buchstaben des Alphabets. */ private String alphabet; + /** - * ringstellung : char : zeigt die Einstellung fuer den Umspringpunkt + * ringstellung : char : zeigt die Einstellung fuer den Umspringpunkt. */ private char ringstellung; + /** - * walzenNr : int : Bestimmt, welche Walze genutzt wird + * walzenNr : int : Bestimmt, welche Walze genutzt wird. */ private int walzenNr; @@ -40,10 +44,10 @@ public class Walze { //region Konstruktor /** - * Ueberschriebener Konstruktor, der die Eingangsparameter der Walze mit gibt + * Ueberschriebener Konstruktor, der die Eingangsparameter der Walze mit gibt. * - * @param walzenNr : int : Nummer der gewaehlten Walze - * @param ringstellung : int : Einstellung des Umsprungpunktes + * @param walzenNr : int : Nummer der gewaehlten Walze. + * @param ringstellung : int : Einstellung des Umsprungpunktes. */ public Walze(int walzenNr, int ringstellung) { this.walzen = new String[5]; @@ -67,8 +71,8 @@ public class Walze { * <p> * Ueberprueft, ob der Umspringpunkt der Walze nach der Drehung erreicht wurde. * - * @param richtung : int : 1 dreht die Walze weiter und -1 dreht sie einen Schritt zurueck - * @return checkRing : boolean : gibt true zurueck wenn der Umspringpunkt erreicht wurde + * @param richtung : int : 1 dreht die Walze weiter und -1 dreht sie einen Schritt zurueck. + * @return checkRing : boolean : gibt true zurueck, wenn der Umspringpunkt erreicht wurde. */ boolean dreheWalze(int richtung) { boolean checkRing = false; @@ -93,10 +97,10 @@ public class Walze { } /** - * Codiert den mitgegebenen Buchstaben anhand er gewaehlten Walze. + * Codiert den mitgegebenen Buchstaben anhand der gewaehlten Walze. * - * @param buchstabe : char : Buchstabe, der verschluesselt werden soll - * @return char : verschluesselter Buchstabe + * @param buchstabe : char : Buchstabe, der verschluesselt werden soll. + * @return char : verschluesselter Buchstabe. */ public char codiere(char buchstabe) { return this.fetchWalze().charAt((this.alphabet.indexOf(buchstabe) + this.turns) % 26); @@ -105,15 +109,15 @@ public class Walze { /** * Decodiert den mitgegebenen Buchstaben anhand des Alphabets. * - * @param buchstabe : char : Buchstabe, der decodiert werden soll - * @return char : decodierter Buchstabe + * @param buchstabe : char : Buchstabe, der decodiert werden soll. + * @return char : decodierter Buchstabe. */ char codiere2(char buchstabe) { return this.alphabet.charAt((this.fetchWalze().indexOf(buchstabe) - this.turns + 260) % 26); } /** - * @return String : Gibt den Verschluesselunngsstring der ausgewaehlten Walze zurueck. + * @return String : Gibt den Verschluesselungs-String der ausgewaehlten Walze zurueck. */ private String fetchWalze() { return walzen[walzenNr]; @@ -123,10 +127,11 @@ public class Walze { //region Setter /** - * Setzt die Walzennummer. Es stehen fuenf Walze zur Auswahl. + * Setzt die Walzennummer. Es stehen fuenf Walzen zur Auswahl. * - * @param walzenNr : int : Walzennummer + * @param walzenNr : int : Walzennummer. */ + //TODO: Überprüfung notwendig? Wo findet Überprüfung statt? private void setWalzenNr(int walzenNr) { if ((walzenNr > 0) && (walzenNr < 6)) { this.walzenNr = walzenNr - 1; @@ -142,7 +147,7 @@ public class Walze { * Die Ringstellung wird zum char umgewandelt. * Im Fehlerfall wird die Ringstellung standardmaessig auf 'Z' gesetzt. * - * @param ringstellung : int : Punkt an dem die Nachbarwalze umspringt + * @param ringstellung : int : Punkt an dem die Nachbarwalze umspringt. */ void setRingstellung(int ringstellung) { if ((ringstellung > 0) && (ringstellung <= 26)) { @@ -156,7 +161,7 @@ public class Walze { * Stellt die Grundeinstellung der Walze ein. * Ermittelt, wie oft die Walze gedreht werden muss, bis die Grundeinstellung erreicht ist. * - * @param buchstabe : Character : Einstellung der Walze + * @param buchstabe : Character : Einstellung der Walze. */ void setPosition(Character buchstabe) { this.turns = alphabet.indexOf(buchstabe); @@ -165,14 +170,18 @@ public class Walze { //region Getter /** - * Gibt den Buchstabe zurueck, der aktuell in der Walze eingestellt ist. + * Gibt den Buchstaben zurueck, der aktuell in der Walze eingestellt ist. * - * @return char : Ermittelte stelle im Alphabet, anhand der aktuellen Anzahl der Drehungen + * @return char : Ermittelte Stelle im Alphabet, anhand der aktuellen Anzahl der Drehungen. */ Character getPosition() { return this.alphabet.charAt(turns % 26); } + /** + * Getter der Walzennummer. + * @return walzenNr : int : gibt Walzennummer zurueck. + */ int getWalzenNr() { return this.walzenNr; }