Serializzazione dei dati da e verso i file
L'idea di base della persistenza è che un oggetto deve essere in grado di scrivere lo stato corrente, indicato dai valori delle variabili membro, nell'archiviazione permanente. Successivamente, l'oggetto può essere ricreato leggendo o "deserializzando", lo stato dell'oggetto dall'archiviazione permanente. Un punto chiave è che l'oggetto stesso è responsabile della lettura e della scrittura del proprio stato. Pertanto, affinché una classe sia persistente, deve implementare le operazioni di serializzazione di base.
Il framework fornisce un'implementazione predefinita per il salvataggio dei documenti in file su disco in risposta ai comandi Salva e Salva con nome nel menu File e per il caricamento di documenti da file su disco in risposta al comando Apri. Con molto poco lavoro, è possibile implementare la capacità di un documento di scrivere e leggere i dati da e verso un file. La cosa principale da eseguire è eseguire l'override della funzione membro Serialize nella classe del documento.
La Creazione guidata applicazione MFC inserisce automaticamente un override scheletro della CDocument
funzione Serialize
membro nella classe documento creata automaticamente. Dopo aver implementato le variabili membro dell'applicazione, è possibile compilare l'override Serialize
con codice che invia i dati a un "oggetto archivio" connesso a un file. Un oggetto CArchive è simile agli oggetti cin e cout input/output dalla libreria iostream C++. Tuttavia, CArchive
scrive e legge il formato binario, non formattato.
Cosa vuoi sapere di più su
Ruolo del documento nella serializzazione
Il framework risponde automaticamente ai comandi Apri, Salva e Salva con nome del menu File chiamando la funzione membro del Serialize
documento, se implementata. Un comando ID_FILE_OPEN, ad esempio, chiama una funzione del gestore nell'oggetto applicazione. Durante questo processo, l'utente visualizza e risponde alla finestra di dialogo Apri file e il framework ottiene il nome file scelto dall'utente. Il framework crea un CArchive
oggetto configurato per il caricamento dei dati nel documento e passa l'archivio a Serialize
. Il framework ha già aperto il file. Il codice nella funzione membro del Serialize
documento legge i dati nell'archivio, ricostruendo gli oggetti dati in base alle esigenze. Per altre informazioni sulla serializzazione, vedere l'articolo Serializzazione.
Ruolo dei dati nella serializzazione
In generale, i dati di tipo classe devono essere in grado di serializzare se stesso. Ovvero, quando si passa un oggetto a un archivio, l'oggetto deve sapere come scriversi nell'archivio e come leggersi dall'archivio. MFC fornisce il supporto per rendere serializzabili le classi in questo modo. Se si progetta una classe per definire un tipo di dati e si intende serializzare i dati di tale tipo, progettare per la serializzazione.