Bläddra i källkod

made some intenese doc/ work (a lot of graphics) + minor changes in src/

Noah Vogt 3 år sedan
förälder
incheckning
302168c239

+ 1 - 0
.gitignore

@@ -14,3 +14,4 @@
 *.fls
 *.ilg
 *.ind
+_minted*

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
doc/media/class-overview.drawio


BIN
doc/media/class-overview.png


+ 1 - 1
doc/media/grober-ansatz.drawio

@@ -1 +1 @@
-<mxfile host="app.diagrams.net" modified="2022-05-06T07:23:11.500Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36" etag="p2fk99IJSeZ_gozVlViE" version="18.0.0" type="device"><diagram id="sjbyanrG_to2hAsC2oxt" name="Page-1">3Vhdb9owFP01PG7KBwR4pNCtW1dpUjW1PJrEJC6OnTlOIf31uyY2iRNAdGoH6wvKPfHnPedcO/T8abr5KlCW3PEI057nRJueP+t53th34FcBZQUMgqACYkGiCnJr4J68YA3qfnFBIpxbDSXnVJLMBkPOGA6lhSEh+NputuTUnjVDMe4A9yGiXfSBRDKp0JE3rPEbTOLEzOwG4+pNikxjvZM8QRFfNyD/uudPBeeyeko3U0xV7kxeqn5fDrzdLUxgJk/pIH9Nn9BsHrujx8lKfs9nv0v+SW8jl6XZMI5g/zrkQiY85gzR6xq9ErxgEVajOhDVbX5wngHoAviEpSw1maiQHKBEplS/hQWL8rEZzNVgnwcmnG304FVU6qhaq1rgwRRoKOeFCPGRfRspIRFjeaSdtyMKBI55imE90E9giiR5tteBtNTiXbuaDXjQhLyCHD3uM6KFngk8tiSrJWa5xKLnBRTWfrVQT7HcJkgjBrhDhD0QpnSnX8FCFnXzFvc2s+uESHyfoW0i1+Bum0W9OCwk3hzno5s/3cHva2/o4uCOdLyureYa/yQNmwXOO6V8fFY/NCwwtxzw7n7wTvSDf04/eB0/dAR/i0CObIbD1UUK3nUvTfD+iTn9L9Lpjc+dzn4nnTeoyOSKojzHJxTsSr8Xmex2sR6eO9eDPdJtF28WTdQlEKJQUUBCOy12DvGGyEYZhmhuKjQ810VYBaYGX0Dt7p9Yuw/Q2+BvsIc+g51c4vUMPzmBjdTqGdrq8Z2WLKpt6l7Na2xroL7X8vygNVCVh85AW4nttv33qgs6qoOPBSo70gOjSVtsuRR8haeccgEI40xdHpaE0haEKImZUiwoAW55/pWyLYFZJvpFSqJoe/PYZ3pb0m/h+1HfPrP6XeMHe4Tjv5fvRx0GGElTJZFvcC9G7EVNSnP4nUgpyKL4wOTs1G/I2VOVh/+SHHMiN9ipWXAWGD5cEqjKaupCUYQJU18yDpRpVFKSq1bRFrk1ZyZKVerYIs/2HYMfhkp3eKCwWQds8CZcQlj/8VBVxvrfG//6Dw==</diagram></mxfile>
+<mxfile host="app.diagrams.net" modified="2022-05-05T20:51:10.803Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36" etag="ai2lFUganojuXzxCZ3YK" version="18.0.1" type="device"><diagram id="sjbyanrG_to2hAsC2oxt" name="Page-1">3VjbbuIwEP0aHrciF0J4pNBtd7uVVqpWLY8mGRIXx2Ydp0C/fsfEITGhiK7oRbygzPHYzsyZ43HoeKNsdS3JIr0TMbCO241XHW/ccd1B0MdfDaxLwA/8EkgkjUvIqYF7+gIG7Bq0oDHklqMSgim6sMFIcA6RsjAipVjabjPB7F0XJIEWcB8R1kYfaKzSEg3dfo3fAE3SamcnGJQjGamcTSR5SmKxbEDeVccbSSFU+ZStRsB07qq8lPO+vzK6fTEJXB0zQf0ZPZHxJHHCx+Fc/czHf9fimwkjV+sqYIgxfmMKqVKRCE7YVY1eSlHwGPSqXbRqn19CLBB0EHwCpdaGTFIogVCqMmZG8YXl+rFpTPRiF73KHK/M4qW1NlY7YpOEXBQyggNhVpVDZALqgJ9b+ukcNDYw+bwGkQG+DzpIYETRZ7tGiCm1ZOtXs4EPhpA3kGPWfSasMDuhxmZ0PgOeK5AdN2AYzOVUPyVqkyCDVEBBL+4I5Q+U69Izo/gu03rGDv02ucuUKrhfkE1ylyhwm8gZZWwkmJCbuV5MIJxFiOdKijk0RoIohOnsEIXPIBWsDibdjHq+EZQ5UZzQ2Mtan04lurShzaD7TjwNPlVEDd1MLNmcWkTukSLyvpSI3JaIWiqJiIwvbgkWIB9DNH9/nfQgjP19OgndqRcEp9GJ43w1nXhvoeJMWXAHn82C32LhhhQLNWckz+G4nlJq5Uz7Sf+zCertkcluf+HxUF9u0Yo0bzSyE2lnHVZUNToFWpOqieBz3Se0UbWJj28v/pHtxTmyvTT46+2hr8KO7kJmh9+CYmR19fTt6vG6O2VRxm1mNa/nOwv57s5B0dtZqExMa6FNiW3D/v+qC1pVhx9BTLVKD1Wl7GKz1ckFhx0pG4gwmnBdsVgaeHv1LrVGKe4yNAMZjePN5WjfMWGX9Cl0H/p2f/Tbwg/2FI73XroPWwxwmmW6RH7gfZ/wF70py/F3qJSk0+KMydlWf0XOnlO5/5HkVG28wU7NQncK+EGW4qmsty40RUC5/kLr4jFN1ozm2iveILdVoyWZTh2f5ot9jfNsqHT6rxxsVoMNTsIlmvUfKuXJWP8r5V39Aw==</diagram></mxfile>

