reformating code

This commit is contained in:
schrom01
2021-11-12 10:37:38 +01:00
parent c76c35a62c
commit b8b3d78b78
8 changed files with 99 additions and 66 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
#Equivalent
# Equivalent
### Text.java Index method
+41 -18
View File
@@ -2,7 +2,8 @@
## Aufgabe
Programmieren Sie eine einfache Textverarbeitung mit Ein- und Ausgabe über die Konsole. Diese soll als eigenständige Anwendung laufen und über den folgenden Befehlssatz gesteuert werden:
Programmieren Sie eine einfache Textverarbeitung mit Ein- und Ausgabe über die Konsole. Diese soll als eigenständige
Anwendung laufen und über den folgenden Befehlssatz gesteuert werden:
| Befehl | Beschreibung |
| :--- | :--- |
@@ -19,19 +20,29 @@ Programmieren Sie eine einfache Textverarbeitung mit Ein- und Ausgabe über die
## Anforderungen
- Ihre Anwendung muss eigenständig laufen, also durch Aufruf von main() und ohne BlueJ.
- Schreiben Sie Rückmeldungen zu Fehlern (z.B. «Unbekanntes Kommando») statt auf die Standardausgabe (System.out) auf die Standardfehlerausgabe (Sytem.err). Die Syntax ist analog zu der von System.out bekannten ("System.err.println").
- Sie dürfen alle in der Vorlesung bis zur Abgabe durchgenommenen Konstrukte benutzen, jedoch nur diese. Dies schliesst insbesondere ein: Allen Stoff im BlueJ-Buch bis und mit Kapitel 9, JUnit Testing, Packages zur Verwaltung Ihres Codes. Es schliesst insbesondere aus: Vererbung, Einbindung von Paketen ausserhalb java.util.*
- Als "Absatz" definieren wir eine über die unten beschriebene Scanner.nextline() - Methode eingelesenen String. Validieren Sie den erhaltenen Input und filtern Sie alle Sonderzeichen (d.h. der in die Anwendung übernommene Text darf nur Buchstaben, Zahlen, Leerzeichen und Satzzeichen enthalten).
- Schreiben Sie Rückmeldungen zu Fehlern (z.B. «Unbekanntes Kommando») statt auf die Standardausgabe (System.out) auf
die Standardfehlerausgabe (Sytem.err). Die Syntax ist analog zu der von System.out bekannten ("System.err.println").
- Sie dürfen alle in der Vorlesung bis zur Abgabe durchgenommenen Konstrukte benutzen, jedoch nur diese. Dies schliesst
insbesondere ein: Allen Stoff im BlueJ-Buch bis und mit Kapitel 9, JUnit Testing, Packages zur Verwaltung Ihres Codes.
Es schliesst insbesondere aus: Vererbung, Einbindung von Paketen ausserhalb java.util.*
- Als "Absatz" definieren wir eine über die unten beschriebene Scanner.nextline() - Methode eingelesenen String.
Validieren Sie den erhaltenen Input und filtern Sie alle Sonderzeichen (d.h. der in die Anwendung übernommene Text
darf nur Buchstaben, Zahlen, Leerzeichen und Satzzeichen enthalten).
- Das Einlesen und Abspeichern von Dateien ist in diesem Projekt nicht notwendig.
- Ihr Code ist in Javadoc (mindestens für Klassen und Public Methods und zusätzlich für Konstruktoren, jedoch generell ohne Getter/Setter) und wo sinnvoll in Zeilenkommentaren zur Funktionalität dokumentiert. Ihr Klassendiagramm ist auf GitHub abgelegt. Die zur Übersetzung und Start nötigen Aufrufe sind separat im README für Ihr Repo dokumentiert.
- Definieren Sie Unit Tests für die Index-Funktionalität, implementieren Sie diese in JUnit und führen Sie sie aus. Dokumentieren Sie die Tests.
- Ihr Code ist in Javadoc (mindestens für Klassen und Public Methods und zusätzlich für Konstruktoren, jedoch generell
ohne Getter/Setter) und wo sinnvoll in Zeilenkommentaren zur Funktionalität dokumentiert. Ihr Klassendiagramm ist auf
GitHub abgelegt. Die zur Übersetzung und Start nötigen Aufrufe sind separat im README für Ihr Repo dokumentiert.
- Definieren Sie Unit Tests für die Index-Funktionalität, implementieren Sie diese in JUnit und führen Sie sie aus.
Dokumentieren Sie die Tests.
- Wenden Sie die relevanten Abschnitte im Clean-Code-Handbuch an.
## Hinweise
- Achten Sie beim Klassenentwurf auf Kohäsion und Kopplung und beachten Sie auch die Hinweise im Clean-Code-Handbuch.
- Fehlervermeidung und JUnit wird in Programmieren 1 durchgenommen. Planen Sie genügend Zeit ein, um Ihre Tests zu definieren, umzusetzen und allfällige Fehler zu korrigieren.
- Für Management und Dokumentation von Arbeitsschritten empfehlen wir das Issue Tracking in GitHub. Andere Lösungen sind denkbar.
- Fehlervermeidung und JUnit wird in Programmieren 1 durchgenommen. Planen Sie genügend Zeit ein, um Ihre Tests zu
definieren, umzusetzen und allfällige Fehler zu korrigieren.
- Für Management und Dokumentation von Arbeitsschritten empfehlen wir das Issue Tracking in GitHub. Andere Lösungen sind
denkbar.
- Eine Quelle für Blindtext ist https://lipsum.com/. Andere Texte sind möglich.
## Vorgehen
@@ -48,7 +59,9 @@ Wir empfehlen, etwa folgendermassen vorzugehen:
## Abgabe
Legen Sie für das Projekt ein Repository gemäss der bereits aus Projekt 1 bekannten Anleitung an. Der von Ihnen erarbeitete Code muss zur Abgabe bis zur bekanntgegebenen Deadline dort hochgeladen werden. Abgaben auf anderen Services (github.com, OneDrive, etc.) werden nicht gewertet.
Legen Sie für das Projekt ein Repository gemäss der bereits aus Projekt 1 bekannten Anleitung an. Der von Ihnen
erarbeitete Code muss zur Abgabe bis zur bekanntgegebenen Deadline dort hochgeladen werden. Abgaben auf anderen
Services (github.com, OneDrive, etc.) werden nicht gewertet.
## Bewertung
@@ -56,24 +69,32 @@ Für diese Aufgabe erhalten Sie maximal 15 Punkte. In die Bewertung fliessen fol
### Allgemeine Anforderung (all-or-nothing)
- Voraussetzung für Punkterteilung: Das Programm ist lauffähig. (Kriterium: Vorführung oder Test durch Ihre Dozierenden) Ein nicht lauffähiges Programm erhält 0 Punkte.
Ein lauffähiges Programm wird in den folgenden beiden Bereichen beurteilt. Für Teil- oder Nichterfüllung werden Abzüge in Ansatz gebracht. Das Nichterfüllen einer Unterkategorie kann zum vollständigen Abzug in einem Bereich führen. Es werden keine Negativpunkte vergeben.
- Voraussetzung für Punkterteilung: Das Programm ist lauffähig. (Kriterium: Vorführung oder Test durch Ihre Dozierenden)
Ein nicht lauffähiges Programm erhält 0 Punkte. Ein lauffähiges Programm wird in den folgenden beiden Bereichen
beurteilt. Für Teil- oder Nichterfüllung werden Abzüge in Ansatz gebracht. Das Nichterfüllen einer Unterkategorie kann
zum vollständigen Abzug in einem Bereich führen. Es werden keine Negativpunkte vergeben.
### Bereich Entwicklung
- Ihr Programm besitzt die geforderte Funktionalität. (Vorführung oder Test durch Ihre Dozierenden)
- Sie halten die Vorgaben hinsichtlich einsetzbarer Konstrukte und Clean Code ein. (Codeanalyse durch Ihre Dozierenden, ggf. Erläuterung)
- Sie haben eine gute Klassenaufteilung gefunden. Das Klassendiagramm ist auf GitHub mit hochzuladen. (Analyse durch Ihre Dozierenden, ggf. Erläuterung)
- Sie haben sinnvolle Test Cases für die Funktion Index definiert, diese in JUnit umgesetzt und erfolgreich ausgeführt. (Dokumentation über Test Cases und erfolgreiche Tests, diese sind auf GitHub mit hochzuladen.)
- Sie halten die Vorgaben hinsichtlich einsetzbarer Konstrukte und Clean Code ein. (Codeanalyse durch Ihre Dozierenden,
ggf. Erläuterung)
- Sie haben eine gute Klassenaufteilung gefunden. Das Klassendiagramm ist auf GitHub mit hochzuladen. (Analyse durch
Ihre Dozierenden, ggf. Erläuterung)
- Sie haben sinnvolle Test Cases für die Funktion Index definiert, diese in JUnit umgesetzt und erfolgreich
ausgeführt. (Dokumentation über Test Cases und erfolgreiche Tests, diese sind auf GitHub mit hochzuladen.)
### Bereich Vorgehen und Dokumentation
- Ihr Code ist mit JavaDoc dokumentiert. (s.a. Hinweis unter "Anforderungen", Analyse durch Ihre Dozierenden)
- Alle Gruppenmitglieder haben in nennenswertem Umfang Code beigetragen und auf GitHub eingecheckt. (Check durch GitHub Log)
- Alle Gruppenmitglieder haben in nennenswertem Umfang Code beigetragen und auf GitHub eingecheckt. (Check durch GitHub
Log)
## Beispielcode zum Konsoleneingabe
Die Eingabe von Text ist im BlueJ-Buch, Kapitel 6 erwähnt und in Kapitel 14.9. genauer beschrieben. Wenn Sie Probleme bei der Anwendung der Texteingabe haben, wenden Sie sich an Ihre Dozierenden. Die Anwendung der Scanner-Klasse sollte nach dem gegebenen Muster jedoch einfach gelingen.
Die Eingabe von Text ist im BlueJ-Buch, Kapitel 6 erwähnt und in Kapitel 14.9. genauer beschrieben. Wenn Sie Probleme
bei der Anwendung der Texteingabe haben, wenden Sie sich an Ihre Dozierenden. Die Anwendung der Scanner-Klasse sollte
nach dem gegebenen Muster jedoch einfach gelingen.
In der Grundfunktionalität sieht sie folgendermassen aus:
@@ -115,4 +136,6 @@ public class InputReaderMod {
}
```
**Quelle**: Anpassung von InputReader.java (englischsprachige Fassung der im Buch in Kap. 6 erwähnten Klasse EingabeLeser.java) aus dem Unterverzeichnis projects/chapter06/ tech-support-complete im Archiv https://bluej.org/objects-first/resources/projects.zip)
**Quelle**: Anpassung von InputReader.java (englischsprachige Fassung der im Buch in Kap. 6 erwähnten Klasse
EingabeLeser.java) aus dem Unterverzeichnis projects/chapter06/ tech-support-complete im
Archiv https://bluej.org/objects-first/resources/projects.zip)