From 5985f9dd2c307d1a9ed3b36a3acec438cfa3062b Mon Sep 17 00:00:00 2001 From: ruffdd Date: Mon, 7 Sep 2020 13:41:47 +0200 Subject: [PATCH 01/23] removed some junk --- sheets/vorkurs.cls | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/sheets/vorkurs.cls b/sheets/vorkurs.cls index 50259f38..a930852d 100644 --- a/sheets/vorkurs.cls +++ b/sheets/vorkurs.cls @@ -208,26 +208,6 @@ }, } \renewcommand\bcStyleTitre[1]{\large\textcolor{ttblue}{#1}} -%\begin{bclogo}[ -% couleur=bgblue, -% arrondi=0, -% logo=\bcbombe, -% barre=none, -% noborder=true]{Commom Programming Error} -%\itshape\lipsum[4] -%\end{bclogo} - -%\begin{mdframed}[style=mystyle,frametitle=Web addresses in text] -%\lipsum[4] -%\end{mdframed} - -%\begin{myboxi}[Web addresses in text] -%\lipsum[4] -%\end{myboxi} - -%\begin{myboxii}[Web addresses in text] -%\lipsum[4] -%\end{myboxii} %%%%%%%%%%%%%%%%%%%%%% From f33c43b72ecc86c5f08df46cee1ac6fee45c8d6d Mon Sep 17 00:00:00 2001 From: ruffdd Date: Mon, 7 Sep 2020 13:53:01 +0200 Subject: [PATCH 02/23] changed headlines to real sections see Issue: #37 --- sheets/vorkurs.cls | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/sheets/vorkurs.cls b/sheets/vorkurs.cls index a930852d..54c5a037 100644 --- a/sheets/vorkurs.cls +++ b/sheets/vorkurs.cls @@ -94,9 +94,13 @@ \ifthenelse{\value{excerciseCounter}=1}{}{ \vspace{2em} } - \large\textbf{Aufgabe \arabic{excerciseCounter}:} #1\normalsize\\ + \section{#1} + %\large\textbf{Aufgabe \arabic{excerciseCounter}:} #1\normalsize\\ \medskip } +\makeatletter +\renewcommand\thesection{Aufgabe \@arabic\c@section:} +\makeatother \newcounter{subexcerciseCounter} \newcommand{\subexcercise}{\stepcounter{subexcerciseCounter}\alph{subexcerciseCounter}} @@ -220,6 +224,6 @@ \maketitle \prepart \pagestyle{fancy} - \addexcercise + \addexcercise \end{document} } From 5a5fc669d49011601d4171aee7c53961f5ff41c0 Mon Sep 17 00:00:00 2001 From: ruffdd Date: Mon, 7 Sep 2020 14:08:11 +0200 Subject: [PATCH 03/23] fix lstlistings lines go over right border see Issue: #37 --- sheets/1/exercise-5.tex | 1 + sheets/vorkurs.cls | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/sheets/1/exercise-5.tex b/sheets/1/exercise-5.tex index f7754257..8680be70 100644 --- a/sheets/1/exercise-5.tex +++ b/sheets/1/exercise-5.tex @@ -1,4 +1,5 @@ +% !TeX root = ./jvk-blatt1.tex \excercise{Eine API verwenden / Doku lesen} \begin{enumerate}[label=\alph*)] diff --git a/sheets/vorkurs.cls b/sheets/vorkurs.cls index 54c5a037..3d9e0892 100644 --- a/sheets/vorkurs.cls +++ b/sheets/vorkurs.cls @@ -69,7 +69,9 @@ tabsize=4, showspaces=false, showstringspaces=false, - frame=single + frame=single, + breaklines=true, + postbreak=\mbox{{$\hookrightarrow$}\space} } %%%%%%%%%%%%%% From 5648750343a6495cac460cd4c8ff13ae83318fcd Mon Sep 17 00:00:00 2001 From: ruffdd Date: Mon, 7 Sep 2020 14:17:18 +0200 Subject: [PATCH 04/23] changed arrow to grey see Issue: #37 --- sheets/vorkurs.cls | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sheets/vorkurs.cls b/sheets/vorkurs.cls index 3d9e0892..16fbe537 100644 --- a/sheets/vorkurs.cls +++ b/sheets/vorkurs.cls @@ -43,7 +43,7 @@ \definecolor{javagreen}{rgb}{0.25,0.5,0.35} % comments \definecolor{javapurple}{rgb}{0.5,0,0.35} % keywords \definecolor{javadocblue}{rgb}{0.25,0.35,0.75} - +\definecolor{unimportentgrey}{rgb}{0.6,0.6,0.6} %%%%%%%%%%%% % listings % %%%%%%%%%%%% @@ -71,7 +71,7 @@ showstringspaces=false, frame=single, breaklines=true, - postbreak=\mbox{{$\hookrightarrow$}\space} + postbreak=\mbox{\textcolor{unimportentgrey}{$\hookrightarrow$}\space} } %%%%%%%%%%%%%% From 780a65ef8e32a996315696ab993531eb2abcda0b Mon Sep 17 00:00:00 2001 From: ruffdd Date: Mon, 7 Sep 2020 14:32:08 +0200 Subject: [PATCH 05/23] change/fix enumerate are now set globaly see Issue: #37 --- sheets/1/exercise-1.tex | 4 ++-- sheets/1/exercise-2.tex | 4 ++-- sheets/1/exercise-3.tex | 1 - sheets/1/exercise-4.tex | 8 ++++---- sheets/1/exercise-5.tex | 8 ++++---- sheets/vorkurs.cls | 3 +-- 6 files changed, 13 insertions(+), 15 deletions(-) diff --git a/sheets/1/exercise-1.tex b/sheets/1/exercise-1.tex index ae832aab..ddda6cb7 100644 --- a/sheets/1/exercise-1.tex +++ b/sheets/1/exercise-1.tex @@ -6,7 +6,7 @@ \excercise{Programmstart} \begin{Infobox}[HowTo: Wie bekomme ich des Projekt] - \begin{enumerate} + \begin{enumerate}[label=\arabic*.] \item Lade als erstes das Maven-Projekt \jvkpackage runter, man findet es hier: \begin{center} \color{blue}\href{\jvkpackageurl}{\textit{\jvkpackageurl}} @@ -21,7 +21,7 @@ \end{Infobox} \begin{Infobox}[HowTo: Projekt Import in Eclipse] - \begin{enumerate} + \begin{enumerate}[label=\arabic*.] \item Um ein Projekt zu importieren klicke zuerst auf \fbox{File} $\to$ \fbox{Import...}. \item Wähle in dem Ordner \fbox{Maven} $\to$ \fbox{Existing Maven Projects} oder nutze das Suchfeld oben um \fbox{Existing Maven Projects} zu finden. Klicke dann auf \fbox{Next \textgreater}. \item Drücke oben rechts auf \fbox{Browse...} und suche das Verzeichnis, wo die Datei \jvkpackage entpackt wurde. diff --git a/sheets/1/exercise-2.tex b/sheets/1/exercise-2.tex index 758619c0..75504aed 100644 --- a/sheets/1/exercise-2.tex +++ b/sheets/1/exercise-2.tex @@ -15,7 +15,7 @@ Man muss sich dabei oft entscheiden wie ein generisch oder genau man eine Klasse macht. z.B. kann man die Klasse Sportschuh und die Klasse High Heels haben oder man hat die Klasse Schuh mit der Eigenschaft Typ. \end{Infobox} -\begin{enumerate}[label=\alph*)] +\begin{enumerate} \item Wir haben hier ein paar Klassen. Bitte erweitere sie um je 3 weitere Eigenschaften. Der Stuhl ist ein Beispiel: \begin{tikzpicture} @@ -47,7 +47,7 @@ Dabei können Operationen auch sogenannte Parameter besitzen wie z.B. abbiegen(links) oder fahren(50) (für 50 km/h) Wie man genau bestimmt was diese Parameter bedeuten erklären wir noch. \end{Infobox} -\begin{enumerate}[label=\alph*)] \setcounter{enumi}{3} +\begin{enumerate} \setcounter{enumi}{3} \item überlege dir für die folgenden 3 Klassen Operationen. Es ist nicht notwendig Parameter zu verwenden. Der Stuhl ist wieder ein Beispiel: \begin{tikzpicture} diff --git a/sheets/1/exercise-3.tex b/sheets/1/exercise-3.tex index 55728b6d..72ebabf3 100644 --- a/sheets/1/exercise-3.tex +++ b/sheets/1/exercise-3.tex @@ -4,7 +4,6 @@ In dieser Aufgabe geht es darum den Syntax von Java zu verstehen. In jeder teilaufgabe wir ein bestimmter teil von Java erklärt und du sollst ein Beispiel aus Aufgabe 1 finden. In \textbf{[]} steht immer wie viele verschiedenen Beispiele du finden sollst. -\renewcommand{\theenumi}{\alph{enumi}} \begin{enumerate} \item \textbf{[1]} Eine Klasse hat immer am Anfang das Schlüsselwort class, gefolgt von einem frei wählbaren Namen. Darauf folgen die { }, die den gesamten Inhalt der Klasse umschließen. Zum inhalt einer Klasse gehören \textbf{[1]}Attribute und Operationen diff --git a/sheets/1/exercise-4.tex b/sheets/1/exercise-4.tex index 5798b08e..f71a1f18 100644 --- a/sheets/1/exercise-4.tex +++ b/sheets/1/exercise-4.tex @@ -2,7 +2,7 @@ \excercise{DemoTask und UI} \begin{enumerate} - \item[a)] Nun wollen wir wieder ein Spiel starten. Diesesmal mit einem Task: + \item Nun wollen wir wieder ein Spiel starten. Diesesmal mit einem Task: \begin{lstlisting} Game myGame = new Game("Hello World", new DemoTask()); @@ -16,7 +16,7 @@ Starte das Spiel mit dem kleinen Play-Button oben in der Werkzeugleiste und schau dich ein wenig im Fenster um das aufgeht. - \item[b)] Nun erweitern wir das Game-Objekt um ein Parameter. Füge einen DemoTaskVerifier Objekt hinter dem DemoTask-Objekt hinzu. Was verändert sich im Spiel? Versuche den Task zu erfüllen. + \item Nun erweitern wir das Game-Objekt um ein Parameter. Füge einen DemoTaskVerifier Objekt hinter dem DemoTask-Objekt hinzu. Was verändert sich im Spiel? Versuche den Task zu erfüllen. \begin{lstlisting} Game myGame = new Game("Hello World", new DemoTask(), @@ -29,12 +29,12 @@ \end{Infobox} \begin{enumerate} - \item[c)] Finde sowohl im Spiel als auch in Eclipse die Konsole. das ist ein Feld in dem Text ausgegeben wird: + \item Finde sowohl im Spiel als auch in Eclipse die Konsole. das ist ein Feld in dem Text ausgegeben wird: \begin{center} \includegraphics[width=\linewidth]{./figures/console.PNG} \end{center} Was denkst du bedeutet der Text der ausgegeben wird? - \item[d)] Nun suche nach der Stelle im Code in dem die erste Münze erzeugt wird. Kleiner Tipp: Verwende dafür \fbox{Strg} um auf Objekte zu klicken und in ihre Klasse zu kommen. + \item Nun suche nach der Stelle im Code in dem die erste Münze erzeugt wird. Kleiner Tipp: Verwende dafür \fbox{Strg} um auf Objekte zu klicken und in ihre Klasse zu kommen. \end{enumerate} diff --git a/sheets/1/exercise-5.tex b/sheets/1/exercise-5.tex index 8680be70..aefad9df 100644 --- a/sheets/1/exercise-5.tex +++ b/sheets/1/exercise-5.tex @@ -2,7 +2,7 @@ % !TeX root = ./jvk-blatt1.tex \excercise{Eine API verwenden / Doku lesen} -\begin{enumerate}[label=\alph*)] +\begin{enumerate} \item Wie in Aufgabe 4 bereits vorgestellt, erstellen wir wieder ein neues Spiel. Wir geben ihm den Task \texttt{Sheet1Task5} und den Verifier \texttt{Sheet1Task5Verifier} mit. \begin{lstlisting} @@ -14,7 +14,7 @@ Wir werden im weiteren Verlauf der Blätter das Namens Schema wie eben gezeigt verwenden. Das heißt für Aufgabe \textbf{X} auf Blatt \textbf{Y} werden für euch die Klassen, \texttt{SheetYTaskX} und \texttt{SheetYTaskXVerifiy} \end{Infobox} -\begin{enumerate}[label=\alph*)] \setcounter{enumi}{1} +\begin{enumerate} \setcounter{enumi}{1} \item Jetzt wollen wir selber Münzen auf dem Spielfeld platzieren. Erzeuge mindestens 5 Münzen und platziere sie auf beliebigen Feldern. Was fällt dir auf wenn du mehrere Münzen auf einem Feld platzierst. Wie genau korrelieren Position und Koordinatensystem. \item Nachdem wir nun die Methode \texttt{placeEntityAt()} aus der Klasse \texttt{PlayfieldModifier} kennengelernet haben, beschäftigen wir uns nun etwas genauer mit dem \texttt{PlayfieldModifier}. Insbesondere wollen wir nun herausfinden, welche anderen Funktionen von dieser Klasse bereitgestellt werden. Es gibt noch zwei weitere Methoden, welche wir zum platzieren von Münzen und auch anderen Entitäten verwenden können. Versuche entweder mit Autocomplete deiner IDE oder mit der Dokumentation harauszufinden, wie diese heißen. @@ -24,7 +24,7 @@ Sobald wir ein Objekt instanziiert haben und in eine Variable gespeichert haben, können wir hinter den Variablennamen einen Punkte "." eingeben. Jetzt wird eine Liste von allen möglichen Attributen und Funktionen angezeigt, die zu dem Objekt gehören. Somit kann man recht schnell alle möglichen Funktionen durchsuchen, die mit diesem Objekt möglich sind. \end{Infobox} -\begin{enumerate}[label=\alph*)] \setcounter{enumi}{3} +\begin{enumerate} \setcounter{enumi}{3} \item Jetzt da uns weitere Optionen zur Verfügung stehen, besteht die nächste Aufgabe darin 20 Münzen auf einem Feld zu platzieren. Verwende hierzu ein Objekt der \texttt{CoinFactory} Klasse und eine der Methoden, die du in Aufgabe c) gefunden hast. Erstelle dazu das Objekt mit \texttt{new CoinFactory()}. Wenn dir nicht klar ist was die Methode genau macht, lies dir die Dokumentation dieser Methode durch. \end{enumerate} @@ -34,7 +34,7 @@ \end{Infobox} -\begin{enumerate}[label=\alph*)] \setcounter{enumi}{4} +\begin{enumerate} \setcounter{enumi}{4} \item Platziere nun 3 Reihen mit jeweils 7 Münzen. Um eine Reihe zu erzeugen kannst du die Klasse \texttt{Line} unserer Shape Sammlung verwenden, welche eine Start und Endposition erwartet. \begin{lstlisting} diff --git a/sheets/vorkurs.cls b/sheets/vorkurs.cls index 16fbe537..65385466 100644 --- a/sheets/vorkurs.cls +++ b/sheets/vorkurs.cls @@ -103,8 +103,7 @@ \makeatletter \renewcommand\thesection{Aufgabe \@arabic\c@section:} \makeatother -\newcounter{subexcerciseCounter} -\newcommand{\subexcercise}{\stepcounter{subexcerciseCounter}\alph{subexcerciseCounter}} +\setenumerate{label=\alph*)} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Automatic Document inclusion % From db09148a81def33a5247ec54d580c3939c2ea686 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20W=C3=A4ltken?= Date: Mon, 7 Sep 2020 19:55:18 +0200 Subject: [PATCH 06/23] Review Task 2 --- sheets/1/exercise-2.tex | 45 ++++++++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/sheets/1/exercise-2.tex b/sheets/1/exercise-2.tex index 75504aed..a43a7d45 100644 --- a/sheets/1/exercise-2.tex +++ b/sheets/1/exercise-2.tex @@ -2,17 +2,17 @@ \excercise{Einschub: Objekte, Klassen, Klassendiagramm} -\begin{Infobox} +\begin{Infobox}[HowTo: Klassen und Objekte auseinander halten] In Java (und auch in anderen Programmiersprachen) gibt es \textbf{Klassen} und \textbf{Objekte}. - Dabei gehört ein Objekt immer zu einer Klasse. Genauer gesagt ist ein Objekt immer genau \textbf{eine Instanz} einer Klasse. + Dabei gehört ein Objekt immer zu einer Klasse. Genauer gesagt ist ein Objekt \textbf{eine Instanz} einer Klasse. - Die Klasse beschreibt dabei generell welche Eigenschaften und Fähigkeiten ein Objekt haben kann. + Die Klasse beschreibt dabei generell welche Eigenschaften und Operationen ein Objekt haben kann. Eigenschaften können zum Beispiel Daten (wie der Name oder die Farbe des Objekts) sein. - Fähigkeiten wiederum sind Operationen die das Objekt ausführen kann. - Das Objekt, also eine konkrete Instanz der Klasse, hat dann zum Beispiel eine bestimmte Farbe (grün). - Ein anderes Objekt der selben Klasse kann eine eigene Farbe (rot) haben. - \paragraph{} - Man muss sich dabei oft entscheiden wie ein generisch oder genau man eine Klasse macht. z.B. kann man die Klasse Sportschuh und die Klasse High Heels haben oder man hat die Klasse Schuh mit der Eigenschaft Typ. + Operationen wiederum sind Funktionen die das Objekt ausführen kann. + Das Objekt, also eine konkrete Instanz der Klasse, hat dann zum Beispiel eine bestimmte Farbe (z.B. grün). + Ein anderes Objekt der selben Klasse kann eine eigene Farbe (z.B. rot) haben.\\ + + Man muss sich dabei oft entscheiden wie generisch oder genau man eine Klasse macht. Zum Beispiel kann man die Klasse Sportschuh und die Klasse High Heels haben oder man hat nur eine Klasse Schuh mit einer Eigenschaft, welche die Schuhart beschreibt. \end{Infobox} \begin{enumerate} @@ -32,23 +32,30 @@ \node[draw, rectangle, minimum height= 4cm, minimum width=3cm,align=left, anchor=north] (B1) at (10.5,0) {Autor\\$\rule{2cm}{0.15mm}$\\$\rule{2cm}{0.15mm}$\\$\rule{2cm}{0.15mm}$\\}; \end{tikzpicture} - \item Nun erstelle zu jeder Klasse 3 Objekte. Wenn ihr in einer Gruppe zusammenarbeitet sollte jeder selbst auf Objekte kommen. - - \item Bitte lies diesen Text und identifiziere 3 Klassen mit je drei Eigenschaften die vorkommen: + \item Nun erstelle zu jeder Klasse drei verschiedene Objekte. Wenn ihr in einer Gruppe zusammenarbeitet sollte sich jeder selbst ein Objekte ausdenken. - Die BilligMöbel GmbH ist ein Unternehmen mit 1000 Mitarbeiter. Doch sie wissen nicht viel über ihre Mitarbeiter. Sie merken sich lediglich ihr Alter, Name, Gehalt und Berufsbezeichnung. Deswegen kann das Untenehmen ihre Möbel sehr Billig verkaufen: Stühle für 10 Euro, Ligen für 15 Euro und ganz viele andere Arten von Möbeln. Alle kann man aus Plastik oder Holz bekommen und in verschiedenen Farben. + \item Identifiziere im folgenden Text drei vorkommende Klassen mit jeweils drei Eigenschaften: - Aber sie merken sich wer schon alles bei ihnen eingekauft hat. Für jeden Kunden haben sie sich aufgeschrieben: Wann er das letzte mal eingekauft hat; Wie viel er insgesamt ausgegeben hat und wann diese Person Geburtstag hat. + Die BilligMöbel GmbH ist ein Unternehmen mit 1000 Mitarbeiter. + In der Akte jedes Mitarbeiters ist sein Name und Alter sowie sein Gehalt und seine Kontonummer. + Aufgrund von Massenproduktion kann das Untenehmen ihre Möbel sehr Billig verkaufen. + So kosten z.B. Stühle 10€, Liegen 15€ und Schränke 32€. + Alle kann man aus Plastik oder Holz bekommen und in verschiedenen Farben. + In ihrer Kundenkartei vermerken sie das Geschlecht und Postleitzahl ihrer Kunden sowie die Kosten ihres letzten Éinkaufs. \end{enumerate} -\begin{Infobox} - Klassen verfügen auch über Aktionen die von bzw. auf ihren Objekten ausgeführt werden können. Wenn wir bei dem Auto Beispiel bleiben, kann es z.B. fahren, bremsen, abbiegen oder den Motor an / abschalten. Diese Aktionen werden Operationen genannt. - \paragraph{} - Dabei können Operationen auch sogenannte Parameter besitzen wie z.B. abbiegen(links) oder fahren(50) (für 50 km/h) Wie man genau bestimmt was diese Parameter bedeuten erklären wir noch. +\begin{Infobox}[HowTo: Operationen von Objekten] + Klassen verfügen über Operationen die von bzw. auf ihren Objekten ausgeführt werden können. + Als Beispiel betrachten wir ein Auto. Es kann fahren, bremsen, abbiegen oder den Motor an-/abschalten.\\ + + Dabei können Operationen auch sogenannte Parameter besitzen wie z.B. abbiegen(links) oder fahren(50) (für 50 km/h). + Wie man genau bestimmt was diese Parameter bedeuten erklären wir noch. \end{Infobox} \begin{enumerate} \setcounter{enumi}{3} - \item überlege dir für die folgenden 3 Klassen Operationen. Es ist nicht notwendig Parameter zu verwenden. Der Stuhl ist wieder ein Beispiel: + \item Überlege dir für die folgenden 3 Klassen, Operationen. + Es ist nicht notwendig Parameter zu verwenden. + Der Stuhl ist wieder ein Beispiel: \begin{tikzpicture} \node[draw, rectangle, minimum height=0.75cm,minimum width=3cm, anchor=south] (A) {\textbf{Stuhl}}; @@ -66,7 +73,7 @@ \item Überlege dir nun eine eigene Klasse und finde zu ihr 3 Eigenschaften und 3 Operationen. Dann überlege die 3 Objekte dieser Klasse. Wenn du in einer Gruppe arbeitest könnt ihr gerne durchtauschen und jeder muss Objekte für die Klasse eines Kommilitonen finden. - \begin{Infobox} + \begin{Infobox}[Info: Objekte vs. reale Objekte] Wichtig zu verstehen ist das Klassen und Objekte keine physischen Objekte repräsentieren müssen. Man kann auch z.B. eine Klasse für User Accounts oder eine Klasse für Personengruppen haben. Auch werden Klassen verwendet um technische Teile des Programms zu repräsentieren wie z.B. Das Fenster das angezeigt wird oder ein Paket das durchs Internet geschickt wird. \end{Infobox} From f97eb234c460784b5bfd4aab7ccab653e361c298 Mon Sep 17 00:00:00 2001 From: Joel Bienias Date: Mon, 14 Sep 2020 13:08:09 +0200 Subject: [PATCH 07/23] do review of task 2,4,5 --- sheets/1/exercise-4.tex | 39 ++++++++++++++++++++------------------- sheets/1/exercise-5.tex | 13 +++++++------ 2 files changed, 27 insertions(+), 25 deletions(-) diff --git a/sheets/1/exercise-4.tex b/sheets/1/exercise-4.tex index f71a1f18..6e6335f4 100644 --- a/sheets/1/exercise-4.tex +++ b/sheets/1/exercise-4.tex @@ -3,38 +3,39 @@ \begin{enumerate} \item Nun wollen wir wieder ein Spiel starten. Diesesmal mit einem Task: - + \begin{lstlisting} Game myGame = new Game("Hello World", new DemoTask()); \end{lstlisting} - - Nun wollen wir das Spiel (Game) auch starten können. Also führen wir die Operation .run() darauf aus. - + + Nun wollen wir das Spiel (Game) auch starten können. Also führen wir die Operation .run() darauf aus. + \begin{lstlisting} myGame.run(); \end{lstlisting} - - Starte das Spiel mit dem kleinen Play-Button oben in der Werkzeugleiste und schau dich ein wenig im Fenster um das aufgeht. - - \item Nun erweitern wir das Game-Objekt um ein Parameter. Füge einen DemoTaskVerifier Objekt hinter dem DemoTask-Objekt hinzu. Was verändert sich im Spiel? Versuche den Task zu erfüllen. - + + Starte das Spiel in Eclipse, mit dem kleinen Play-Button oben in der Werkzeugleiste und schau dich ein wenig im Fenster um das aufgeht. + + \item Nun erweitern wir den Konstruktor von \texttt{Game} um einen Parameter. Erweitere den den Konstruktor um ein TaskVerifier Objekt, so wie unten im Bild zu sehen. Starte nun das Spielfenster neu. Was verändert sich im Spielfenster? Finde den Task Status und drücke den Refresh Button. + \begin{lstlisting} -Game myGame = new Game("Hello World", new DemoTask(), +Game myGame = new Game("Hello World", new DemoTask(), new DemoTaskVerifier()); \end{lstlisting} - + \end{enumerate} \begin{Infobox}[Der Refresh Button] - Wichtig: Wenn ihr überprüfen wollt ob ihr eure Aufgabe erledigt habt, müsst ihr auf \fbox{Task Status} und dann auf \fbox{Refresh} klicken. + Wenn ihr überprüfen wollt ob ihr eure Aufgabe erledigt habt, müsst ihr auf \fbox{Task Status} und dann auf \fbox{Refresh} klicken. + Wichtig: Der Task Status aktualisiert sich nicht automatisch. \end{Infobox} - \begin{enumerate} - - \item Finde sowohl im Spiel als auch in Eclipse die Konsole. das ist ein Feld in dem Text ausgegeben wird: + \begin{enumerate}\setcounter{enumi}{2} + + \item Finde sowohl im Spiel als auch in Eclipse die Konsole. Dies ist ein Feld in dem Text ausgegeben wird: \begin{center} \includegraphics[width=\linewidth]{./figures/console.PNG} \end{center} - - Was denkst du bedeutet der Text der ausgegeben wird? - - \item Nun suche nach der Stelle im Code in dem die erste Münze erzeugt wird. Kleiner Tipp: Verwende dafür \fbox{Strg} um auf Objekte zu klicken und in ihre Klasse zu kommen. + + In der Konsole siehst du, das eine Münze (\texttt{Coin}) gespawnt wurde. Finde die Koordinaten des Feldes, auf welchem die Münze gespawnt wurde. + + \item Nun suche nach der Stelle im Code in dem die erste Münze erzeugt wird. Kleiner Tipp: Verwende dafür entweder \fbox{Strg} um auf Objekte zu klicken und in ihre Klasse zu kommen oder den PackageExplorer um in das Paket \texttt{de.unistuttagrt.informatik.fius.jvk.tasks} zu navigieren. \end{enumerate} diff --git a/sheets/1/exercise-5.tex b/sheets/1/exercise-5.tex index aefad9df..fb27a1b9 100644 --- a/sheets/1/exercise-5.tex +++ b/sheets/1/exercise-5.tex @@ -3,7 +3,7 @@ \excercise{Eine API verwenden / Doku lesen} \begin{enumerate} - \item Wie in Aufgabe 4 bereits vorgestellt, erstellen wir wieder ein neues Spiel. Wir geben ihm den Task \texttt{Sheet1Task5} und den Verifier \texttt{Sheet1Task5Verifier} mit. + \item Wie in Aufgabe 4 bereits vorgestellt, erstellen wir wieder ein neues Spiel. Wir geben dem Game Konstuktor, den Task \texttt{Sheet1Task5} und den Verifier \texttt{Sheet1Task5Verifier} mit. \begin{lstlisting} Game myGame = new Game("Task 5", new Sheet1Task5(), new Sheet1Task5Verifier()); @@ -11,21 +11,22 @@ \end{enumerate} \begin{Infobox}[Aufgaben Bennenung] - Wir werden im weiteren Verlauf der Blätter das Namens Schema wie eben gezeigt verwenden. Das heißt für Aufgabe \textbf{X} auf Blatt \textbf{Y} werden für euch die Klassen, \texttt{SheetYTaskX} und \texttt{SheetYTaskXVerifiy} + Wir werden im weiteren Verlauf der Blätter das Namensschema wie eben gezeigt verwenden. Das heißt für Aufgabe \textbf{X} auf Blatt \textbf{Y} werden für euch die Klassen, \texttt{SheetYTaskX} und \texttt{SheetYTaskXVerifier}. \end{Infobox} \begin{enumerate} \setcounter{enumi}{1} - \item Jetzt wollen wir selber Münzen auf dem Spielfeld platzieren. Erzeuge mindestens 5 Münzen und platziere sie auf beliebigen Feldern. Was fällt dir auf wenn du mehrere Münzen auf einem Feld platzierst. Wie genau korrelieren Position und Koordinatensystem. + \item Navigiere jetzt in die Klasse \texttt{Sheet1Task5} um dort alle Änderungen vorzunehmen. Jetzt wollen wir selber Münzen auf dem Spielfeld platzieren. Erzeuge mindestens 5 Münzen und platziere sie auf beliebigen Feldern. Was fällt dir auf wenn du mehrere Münzen auf einem Feld platzierst. Wie genau korrelieren Position und Koordinatensystem.\\ + Tipp: Wenn du nicht genau weißt wie man eine Münze spawnt, schau dir den Code, welchen du in Aufgabe 4d) gefunden hast, nochmal an. - \item Nachdem wir nun die Methode \texttt{placeEntityAt()} aus der Klasse \texttt{PlayfieldModifier} kennengelernet haben, beschäftigen wir uns nun etwas genauer mit dem \texttt{PlayfieldModifier}. Insbesondere wollen wir nun herausfinden, welche anderen Funktionen von dieser Klasse bereitgestellt werden. Es gibt noch zwei weitere Methoden, welche wir zum platzieren von Münzen und auch anderen Entitäten verwenden können. Versuche entweder mit Autocomplete deiner IDE oder mit der Dokumentation harauszufinden, wie diese heißen. + \item Nachdem wir nun die Methode \texttt{placeEntityAt()} aus der Klasse \texttt{PlayfieldModifier} kennengelernet haben, beschäftigen wir uns nun etwas genauer mit dem \texttt{PlayfieldModifier}. Insbesondere wollen wir nun herausfinden, welche anderen Operationen von dieser Klasse bereitgestellt werden. Es gibt noch zwei weitere Operationen, welche wir zum platzieren von Münzen (\texttt{Coin}), Wänden (\texttt{Wall}) und Spielfiguren verwenden können. Versuche entweder mit Autocomplete deiner IDE oder mit der Dokumentation harauszufinden, wie diese heißen. \end{enumerate} \begin{Infobox}[Autocompletion] - Sobald wir ein Objekt instanziiert haben und in eine Variable gespeichert haben, können wir hinter den Variablennamen einen Punkte "." eingeben. Jetzt wird eine Liste von allen möglichen Attributen und Funktionen angezeigt, die zu dem Objekt gehören. Somit kann man recht schnell alle möglichen Funktionen durchsuchen, die mit diesem Objekt möglich sind. + Sobald wir ein Objekt instanziiert haben und in eine Variable gespeichert haben, können wir hinter den Variablennamen einen Punkte '.' eingeben. Jetzt wird eine Liste von allen möglichen Attributen und Operationen angezeigt, die zu dem Objekt gehören. Somit kann man recht schnell alle möglichen Operationen durchsuchen, die mit diesem Objekt möglich sind. \end{Infobox} \begin{enumerate} \setcounter{enumi}{3} - \item Jetzt da uns weitere Optionen zur Verfügung stehen, besteht die nächste Aufgabe darin 20 Münzen auf einem Feld zu platzieren. Verwende hierzu ein Objekt der \texttt{CoinFactory} Klasse und eine der Methoden, die du in Aufgabe c) gefunden hast. Erstelle dazu das Objekt mit \texttt{new CoinFactory()}. Wenn dir nicht klar ist was die Methode genau macht, lies dir die Dokumentation dieser Methode durch. + \item Jetzt da uns weitere Optionen zur Verfügung stehen, besteht die nächste Aufgabe darin 20 Münzen in einer Zelle zu platzieren. Verwende hierzu ein Objekt der \texttt{CoinFactory} Klasse und eine der Methoden, die du in Aufgabe c) gefunden hast. Erstelle dazu das Objekt mit \texttt{new CoinFactory()} und übergebe es als Parameter an die gefundene Methode. Wenn dir nicht klar ist wie die Methoden genau funktionieren, lies dir die Dokumentation all dieser Methoden nochmal durch. \end{enumerate} From 98eaf5dd8f091b624c9516bbd905786004c22d09 Mon Sep 17 00:00:00 2001 From: ruffdd Date: Thu, 17 Sep 2020 07:54:11 +0200 Subject: [PATCH 08/23] add latexindent_temp to gitignore --- sheets/.gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sheets/.gitignore b/sheets/.gitignore index 356067f0..3ac41570 100644 --- a/sheets/.gitignore +++ b/sheets/.gitignore @@ -214,6 +214,9 @@ pythontex-files-*/ # Latexian TSWLatexianTemp* +# latexindent +__latexindent_temp.tex + ## Editors: # WinEdt *.bak From 080b721f2e75c8cfddace94d680047420fbbd4d3 Mon Sep 17 00:00:00 2001 From: ruffdd Date: Thu, 17 Sep 2020 07:55:17 +0200 Subject: [PATCH 09/23] try to add special formatring to lstlisting --- sheets/1/exercise-3.tex | 39 ++++++++++++++++++++++++++++++++++++++- sheets/vorkurs.cls | 6 +++++- 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/sheets/1/exercise-3.tex b/sheets/1/exercise-3.tex index 72ebabf3..6bbd12a8 100644 --- a/sheets/1/exercise-3.tex +++ b/sheets/1/exercise-3.tex @@ -5,11 +5,48 @@ In jeder teilaufgabe wir ein bestimmter teil von Java erklärt und du sollst ein Beispiel aus Aufgabe 1 finden. In \textbf{[]} steht immer wie viele verschiedenen Beispiele du finden sollst. \begin{enumerate} - \item \textbf{[1]} Eine Klasse hat immer am Anfang das Schlüsselwort class, gefolgt von einem frei wählbaren Namen. Darauf folgen die { }, die den gesamten Inhalt der Klasse umschließen. + \item \textbf{[1]} Eine Klasse hat immer am Anfang das Schlüsselwort class, gefolgt von einem frei wählbaren Namen. Darauf folgen die \{ \}, die den gesamten Inhalt der Klasse umschließen. Zum inhalt einer Klasse gehören \textbf{[1]}Attribute und Operationen \textbf{[1]} Eine Operationen hat immer einen frei wählbaren Namen, vor dem entweder void oder eine Klasse steht. Eventuell gefolgt von Parametern. Die immer als Klasse und dann ein Name geschreiben werden und wenn man mehrere braucht kann man sie mit , getrennt auflisten. Nach den() folgen {}, die einen Codeblock umschließen. + + let\origthelstnumber\thelstnumber + \makeatletter + \newcommand*\Suppressnumber{% + \lst@AddToHook{OnNewLine}{% + \let\thelstnumber\relax% + \advance\c@lstnumber-\@ne\relax% + }% + } + + \newcommand*\Reactivatenumber{% + \lst@AddToHook{OnNewLine}{% + \let\thelstnumber\origthelstnumber% + \advance\c@lstnumber\@ne\relax}% + } + + \begin{lstlisting}[title={Beispiel für eine Klasse}] + class§\tikz[remember picture] \node [] (a) {};§ BeispielKlasse{§\Suppresnumber§ + +§\ReacktivateNumber§ + void setGame(Game oldGame, Main oldMain){ + + } + + Game getGame(){ + + } + + } + \end{lstlisting} + \begin{tikzpicture}[remember picture,overlay] + \node [below right= 0cm and -2cm of a] (A) {$\overbrace{\text{keyword der Klasse}}$}; + \begin{scope}[on background layer={color=green}] + \fill (0,0) rectangle (1,1); + \end{scope} + \end{tikzpicture} + \begin{Infobox}{Namen} Freiwählbare namen, müssen trotzdem ein paar Regeln Folgen \begin{itemize} diff --git a/sheets/vorkurs.cls b/sheets/vorkurs.cls index 65385466..b40f4d4f 100644 --- a/sheets/vorkurs.cls +++ b/sheets/vorkurs.cls @@ -27,6 +27,7 @@ \RequirePackage{enumitem} \RequirePackage{hyperref} \RequirePackage{xcolor} +\usetikzlibrary{positioning,backgrounds} %infobox \RequirePackage[many]{tcolorbox} @@ -43,6 +44,7 @@ \definecolor{javagreen}{rgb}{0.25,0.5,0.35} % comments \definecolor{javapurple}{rgb}{0.5,0,0.35} % keywords \definecolor{javadocblue}{rgb}{0.25,0.35,0.75} +\definecolor{javablue}{rgb}{0.0,0.0,1.0} \definecolor{unimportentgrey}{rgb}{0.6,0.6,0.6} %%%%%%%%%%%% % listings % @@ -61,6 +63,7 @@ keywordstyle=\color{javapurple}\bfseries, stringstyle=\color{javared}, commentstyle=\color{javagreen}, + identifierstyle=\color{javablue}, morecomment=[s][\color{javadocblue}]{/**}{*/}, numbers=left, numberstyle=\footnotesize\color{black}, @@ -71,7 +74,8 @@ showstringspaces=false, frame=single, breaklines=true, - postbreak=\mbox{\textcolor{unimportentgrey}{$\hookrightarrow$}\space} + postbreak=\mbox{\textcolor{unimportentgrey}{$\hookrightarrow$}\space}, + escapechar=§ } %%%%%%%%%%%%%% From a5e809990054ab4129a9ddab368d80ab070b037f Mon Sep 17 00:00:00 2001 From: ruffdd Date: Mon, 21 Sep 2020 13:29:57 +0200 Subject: [PATCH 10/23] fix numbering pasuing in lstlistings --- sheets/1/exercise-3.tex | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/sheets/1/exercise-3.tex b/sheets/1/exercise-3.tex index 6bbd12a8..9a602e38 100644 --- a/sheets/1/exercise-3.tex +++ b/sheets/1/exercise-3.tex @@ -11,7 +11,7 @@ \textbf{[1]} Eine Operationen hat immer einen frei wählbaren Namen, vor dem entweder void oder eine Klasse steht. Eventuell gefolgt von Parametern. Die immer als Klasse und dann ein Name geschreiben werden und wenn man mehrere braucht kann man sie mit , getrennt auflisten. Nach den() folgen {}, die einen Codeblock umschließen. - let\origthelstnumber\thelstnumber + \let\origthelstnumber\thelstnumber \makeatletter \newcommand*\Suppressnumber{% \lst@AddToHook{OnNewLine}{% @@ -27,9 +27,10 @@ } \begin{lstlisting}[title={Beispiel für eine Klasse}] - class§\tikz[remember picture] \node [] (a) {};§ BeispielKlasse{§\Suppresnumber§ + class§\tikz[remember picture] \node [] (a) {};§ BeispielKlasse{§\Suppressnumber§ -§\ReacktivateNumber§ +§\Reactivatenumber§ + §\colorbox{green}{class}§ void setGame(Game oldGame, Main oldMain){ } From d982c00d938fd7a09f7d45c981b37be275001c67 Mon Sep 17 00:00:00 2001 From: ruffdd Date: Mon, 21 Sep 2020 16:18:09 +0200 Subject: [PATCH 11/23] add Suppressnumber and Reactivatenumber commands --- sheets/vorkurs.cls | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/sheets/vorkurs.cls b/sheets/vorkurs.cls index b40f4d4f..12697598 100644 --- a/sheets/vorkurs.cls +++ b/sheets/vorkurs.cls @@ -78,6 +78,23 @@ escapechar=§ } + +\let\origthelstnumber\thelstnumber + \makeatletter + \newcommand*\Suppressnumber{ + \lst@AddToHook{OnNewLine}{ + \let\thelstnumber\relax + \advance\c@lstnumber-\@ne\relax + } + } + + \newcommand*\Reactivatenumber{ + \lst@AddToHook{OnNewLine}{ + \let\thelstnumber\origthelstnumber + \advance\c@lstnumber\@ne\relax} + } + + %%%%%%%%%%%%%% % Main Title % %%%%%%%%%%%%%% From a7342a5c46aa6fa23d1bb02eeac5ddab4c750222 Mon Sep 17 00:00:00 2001 From: ruffdd Date: Mon, 21 Sep 2020 18:37:31 +0200 Subject: [PATCH 12/23] improved exercise 3 with examples --- sheets/1/exercise-3.tex | 128 ++++++++++++++++++---------------------- sheets/vorkurs.cls | 2 + 2 files changed, 61 insertions(+), 69 deletions(-) diff --git a/sheets/1/exercise-3.tex b/sheets/1/exercise-3.tex index 9a602e38..67d30995 100644 --- a/sheets/1/exercise-3.tex +++ b/sheets/1/exercise-3.tex @@ -6,84 +6,74 @@ \begin{enumerate} \item \textbf{[1]} Eine Klasse hat immer am Anfang das Schlüsselwort class, gefolgt von einem frei wählbaren Namen. Darauf folgen die \{ \}, die den gesamten Inhalt der Klasse umschließen. - Zum inhalt einer Klasse gehören \textbf{[1]}Attribute und Operationen + Zum inhalt einer Klasse gehören \textbf{[1]}Attribute und Operationen - \textbf{[1]} Eine Operationen hat immer einen frei wählbaren Namen, vor dem entweder void oder eine Klasse steht. Eventuell gefolgt von Parametern. Die immer als Klasse und dann ein Name geschreiben werden und wenn man mehrere braucht kann man sie mit , getrennt auflisten. - Nach den() folgen {}, die einen Codeblock umschließen. + \textbf{[1]} Eine Operationen hat immer einen frei wählbaren Namen, vor dem entweder void oder eine Klasse steht. Eventuell gefolgt von Parametern. Die immer als Klasse und dann ein Name geschreiben werden und wenn man mehrere braucht kann man sie mit , getrennt auflisten. + Nach den() folgen {}, die einen Codeblock umschließen. - \let\origthelstnumber\thelstnumber - \makeatletter - \newcommand*\Suppressnumber{% - \lst@AddToHook{OnNewLine}{% - \let\thelstnumber\relax% - \advance\c@lstnumber-\@ne\relax% - }% - } - - \newcommand*\Reactivatenumber{% - \lst@AddToHook{OnNewLine}{% - \let\thelstnumber\origthelstnumber% - \advance\c@lstnumber\@ne\relax}% - } - - \begin{lstlisting}[title={Beispiel für eine Klasse}] - class§\tikz[remember picture] \node [] (a) {};§ BeispielKlasse{§\Suppressnumber§ + \begin{lstlisting}[title={\textbf{Beispiel für eine Klasse}}] +class§\tikz[remember picture] \node [] (a) {};§ { -§\Reactivatenumber§ - §\colorbox{green}{class}§ - void setGame(Game oldGame, Main oldMain){ - - } + void ( ){ - Game getGame(){ - - } - - } + } +} \end{lstlisting} - \begin{tikzpicture}[remember picture,overlay] - \node [below right= 0cm and -2cm of a] (A) {$\overbrace{\text{keyword der Klasse}}$}; - \begin{scope}[on background layer={color=green}] - \fill (0,0) rectangle (1,1); - \end{scope} - \end{tikzpicture} + Alle in < > geschriebenen Wörter sind Platzhalter für das was sie beschreiben. Jeder kann mit etwas anderem Ausgefüllt werden, auch wenn sie gleich heißen. - \begin{Infobox}{Namen} - Freiwählbare namen, müssen trotzdem ein paar Regeln Folgen - \begin{itemize} - \item Sie dürfen nicht gleich wie ein Schlüsselwort(z.B. class oder new) heißen. - \item Sie dürfen nicht mit einer Ziffer beginnen. - \item Sie dürfen kein Leerzeichen beinhalten. - \end{itemize} - \end{Infobox} + \begin{Infobox}{Namen} + Freiwählbare Namen, müssen trotzdem ein paar Regeln Folgen + \begin{itemize} + \item Sie dürfen nicht gleich wie ein Schlüsselwort(z.B. class oder new) heißen. + \item Sie dürfen nicht mit einer Ziffer beginnen. + \item Sie dürfen kein Leerzeichen beinhalten. + \end{itemize} + \end{Infobox} \item \textbf{[1]} Ein Befehl endet immer mit einem ; und muss in einem Codeblock stehen. \item \textbf{[2]} Das erzeugen eines Objekts wird mit dem Schlüsselwort new eingeführt. Darauffolgt der Name der Klasse und (). Manchmal werden in die () noch Argumente geschreiben, mit Dingen die das Objekt von Anfang an braucht. - \item \textbf{[2]} Wenn wir ein Objekt länger als nur einmal brauchen müssen wir uns dieses Merken. Dazu verwenden wir eine Variable. Um eine zu erstellen. Schreiben wir zuerst die Klasse zu der das Objekt gehört. Gefolgt von dem frei wälbaren Namen den die Variable haben soll. Mit einem = lassen wir sie dann auf ein Objekt zeigen, indem wir entweder das new Objekt() direkt dahinter schreiben oder eine andere - Variable die bereits auf ein Objekt zeigt. - \begin{Infobox}[Attribute] - Wenn man eine Variable in den Codeblock einer Operation schreibt, dann kann man sie nur in der Operation verwenden. - Wenn man sie aber außerhalb der Operation, direkt in die Klasse schreiben, wird sie nicht Variable sondern Attribut genannt und kann von allen Operation die zu der Klasse gehören verwendet werden.\\ - Das ist außerdem eine Ausnahme bei der ein Befehl nicht in dem Codeblock einer Operation steht. - \end{Infobox} + \item \textbf{[2]} Wenn wir ein Objekt länger als nur einmal brauchen müssen wir uns dieses Merken. Dazu verwenden wir eine Variable. Um eine zu erstellen. Schreiben wir zuerst die Klasse zu der das Objekt gehört. Gefolgt von dem frei wälbaren Namen den die Variable haben soll. Mit einem = lassen wir sie dann auf ein Objekt zeigen, indem wir entweder das new Objekt() direkt dahinter schreiben oder eine andere + Variable die bereits auf ein Objekt zeigt. + + \begin{Infobox}[Attribute] + Wenn man eine Variable in den Codeblock einer Operation schreibt, dann kann man sie nur in der Operation verwenden. + Wenn man sie aber außerhalb der Operation, direkt in die Klasse schreiben, wird sie nicht Variable sondern Attribut genannt und kann von allen Operation die zu der Klasse gehören verwendet werden.\\ + Das ist außerdem eine Ausnahme bei der ein Befehl nicht in dem Codeblock einer Operation steht. + \end{Infobox} \item \textbf{[2]} Es wurde ja bereits erwähnt, dass Klassen Operationen haben. Außerdem, dass sie "alle" Befehle beinhalten. Wenn man diese Aufrufen möchte: schreibt man den namen der Variable die auf das Objekt zeigt oder auch direkt einfach den Initializer. Dann einen . gefolgt von dem Namen der Operation und (). Manche geben aber auch ein Objekt zurück, dadurch kann man gleich einen Operator davon Aufrufen oder man speichert sich es, mit einer variable zwischen. Außerdem haben sie manchmal Parameter, wie beim Initatiliesieren. - \begin{Infobox}[Operatoren] - Operatoren erfüllen zwei Funktionen. Man kann sie dazu verwenden um Informationen von einem Objekt zu bekommen. In dem Fall werden sie auch Abfragen oder Querries genannt. - Oder man verwenden sie um etwas zu tun. In dem Fall werden sie Kommandos oder commands gennant. - \end{Infobox} + \begin{lstlisting}[title=\textbf{Commando Syntax},firstnumber=4] + (); + new (); + new ().(); + = new (); + .(); + \end{lstlisting} + \begin{Infobox}[Operatoren] + Operatoren erfüllen zwei Funktionen. Man kann sie dazu verwenden um Informationen von einem Objekt zu bekommen. In dem Fall werden sie auch Abfragen oder Querries genannt. + Oder man verwenden sie um etwas zu tun. In dem Fall werden sie Kommandos oder commands gennant. + \end{Infobox} \item \textbf{[2]} Normalerweiße hat alles was im Programmcode steht eine Aufgabe. Aber was machen wir wenn wir normallen text in den code schreiben wollen. Der einfach nur ein Kommentar für Menschen ist?\\ - In so einen Fall kann man ein Text als Kommentar markieren. In den man entweder // schreibt. Dann ist alles danach, was in der Zeile ist, ein Kommentar oder man schreibt /* vor und */ nach den Kommentar. Dadurch kann man auch ein mehrzeiligen kommentar schreiben. + In so einen Fall kann man ein Text als Kommentar markieren. In den man entweder // schreibt. Dann ist alles danach, was in der Zeile ist, ein Kommentar oder man schreibt /* vor und */ nach den Kommentar. Dadurch kann man auch ein mehrzeiligen kommentar schreiben. + \begin{lstlisting}[title=\textbf{Kommentar Syntax},firstnumber=11] +// + // +/* + + Aber man sollte es nicht übertreiben> +*/ + \end{lstlisting} \item Bei der nächsten Aufgabe sollt ihr keine Beispiele finden. Sondern einer aus der Gruppe macht eine veränderung am Code. Die gegen die Syntax Regeln verstößt. Das erkennt Eclipse und zeigt euch eine Fehlermeldung an. Diese soll nun der Rest der Gruppe lesen und versuchen herauszufinden Was geändert wurde und wie es richtig geht.\\ - Vorschläge was geändert werden sollte: - \begin{itemize} - \item Lösch ein Semikolon - \item Lösch eine Klammer oder Füge ein Hinzu. Sowohl ( als auch \{ - \item Mach aus einem Großbuchstaben einen klein Buchstaben oder umgekehrt. Versucht es mit Namen und auch mit Schlüsselworten wie class oder new. - \item Ersetz ein " durch ein '. - \item Lass ein " oder ein weg. - \item verschiebe eine Zeile aus der main in den Bereich außerhalb der main. - \item Initalisiere ein Objekt von einer Klasse die nicht existiert. - \item Bennen etwas (nicht main) um und verwende im neuem Namen ein Leerzeichen. - \item Lösche ein new. - \item (Optional) finde selber etwas was nicht erlaubt ist. - \end{itemize} + Vorschläge was geändert werden sollte: + \begin{itemize} + \item Lösch ein Semikolon + \item Lösch eine Klammer oder Füge ein Hinzu. Sowohl ( als auch \{ + \item Mach aus einem Großbuchstaben einen klein Buchstaben oder umgekehrt. Versucht es mit Namen und auch mit Schlüsselworten wie class oder new. + \item Ersetz ein " durch ein '. + \item Lass ein " oder ein weg. + \item verschiebe eine Zeile aus der main in den Bereich außerhalb der main. + \item Initalisiere ein Objekt von einer Klasse die nicht existiert. + \item Bennen etwas (nicht main) um und verwende im neuem Namen ein Leerzeichen. + \item Lösche ein new. + \item (Optional) finde selber etwas was nicht erlaubt ist. + \end{itemize} \end{enumerate} diff --git a/sheets/vorkurs.cls b/sheets/vorkurs.cls index 12697598..3e40218b 100644 --- a/sheets/vorkurs.cls +++ b/sheets/vorkurs.cls @@ -14,6 +14,7 @@ % Packages % %%%%%%%%%%%% \RequirePackage[ngerman]{babel} +\usepackage[T1]{fontenc} \RequirePackage[utf8]{inputenc} \RequirePackage{tikz} \RequirePackage{minibox} @@ -64,6 +65,7 @@ stringstyle=\color{javared}, commentstyle=\color{javagreen}, identifierstyle=\color{javablue}, + keywordstyle=[2]{\color{javared}}, morecomment=[s][\color{javadocblue}]{/**}{*/}, numbers=left, numberstyle=\footnotesize\color{black}, From e40ec022bd6b95ac192c579b7abb8db3d334c676 Mon Sep 17 00:00:00 2001 From: ruffdd Date: Mon, 21 Sep 2020 19:07:33 +0200 Subject: [PATCH 13/23] ignore alls .log files --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 600d2d33..c7d02517 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -.vscode \ No newline at end of file +.vscode +*.log \ No newline at end of file From 8c79b442a8b2e756c2fc1e3e37576a7db18c4d14 Mon Sep 17 00:00:00 2001 From: ruffdd Date: Mon, 28 Sep 2020 16:19:14 +0200 Subject: [PATCH 14/23] implement fixes the fixes are mostly based on the comments regarding Pullrequest #54 --- sheets/1/exercise-3.tex | 61 ++++++++++++++++++++++++++++------------- 1 file changed, 42 insertions(+), 19 deletions(-) diff --git a/sheets/1/exercise-3.tex b/sheets/1/exercise-3.tex index 67d30995..e5cc9436 100644 --- a/sheets/1/exercise-3.tex +++ b/sheets/1/exercise-3.tex @@ -5,34 +5,46 @@ In jeder teilaufgabe wir ein bestimmter teil von Java erklärt und du sollst ein Beispiel aus Aufgabe 1 finden. In \textbf{[]} steht immer wie viele verschiedenen Beispiele du finden sollst. \begin{enumerate} - \item \textbf{[1]} Eine Klasse hat immer am Anfang das Schlüsselwort class, gefolgt von einem frei wählbaren Namen. Darauf folgen die \{ \}, die den gesamten Inhalt der Klasse umschließen. + \item \textbf{[1]} Eine Klasse hat immer am Anfang das Schlüsselwort \lstinline{class}, gefolgt von einem frei wählbaren Namen. Darauf folgen die \{ \}, die den gesamten Inhalt der Klasse umschließen. Zum inhalt einer Klasse gehören \textbf{[1]}Attribute und Operationen - \textbf{[1]} Eine Operationen hat immer einen frei wählbaren Namen, vor dem entweder void oder eine Klasse steht. Eventuell gefolgt von Parametern. Die immer als Klasse und dann ein Name geschreiben werden und wenn man mehrere braucht kann man sie mit , getrennt auflisten. - Nach den() folgen {}, die einen Codeblock umschließen. + \textbf{[1]} Eine Operationen hat immer einen frei wählbaren Namen, vor dem entweder void oder eine Klasse steht. Eventuell gefolgt von Parametern. Die immer als Typ-Name (Klassen definieren Typen, Also kann man hier einfach den Namen einer Bestehenden Klasse hinschreiben) und dann ein neuer Name für die Operation, geschreiben werden und wenn man mehrere braucht kann man sie mit \lstinline{,} getrennt auflisten. + Nach den \lstinline{()} folgen \texttt{ \{\} }, die einen Codeblock umschließen. - \begin{lstlisting}[title={\textbf{Beispiel für eine Klasse}}] -class§\tikz[remember picture] \node [] (a) {};§ { + \begin{lstlisting}[title={\textbf{Klassen Beispiel}}] +class { void ( ){ } } \end{lstlisting} + \begin{lstlisting}[title={\textbf{Klassen Syntax}}] +class PDFElement{ + + void setFirstRowNumber(Integer rowNumber){ + + } +} + \end{lstlisting} Alle in < > geschriebenen Wörter sind Platzhalter für das was sie beschreiben. Jeder kann mit etwas anderem Ausgefüllt werden, auch wenn sie gleich heißen. \begin{Infobox}{Namen} - Freiwählbare Namen, müssen trotzdem ein paar Regeln Folgen + Die frei wählbare Namen, müssen trotzdem ein paar Regeln Folgen \begin{itemize} - \item Sie dürfen nicht gleich wie ein Schlüsselwort(z.B. class oder new) heißen. + \item Sie dürfen nicht gleich wie ein Schlüsselwort(z.B. \lstinline{class} oder \lstinline{new} ) heißen. \item Sie dürfen nicht mit einer Ziffer beginnen. \item Sie dürfen kein Leerzeichen beinhalten. \end{itemize} + \end{Infobox} \item \textbf{[1]} Ein Befehl endet immer mit einem ; und muss in einem Codeblock stehen. \item \textbf{[2]} Das erzeugen eines Objekts wird mit dem Schlüsselwort new eingeführt. Darauffolgt der Name der Klasse und (). Manchmal werden in die () noch Argumente geschreiben, mit Dingen die das Objekt von Anfang an braucht. + \begin{lstlisting}[title=\textbf{Kommando Syntax},firstnumber=5] + new (); + \end{lstlisting} \item \textbf{[2]} Wenn wir ein Objekt länger als nur einmal brauchen müssen wir uns dieses Merken. Dazu verwenden wir eine Variable. Um eine zu erstellen. Schreiben wir zuerst die Klasse zu der das Objekt gehört. Gefolgt von dem frei wälbaren Namen den die Variable haben soll. Mit einem = lassen wir sie dann auf ein Objekt zeigen, indem wir entweder das new Objekt() direkt dahinter schreiben oder eine andere - Variable die bereits auf ein Objekt zeigt. + Variable die bereits einen Wert hat. \begin{Infobox}[Attribute] Wenn man eine Variable in den Codeblock einer Operation schreibt, dann kann man sie nur in der Operation verwenden. @@ -40,27 +52,35 @@ Das ist außerdem eine Ausnahme bei der ein Befehl nicht in dem Codeblock einer Operation steht. \end{Infobox} \item \textbf{[2]} Es wurde ja bereits erwähnt, dass Klassen Operationen haben. Außerdem, dass sie "alle" Befehle beinhalten. Wenn man diese Aufrufen möchte: schreibt man den namen der Variable die auf das Objekt zeigt oder auch direkt einfach den Initializer. Dann einen . gefolgt von dem Namen der Operation und (). Manche geben aber auch ein Objekt zurück, dadurch kann man gleich einen Operator davon Aufrufen oder man speichert sich es, mit einer variable zwischen. Außerdem haben sie manchmal Parameter, wie beim Initatiliesieren. - \begin{lstlisting}[title=\textbf{Commando Syntax},firstnumber=4] + \begin{lstlisting}[title=\textbf{Kommando Syntax},firstnumber=4] (); new (); - new ().(); + new ().(); = new (); - .(); + .(); \end{lstlisting} - \begin{Infobox}[Operatoren] - Operatoren erfüllen zwei Funktionen. Man kann sie dazu verwenden um Informationen von einem Objekt zu bekommen. In dem Fall werden sie auch Abfragen oder Querries genannt. - Oder man verwenden sie um etwas zu tun. In dem Fall werden sie Kommandos oder commands gennant. + \begin{lstlisting}[title=\textbf{Kommando Beispiel},firstnumber=4] + String exampleText = new TextLoader("Kommando") + PDFElement commandExmaple = new CodeBox("Kommando Syntax"); + commandExmaple.setFirstRowNumber(4); + \end{lstlisting} + \begin{Infobox}[Operationen] + Operatoren erfüllen zwei Funktionen. Man kann sie dazu verwenden um Informationen von einem Objekt zu bekommen. + In dem Fall werden sie auch Abfragen (oder engl. Querries) genannt. + Oder man verwenden sie um etwas zu tun. In dem Fall werden sie Kommandos (oder engl. commands) gennant. \end{Infobox} + \item \textbf{[2]} Normalerweiße hat alles was im Programmcode steht eine Aufgabe. Aber was machen wir wenn wir normallen text in den code schreiben wollen. Der einfach nur ein Kommentar für Menschen ist?\\ - In so einen Fall kann man ein Text als Kommentar markieren. In den man entweder // schreibt. Dann ist alles danach, was in der Zeile ist, ein Kommentar oder man schreibt /* vor und */ nach den Kommentar. Dadurch kann man auch ein mehrzeiligen kommentar schreiben. + In so einen Fall kann man ein Text als Kommentar markieren. In den man entweder \lstinline[breaklines=false]{//} schreibt. Dann ist alles danach, was in der Zeile ist, ein Kommentar. + Alternativ kann man den kommentar auch mit \lstinline[breaklines=false]{/* */} umschließen. Dadurch kann man auch ein mehrzeiligen kommentar schreiben. Dabei ist es konnvention, jede Zeile mit einem \textcolor{javagreen}{\texttt{*}} zu beginnen. \begin{lstlisting}[title=\textbf{Kommentar Syntax},firstnumber=11] // // /* - - Aber man sollte es nicht übertreiben> -*/ + * + * Aber man sollte es nicht übertreiben> + */ \end{lstlisting} \item Bei der nächsten Aufgabe sollt ihr keine Beispiele finden. Sondern einer aus der Gruppe macht eine veränderung am Code. Die gegen die Syntax Regeln verstößt. Das erkennt Eclipse und zeigt euch eine Fehlermeldung an. Diese soll nun der Rest der Gruppe lesen und versuchen herauszufinden Was geändert wurde und wie es richtig geht.\\ Vorschläge was geändert werden sollte: @@ -76,4 +96,7 @@ \item Lösche ein new. \item (Optional) finde selber etwas was nicht erlaubt ist. \end{itemize} + \begin{Infobox}[main] + Die main muss immer main heißen. Denn sie ist der Startpunkt, also der Erste Code der ausgeführt wird wenn das Programmstartet. Ohne main kannst du kein Programm starten. + \end{Infobox} \end{enumerate} From 3725753744895e935e1c8d5ce4bdc1249fa82cc4 Mon Sep 17 00:00:00 2001 From: ruffdd Date: Mon, 28 Sep 2020 17:30:03 +0200 Subject: [PATCH 15/23] resolve comment from @buehlefs for PR #54 --- sheets/1/exercise-4.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sheets/1/exercise-4.tex b/sheets/1/exercise-4.tex index 6e6335f4..fc835bf1 100644 --- a/sheets/1/exercise-4.tex +++ b/sheets/1/exercise-4.tex @@ -16,7 +16,7 @@ Starte das Spiel in Eclipse, mit dem kleinen Play-Button oben in der Werkzeugleiste und schau dich ein wenig im Fenster um das aufgeht. - \item Nun erweitern wir den Konstruktor von \texttt{Game} um einen Parameter. Erweitere den den Konstruktor um ein TaskVerifier Objekt, so wie unten im Bild zu sehen. Starte nun das Spielfenster neu. Was verändert sich im Spielfenster? Finde den Task Status und drücke den Refresh Button. + \item Nun erweitern wir den Konstruktor von \texttt{Game} um einen Parameter. Erweitere den Konstruktor um ein TaskVerifier Objekt, so wie unten im Bild zu sehen. Starte nun das Spielfenster neu. Was verändert sich im Spielfenster? Finde den "Task Status" und drücke den Refresh Button. \begin{lstlisting} Game myGame = new Game("Hello World", new DemoTask(), From 8fe4665237d72045fef8cde8317f0482b75dc06a Mon Sep 17 00:00:00 2001 From: ruffdd Date: Mon, 28 Sep 2020 17:33:21 +0200 Subject: [PATCH 16/23] resolve comment from @buehlefs for PR #54 --- sheets/1/exercise-5.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sheets/1/exercise-5.tex b/sheets/1/exercise-5.tex index fb27a1b9..5942515c 100644 --- a/sheets/1/exercise-5.tex +++ b/sheets/1/exercise-5.tex @@ -22,11 +22,11 @@ \end{enumerate} \begin{Infobox}[Autocompletion] - Sobald wir ein Objekt instanziiert haben und in eine Variable gespeichert haben, können wir hinter den Variablennamen einen Punkte '.' eingeben. Jetzt wird eine Liste von allen möglichen Attributen und Operationen angezeigt, die zu dem Objekt gehören. Somit kann man recht schnell alle möglichen Operationen durchsuchen, die mit diesem Objekt möglich sind. + Sobald wir ein Objekt instanziiert haben und in eine Variable gespeichert haben, können wir hinter den Variablennamen einen Punkt '.' eingeben. Jetzt wird eine Liste von allen möglichen Attributen und Operationen angezeigt, die zu dem Objekt gehören. Somit kann man recht schnell alle möglichen Operationen durchsuchen, die mit diesem Objekt möglich sind. \end{Infobox} \begin{enumerate} \setcounter{enumi}{3} - \item Jetzt da uns weitere Optionen zur Verfügung stehen, besteht die nächste Aufgabe darin 20 Münzen in einer Zelle zu platzieren. Verwende hierzu ein Objekt der \texttt{CoinFactory} Klasse und eine der Methoden, die du in Aufgabe c) gefunden hast. Erstelle dazu das Objekt mit \texttt{new CoinFactory()} und übergebe es als Parameter an die gefundene Methode. Wenn dir nicht klar ist wie die Methoden genau funktionieren, lies dir die Dokumentation all dieser Methoden nochmal durch. + \item Jetzt da uns weitere Optionen zur Verfügung stehen, besteht die nächste Aufgabe darin 20 Münzen in einer Zelle zu platzieren. Verwende hierzu ein Objekt der \texttt{CoinFactory} Klasse und eines der Kommandos, die du in Aufgabe c) gefunden hast. Erstelle dazu das Objekt mit \texttt{new CoinFactory()} und übergebe es als Parameter an die gefundene Kommando. Wenn dir nicht klar ist wie dieses Kommando genau funktionieren, lies dir die Dokumentation all dieser Kommandos nochmal durch. \end{enumerate} From d00d88628945eaaa738f5a2c134e8da947e35270 Mon Sep 17 00:00:00 2001 From: ruffdd Date: Mon, 28 Sep 2020 17:57:23 +0200 Subject: [PATCH 17/23] add q command add a command for german quoation --- sheets/vorkurs.cls | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sheets/vorkurs.cls b/sheets/vorkurs.cls index 3e40218b..3f203a78 100644 --- a/sheets/vorkurs.cls +++ b/sheets/vorkurs.cls @@ -96,6 +96,10 @@ \advance\c@lstnumber\@ne\relax} } +%%%%%%%% +% Misc % +%%%%%%%% +\newcommand{\q}[1]{\glqq#1\grqq\ } %German quotation %%%%%%%%%%%%%% % Main Title % From 83119eae2adef521ab5644145fd81a023b740fa4 Mon Sep 17 00:00:00 2001 From: ruffdd Date: Mon, 28 Sep 2020 19:21:59 +0200 Subject: [PATCH 18/23] partily fixed comments from PR #54 --- sheets/1/exercise-3.tex | 42 +++++++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/sheets/1/exercise-3.tex b/sheets/1/exercise-3.tex index e5cc9436..b37e0278 100644 --- a/sheets/1/exercise-3.tex +++ b/sheets/1/exercise-3.tex @@ -36,22 +36,28 @@ \item Sie dürfen nicht mit einer Ziffer beginnen. \item Sie dürfen kein Leerzeichen beinhalten. \end{itemize} - + Außerdem gibt es noch den Styleguide. Der Vorgibt wie Java code auszusehen um besser lesbar zu sein. + \begin{itemize} + \item Als ersatz für Nicht verwendetet Leerzeichen schreibt man einfach das nächste Wort Groß. Beispiel: \q{create green box} \textrightarrow \q{createGreenBox} + \item Klassen sind in Java quasi die Nomen und sollten Groß geschreiben werden. Alles andere Klein. + \item Namen sollten aus ganzen Wörtern bestehen. Ausgenommen es ist eine sehr übliche bezeichnung wie \texttt{URL} oder \texttt{HTML}.\\ + Außerdem wird bei manchen Variablen einzelne buchstaben wie \texttt{i,j,k,m,n,c,d,e} verwendet. Solche stellen kommen Später. + \item Operationen sollten Verben sein. + \item Querries beginnen häufig mit \texttt{get} + \item Kommandos beginnen häufig mit \texttt{set}, wenn sie dazu dienen direkt eine Variable/Attribut zu verändern. Komplexere in der Regeln nicht. + \end{itemize} \end{Infobox} \item \textbf{[1]} Ein Befehl endet immer mit einem ; und muss in einem Codeblock stehen. \item \textbf{[2]} Das erzeugen eines Objekts wird mit dem Schlüsselwort new eingeführt. Darauffolgt der Name der Klasse und (). Manchmal werden in die () noch Argumente geschreiben, mit Dingen die das Objekt von Anfang an braucht. - \begin{lstlisting}[title=\textbf{Kommando Syntax},firstnumber=5] + \begin{lstlisting}[title=\textbf{Konstruktor Syntax},firstnumber=5] new (); \end{lstlisting} \item \textbf{[2]} Wenn wir ein Objekt länger als nur einmal brauchen müssen wir uns dieses Merken. Dazu verwenden wir eine Variable. Um eine zu erstellen. Schreiben wir zuerst die Klasse zu der das Objekt gehört. Gefolgt von dem frei wälbaren Namen den die Variable haben soll. Mit einem = lassen wir sie dann auf ein Objekt zeigen, indem wir entweder das new Objekt() direkt dahinter schreiben oder eine andere Variable die bereits einen Wert hat. - - \begin{Infobox}[Attribute] - Wenn man eine Variable in den Codeblock einer Operation schreibt, dann kann man sie nur in der Operation verwenden. - Wenn man sie aber außerhalb der Operation, direkt in die Klasse schreiben, wird sie nicht Variable sondern Attribut genannt und kann von allen Operation die zu der Klasse gehören verwendet werden.\\ - Das ist außerdem eine Ausnahme bei der ein Befehl nicht in dem Codeblock einer Operation steht. - \end{Infobox} - \item \textbf{[2]} Es wurde ja bereits erwähnt, dass Klassen Operationen haben. Außerdem, dass sie "alle" Befehle beinhalten. Wenn man diese Aufrufen möchte: schreibt man den namen der Variable die auf das Objekt zeigt oder auch direkt einfach den Initializer. Dann einen . gefolgt von dem Namen der Operation und (). Manche geben aber auch ein Objekt zurück, dadurch kann man gleich einen Operator davon Aufrufen oder man speichert sich es, mit einer variable zwischen. Außerdem haben sie manchmal Parameter, wie beim Initatiliesieren. + \begin{lstlisting}[title=\textbf{Variablen Syntax}] + + \end{lstlisting} + \item \textbf{[2]} Es wurde ja bereits erwähnt, dass Klassen Operationen haben. Außerdem, dass sie \glqq alle\grqq\ Befehle beinhalten. Wenn man diese Aufrufen möchte: schreibt man den namen der Variable die auf das Objekt zeigt oder auch direkt einfach den Initializer. Dann einen . gefolgt von dem Namen der Operation und (). Manche geben aber auch ein Objekt zurück, dadurch kann man gleich einen Operator davon Aufrufen oder man speichert sich es, mit einer variable zwischen. Außerdem haben sie manchmal Parameter, wie beim Initatiliesieren. \begin{lstlisting}[title=\textbf{Kommando Syntax},firstnumber=4] (); new (); @@ -60,9 +66,9 @@ .(); \end{lstlisting} \begin{lstlisting}[title=\textbf{Kommando Beispiel},firstnumber=4] - String exampleText = new TextLoader("Kommando") - PDFElement commandExmaple = new CodeBox("Kommando Syntax"); - commandExmaple.setFirstRowNumber(4); + String exampleText = new TextLoader("Kommando") + PDFElement commandExmaple = new CodeBox("Kommando Syntax"); + commandExmaple.setFirstRowNumber(4); \end{lstlisting} \begin{Infobox}[Operationen] Operatoren erfüllen zwei Funktionen. Man kann sie dazu verwenden um Informationen von einem Objekt zu bekommen. @@ -86,17 +92,17 @@ Vorschläge was geändert werden sollte: \begin{itemize} \item Lösch ein Semikolon - \item Lösch eine Klammer oder Füge ein Hinzu. Sowohl ( als auch \{ + \item Lösch eine Klammer oder Füge eine Hinzu. Sowohl \lstinline{(} als auch \lstinline{{} \item Mach aus einem Großbuchstaben einen klein Buchstaben oder umgekehrt. Versucht es mit Namen und auch mit Schlüsselworten wie class oder new. - \item Ersetz ein " durch ein '. - \item Lass ein " oder ein weg. + \item Ersetz ein \lstinline{"} durch ein \lstinline{'}. + \item Lass ein \lstinline{"} oder ein \lstinline{'} weg. \item verschiebe eine Zeile aus der main in den Bereich außerhalb der main. \item Initalisiere ein Objekt von einer Klasse die nicht existiert. - \item Bennen etwas (nicht main) um und verwende im neuem Namen ein Leerzeichen. - \item Lösche ein new. + \item Bennen etwas (nicht \lstinline{main}) um und verwende im neuem Namen ein Leerzeichen. + \item Lösche ein \lstinline{new}. \item (Optional) finde selber etwas was nicht erlaubt ist. \end{itemize} \begin{Infobox}[main] - Die main muss immer main heißen. Denn sie ist der Startpunkt, also der Erste Code der ausgeführt wird wenn das Programmstartet. Ohne main kannst du kein Programm starten. + Die \lstinline{main} muss immer main heißen. Denn sie ist der Startpunkt, also der Erste Code der ausgeführt wird wenn das Programmstartet. Ohne main kannst du kein Programm starten. \end{Infobox} \end{enumerate} From 4f3ce38547436b00a03aa07dae1d9f74b7036127 Mon Sep 17 00:00:00 2001 From: David Ruff Date: Mon, 5 Oct 2020 09:42:17 +0200 Subject: [PATCH 19/23] implement proposed change of @buehlefs Co-authored-by: buehlefs --- sheets/1/exercise-3.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sheets/1/exercise-3.tex b/sheets/1/exercise-3.tex index b37e0278..f220e082 100644 --- a/sheets/1/exercise-3.tex +++ b/sheets/1/exercise-3.tex @@ -36,7 +36,7 @@ \item Sie dürfen nicht mit einer Ziffer beginnen. \item Sie dürfen kein Leerzeichen beinhalten. \end{itemize} - Außerdem gibt es noch den Styleguide. Der Vorgibt wie Java code auszusehen um besser lesbar zu sein. + Außerdem gibt es noch den Styleguide. Der Vorgibt wie Java code aussehen sollte um besser lesbar zu sein. \begin{itemize} \item Als ersatz für Nicht verwendetet Leerzeichen schreibt man einfach das nächste Wort Groß. Beispiel: \q{create green box} \textrightarrow \q{createGreenBox} \item Klassen sind in Java quasi die Nomen und sollten Groß geschreiben werden. Alles andere Klein. From 518c7943ee5cd4891a03d415f9b40ddd9ff0fb1f Mon Sep 17 00:00:00 2001 From: David Ruff Date: Mon, 5 Oct 2020 09:47:16 +0200 Subject: [PATCH 20/23] fix rechtschreib fehler Co-authored-by: buehlefs --- sheets/1/exercise-3.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sheets/1/exercise-3.tex b/sheets/1/exercise-3.tex index f220e082..a38d2260 100644 --- a/sheets/1/exercise-3.tex +++ b/sheets/1/exercise-3.tex @@ -43,7 +43,7 @@ \item Namen sollten aus ganzen Wörtern bestehen. Ausgenommen es ist eine sehr übliche bezeichnung wie \texttt{URL} oder \texttt{HTML}.\\ Außerdem wird bei manchen Variablen einzelne buchstaben wie \texttt{i,j,k,m,n,c,d,e} verwendet. Solche stellen kommen Später. \item Operationen sollten Verben sein. - \item Querries beginnen häufig mit \texttt{get} + \item Queries beginnen häufig mit \texttt{get} \item Kommandos beginnen häufig mit \texttt{set}, wenn sie dazu dienen direkt eine Variable/Attribut zu verändern. Komplexere in der Regeln nicht. \end{itemize} \end{Infobox} From 726f2c96bb4db98493a6403468d2c18c92dc43a9 Mon Sep 17 00:00:00 2001 From: David Ruff Date: Mon, 5 Oct 2020 09:48:29 +0200 Subject: [PATCH 21/23] =?UTF-8?q?kleine=20=C3=A4nderung=20zur=20verst?= =?UTF-8?q?=C3=A4ndlichkeit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: buehlefs --- sheets/1/exercise-3.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sheets/1/exercise-3.tex b/sheets/1/exercise-3.tex index a38d2260..b4f41ec2 100644 --- a/sheets/1/exercise-3.tex +++ b/sheets/1/exercise-3.tex @@ -44,7 +44,7 @@ Außerdem wird bei manchen Variablen einzelne buchstaben wie \texttt{i,j,k,m,n,c,d,e} verwendet. Solche stellen kommen Später. \item Operationen sollten Verben sein. \item Queries beginnen häufig mit \texttt{get} - \item Kommandos beginnen häufig mit \texttt{set}, wenn sie dazu dienen direkt eine Variable/Attribut zu verändern. Komplexere in der Regeln nicht. + \item Kommandos beginnen häufig mit \texttt{set}, wenn sie dazu dienen direkt einen Wert zu setzen. \end{itemize} \end{Infobox} \item \textbf{[1]} Ein Befehl endet immer mit einem ; und muss in einem Codeblock stehen. From 3cd41cd0f891b1aa3d368b8480e57a9654030f8e Mon Sep 17 00:00:00 2001 From: ruffdd Date: Mon, 5 Oct 2020 10:40:55 +0200 Subject: [PATCH 22/23] add todos converted comments towards PR #54 into TODO comments --- sheets/1/exercise-2.tex | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sheets/1/exercise-2.tex b/sheets/1/exercise-2.tex index a43a7d45..28c9b456 100644 --- a/sheets/1/exercise-2.tex +++ b/sheets/1/exercise-2.tex @@ -7,7 +7,9 @@ Dabei gehört ein Objekt immer zu einer Klasse. Genauer gesagt ist ein Objekt \textbf{eine Instanz} einer Klasse. Die Klasse beschreibt dabei generell welche Eigenschaften und Operationen ein Objekt haben kann. + %TODO: Bei der Einführung von Operationen kann man die ruhig erstmal als Fähigkeiten beschreiben. Danach einfach einen Satz wie "Diese Fähigkeiten nennt man Operationen." Eigenschaften können zum Beispiel Daten (wie der Name oder die Farbe des Objekts) sein. + %TODO: Diese Änderung könnte man auch wieder rückgängig machen wenn man die Änderung darüber auch macht. Operationen wiederum sind Funktionen die das Objekt ausführen kann. Das Objekt, also eine konkrete Instanz der Klasse, hat dann zum Beispiel eine bestimmte Farbe (z.B. grün). Ein anderes Objekt der selben Klasse kann eine eigene Farbe (z.B. rot) haben.\\ From 6cdb1ed4c4937ca256b1af66276f4b94bca5b71e Mon Sep 17 00:00:00 2001 From: ruffdd Date: Mon, 5 Oct 2020 10:43:54 +0200 Subject: [PATCH 23/23] implemented comments implemented the last comments from PR #54. everything else is either a todo and/or needs to be discused more througly --- sheets/1/exercise-3.tex | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/sheets/1/exercise-3.tex b/sheets/1/exercise-3.tex index b4f41ec2..41c36bdb 100644 --- a/sheets/1/exercise-3.tex +++ b/sheets/1/exercise-3.tex @@ -40,8 +40,10 @@ \begin{itemize} \item Als ersatz für Nicht verwendetet Leerzeichen schreibt man einfach das nächste Wort Groß. Beispiel: \q{create green box} \textrightarrow \q{createGreenBox} \item Klassen sind in Java quasi die Nomen und sollten Groß geschreiben werden. Alles andere Klein. + %TODO nomen rausnehmen ? \item Namen sollten aus ganzen Wörtern bestehen. Ausgenommen es ist eine sehr übliche bezeichnung wie \texttt{URL} oder \texttt{HTML}.\\ Außerdem wird bei manchen Variablen einzelne buchstaben wie \texttt{i,j,k,m,n,c,d,e} verwendet. Solche stellen kommen Später. + %TODO: sollte das drin sein? \item Operationen sollten Verben sein. \item Queries beginnen häufig mit \texttt{get} \item Kommandos beginnen häufig mit \texttt{set}, wenn sie dazu dienen direkt einen Wert zu setzen. @@ -57,7 +59,9 @@ \begin{lstlisting}[title=\textbf{Variablen Syntax}] \end{lstlisting} - \item \textbf{[2]} Es wurde ja bereits erwähnt, dass Klassen Operationen haben. Außerdem, dass sie \glqq alle\grqq\ Befehle beinhalten. Wenn man diese Aufrufen möchte: schreibt man den namen der Variable die auf das Objekt zeigt oder auch direkt einfach den Initializer. Dann einen . gefolgt von dem Namen der Operation und (). Manche geben aber auch ein Objekt zurück, dadurch kann man gleich einen Operator davon Aufrufen oder man speichert sich es, mit einer variable zwischen. Außerdem haben sie manchmal Parameter, wie beim Initatiliesieren. + + %TODO: Textverbessern und unerwünschte Worte ersetzen. Vor allem geht es hier nur um bestimmte befehle. + \item \textbf{[2]} Es wurde ja bereits erwähnt, dass Klassen Operationen haben. Außerdem, dass sie \q{alle} Befehle beinhalten. Wenn man diese Aufrufen möchte: schreibt man den namen der Variable die auf das Objekt zeigt oder auch direkt einfach den Initializer. Dann einen . gefolgt von dem Namen der Operation und (). Manche geben aber auch ein Objekt zurück, dadurch kann man gleich einen Operator davon Aufrufen oder man speichert sich es, mit einer variable zwischen. Außerdem haben sie manchmal Parameter, wie beim Initatiliesieren. \begin{lstlisting}[title=\textbf{Kommando Syntax},firstnumber=4] (); new ();