BIN
doc/media/grober-ansatz.png


+ 1 - 0
doc/media/gui-overview.drawio

@@ -0,0 +1 @@
+<mxfile host="app.diagrams.net" modified="2022-05-05T20:30:37.770Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36" etag="3w5cMYBPsvLD70q4ySkt" version="18.0.1" type="device"><diagram id="sjbyanrG_to2hAsC2oxt" name="Page-1">5Vtbc6M2FP41ftyOEVc/Jt5k223SeprMbPO0I4MwdAFRIWJ7f30lIy4CnJIYrFycmQQddEPn03e+I5yZvox3XwhMg1vsoWgG5t5upn+eAeDMNfabG/aFwQDCsCGhV5gahrvwJxLGubDmoYcyqSLFOKJhKhtdnCTIpZINEoK3cjUfR/KoKdygjuHOhVHX+i30aCAeC9i1/VcUboJyZM1aFHdiWFYWT5IF0MPbhkm/mulLgjEtruLdEkV87cp1KdpdH7lbTYyghA5pYF4H9P7++2/or4d8la3u//h+53/Sxdzovnxg5LHnF0VMaIA3OIHRVW29JDhPPMR7nbNSXecG45QZNWb8B1G6F86EOcXMFNA4EnfZhMn+b97+F7MsPojuDoXPO6m0F6VirnyCR5dAmDKcExc98dygcgADLsIxYuOwdgRFkIaPcv9QQGhT1auarnDIRgZzgXZjLnwtwK7pc7kLCskGUdGq9hW7aEyjNh08+AxvgmK0Rxjl4hFmwIrY0lxmKUwkP1v/5hx4l9LVhv9l+9gPf/goySgiZXs2naKLok5pXpOBnVYNBta/hWHyLUz4hqlnsK57a4G2hiTH1zYIKbpL4QEBW0ZLMvz8MIqWOMLk0Fb3Tf7D7TihDXvx4WtHCf6BGnesw6eaxyMiFO2ehmQXaqKBbsiQsUVxW5ONVjJI0CAaY34cnBKsnouhhWJGsFVRgiGiy2GLPlHPOpE6TvJOGRaVuQe8dvc4kzC72WZ287zMrmk91H5+ICjwp61yuxljBNSvN3DNRbGaSBpDHsevCYzR9KHU94Hr9oVMz1pb5kQhs1JZymKm5qjYjFyviJvagaV3IW3GUFZ8KAmcXdcUzQslQ1fUXvH8gyzMp2d2ayATaKdSQT+1sxxVgpMxULRfEAL3jWopr5AdH0dvhRBDztfYRdHjqHHDGoXAVjBRR2BrTCmO21OYiMAcF/UT2NoxDbMG/kkEVh1ulAS2UE1gJeQVy4s2o41IMvZAkgELlXrDfvvb1YXEe0+btaM2lG9WYKnYm3UO+DyhcFylgOEqZUQicIYSgaGSCJy3TwQUp++JBwz7tfGApndA8vUyZ2Ipafq247zCkBL0GOI8W8ENkhtN5iekeSay+/y0sGwdjpQdViczwk/AVO6n7inCcD8laEffvY+q1Eidj7qJknxs84SLSgOPdL3cyG98yg4x8IJV0LR018uYSR6vEfnT5/7O2odGRe/yiJPBgIHA8Yw+GDhgrY/17qMDA/VbtSvA1cFgyZT0R4SBoZwNwJB0OPEu+PcLWMmNYJaFrryUsuDuqODJj93+/zjtyIusxqqbPYte2k48dWufhul2y5mFkO+cunU7auky3Wl1NPU79yFvZt48Vo4kQ4qwAl6KlXbA0c6MFfARsKK/JqyAF/NKO4+wzoyVnuzu7FIkDjM3uIXsV5igDyBFTL3ldOWKFJySPI6GA4IyRDsp6FkBcJ7MtA0A9SkJMF8DAA5E8CEBoD4Z6XspNI1oeObR/oiioUC5KtHQ/nbXiwWm2RYNbfUxtWjoe2/w7rCiVGC2sfJigdnBSht0E2NF7wrMLlbe9Dt/sBiIKB30I+o87/rKaTYc8YWE3g3c45yOGkLVfD9PvYjWu3n375A9YQKTn2x8NOoiexA5fu8iW66D1v40i1wdZUywyKxY/5tSQT/1/3rpV/8B</diagram></mxfile>

