Stufe 3: Laden und Speichern von Labyrinthen
Stufe 3: Laden und Speichern von LabyrinthenKlasse 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... }
Damit erhalten Sie, abhängig von Ihrer Plattform, einen Auswahldialog im Home-Verzeichniss Ihres Benutzers. |
UML
Speicherstruktur
Zum Speichern und Laden eines Labyrinths wird eine Kopie der Daten angelegt die zum visualieren angelegt werden. |
Musterlösung
Github Projekt scalingbits/dhbwjava
- Klasse Position.java
- Klasse Zelle.java
- Klasse Labyrinth.java
- Klasse Backtrack.java
- Klasse BacktrackIO.java
Hilfe! Wie packe ich das an? |
- Erzeugen Sie eine spezialisierte Klasse BacktrackIO
- Kopieren Sie sich das Hauptprogramm der Oberklasse
- Anpassung: Erzeugen Sie ein Objekt der aktuellen Klasse
- Testen: Läuft alles wie zuvor?
- Nutzen Sie die Serialisierung
- Die Klassen Labyrinth und Position müssen die entsprechende Schnittstelle implementieren
- Überschreiben Sie die Methode zum Speichern
- Nutzen Sie Klasse JFileChooser zum Selektieren der Datei
- Holen Sie sich von der Klasse JFileChooser das Ergebnis (Eine Instanz der Klasse File)
- Spicken Sie doch einfach (Im ersten Semester wurde bei den Schnittstellen ein sehr ähnliches Beispiel diskutiert)
- Schreiben Sie Labyrinth, Start und Ziel als Datei
- Verketten Sie FileOutputStream mit ObjectOutputStream
- Schreiben Sie Ihre GUI Datenstruktur des Layrinths in die Datei
- Behandeln Sie alle Ausnahmen wie benötigt...
- Testen: Wurde die Datei geschrieben?
- Vorbereiten zum Laden
- Schreiben Sie eine Methode die alle JButtons updated. Nach dem Laden müssen neue Zustände angezeigt werden
- Überschreiben Sie die Methode zum Laden
- Nutzen Sie den JFileChooser zur Identifikation der Datei
- Laden Sie die Datei. Sie haben nun einen Zeiger auf ein neues Labyrinth
- Machen Sie Ihr Labyrinth editierbar
- Nutzen Sie die Methode update() und Ihr GUI Labyrinth mit dem eingelesen Labyrinth zu überschreiben
- Machen Sie ein Update auf allen Zellen
- Testen
- 1156 views