Assignment Chef icon Assignment Chef
All German tutorials

Programming lesson

Edittxt in Java implementieren: Ein Leitfaden für CS6300 D3 (Fall 25)

Lerne, wie du deine eigene edittxt-Utility in Java schreibst und alle Tests bestehst – inklusive Tipps zu JUnit, Gradescope und häufigen Fehlern. Perfekt für das CS6300 Individual Project Deliverable 3.

edittxt Java Implementierung CS6300 Deliverable 3 edittxt Utility JUnit Testfälle Gradescope Fehlerbehebung Java Textverarbeitung Main.java edittxt MyMainTest Softwareentwicklung Studium edittxt D3 Lösung Java Programmierung Tutorial CS6300 Fall 25 edittxt Testfälle schreiben System.lineSeparator Java JUnit 5 edittxt edittxt häufige Fehler

Einführung in die edittxt-Implementierung

Im CS6300 Individual Project Deliverable 3 (Fall 25) geht es darum, eine eigene Version des edittxt-Utilities zu schreiben. Du stellst die Implementierung in Main.java bereit und musst sicherstellen, dass sie alle Testfälle aus Deliverable 2 (D2) besteht. Zusätzlich kommen unabhängig entwickelte Tests deines Teams hinzu – dein Code muss auch diese bestehen. Klingt nach einer Herausforderung? Keine Sorge, mit diesem Leitfaden zeige ich dir Schritt für Schritt, wie du vorgehst.

Das Ziel von D3 verstehen

Der Fokus liegt darauf, eine funktionierende edittxt-Implementierung zu liefern, die alle Anforderungen erfüllt. Du darfst deine bestehenden D2-Tests nicht ändern, wenn sie bestanden haben. Stattdessen kannst du fehlgeschlagene Tests korrigieren oder neue hinzufügen. Wichtig: System.exit() in Tests ist tabu, da es JUnit stört. Deine Testklasse MyMainTest muss eigenständig sein – keine externen Abhängigkeiten.

Schritt-für-Schritt-Anleitung zur Implementierung

1. Projektstruktur und Build-Kommandos

Dein Projekt sollte so aufgebaut sein:

src/edu/gatech/seclass/edittxt/Main.java
test/edu/gatech/seclass/edittxt/MyMainTest.java
lib/ (JUnit-Jars)

Kompilieren und Testen mit:

javac -cp lib/* -d classes src/edu/gatech/seclass/edittxt/*.java test/edu/gatech/seclass/edittxt/*.java
java -cp classes:lib/* org.junit.platform.console.ConsoleLauncher --select-class edu.gatech.seclass.edittxt.MyMainTest

2. Die edittxt-Funktionalität nachbauen

Die genauen Spezifikationen sind dir aus D2 bekannt. Typische Operationen sind Zeilen löschen, ersetzen, einfügen oder Text transformieren. Ein Beispiel: Angenommen, dein Tool liest eine Datei und gibt modifizierten Text aus. Nutze BufferedReader und PrintWriter für Datei-I/O. Achte auf Zeilenumbrüche: System.lineSeparator() ist plattformunabhängig.

Trend-Tipp: Stell dir vor, du filterst einen Social-Media-Feed – ähnlich wie ein Tool, das irrelevante Posts entfernt. Oder wie eine KI-gestützte Textbereinigung für Chatverläufe. Solche Analogien helfen, die Logik zu verstehen.

3. Testfälle schreiben und anpassen

Deine MyMainTest-Klasse sollte JUnit 5 verwenden. Beispiel für einen Test:

@Test
public void testDeleteLine() {
    String input = "Zeile1\nZeile2\nZeile3";
    String expected = "Zeile1\nZeile3";
    assertEquals(expected, edittxt(input, "delete 2"));
}

Vergiss nicht: Bestehende D2-Tests nicht ändern, auch wenn sie dir schwach vorkommen. Stattdessen erweiterst du die Testklasse mit neuen Tests. So vermeidest du Strafpunkte.

4. Gradescope und häufige Fehler

Gradescope zeigt bei Fehlern die erwartete vs. tatsächliche Ausgabe. Dabei werden Newlines als „↵“ und Tabs als „⇥“ dargestellt. Ein typischer Fehler: Leerzeichen oder Zeilenumbrüche am Ende. Nutze assertEquals mit String.trim() oder strip(), wenn nötig. Achte auch auf die korrekte Verwendung von System.lineSeparator() im Vergleich zu \n.

Ein weiterer Fallstrick: Wenn dein Code System.exit() aufruft, stürzt JUnit ab. Vermeide das unbedingt.

Tipps für den Erfolg

  • Nutze Git-Diffs: Vergleiche deine D2- und D3-Commits, um sicherzustellen, dass du keine bestandenen Tests geändert hast.
  • Halte Tests unabhängig: Jeder Test sollte ohne Abhängigkeiten von anderen laufen.
  • Verwende try-with-resources: Für Dateien und Streams, um Ressourcenlecks zu vermeiden.
  • Teste Edge Cases: Leere Dateien, nur eine Zeile, Sonderzeichen, sehr lange Zeilen.

Häufige Fragen (FAQs)

Darf ich fehlgeschlagene D2-Tests ändern?

Ja, du darfst Tests, die in D2 nicht bestanden haben, modifizieren oder löschen. Bestandene Tests bleiben unberührt.

Kann ich externe Bibliotheken nutzen?

Ja, aber du trägst die Verantwortung. Wenn sie Probleme verursachen (z. B. unerwartetes Beenden), hilft das Team nicht bei der Fehlersuche.

Wie gehe ich mit dem Parameter „-i“ um?

„-i“ wird als normaler String behandelt, wenn es als Argument für „-k“ erscheint. Das Parsing erfolgt sequenziell.

Fazit

Mit einer sauberen Implementierung und soliden Tests meisterst du das CS6300 D3. Denk daran: Deine Lösung muss nicht nur funktionieren, sondern auch gegen fremde Tests bestehen. Strukturierter Code, sorgfältiges Testen und das Vermeiden typischer Fehler sind der Schlüssel. Viel Erfolg!