BIN
doc/media/gui-overview.png


+ 76 - 76
doc/portfolio.tex

@@ -24,7 +24,6 @@
 \hypersetup{%
 unicode,pdffitwindow,
 pdfkeywords = {pdf, LaTeX, hyperref, thumbnails},
-pdfauthor = {Brüder Grimm},
 bookmarksopen = true,
 bookmarksnumbered = true,
 pdfcenterwindow=true,
@@ -60,7 +59,7 @@ includeheadfoot}
 \THEDAY.~\monthname[\THEMONTH] \THEYEAR}
 \usepackage{fancyhdr}
 \pagestyle{fancy}
-\lhead{Noah Vogt}
+\lhead{Noah J. Vogt}
 \chead{}
 %\rhead{\dmy\today}
 \lfoot{}
@@ -107,33 +106,16 @@ includeheadfoot}
 \usepackage{color}
 \usepackage{xcolor}
 
+\usepackage{minted}
+\usemintedstyle{one-dark}
+
 \definecolor{dkgreen}{rgb}{0,0.6,0}
 \definecolor{gray}{rgb}{0.5,0.5,0.5}
 \definecolor{mauve}{rgb}{0.58,0,0.82}
-\definecolor{background}{rgb}{0.36,0.36,0.36}
-\definecolor{shpurple}{HTML}{C301FF}
-\definecolor{shgreen}{HTML}{3CFF00}
-
-\lstset{
-    numbersep=3pt,
-    keywordstyle=\color{blue},
-    commentstyle=\color{dkgreen},
-    stringstyle=\color{mauve},
-    breaklines=true,
-    numbers=left,
-    numberstyle=\scriptsize\color{black},
-    frame=none,
-    basicstyle = \small\ttfamily,
-    breaklines=true
-    breakatwhitespace=false,
-    columns=flexible,
-    xleftmargin=0.5cm,framesep=8pt,framerule=0pt,
-    aboveskip=3mm,
-    morekeywords={*, factorial, sum, erlang},
-    keywordstyle=\color{shpurple}\textbf,
-    commentstyle=\color{shgreen}\textit,
-    stringstyle=\color{shred}   belowskip=3mm,
-}
+\definecolor{bg}{HTML}{282C34} % #282C34
+\definecolor{shpurple}{HTML}{C301FF} % #C301FF
+\definecolor{shgreen}{HTML}{3CFF00} % #3CFF00
+\definecolor{shred}{HTML}{EE0606} % #EE0606
 
 %\usepackage[backend=biber,style=apa]{biblatex}
 \usepackage[
@@ -141,7 +123,7 @@ backend=biber,
 style=alphabetic,
 sorting=ynt,
 ]{biblatex}
