Einkaufszettel Persistenz und Serialisierung

antonia09

Mitglied
Hallo, ich habe einen Einkaufszettel fertig programmiert und muss in meinen Anforderungen jetzt noch Persistenz und Serialisierung einbauen. Ich habe aber leider keine Ahnung wie das funktionieren soll.
Kann mir jemand helfen?
 

Robert Zenz

Top Contributor
Ich gehe mal davon aus dass es keine Vorgaben gibt wie diese Serialisierung aussehen muss. Im einfachsten Fall schreibst du einfach Zeile um Zeile in eine Datei. Also so das dein Einkaufszettel dann quasi so aussieht:

Code:
Apfel
Muesli
Milch
Schinkenspeck
Gin

Wenn du eine Anzahl brauchst, kannst du diese davor oder danach schreiben:

Code:
1 Apfel
1 Muesli
2 Milch
1 Schinkenspeck
7 Gin

Code:
Apfel 1
Muesli 1
Milch 2
Schinkenspeck 1
Gin 7

Das schreibst du relativ einfach Zeilenweise in die Datei. Lesen ist genau andersherum, du liest eine Zeile, zerlegst sie entsprechend und erstellst dann ein neues Objekt mit den Wertden beziehungsweise fuegst die Werte dann in dein bestehendes Einkaufszettel-Objekt ein. haengt aber auch davon ab wie deine Objekt-Struktur im Moment aussieht.

Es gibt auch viele fertig Bibliotheken welche es dir erlauben Objekte direkt zu persistieren, die Standard Java Serialization, Kryo, Jackson unter anderem. Aber wenn du es lernen willst, wuerde ich vorschlagen du faengst mal mit einer eifnachen Text-Datei in der Zeilenweise deine Objekte liegen.

Idealerweise hast du dafuer eine Klasse welche dir Objekte serialisieren kann:

Java:
public class Serializer {
    public String serialize(Einkaufszettel einkaufszettel) {
        // TODO
    }
}

Dann kannst du das einfach aufrufen und hast dann einen String welchen du in eine Datei schreiben kannst (wenn du `String`s bauen willst, schlage ich vor kurz meine Wiederholung zum Thema String zu lesen). Der Zwischenschritt ueber den String hat den Vorteil dass du sehr einfach die Ausgabe ansehen, ausgeben und diese mit einem Test verifizieren kannst. Wenn du direkt in eine Datei schreibst, musst du immer mit der handieren.

Das serialisieren selbst ist ein stumpfes schreiben:

Java:
StringBuilder serializedEinkaufszettel = new StringBuilder();

for (String eintrag : einkaufszettel.getEintraege()) {
    serializedEinkaufszettel.append(eintrag.getText()).append("\n");
}

Deserialisieren kannst du dann analog dazu implementieren, allerdings musst du dann eben den String welchen du hast in Zeilen zerlegen (split) und dann eventuell diese Zeilen noch in einzelne Felder zerlegen.
 

KonradN

Super-Moderator
Mitarbeiter
Generell ist die Frage, was Du bisher so kennen gelernt hast und was die genauen Anforderungen sind (Denn in der Regel sollen ja Dinge verwendet werden, die man kennen gelernt hat oder es wird erwartet, dass "übliche" Lösungen verwendet werden).

@Robert Zenz hat bereits eine einfache Variante beschrieben. Diese kann man nutzen, um Dinge zu serialisieren.

Aber statt sowas von Hand zu machen, könnte man auch Klassen nutzen, die es bereits gibt. Was es z.B. direkt gibt sind die Klassen ObjectOutputStream / ObjectInputStream, die in der Lage sind, beliebige Instanzen zu (de-)serialisieren.

Ansonsten gibt es aber auch viele Libraries, die sowas bieten. So sind die XML und JSON Formate relativ geläufig und dazu gibt es dann Libraries wie Jackson oder Gson, die man nutzen könnte.
 

antonia09

Mitglied
Danke für eure schnelle Antwort. Genau die Anforderung sagt, ich soll mit den Input/Output Klassen arbeiten und ich stehe gerade so auf dem Schlauch wie ich das in meinen Einkaufszettel einbinden soll.
Aber ich versuche mich mal weiter und ihr habt mir schon mal gute Denkanstöße gegeben!
 

Neumi5694

Top Contributor
Nur um das zu verdeutlichen: Ein Filewriter wäre ja z.B. schon eine Outputklasse, ein FileReader eine Inputklasse.
Die Beschreibung ist sehr vage, so lange da nichts spezifischeres steht, kannst du schon mit dem bisher beschriebenen das Programm umsetzen.
 

HoraceHopkins

Neues Mitglied
Hallo, ich habe einen Einkaufszettel fertig programmiert und muss in meinen Anforderungen jetzt noch Persistenz und Serialisierung einbauen. Ich habe aber leider keine Ahnung wie das funktionieren soll.
Kann mir jemand helfen?
Um Persistenz und Serialisierung in deinen Einkaufszettel einzubauen, könntest du beispielsweise folgende Schritte durchführen:

Wähle ein geeignetes Datenformat zur Speicherung deiner Einkaufsliste, wie z.B. eine einfache Textdatei oder ein strukturiertes Format wie JSON oder XML.

Wenn du dich für ein Format entschieden hast, musst du die Daten deiner Einkaufsliste in dieses Format umwandeln. Bei der Serialisierung kannst du in den meisten Programmiersprachen auf eingebaute Funktionen oder Bibliotheken zurückgreifen, die dir dabei helfen. Diese Funktionen nehmen deine Datenstruktur und wandeln sie in eine speicherbare Form um.

Speichere die serialisierten Daten in einer Datei auf deinem Speichermedium. Hier kannst du die Datei an einem geeigneten Ort ablegen, wie zum Beispiel im Benutzerverzeichnis oder in einem speziellen Ordner für deine Anwendung.

Beim Start deines Programms kannst du die gespeicherten Daten aus der Datei lesen und sie wieder in die entsprechende Datenstruktur deines Einkaufszettels umwandeln. Das nennt man Deserialisierung. Dadurch kannst du den vorherigen Zustand deiner Einkaufsliste wiederherstellen.

Vergiss nicht, die Daten bei Bedarf regelmäßig zu aktualisieren, wenn Änderungen an deiner Einkaufsliste vorgenommen werden.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Persistenz/Anwendungsmodel Allgemeine Java-Themen 5
C Polymorphie Fragen zur Annotations von Persistenz Allgemeine Java-Themen 2
I Persistenz ohne App-Server? Allgemeine Java-Themen 6
D Verschiedene Persistenz Strategien Allgemeine Java-Themen 7
D Serialisierung und Deserialisierung von Objekten - Frageprogramm Allgemeine Java-Themen 4
R Datentypen Korrekte integer in Hex ASCII Konvertierung und serialisierung Allgemeine Java-Themen 1
M Serialisierung funktioniert nicht Allgemeine Java-Themen 9
Z Best Practice Serialisierung Allgemeine Java-Themen 2
Arif Input/Output Serialisierung - Datei wird nicht erzeugt Allgemeine Java-Themen 3
M Alternative zur Serialisierung.. Protobuf? Allgemeine Java-Themen 9
E Serialisierung - Deserialisierung Allgemeine Java-Themen 4
Thallius Serialisierung schlägt fehl. Allgemeine Java-Themen 3
M Serialisierung & Verschlüsselung Allgemeine Java-Themen 2
E Serialisierung - Sinn einer generierten serialVersionUID? Allgemeine Java-Themen 4
V Serialisierung von Instanz eigener Klasse Allgemeine Java-Themen 5
A Input/Output Serialisierung und Object.hashCode() Allgemeine Java-Themen 3
K Serialisierung einer verschachtelten Datenstuktur Allgemeine Java-Themen 9
Tobse Input/Output Dateiformat: Serialisierung VS Custom format Allgemeine Java-Themen 6
A Problem bei Serialisierung von Bibliotheks-Klassen Allgemeine Java-Themen 6
A Input/Output Serialisierung Sonderzeichen Allgemeine Java-Themen 3
P Serialisierung der Oberklasse Allgemeine Java-Themen 2
Kr0e Circular reference - Serialisierung Allgemeine Java-Themen 6
K Serialisierung in Properties-Datei möglich? Allgemeine Java-Themen 3
B Serialisierung mit Unterobjekten über Netzwerk Allgemeine Java-Themen 3
C Serialisierung - Standardwert für nachträglich hinzugefügtes Feld Allgemeine Java-Themen 2
S Serialisierung der Kindklasse Allgemeine Java-Themen 5
K Serialisierung komplett selbst machen Allgemeine Java-Themen 13
C Serialisierung ohne Serializable Allgemeine Java-Themen 4
S Serialisierung und Referenzen Allgemeine Java-Themen 6
S Viele Bilder -> Speicher ausgelastet? / (De-)serialisierung geht nicht mehr richtig Allgemeine Java-Themen 8
E Objekt bei Serialisierung ändern Allgemeine Java-Themen 2
Q Serialisierung / Speicherung Geschwindingkeit & Aktuelle Position Allgemeine Java-Themen 7
Z Serialisierung und Deserialisierung einer HashMap Allgemeine Java-Themen 17
W Serialisierung Allgemeine Java-Themen 6
K Serialisierung von Hashmap in Vector Allgemeine Java-Themen 3
F Serialisierung und Obfuscation? Allgemeine Java-Themen 7
G (De)serialisierung und Referenzen Allgemeine Java-Themen 5
T Serialisierung: Wie macht RMI das so schnell? Allgemeine Java-Themen 14
J Serialisierung: readInt + writeInt Allgemeine Java-Themen 4
X Einige Fragen zu Serialisierung Allgemeine Java-Themen 2
J bean + serialisierung + serialVersionUID Allgemeine Java-Themen 3
K Serialisierung Allgemeine Java-Themen 6
thE_29 Wie funktioniert Serialisierung? Allgemeine Java-Themen 10
S Problem mit Serialisierung Allgemeine Java-Themen 2
C Serialisierung von JComboBox Allgemeine Java-Themen 4

Ähnliche Java Themen


Oben