Skip to content
Snippets Groups Projects
Commit af2059b2 authored by Goik Martin's avatar Goik Martin
Browse files

.zip archive hint

parent adf46134
No related branches found
No related tags found
No related merge requests found
task1.html
task2.html
This diff is collapsed.
<html xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xila="http://www.w3.org/2001/XInclude/local-attributes" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:trans="http://docbook.org/ns/transclusion" xmlns:svg="http://www.w3.org/2000/svg" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:db="http://docbook.org/ns/docbook"><body>
<h1>Vorbereitung</h1>
<p>Entpacken Sie das oben sichtbare Archiv <span style="color: #810000;">exam.zip</span> und importieren Sie den resultierenden Ordner <span style="color: #810000;">Exam</span> als <emph>Maven</emph> Projekt in Ihren <emph>Eclipse</emph><span> </span><emph>Workspace</emph>.</p>
<h1>Beschreibung</h1>
<p>Implementierung vorbereiteter Methoden gemäß <emph>Javadoc</emph> Beschreibungen und nachfolgend beschriebener Funktionalitäten. Sie bekommen bei unvollständiger Implementierung Teilpunkte.</p>
<h1>Aufgabe</h1>
<p>Vervollständigen Sie die Implementierung aller Methoden aus folgenden Klassen im <emph>package</emph><span> </span><span style="font-size:90%; font-family: 'Lucida Console', Monaco, monospace; color: #FB6019;">de.hdm_stuttgart.mi.sd1.aufgabe1</span>:</p>
<ul>
<li>
<p><span style="font-size:90%; font-family: 'Lucida Console', Monaco, monospace;color: #FB9C19;">HandyAbrechnung</span></p>
</li>
<li>
<p><span style="font-size:90%; font-family: 'Lucida Console', Monaco, monospace;color: #FB9C19;">Helper</span></p>
</li>
<li>
<p><span style="font-size:90%; font-family: 'Lucida Console', Monaco, monospace;color: #FB9C19;">StringHaeufigkeiten</span></p>
</li>
</ul>
<div style="display: block; width: fit-content; border-radius: 10px; padding: 5px; border-style: solid; border-color: #CCCCCC; border-width: 1px; background-color: #DEFBDE;"><p>Hinweis:</p>
<p>Das <emph>package</emph><span> </span><span style="font-size:90%; font-family: 'Lucida Console', Monaco, monospace; color: #FB6019;">de.hdm_stuttgart.mi.sd1.aufgabe1</span> im Test Zweig Ihres Projekts enthält drei zugehörige <emph>Junit</emph> Testklassen:</p>
<ul>
<li>
<p><span style="font-size:90%; font-family: 'Lucida Console', Monaco, monospace;color: #FB9C19;">Test_HandyAbrechnung</span></p>
</li>
<li>
<p><span style="font-size:90%; font-family: 'Lucida Console', Monaco, monospace;color: #FB9C19;">Test_Helper</span></p>
</li>
<li>
<p><span style="font-size:90%; font-family: 'Lucida Console', Monaco, monospace;color: #FB9C19;">Test_StringHaeufigkeiten</span></p>
</li>
</ul>
</div>
<h1>Allgemeine Hinweise</h1>
<ul>
<li>
<p>Für jede Methode stehen Ihnen in der zugehörigen Testklasse korrespondierende Tests zur Verfügung. Nutzen Sie diese!</p>
</li>
<li>
<p>Die von Ihnen erreichte Punktzahl richtet sich nach der Anzahl positiv bestandener Tests. Sie bekommen keine Punkte, wenn Ihre Implementierung in Bezug auf einen einzelnen Test lediglich »fast richtig« ist. Implementieren Sie im Zweifelsfall weniger Methoden, diese dafür aber vollständig.</p>
</li>
<li>
<p>Die <emph>Javadoc</emph> Kommentare der jeweiligen Methoden beschreiben das gewünschte Verhalten. Unter <a href="https://freedocs.mi.hdm-stuttgart.de/sd1SectMavenGenerateJavadoc.html" target="_blank">Generating Javadoc™ project documentation</a> finden Sie eine Anleitung zur Umwandlung in das HTML Format zwecks besserer Lesbarkeit.</p>
<p>Lesen Sie die (generierte) Dokumentation <strong>sehr genau</strong>.</p>
</li>
<li>
<p>Beachten Sie alle Sonderfälle. Dazu zählen insbesondere <code style="font-size:90%; color:black; font-family: &#34;Lucida Console&#34;, Monaco, monospace; background-color: #F3ECFF;">null</code> Werte von Variablen oder enthaltene <code style="font-size:90%; color:black; font-family: &#34;Lucida Console&#34;, Monaco, monospace; background-color: #F3ECFF;">null</code> Werte in <emph>Arrays</emph>.</p>
</li>
<li>
<p>Nutzen Sie den <emph>Debugger</emph> oder logging <emph>Statements</emph> im Fall fehlgeschlagener Testfälle.</p>
</li>
<li>
<p>Die Ausführung von <span style="font-size:90%; font-family: 'Lucida Console', Monaco, monospace; color: #FB6019;">de.hdm_stuttgart.mi.sd1.test</span>.<span style="font-size:90%; font-family: 'Lucida Console', Monaco, monospace;color: #FB9C19;">ShowAllReachedPoints</span> im Testzweig Ihres Projekts als <emph>Java</emph> Anwendung (nicht als Junit Test!) zeigt Ihnen zu jedem Zeitpunkt die in allen Programmieraufgaben bislang erreichten Punkte.</p>
</li>
</ul>
<h1>Hochladen Ihrer Lösung in das Klausursystem</h1>
<p>Exportieren Sie Ihre Implementierung dieser und weiterer Programmieraufgaben per Rechtsklick im <emph>Package Explorer</emph> Ihres <emph>Eclipse</emph> Projekts. Klicken Sie im <emph>Package Explorer</emph> (Maus Rechtsklick) auf Ihre Projektwurzel und exportieren Sie über das Kontextmenü »Export« → »General« → »Archive File« einen auf <span style="color: #810000;">.zip</span> endenden Archivnamen, z.B. <span style="color: #810000;">solution_1.zip</span>. Laden Sie danach <span style="color: #810000;">solution_1.zip</span> über die »<emph>Upload</emph> File« Funktion am unteren Seitenende des <emph>Ilias</emph> Klausursystems hoch. Wichtige Punkte:</p>
<ul>
<li>
<p>Achten Sie auf vollständigen Export. Im Exportmenü können Sie (versehentlich) einzelne Ordner, wie z.B. <span style="color: #810000;">src</span>, abwählen. In diesem Fall wird Ihr Quellcode nicht in das Archiv <span style="color: #810000;">solution_1.zip</span> exportiert.</p>
</li>
<li>
<p>Wählen Sie beim Hochladen nicht die falsche Datei, etwa das Ausgangsarchiv <span style="color: #810000;">exam.zip</span> oder eine ältere Version Ihres Projekts.</p>
</li>
<li>
<p>Kontrollieren Sie nach dem Hochladen die Sichtbarkeit Ihres <span style="color: #810000;">solution_1.zip</span> Archivs im Klausursystem.</p>
</li>
<li>
<p>Sie können mehrere Versionen <span style="color: #810000;">solution_2.zip</span> ... hochladen und bei Bedarf ältere im <emph>Ilias</emph> System löschen. Nur die zuletzt hochgeladene Version wird bewertet.</p>
</li>
</ul>
<div style="display: block; width: fit-content; border-radius: 10px; padding: 5px; border-style: solid; border-color: #CCCCCC; border-width: 1px; background-color: #FFDFDF;"><p>Achtung:</p>
<ul>
<li>
<p>Reservieren Sie für den Vorgang des Hochladens ausreichend Zeit vor Klausurende.</p>
</li>
<li>
<p>Bearbeitungen, welche sich nach Klausurende lediglich auf Ihrem Arbeitsplatzrechner befinden, werden nicht gewertet.</p>
</li>
<li>
<p>Laden Sie keine Projekte mit <emph>Java</emph> Syntaxfehlern hoch, diese werden nicht bewertet!</p>
</li>
<li>
<p>Exportieren Sie Ihr Projekt nicht als <span style="color: #810000;">.tgz</span>, <span style="color: #810000;">.java</span>, <span style="color: #810000;">.tar.gz</span><span> </span><strong>o.ä.</strong>. Das Klausursystem akzeptiert nur Archive mit der Endung <span style="color: #810000;">.zip</span>.</p>
</li>
</ul>
</div>
</body></html>
\ No newline at end of file
<html xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xila="http://www.w3.org/2001/XInclude/local-attributes" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:trans="http://docbook.org/ns/transclusion" xmlns:svg="http://www.w3.org/2000/svg" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:db="http://docbook.org/ns/docbook"><body>
<h1>Vorbereitung</h1>
<p>Falls Sie die erste Aufgabe »<span style="font-weight: bold;">Klassenmethoden</span>« bearbeitet haben, arbeiten Sie einfach an Ihrem <emph>Maven</emph> Projekt weiter. Ansonsten lesen Sie bitte die Anleitung in der Aufgabe »<span style="font-weight: bold;">Klassenmethoden</span>« zum <emph>Eclipse</emph><span> </span><emph>Maven</emph> Projektimport sowie weitere Hinweise zum Hochladen in das <emph>Ilias</emph> System.</p>
<h1>Beschreibung</h1>
<p>Implementierung von Methoden und einer neuen Klasse zur Verwaltung von Ersatzteilen.</p>
<p>Das <emph>Maven</emph> Projektskelett enthält eine Klasse <span style="font-size:90%; font-family: 'Lucida Console', Monaco, monospace;color: #FB9C19;">Ersatzteil</span> im <emph>Package</emph><span> </span><span style="font-size:90%; font-family: 'Lucida Console', Monaco, monospace; color: #FB6019;">de.hdm_stuttgart.mi.sd1.aufgabe2</span>.</p>
<p>Implementieren Sie die nachfolgend beschriebenen Funktionalitäten. Sie bekommen bei unvollständiger Implementierung Teilpunkte. Nutzen Sie zum Test Ihrer Implementierung die <emph>Junit</emph> Tests in <span style="font-size:90%; font-family: 'Lucida Console', Monaco, monospace; color: #FB6019;">de.hdm_stuttgart.mi.sd1.test.aufgabe2</span>.<span style="font-size:90%; font-family: 'Lucida Console', Monaco, monospace;color: #FB9C19;">Test_Ersatzteil</span>.</p>
<h1>Aufgaben</h1>
<ol>
<li>
<p>Ein Ersatzteil soll durch Angabe einer Teilenummer und einer Bezeichnung erstellt werden können. Wir betrachten ein Beispiel für das gewünschte Verhalten:</p>
<pre style="display: block; width: fit-content; border-radius: 10px; padding: 5px; font-size:90%; font-family: 'Lucida Console', Monaco, monospace; background-color: #F3ECFF;">final Ersatzteil kurbelwelle =
new Ersatzteil(12345, "Kurbelwelle");
System.out.println(kurbelwelle);
final Ersatzteil brandneu = // Bezeichnung noch
new Ersatzteil(54321, null); // unbekannt.
System.out.println(brandneu);</pre>
<p>Dies soll folgende Ausgabe liefern:</p>
<pre style="display: block; width: fit-content; border-radius: 10px; padding: 5px; font-size:90%; font-family: 'Lucida Console', Monaco, monospace; background-color: #E7FFFE;">Kurbelwelle, Teilenummer:12345
Bezeichnung unbekannt, Teilenummer:54321</pre>
<p>Ergänzen Sie die Klasse <span style="font-size:90%; font-family: 'Lucida Console', Monaco, monospace;color: #FB9C19;">Ersatzteil</span> um einen passenden Konstruktor, <code style="font-size:90%; color:black; font-family: &#34;Lucida Console&#34;, Monaco, monospace; background-color: #F3ECFF;">private</code> Attribute und eine <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#toString--" target="_blank"><span style="font-size:90%; font-family: 'Lucida Console', Monaco, monospace;color: #C29B07;">toString()</span></a> Methode.</p>
<div style="display: block; width: fit-content; border-radius: 10px; padding: 5px; border-style: solid; border-color: #CCCCCC; border-width: 1px; background-color: #DEFBDE;"><p>Hinweis:</p>
<ul>
<li>
<p>Das Kontextmenü »<emph>Source</emph>« → »Override/Implement <emph>Methods</emph>...« in <emph>Eclipse</emph> und die <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Override.html" target="_blank"><span style="font-size:90%; font-family: 'Lucida Console', Monaco, monospace;color: #B9B505;">@Override</span></a> Annotation sind Ihre Freunde.</p>
</li>
<li>
<p>Achten Sie im Hinblick auf die <emph>Junit</emph> Tests sehr genau auf Leerzeichen, Groß/Kleinschreibung etc. in der erzeugten Zeichenkette. Erbsenzähler[innen] sind im Vorteil!</p>
</li>
</ul>
</div>
</li>
<li>
<p>Zwei Ersatzteil Instanzen sollen bezüglich <span style="font-size:90%; font-family: 'Lucida Console', Monaco, monospace;color: #C29B07;">equals()</span> genau dann gleich sein, wenn ihre Teilenummern gleich sind. Die Bezeichnung der Teile soll irrelevant sein. Wir betrachten ein Beispiel für das gewünschte Verhalten:</p>
<pre style="display: block; width: fit-content; border-radius: 10px; padding: 5px; font-size:90%; font-family: 'Lucida Console', Monaco, monospace; background-color: #F3ECFF;">final Ersatzteil
kurbelwelle = new Ersatzteil(12345, "Kurbelwelle"),
schwurbelwelle = new Ersatzteil(12345, "Schwurbelwelle"), // Tippfehler?
lenkrad = new Ersatzteil(54321, "Lenkrad");
System.out.println("kurbelwelle gleich schwurbelwelle? " +
kurbelwelle.equals(schwurbelwelle));
System.out.println("kurbelwelle gleich lenkrad? " +
kurbelwelle.equals(lenkrad));</pre>
<p>Dies soll folgende Ausgabe liefern:</p>
<pre style="display: block; width: fit-content; border-radius: 10px; padding: 5px; font-size:90%; font-family: 'Lucida Console', Monaco, monospace; background-color: #E7FFFE;">kurbelwelle gleich schwurbelwelle? true
kurbelwelle gleich lenkrad? false</pre>
</li>
<li>
<p>Definieren Sie die <span style="font-size:90%; font-family: 'Lucida Console', Monaco, monospace;color: #FB9C19;">Ersatzteil</span>.<span style="font-size:90%; font-family: 'Lucida Console', Monaco, monospace;color: #C29B07;">equals()</span> Methode dergestalt, dass sie in abgeleiteten Klassen nicht überschrieben werden <strong>kann</strong>.</p>
</li>
<li>
<p>Leiten Sie eine Klasse <span style="font-size:90%; font-family: 'Lucida Console', Monaco, monospace;color: #FB9C19;">Reifen</span> von <span style="font-size:90%; font-family: 'Lucida Console', Monaco, monospace;color: #FB9C19;">Ersatzteil</span> im selben <emph>Package</emph> (<strong>wichtig für zugehörige <emph>Junit</emph> Tests!</strong>) ab.</p>
<p>Für die Erzeugung von <span style="font-size:90%; font-family: 'Lucida Console', Monaco, monospace;color: #FB9C19;">Reifen</span> Instanzen soll neben der Teilenummer die maximal erlaubte Fahrgeschwindigkeit angegeben werden müssen. Die Teilebezeichnung in der Basisklasse <span style="font-size:90%; font-family: 'Lucida Console', Monaco, monospace;color: #FB9C19;">Ersatzteil</span> soll automatisch auf <code style="font-size:90%; color:black; font-family: &#34;Lucida Console&#34;, Monaco, monospace; background-color: #F3ECFF;">"Reifen"</code> gesetzt werden:</p>
<pre style="display: block; width: fit-content; border-radius: 10px; padding: 5px; font-size:90%; font-family: 'Lucida Console', Monaco, monospace; background-color: #F3ECFF;">final Reifen reifen = // Reifen mit Teilenummer 1234 und Maximalgeschwindigkeit 160 Km pro Stunde,
new Reifen(1234, 160); // Die feste Teilebezeichnung <strong>"Reifen"</strong> wird in der
// Basisklasse <span style="font-size:90%; font-family: 'Lucida Console', Monaco, monospace;color: #FB9C19;">Ersatzteil</span> automatisch gesetzt.
System.out.println(reifen);</pre>
<p>Nutzen Sie Ihre zuvor implementierte <span style="font-size:90%; font-family: 'Lucida Console', Monaco, monospace;color: #FB9C19;">Ersatzteil</span>.<span style="font-size:90%; font-family: 'Lucida Console', Monaco, monospace;color: #C29B07;">toString()</span> Methode und überschreiben Sie diese in der Klasse <span style="font-size:90%; font-family: 'Lucida Console', Monaco, monospace;color: #FB9C19;">Reifen</span> geeignet, damit Sie folgende Ausgabe erhalten:</p>
<pre style="display: block; width: fit-content; border-radius: 10px; padding: 5px; font-size:90%; font-family: 'Lucida Console', Monaco, monospace; background-color: #E7FFFE;">Reifen, Teilenummer:1234, Maximalgeschwindigkeit:160 Kmh</pre>
<div style="display: block; width: fit-content; border-radius: 10px; padding: 5px; border-style: solid; border-color: #CCCCCC; border-width: 1px; background-color: #DEFBDE;"><p>Hinweis:</p>
<p>Achten Sie auch diesmal sehr genau auf Leerzeichen, Groß/Kleinschreibung etc. in der erzeugten Zeichenkette. Erbsenzähler[innen] sind weiterhin im Vorteil!</p>
</div>
</li>
</ol>
<h1>Hochladen Ihrer Lösung in das Klausursystem</h1>
<p>Laden Sie die Lösung dieser Aufgabe als gemeinsamen Projekt Export mit der ersten Aufgabe <span style="font-weight: bold;">Klassenmethoden</span> gemäß den dortigen Hinweisen hoch. Falls Sie die Aufgabe »<span style="font-weight: bold;">Klassenmethoden</span>« ebenfalls bearbeitet haben, enthält Ihr <emph>Upload</emph> die Lösungen zu beiden Aufgaben.</p>
<p>Tragen Sie im Freitextfeld weiter unten genau einen der beiden Texte ein:</p>
<ul>
<li>
<p>Ich habe die aktuelle Aufgabe bearbeitet und erhoffe dafür Punkte.</p>
</li>
<li>
<p>Ich habe die aktuelle Aufgabe nicht bearbeitet.</p>
</li>
</ul>
</body></html>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment