Aufgabe6.jar
ist in Ihrem Arbeitsverzeichnis prog1-uebungen\
neben dieser Aufgabenstellung Aufgabe6.html
noch ein Paketverzeichnis aufgabe6\
mit folgende Dateien hinzugekommen:
aufgabe6\package-info.java | Paketdokumentation |
aufgabe6\HtmlNotenspiegel.java | vorgegebene Main-Klasse |
aufgabe6\Leistung.java | vorgegebene abstrakte Oberklasse |
aufgabe6\LeistungsListe.java | zu vervollständigende Klasse |
Das folgende UML-Diagramm gibt Ihnen einen Überblick über die vorgegebenen und
die von Ihnen zu erstellenden Klassen:
Öffnen Sie ein Terminal im Arbeitsverzeichnis prog1-uebungen\ und
erweitern Sie Ihre HTML-Dokumentation um das Paket aufgabe6 mit dem Kommando
ant doc
Öffnen Sie dann die gewohnten Quellen im Browser:
doc/aufgabe6/package-summary.html
https://www-home.htwg-konstanz.de/~drachen/prog1/prog1.html
https://docs.oracle.com/en/java/javase/21/docs/api/java.base/module-summary.html
Als Voraussetzung für das Bearbeiten dieser Aufgabe sollten Sie die Vorlesungsunterlagen bis
mindestens Seite 5-31 nachbereitet und die zugehörigen Programmbeispiele nachvollzogen haben,
insbesondere
vererbung\Datum.java,
vererbung\Termin.java,
vererbung\OrtsTermin.java,
vererbung\TerminTest.java,
local\IntList.java,
local\ListVar.java
aufgabe6.Faecher aufgabe6 eine öffentliche Utility-Klasse Faecher
mit folgenden Elementen:
FAECHER
vom Typ Array von Strings,istZulaessig,
Leiten Sie die Signatur aus dem
Aufruf der Methode in der vorgegebenen Klasse aufgabe6.Leistung ab.
aufgabe6.UnbenoteteLeistung aufgabe6 eine öffentliche instanziierbare Klasse
UnbenoteteLeistung für Entitäten als Unterklasse von aufgabe6.Leistung:
Leiten Sie die Signatur aus dem new-Ausdruck in der Klasse
aufgabe6.HtmlNotenspiegel ab.
Welche das sind, können Sie der Javadoc-Beschreibung der vorgegebenen Oberklasse
aufgabe6.Leistung entnehmen.
aufgabe6.BenoteteLeistung aufgabe6 eine öffentliche instanziierbare Klasse
BenoteteLeistung für Entitäten als Unterklasse von aufgabe6.Leistung:
aufgabe5.Note
zum Speichern der Note haben.
Leiten Sie die Signatur aus dem new-Ausdruck in der Klasse
aufgabe6.HtmlNotenspiegel ab.
Welche das sind, können Sie der Javadoc-Beschreibung der vorgegebenen Oberklasse
aufgabe6.Leistung entnehmen.
Verwenden Sie die entsprechende Instanzmethode der Wertklasse aufgabe5.Note,
um zu entscheiden, ob die gekapselte Note als bestanden gilt.
Halten Sie sich außerdem an die folgenden Notennamen der HTWG:
"sehr gut" | für Noten 1,0 bis 1,5 einschließlich |
"gut" | für Noten 1,6 bis 2,5 einschließlich |
"befriedigend" | für Noten 2,6 bis 3,5 einschließlich |
"ausreichend" | für Noten 3,6 bis 4,0 einschließlich |
"nicht ausreichend" | für Noten ab 4,1 |
aufgabe6.LeistungsListeaufgabe6 eine öffentliche instanziierbare Klasse
LeistungsListe für Entitäten:
local.IntList aus Teil 5 der Vorlesung als Vorlage.
Passen Sie darin den Paket- und Klassennamen an, implementieren Sie die Schnittstelle
java.util.Iterator<Leistung> statt java.util.Iterator<Integer>
und stellen Sie den Typ der gespeicherten Werte von int auf Leistung um.
Das Boxing in der Implementierung der next-Methode kann entfallen.aufgabe6.HtmlFormataufgabe6 eine öffentliche Utility-Klasse HtmlFormat
mit einer öffentlichen Klassenmethode ausgeben:
aufgabe6.HtmlNotenspiegel.ausgeben ab.BennoBeispiel.html ab.
Klicken Sie auf BennoBeispiel.html,
um die formatierte Darstellung der Beispielausgabe zu sehen und
wählen Sie im Kontextmenü des Browsers Seitenquelltext anzeigen,
um die Beispielausgabe unformatiert zu sehen, so wie Sie vom Programm auszugeben ist.
Verwenden Sie eine for-each-Schleife zum Ablaufen der übergebenen Leistungsliste und
geben Sie den HTML-Text mit printf und println aus.
Wenn Sie den Inhalt von BennoBeispiel.html etwas tiefer verstehen wollen,
sind die folgenden Webseiten eine gute Hilfe:
https://wiki.selfhtml.org
https://www.w3schools.com/html/default.asp
ant -Dpackage=aufgabe6 compileAndere Möglichkeiten zum Aufruf von
javac sind bei Aufgabe 5 beschrieben.
aufgabe6-in1.txt usw.) und betrachten Sie die Ausgabedateien mit dem Browser Firefox:
java -ea aufgabe6.HtmlNotenspiegel Vorname NachnameDie Option
-ea sorgt dafür, dass die assert-Regeln in Leistung ausgewertet werden.
Verwenden Sie im Firefox auch rechte Maustaste->Seitenquelltext anzeigen,
um Ihre HTML-Ausgabe zu prüfen.
ant -Dpackage=aufgabe6 style
ant doc
ant -Dpackage=aufgabe6 clean bugsspotbugs schreibt seine Meldungen nicht auf den Bildschirm, sondern in eine Datei
bugs.html, die Sie mit einem Webbrowser anschauen müssen.Sie sind erst fertig, wenn das Programm funktioniert und die Werkzeuge checkstyle, javadoc und spotbugs keine Fehler mehr melden!
Führen Sie Ihre in Schritt 7 erstellten Testfälle aufgabe6-in1.txt usw. vor
und zeigen Sie die Notenspiegel im Browser.
Zeigen Sie ihre Javadoc-Seiten mit dem verlinkten Quellcode der Klassen.
Zeigen Sie das ausgefüllte Teilnahmeprotokoll.
"..." auch Textblöcke
in dreifachen Anführungszeichen """...""", die über mehrere Zeilen gehen können.
Lesen Sie dazu
https://docs.oracle.com/en/java/javase/15/text-blocks/
und nutzen Sie dann in Ihrer Klasse HtmlFormat Textblöcke,
um die Ausgabe des HTML-Texts einfacher und übersichtlicher zu gestalten.TextFormat analog zu HtmlFormat,
die einen Notenspiegel im tabellarischen Format nach dem Vorbild von Aufgabe 5 in einer
Datei mit Endung .txt ausgibt.
Bauen Sie die Verwendung der Klasse zusätzlich zu HtmlFormat in die Methode
aufgabe6.HtmlNotenspiegel.ausgeben ein.
Ändern Sie dazu LeistungsListe.insert so ab, dass nach dem Einfügen der neuen Leistung
am Listenanfang in der restlichen Liste nach einer Leistung gesucht wird, bei der getFach
und istBenotet denselben Wert wie bei der neuen Leistung liefern.
Wird eine solche Leistung gefunden, soll Sie aus der Liste entfernt und mit return
zurückgeliefert werden. Dazu müssen Sie den Rückgabetyp von LeistungsListe.insert auf
Leistung ändern.
An der Aufrufstelle in HtmlNotenspiegel.eingeben soll für jede Leistung,
die aus der Liste entfernt wurde, eine Warnung ausgegeben werden.