Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
E
Enigma
Manage
Activity
Members
Labels
Plan
Issues
0
Issue boards
Milestones
Wiki
Code
Merge requests
0
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Jan Schubert
Enigma
Commits
f1f192f2
Commit
f1f192f2
authored
5 years ago
by
Uli Bähr
Browse files
Options
Downloads
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
56d0f28d
7cf2e2f3
No related branches found
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
src/main/java/projekt/enigma/model/Codierer.java
+21
-7
21 additions, 7 deletions
src/main/java/projekt/enigma/model/Codierer.java
src/main/java/projekt/enigma/model/Steckbrett.java
+138
-103
138 additions, 103 deletions
src/main/java/projekt/enigma/model/Steckbrett.java
with
159 additions
and
110 deletions
src/main/java/projekt/enigma/model/Codierer.java
+
21
−
7
View file @
f1f192f2
...
@@ -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
: in
t
:
Kabel Nummer welches am Steckbrett eingesteckt wird
* @param
verbindung
:
Str
in
g
:
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
t
rue
;
return
t
his
.
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
();
}
}
...
...
This diff is collapsed.
Click to expand it.
src/main/java/projekt/enigma/model/Steckbrett.java
+
138
−
103
View file @
f1f192f2
...
@@ -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
;
}
}
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment