Stufe 3: Laden und Speichern von Labyrinthen

Klasse BacktrackIO

Diese Klasse wird aus Backtrack spezialisiert. Sie nutzt die gesamte Infrastruktur. Sie überschreibt

  • speichernLabyrinth() 
  • ladenLabryrinth()
  • main(String[] args): Sie müssen hier eine Instanz von BacktrackIO anlegen und anzeigen

Da man hier mit Verzeichnissen im Dateiverwaltungssystem arbeiten muss, sollte man die folgenden GUI Klassen verwenden:

Man kann Sie wie folgt einsetzen um den Zugriff auf eine Datei zu bekommen:

File selectedFile;
JFileChooser jfc
  = new JFileChooser(FileSystemView.getFileSystemView().getHomeDirectory());
int returnValue = jfc.showSaveDialog(null);
if (returnValue == JFileChooser.APPROVE_OPTION) {
   selectedFile = jfc.getSelectedFile();
   System.out.println(selectedFile.getAbsolutePath());
   // Ab hier mit der Datei arbeiten...
}
Beispiel JFileChooser
Damit erhalten Sie, abhängig von Ihrer Plattform, einen Auswahldialog im Home-Verzeichniss Ihres Benutzers. Beispiel JFileChooser

 


 

UML

UML Diagramm

Speicherstruktur

Zum Speichern und Laden eines Labyrinths wird eine Kopie der Daten angelegt die zum visualieren angelegt werden. Speicherlayout zum Speichern

 

Musterlösung

Github Projekt scalingbits/dhbwjava

Hilfe! Wie packe ich das an?

  1. Erzeugen Sie eine spezialisierte Klasse BacktrackIO
  2. Kopieren Sie sich das Hauptprogramm der Oberklasse
    1. Anpassung: Erzeugen Sie ein Objekt der aktuellen Klasse
    2. Testen: Läuft alles wie zuvor?
  3. Nutzen Sie die Serialisierung
    1. Die Klassen Labyrinth und Position müssen die entsprechende Schnittstelle implementieren
  4. Überschreiben Sie die Methode zum Speichern
    1. Nutzen Sie Klasse JFileChooser zum Selektieren der Datei
    2. Holen Sie sich von der Klasse JFileChooser das Ergebnis (Eine Instanz der Klasse File)
    3. Spicken Sie doch einfach (Im ersten Semester wurde bei den Schnittstellen ein sehr ähnliches Beispiel diskutiert)
    4. Schreiben Sie Labyrinth, Start und Ziel als Datei
      1. Verketten Sie FileOutputStream mit ObjectOutputStream
      2. Schreiben Sie Ihre GUI Datenstruktur des Layrinths in die Datei
    5. Behandeln Sie alle Ausnahmen wie benötigt...
    6. Testen: Wurde die Datei geschrieben?
  5. Vorbereiten zum Laden
    1. Schreiben Sie eine Methode die alle JButtons updated. Nach dem Laden müssen neue Zustände angezeigt werden
  6. Überschreiben Sie die Methode zum Laden
    1. Nutzen Sie den JFileChooser zur Identifikation der Datei
    2. Laden Sie die Datei. Sie haben nun einen Zeiger auf ein neues Labyrinth
    3. Machen Sie Ihr Labyrinth editierbar
    4. Nutzen Sie die Methode update() und Ihr GUI Labyrinth mit dem eingelesen Labyrinth zu überschreiben
    5. Machen Sie ein Update auf allen Zellen
    6. Testen