-\addbibresource{lit/refs.bib}
+%\addbibresource{lit/refs.bib}
 
 \usepackage{csquotes}
 
@@ -161,11 +143,10 @@ sorting=ynt,
     {\Large aus der Klasse 4cg \par}
     \vspace{0.5cm}
 
-    %\begin{figure}[H]
-    %    \centering
-    %    %\includegraphics[width=.8\textwidth]{../logo/version3d.png}
-    %    \includegraphics[width=.7\textwidth]{../logo/version3d.png}
-    %\end{figure}
+    \begin{figure}[H]
+        \centering
+        \includegraphics[width=.9\textwidth]{media/card-panel.jpg}
+    \end{figure}
 
     \vspace{0.5cm}
     {\Large Fachlehrperson: Victor Yakhontov \par }
@@ -185,7 +166,7 @@ Das Produkt dieser Portfolioarbeit ist ein ausführbares Programm mit geografisc
 \begin{figure}[H]
     \centering
     \includegraphics[width=.7\textwidth]{media/early-screenshot.jpg}
-    \caption{Spielkarten}
+    \caption{Das Produkt}
 \end{figure}
 
 Zuerst sind die Karten in sortierter Reihenfolge dargestellt, sie werden erst durch das Drücken auf den \say{Misch}-Button gemischt. Dieser Vorgang lässt sich beliebig oft wiederholen durch erneutes Drücken des Knopfes durch den Nutzer. Um wieder zum sortierten Anfangszustand zurück zu gelangen, kann man den \say{Reset}-Button drücken.\\
@@ -206,7 +187,7 @@ Es gibt einige Einschränkungen, welche den Rahmen dieser Arbeit setzen:
 
 Im darauffolgenden Hauptteil dieser Portfolioarbeit wird zuerst genauer auf die Aufgabestellung eingegangen, analysiert und interpretiert. Dies ist ein wichtiger Schritt, denn er soll den weiteren Ablauf des Projekts bestimmen.\\
 
-Als nächstes wird der grobe Lösungsansatz vorgestellt, und immer weiter vertieft. Dazu wird sich unter anderem bedient an Codebeispielen, Programmablaufdiagrammen und Screenshots, um durch die grafische Darstellung die Konzepte besser anschaulich zu machen.\\
+Als nächstes wird der grobe Lösungsansatz vorgestellt, und immer weiter vertieft. Dazu wird sich unter anderem auch reichlich bedient an Codebeispielen, Konzepten, Skizzen, Diagrammen und Screenshots, um durch die grafische Darstellung die Konzepte besser anschaulich zu machen.\\
 
 Ebenso wird auch auf die Wahl von Bibliotheken und relevanten Programmierwerkzeugen eingegangen. Diese werden je nach dem kurz vorgestellt, mit Alternativen verglichen und der Entscheid begründet.\\
 
@@ -259,15 +240,18 @@ Auf die Schlussfolgerungen und Reflexionen auf die Arbeit als gesamtes wird noch
 
 \subsection{Lösungsansatz}
 
-\subsubsection{Grobe Übersicht}
+\subsubsection{Übersicht}
+
+Zuerst hier eine kleine grafische Übersicht der verwendeten Klassen, ihrer kurzen Erklärung:
+
 \begin{figure}[H]
     \centering
-    \includegraphics[width=.6\textwidth]{media/grober-ansatz.png}
-    \caption{Spielkarten}
-    % TODO: mention 3 panels
+    \includegraphics[width=\textwidth]{media/class-overview.png}
+    \caption{Grobe Übersicht}
 \end{figure}
 
-Wie in der obigen Abbildung ersichtlich, wird in der Hauptklasse \texttt{Karten} durch das \texttt{SwingUtilities.invokeLater()}-Environment ausgeführt, welches den einzigen Nutzen hat, das Grafikfenster zu starten, welches in der Klasse \texttt{MainWindow} geschrieben ist.\\
+Wie in der obigen Abbildung ersichtlich, wird als erstes die Hauptklasse \texttt{Karten} durch das \texttt{SwingUtilities.
+invokeLater()}-Environment ausgeführt, welches den einzigen Nutzen hat, das Grafikfenster zu starten, welches in der Klasse \texttt{MainWindow} geschrieben ist.\\
 
 Das Grafikfenster besteht aus verschiedenen Komponenten der AWT- und Swing-Library, doch darauf wird später im Text noch genauer eingegangen. Grob ist das Programm aber eingeteilt in ein Top-Panel, Bottom-Panel und eine Kartenansicht dazwischen.\\
 
@@ -276,46 +260,26 @@ Um mit dem Kartendeck im Grafikfenster sinnvoll umgehen zu können, wurde ein Ob
 \subsubsection{Grafisches Interface}
 % TODO: insert irl plan
 
-Um ein Kartenspiel grafisch darzustellen wurde überlegt, es muss ein Fenster her, das in der Lage ist alle 52 Karten des Decks darzustellen. Und das wie schon bei der Aufgabeninterpretation erwähnt, am besten ohne Überlappungen von Karten.
-
-JComponents
-
-\subsubsection{Datenklasse \texttt{Karte}}
-Um eine Sache in ein Datenobjekt zu übersetzen, muss man sich erst einmal überlegen, was für Eigenschaften eine Spielkarte so besitzt. Da wären zuerst die \textit{Kartenwerte} von 2 bis Ass und die sogenannten \textit{Kartenfarben} Pik, Karo, Herz und Kreuz. Mit diesen beiden Eigenschaften kann eine Karte \textit{eindeutig} definiert werden. Diese beiden Karteneigenschaften sollen dann dementsprechend Attribute der Klasse \texttt{Karte} sein.\\
+Um ein Kartenspiel grafisch darzustellen wurde überlegt, es muss ein Fenster her, das in der Lage ist alle 52 Karten des Decks darzustellen. Und das wie schon bei der Aufgabeninterpretation erwähnt, am besten ohne Überlappungen von Karten. Die hier sichtbare, ursprüngliche Bleistift-Skizze wurde fast eins zu eins umgesetzt und kaum umkonzipiert:
 
 \begin{figure}[H]
