Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • d.eisold/enigma
  • Janschubi1993/enigma
  • TsunamiKlaus/enigma
  • alfatrainingkurse/java/enigma
  • FloriN/enigma
  • PaoloPinkel/enigma
6 results
Show changes
Commits on Source (141)
Showing
with 220 additions and 132 deletions
Praesentation/Folie1.PNG

1.46 MiB

Praesentation/Folie10.PNG

108 KiB

Praesentation/Folie11.PNG

108 KiB

Praesentation/Folie12.PNG

213 KiB

Praesentation/Folie13.PNG

118 KiB

Praesentation/Folie14.PNG

63.7 KiB

Praesentation/Folie2.PNG

86.8 KiB

Praesentation/Folie3.PNG

106 KiB

Praesentation/Folie4.PNG

761 KiB

Praesentation/Folie5.PNG

123 KiB

Praesentation/Folie6.PNG

125 KiB

Praesentation/Folie7.PNG

139 KiB

Praesentation/Folie8.PNG

145 KiB

Praesentation/Folie9.PNG

364 KiB

Praesentation/Screenshot.JPG

84.9 KiB

![alt text](Folie1.PNG "Präsentation Folie 1")
![alt text](Folie2.PNG "Präsentation Folie 2")
![alt text](Folie3.PNG "Präsentation Folie 3")
![alt text](Folie4.PNG "Präsentation Folie 4")
![alt text](Folie5.PNG "Präsentation Folie 5")
![alt text](Folie6.PNG "Präsentation Folie 6")
![alt text](Folie7.PNG "Präsentation Folie 7")
![alt text](Folie8.PNG "Präsentation Folie 8")
![alt text](Folie9.PNG "Präsentation Folie 9")
![alt text](Folie10.PNG "Präsentation Folie 10")
![alt text](Folie11.PNG "Präsentation Folie 11")
![alt text](Folie12.PNG "Präsentation Folie 12")
![alt text](Folie13.PNG "Präsentation Folie 13")
![alt text](Folie14.PNG "Präsentation Folie 14")
## Der Beginn einer Reise
* [Anforderungskatalog und Planung](https://www.gitrepo.de/alfatrainingkurse/java/enigma/wikis/Anforderungskatalog)
## Ablauf des Projektes
* Wie wurde gearbeitet
* gitrepo.de
* Git
* Was ist Git?
* Repository / Fork
* Funktionen Commit/Push/Pull
* Tickets
* CI/CD
* Welche Probleme sind aufgetreten
* Codierung von Buchstaben (Knoten im Hirn)
* Generierung von Steckbrett Ports
* lampen leuchten lassen
* Abrufen und senden von Nachrichten
* Besondere (für uns) Lösungen
### Zahlen, Daten, Fakten
* Zeilen insgesamt: 3056
* Code: 1619 (53%)
* XML: 110
* Kommentare: 1076 (35%)
* Leerzeilen: 365 (12%)
* Commits: 461
* Merge Requests: 146
* Tickets: 29
* Pipelines 471
## Klassendiagram
![Ablaufdiagram Enigma](http://plantuml.gitrepo.de/png/U9oTM4jpspOGlkjNyDPaNFhGeoVJIU97aedbU2GrpiJrU21gHI820HO0uzHfyjkx8CK7G81Yh8D4xRTOBFODlbIQI5tcR3RJL3E8xk_d7yxEBtzJqIaZIaLdbAIIvFVtV_FPB8euoK4L986eaE8BxFGnS9hc9FgEO1_EnGROdXf5IINBNd9SiHoVulUwJBAMrtpYI9CqEeaernRrWR17u8oaK8EtTnOiAK-L1iPAddeP44nsNq6kAT_KF4b6vEtTxLt3qsC_YXhTdZsto5lGIRP29PHACbRY3p27HOkbDjeuv1GqhXiIRzfp3R55xr13T6cVwDdp5kvn_epKSEFO48F2AtGWt6NmwFrZDidd52H8n-Sxu3oLPL4OxzRsit1EaapI9DD-M1KIVTMvP1fNhKj090R7ve58ey_R_QE59qtmdhInuWPGTL37RqbDdaI5lDWIdi9LS_W0pa4kdQFvmdOacYhSSJbm7rFjzZ1ovHwumZw2t9QGhj68husUcgm7Ggfp40q7ZeA1_xuDbY4MifN9bt713FIZ1lKPS3NmIm7A_3fCA0AsK5bgBK7hQo7TdIHWTZGXus0A-2ReJZLoCiGUOJ6iAXMzKyU7rdwv5efgAjppT1oEu-Bw77vTusW3lf3jqJqrC6vT_5uKMmUY7DKZZ2gps6izr8ZmZSZR0FgbkdC16GFPBpeeyEAlgzFLkmzNzzUByujtdto50BdcvylbgpVdOqneo4myd4if97PD9ko38smAn07Yf5EKV2T9cLlLioi41gwBd2_kFEYKFHjdE1MxxiTeZIfwVCssYiZANCqV9xws33SJ4baMpREbTI29_CLo8o43RtKoZRIH7-YYlkHfUxCllxs82c-aHZOQ4VS8OtaRgWU3IZp5pNCXbKbUry-6D2S5EcabmJozgCF_ztqQ_6djtqeP-8nZPz5jxgx40SuMNebXmjUQeOD6eA7yALPe_UTac1jpKsHr3dTCYjgH4hkBxZL3_n0Y94qf9soSxoWAnfO_LweemPvSgp4S1mxX9Qn1rgsmp-MV2yPx_nH3Ll7is92m8aD1WU7DkGsOIT--OfIIg-0bevNfLBM7VLuD5XxLHV1NHhq_WkLhM8R2DI2CZ5yTlBDQRwmV8Ds4r_DSzzrT_ZO4_KiKZD__6gxZCvm6-9hmtV8VHZKuMOUQUkzXfYfn3edsAkFTyLLHz8H_noZKDFbXpfpWK68yRdvdtGvfWiGt9JqLN4l1S7ZeWLNdTiAWbNaKvOJsNO8ECLTjYu97EtDc0kpZN5iNXbPaTOjR2A5zO1mnGJONd-QNUtJ43DQ1UWQ9wvolRhPBtuGSZmyPFzi1pWfWT5H6jzjJAXDcqrS4etD1ogs7MZfcC1LpWzKcsMceE2oCGMbAARU9m_4zZdBWfKK8ZKLxUyoH_xNcA_YcNSX7ypRhsDkguzxW7hXnnRrUFfaSKi1xh-ZcSM_xGDz9i43dieEI7oYM1KF-Y8Fxsd5n_kzAf2d3gg-ruCh2C2nJ7AHKFIsNuDdtHiYT4mRxsM0X8AVetfNuJ3Bcup3qbMZuaEDGNimnOttrmSfbixxgLxM86rWha5zf0lN2y8NzA39A0MKEKWdpQVBYlxWiukWB-Kgstuv9KJ2Q4EDOKyUQv-5QK-JsIprIX_nsDV2lH9d3XSwx714FbZbl-4wyRyw6WeEDOSeMlNRnT9NVTkzzikwzppXhKDYYTyUHJnUpx5-drFhfWkf9wcG_oHmAY36RrrR4qUhfbculinWS-yUGi9OrAAoxlfn4UL2fZii8wXBOcAJz4rIYUeNWKy7aoEmbDXFpDlr_rhUkvW00 "Ablaufdiagram der Enigma")
## Interesannte Codestellen
* Walze:
* [Konstruktor](https://www.gitrepo.de/alfatrainingkurse/java/enigma/blob/master/src/main/java/projekt/enigma/model/Walze.java#L53)
* Steckbrett
* [setzeVertauschung](https://www.gitrepo.de/alfatrainingkurse/java/enigma/blob/master/src/main/java/projekt/enigma/model/Steckbrett.java#L52)
* [ueberpruefeVertauschung](https://www.gitrepo.de/alfatrainingkurse/java/enigma/blob/master/src/main/java/projekt/enigma/model/Steckbrett.java#L104)
* Codebuch
* [Konstruktor](https://www.gitrepo.de/alfatrainingkurse/java/enigma/blob/master/src/main/java/projekt/enigma/model/Codebuch.java#L59)
* [fetchTagesschluessel](https://www.gitrepo.de/alfatrainingkurse/java/enigma/blob/master/src/main/java/projekt/enigma/model/Codebuch.java#L81)
* Funkraum
* [empfangeFunkspruch](https://www.gitrepo.de/alfatrainingkurse/java/enigma/blob/master/src/main/java/projekt/enigma/model/Funkraum.java#L38)
* [sendeFunkspruch](https://www.gitrepo.de/alfatrainingkurse/java/enigma/blob/master/src/main/java/projekt/enigma/model/Funkraum.java#L90)
* Morsecode
* [Konstruktor](https://www.gitrepo.de/alfatrainingkurse/java/enigma/blob/master/src/main/java/projekt/enigma/model/Morsecode.java#L18)
* [convertBuchstabeToMorsecode](`convertBuchstabeToMorsecode`)
* DatenbankSqlite
* [getCodebuch](https://www.gitrepo.de/alfatrainingkurse/java/enigma/blob/master/src/main/java/projekt/enigma/database/DatenbankSqlite.java#L54)
* Zusammenfassung codiere
* [Codiere Funktion](https://www.gitrepo.de/alfatrainingkurse/java/enigma/snippets/12)
### Ablauf der Codierung
![Ablaufdiagram Codierung](http://plantuml.gitrepo.de/png/U9o5aR4EWZ0GXlS-HHCNwA01Drmm3kegCGx6eT0J21NCSOJ4frTeD35feTCbttVNQ_-u9OdKFJGR2nO9iMjK2GWy8IphN8WDwujI0_T-28LOPgRqZENxZFF8AcI5H7zby46YwYM23I-su_ct54815wbVK7lV8Gb1LgK8H8vRZ2_4DRXDyt26h-ty17SD5JMkLrhwmxa574BW4AR-06h5nyJOaER-VEJRhirb2aEKBJLF5d-K8V8tFTUTQm00 "Ablaufdiagram Codierung")
### Erklärung Datentyp char - String - Enum
* Zuerst char[] (Warum)
* Dann String (Warum)
* Vorteile Enum (Warum)
## Enigma Demo
* Kenngruppe Abfrage
* Testen Kenngruppe Dialog und Fehler
* Enigma
* Senden ohne Nachricht und Fehler
* Empfangen ohne hinterlegte Nachricht und Fehler
* Tagesschlüssel
* Eingabe Nachricht
* Senden einer Nachricht
* Empfang einer Nachricht
* Zurücksetzen
* Setzen von Walzen und Ringen
* Setzen von gleichen Walzen und Fehler
* Senden & Empfangen
## GUI Controller
![Screenshot](Screenshot.JPG "Screenshot der Enigma")
\ No newline at end of file
...@@ -17,3 +17,5 @@ Ebenfalls wichtig ist eure Kenngruppe. Dies hat früher den Personenkreis bezeic ...@@ -17,3 +17,5 @@ Ebenfalls wichtig ist eure Kenngruppe. Dies hat früher den Personenkreis bezeic
Wenn ihr also auf mehreren Clients die selbe Kenngruppe nutzt, dann könnt ihr untereinander eure Nachrichten lesen.\ Wenn ihr also auf mehreren Clients die selbe Kenngruppe nutzt, dann könnt ihr untereinander eure Nachrichten lesen.\
\ \
Im [Wiki](https://www.gitrepo.de/alfatrainingkurse/java/enigma/wikis/home) findet ihr auch noch einige Informationen zu dem Projekt. Im [Wiki](https://www.gitrepo.de/alfatrainingkurse/java/enigma/wikis/home) findet ihr auch noch einige Informationen zu dem Projekt.
![Screenshot](Praesentation/Screenshot.JPG "Screenshot der Enigma")
\ No newline at end of file
doc/Klassendiagram.jpg

144 KiB

File added
...@@ -2,7 +2,7 @@ package projekt.enigma; ...@@ -2,7 +2,7 @@ package projekt.enigma;
import javafx.application.Application; import javafx.application.Application;
import javafx.fxml.FXMLLoader; import javafx.fxml.FXMLLoader;
import javafx.scene.Parent; import javafx.geometry.Insets;
import javafx.scene.Scene; import javafx.scene.Scene;
import javafx.scene.control.Button; import javafx.scene.control.Button;
import javafx.scene.control.Label; import javafx.scene.control.Label;
...@@ -21,135 +21,114 @@ import java.io.IOException; ...@@ -21,135 +21,114 @@ import java.io.IOException;
*/ */
public class App extends Application { public class App extends Application {
private static String kenngruppe; /**
private static GuiController gc; * Deklariert den GuiController.
private static int debug; */
private static GuiController gc;
public static void main(String[] args) {
debug = 1; /**
launch(args); * debug : int : fuer die Funktion debug der Klasse Fehler notwendig.
} */
private static int debug;
public static int getDebug() {
return debug; /**
} * Startet die Klasse App und setzt den debug-Wert 1.
*
@Override * @param args : String[] : Standard-Kommandozeilen-Argument.
public void start(Stage primaryStage) throws IOException { */
public static void main(String[] args) {
primaryStage.setTitle("Kenngruppenabfrage"); debug = 0;
launch(args);
Label label1 = new Label("Bitte Kenngruppe eingeben!"); }
label1.setTranslateX(55);
Label l1 = new Label(""); /**
Label l2 = new Label(""); * Gibt der Getter einen int > 0 zurueck, wird eine Meldung auf der Konsole ausgegeben.
TextField tfield = new TextField(); *
Button button1 = new Button("Kenngruppe setzen!"); * @return debug : int : bestimmt die Eingabe der debung-Methode in der Klasse Fehler.
VBox layout1 = new VBox(); */
public static int getDebug() {
layout1.getChildren().addAll(label1, l1, tfield, l2, button1); return debug;
Scene sceKenngruppe = new Scene(layout1, 234, 137); }
FXMLLoader guiLoader = new FXMLLoader(App.class.getResource("gui.fxml")); /**
* Initialisierung der Variablen fuer die JavaFX Scene Kenngruppe.
Scene sceApp = new Scene(guiLoader.load(), 962, 677); * Abfrage der Kenngruppe und Reaktion auf die Eingabe.
*
tfield.setOnKeyPressed(e -> { * @param primaryStage : Stage : Fenster zur Eingabe der Kenngruppe.
if (e.getCode() == KeyCode.ENTER) { * @throws IOException : wird bei fehlerhafter Eingabe geworfen.
if (enter(tfield.getText())) { */
gc = guiLoader.getController(); @Override
gc.setKenngruppe(tfield.getText()); public void start(Stage primaryStage) throws IOException {
primaryStage.setScene(sceApp); primaryStage.setTitle("Enigma");
} else { primaryStage.setResizable(false);
tfield.setText("");
new Fehler().showErrorDialog("error", "Kenngruppe falsch", Label lblEingbae = new Label("Bitte Kenngruppe eingeben!");
"Regeln für die Kenngruppe: 4-8 Zeichen sowie nur Buchstaben von A-Z."); TextField tfEingabe = new TextField();
} Button btnKenngruppe = new Button("Kenngruppe setzen!");
} VBox layout = new VBox();
}); layout.setSpacing(10);
layout.setPadding(new Insets(20, 30, 10, 30));
button1.setOnAction(e -> { btnKenngruppe.setMaxWidth(Double.MAX_VALUE);
if (enter(tfield.getText())) {
gc = guiLoader.getController(); // baut die Scene fuer die Kenngruppenabfrage auf
gc.setKenngruppe(tfield.getText()); layout.getChildren().addAll(lblEingbae, tfEingabe, btnKenngruppe);
primaryStage.setScene(sceApp); Scene sceKenngruppe = new Scene(layout);
} else {
tfield.setText(""); // laden der FXML und der Enigma-Ansicht, um Ladezeiten zu verringern
new Fehler().showErrorDialog("error", "Kenngruppe falsch", FXMLLoader guiLoader = new FXMLLoader(App.class.getResource("gui.fxml"));
"Regeln für die Kenngruppe: 4-8 Zeichen sowie Buchstaben von A-Z."); Scene sceApp = new Scene(guiLoader.load(), 962, 677);
}
}); /*Bestaetigen der Kenngruppe, Ausgabe einer Fehlermeldung im Fall einer falschen Eingabe und starten
des Enigma-Fensters */
primaryStage.setScene(sceKenngruppe); tfEingabe.setOnKeyPressed(e -> {
primaryStage.show(); if (e.getCode() == KeyCode.ENTER) {
} if (enter(tfEingabe.getText())) {
gc = guiLoader.getController();
private boolean enter(String kenngruppe) { gc.setKenngruppe(tfEingabe.getText());
primaryStage.setScene(sceApp);
String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; } else {
boolean result = true; tfEingabe.setText("");
new Fehler().showErrorDialog("error", "Kenngruppe falsch",
for (char c : kenngruppe.toUpperCase().toCharArray()) { "Regeln für die Kenngruppe: 4-8 Zeichen sowie nur Buchstaben von A-Z.");
if (!alphabet.contains(String.valueOf(c))) { }
result = false; }
break; });
} btnKenngruppe.setOnAction(e -> {
} if (enter(tfEingabe.getText())) {
if (kenngruppe.length() > 8 || kenngruppe.length() < 4) { gc = guiLoader.getController();
result = false; gc.setKenngruppe(tfEingabe.getText());
} primaryStage.setScene(sceApp);
} else {
return result; tfEingabe.setText("");
} new Fehler().showErrorDialog("error", "Kenngruppe falsch",
"Regeln für die Kenngruppe: 4-8 Zeichen sowie Buchstaben von A-Z.");
// /** }
// * TODO Dokumentieren });
// */ primaryStage.setScene(sceKenngruppe);
// private static Scene scene; primaryStage.show();
// /** }
// * TODO Dokumentieren
// * /**
// * @param fxml * Ueberprueft die Gueltigkeit der Kenngruppeneingabe.
// * @throws IOException * Nur Zeichen von A-Z sind zugelassen und die Kenngruppe muss aus mind. 4 und max. 8 Zeichen bestehen.
// */ *
// static void setRoot(String fxml) throws IOException { * @param kenngruppe : String : Eingabewert aus dem Fenster.
// scene.setRoot(loadFXML(fxml)); * @return result : boolean : ist die Kenngruppe ungueltig wird false zurueckgegeben, sonst true.
// */
// } private boolean enter(String kenngruppe) {
// String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
// /** boolean result = true;
// * TODO Dokumentieren
// * for (char c : kenngruppe.toUpperCase().toCharArray()) {
// * @param fxml if (!alphabet.contains(String.valueOf(c))) {
// * @return result = false;
// * @throws IOException break;
// */ }
// private static Parent loadFXML(String fxml) throws IOException { }
// FXMLLoader fxmlLoader = new FXMLLoader(App.class.getResource(fxml + ".fxml")); if ((kenngruppe.length() > 8) || (kenngruppe.length() < 4)) {
// return fxmlLoader.load(); result = false;
// } }
//
// /** return result;
// * TODO Dokumentieren }
// *
// * @param args
// */
// public static void main(String[] args) {
// Application.launch();
// }
//
// /**
// * TODO Dokumentieren
// *
// * @param stage
// * @throws IOException
// */
// @Override
// public void start(Stage stage) throws IOException {
// scene = new Scene(loadFXML("kenngruppe"));
// stage.setScene(scene);
// stage.setResizable(true);
// stage.show();
// }
} }