-\lstset{language=java}
-\begin{lstlisting}
-    public class Karte {
-        public enum Farbe {
-            KREUZ, PIK, KARO, HERZ;
-        }
-
-        private static final int MIN_WERT = 2;
-        private static final int MAX_WERT = 14;
-
-        private int wert;
-        private Farbe farbe;
-\end{lstlisting}
-    \caption{Deklaration der Klasse \texttt{Karte} und deren Attributen}
+    \centering
+    \includegraphics[width=.4\textwidth]{media/grober-ansatz.png}
+    \caption{"ursprüngliches Konzept"}
 \end{figure}
 
+Um dieses Konzept umsetzen zu können, wurden verschiedene JComponents der SWING-Library eingesetzt welche folgendermassen organisiert sind in der Klasse \texttt{MainWindow}:
 
-% \begin{figure}[H]
-%     \centering
-%     \includegraphics[width=.9\textwidth]{media/top-panel.jpg}
-%     \caption{Screenshot: Bottom Panel}
-% \end{figure}
-
-Da die Kartenfarbe nur vier feste, gleichwertige Werte annehmen kann, welche sich am besten durch ihren Namen referenzieren lassen, scheint hier die Nutzung eines \texttt{enum}s angebracht. Im Code sieht dass dann so aus:\\ % TODO: insert enum / Karte.java attributes lstlisting
+\begin{figure}[H]
+    \centering
+    \includegraphics[width=.7\textwidth]{media/gui-overview.png}
+    \caption{GUI Komponenten}
+\end{figure}
 
-\lstset{language=java}
-\begin{lstlisting}
-    public enum Farbe {
-        KREUZ, PIK, KARO, HERZ;
-    }
-\end{lstlisting}
+\subsubsection{Datenklasse \texttt{Karte}}
+Um eine Sache in ein Datenobjekt zu übersetzen, muss man sich erst einmal überlegen, was für Eigenschaften eine Spielkarte so besitzt. Da wären zuerst die \textit{Kartenwerte} von 2 bis Ass und die sogenannten \textit{Kartenfarben} Pik, Karo, Herz und Kreuz. Mit diesen beiden Eigenschaften kann eine Karte \textit{eindeutig} definiert werden. Diese beiden Karteneigenschaften sollen dann dementsprechend Attribute der Klasse \texttt{Karte} sein.\\
 
+Da die Kartenfarbe nur vier feste, gleichwertige Werte annehmen kann, welche sich am besten durch ihren Namen referenzieren lassen, scheint hier die Nutzung eines \texttt{enum}s angebracht.\\
 
 Die Kartenwerte bestehen ja aus \say{2}, \say{3}, \say{4}, \say{5}, \say{6}, \say{7}, \say{8}, \say{9}, \say{10}, \say{Bauer}, \say{Dame}, \say{König}, \say{Ass}. Diese sind im Gegensatz zu den Karten nicht gleichwertig und lassen sich ganzzahligen Werten zuordnen. Für dieses Projekt sind diese wie folgt definiert:
 
@@ -339,6 +303,12 @@ Die Kartenwerte bestehen ja aus \say{2}, \say{3}, \say{4}, \say{5}, \say{6}, \sa
     \hline
     \say{7} & \texttt{7}\\
     \hline
+\end{tabular}
+    \hspace{1cm}
+\begin{tabular}{|c|c|}
+    \hline
+    \textbf{Kartenwert} & \textbf{Integer Wert}\\
+    \hline
     \say{8} & \texttt{8}\\
     \hline
     \say{9} & \texttt{9}\\
@@ -356,9 +326,41 @@ Die Kartenwerte bestehen ja aus \say{2}, \say{3}, \say{4}, \say{5}, \say{6}, \sa
 \end{tabular}
 \end{table}
 
+Im Code wurden die Attribute der Klasse \texttt{Karte} wie folgt umgesetzt:
+
+\begin{listing}[H]
+\begin{minted}[bgcolor=bg]{java}
+public class Karte {
+    public enum Farbe {
+        KREUZ, PIK, KARO, HERZ;
+    }
+
+    private static final int MIN_WERT = 2;
+    private static final int MAX_WERT = 14;
+
+    private int wert;
+    private Farbe farbe;
+\end{minted}
+\caption{Deklaration der Klasse \texttt{Karte} und deren Attributen}
+\label{lst:karte}
+\end{listing}
+
 
 \subsubsection{Datenklasse \texttt{KartenDeck}}
 
+Der Sinn dieser Klasse ist die Speicherung, Verwaltung und sonstige Manipulation seines einzigen Attributs, einer \texttt{ArrayList} bestehend aus Typen der Klasse \texttt{Karte}.
+
+\begin{listing}[H]
+    \begin{minted}[bgcolor=bg]{java}
+    public class KartenDeck {
+        protected ArrayList<Karte> kartenListe = new ArrayList<Karte>();
+    \end{minted}
+    \caption{Deklaration der Klasse \texttt{KartenDeck} und seinem Attribut}
+\end{listing}
+
+Für die Verwaltung dieses Kartendecks bietet die Klasse einige nützliche, öffentliche Methoden (abgesehen vom Constructor) wie zum anhängen und Löschen von Karten (\texttt{appendKarte(Karte karte)} und \texttt{removeKarte(Karte karte)}), dem generieren eines neuen Decks (\texttt{generateFullDeck()}), dem geordneten ausgeben aus der Kommandozeile (\texttt{print()}) und der Mischfunktion (\texttt{mischen()}). Auch zu erwähnen sind die Getter- und Settermethoden (\texttt{getDeck}, \texttt{getDeckSize}, \texttt{setDeck}).
+
+
 \subsection{Vorstellung und Erklärung}
 \subsubsection{Top Panel}
 \begin{figure}[H]
@@ -367,11 +369,11 @@ Die Kartenwerte bestehen ja aus \say{2}, \say{3}, \say{4}, \say{5}, \say{6}, \sa
     \caption{Screenshot: Bottom Panel}
 \end{figure}
 
-Das Panel besteht aus einem \texttt{JComponent} des Typs \texttt{JPanel}. Beginnend von links nach rechts sieht man zuerst ein \texttt{JLabel} mit dem Titel der App, \say{Mischmaschine}. Zum JLabel wurde auch noch ein Shuffle-Logo angefügt, passend zur Funktion des Programmes - dem zufälligen mischen.\\
+Das Panel besteht aus einem \texttt{JComponent} des Typs \texttt{JPanel}. Beginnend von links nach rechts sieht man zuerst ein \texttt{JLabel} mit dem Titel der App, \say{Mischmaschine}. Zum JLabel wurde auch noch ein Shuffle-Logo angefügt, passend zur Funktion des Programmes - dem zufälligen Mischen.\\
 
 Als nächstes kommt der Misch-Button. Dieser sorgt dafür dass alle Karten - auch die welche sich auf einer anderen Seite befinden und somit nicht zu sehen sind - gemischt werden in dem die Funktion \texttt{KartenDeck.mischen()} aufgerufen wird. Dann wird der das Karten-Panel geupdated damit die Änderungen der Kartenreihenfolge sichtbar werden für den Nutzer.\\
 
-Der Reset-Button stellt die versetzt die App wieder in ihren Anfangszustand: Ein vollständiges, sortiertes Kartendeck wird angezeigt. Dazu wird das Kartendeck neu generiert mit der \texttt{KartenDeck.generateFullDeck}-Methode, und schliesslich das Kartenpanel geupdated.
+Der Reset-Button stellt die versetzt die App wieder in ihren Anfangszustand: Ein vollständiges, sortiertes Kartendeck wird angezeigt. Dazu wird das Kartendeck neu generiert mit der \texttt{KartenDeck.generateFullDeck()}-Methode, und schliesslich das Kartenpanel geupdated.
 
 \subsubsection{Bottom Panel}
 \begin{figure}[H]
@@ -391,8 +393,6 @@ Zwischen diesen beiden Knöpfen sind noch zwei \texttt{JLabel} welche die insges
     \caption{Screenshot: Card Panel}
 \end{figure}
 
-\subsection{Verwendete Tools}
-
 \subsection{Abschluss / Rückblick}
 
 \end{document}

+ 1 - 4
src/cards/KartenDeck.java

@@ -4,9 +4,6 @@ import java.util.ArrayList;
 import java.util.Collections;
 
 public class KartenDeck {
-    private static final int MIN_DECK_SIZE = 0;
-    private static final int MAX_DECK_SIZE = 52;
-
     protected ArrayList<Karte> kartenListe = new ArrayList<Karte>();
 
     public KartenDeck() {
@@ -46,7 +43,7 @@ public class KartenDeck {
     }
 
     /* return value '-1' means karte not found */
-    public int getListIndexByKarte(Karte karte) {
+    private int getListIndexByKarte(Karte karte) {
         int found_index = -1;
         for (int index = 0; index < this.kartenListe.size(); index++) {
             if (karte.getWert() == this.kartenListe.get(index).getWert() &&

+ 12 - 12
src/ui/MainWindow.java

@@ -29,7 +29,7 @@ public class MainWindow {
     final int GAP_SIZE = 10;
     final int CARD_ROWS = 3, CARD_COLUMNS = 7;
 
-    private JFrame frame;
+    private JFrame masterFrame;
     private JPanel bottomPanel, topPanel, cardPanel;
     private JButton previousPageButton, nextPageButton;
     private JLabel numberOfPagesLabel, numberOfCardsLabel;
@@ -79,10 +79,10 @@ public class MainWindow {
 	}
 
 	private void displayAndPackFrame() {
-		frame.add(topPanel, BorderLayout.NORTH);
-        frame.add(cardPanel, BorderLayout.CENTER);
-        frame.add(bottomPanel, BorderLayout.SOUTH);
-        frame.pack();
+		masterFrame.add(topPanel, BorderLayout.NORTH);
+        masterFrame.add(cardPanel, BorderLayout.CENTER);
+        masterFrame.add(bottomPanel, BorderLayout.SOUTH);
+        masterFrame.pack();
 	}
 
     private void redrawCardPanel() {
@@ -271,19 +271,19 @@ public class MainWindow {
     }
 
 	private void createMasterFrame() {
-		frame = new JFrame();
-        frame.setTitle("Mischmaschine");
-        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
-        frame.setResizable(false);
-        frame.setVisible(true);
+		masterFrame = new JFrame();
+        masterFrame.setTitle("Mischmaschine");
+        masterFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
+        masterFrame.setResizable(false);
+        masterFrame.setVisible(true);
 
         /* spawn window centered (in floating window management mode) */
-        frame.setLocationRelativeTo(null);
+        masterFrame.setLocationRelativeTo(null);
 
         BorderLayout borderLayout = new BorderLayout();
         borderLayout.setHgap(GAP_SIZE);
         borderLayout.setVgap(GAP_SIZE);
-        frame.setLayout(borderLayout);
+        masterFrame.setLayout(borderLayout);
 	}
 
     private JButton createArrowButton(String text, String pageTarget) {

Vissa filer visades inte eftersom för många filer har ändrats