14.1 永続性のレベル
オブジェクトは、次の 4 つのレベルのうち、いずれかの永続性を持ちます。
- 永続性なし- オブジェクトに格納および取り出しの機構がありません。
- 単純永続性- このレベルの永続性は、個々のオブジェクトにストリームまたはファイルへの格納と取り出しを提供します。単純永続性は、格納されるオブジェクト間のポインタ関係を保存しません。
- 同形永続性- このレベルの永続性は、格納されるオブジェクトのポインタ関係を保存します。
- 多形永続性- 最も高いレベルの永続性です。多形永続性は、格納されるオブジェクト間のポインタ関係を保存し、オブジェクトの取り出しプロセスでそのオブジェクトの型が分からなくても、オブジェクトを読み出すことができます。
各クラスの永続性については、『Tools.h++ Class Reference』を参照してください。この章では、永続性のある独自のクラスを設計する場合の説明、例、手順を使って、各レベルの永続性について情報を提供します。
14.1.1 用語について
Tools.h++ には、オブジェクトを保存し復元するための入力と出力の各クラスが用意されています。これらのクラスは、次のとおりです。
- RWFile — RWFile は、オブジェクトをファイルに格納し復元するために使用します。
- RWvostream — Rwpostream、Rwbostream、Rweostream などの RWvostream から派生したクラスは、オブジェクトを保存するために使用します。
- RWvistream — Rwpostream、Rwbistream、Rweistream などの Rwvistream から派生したクラスは、オブジェクトを復元するために使用します。
説明を簡単にするために、これらの入力および出力クラスすべてを「ストリーム」と呼びます。RWFile の代わりに RWvostream と RWvistream を使用するときの長所と短所については、第 6 章「仮想ストリームの使い方」と第 7 章「RWFile の使い方」を参照してください。
14.1.2 この章の例について
この章で示されている例はすべて、ディスクの rw/toolexam/manual ディレクトリに納められています。この章の各例は、それぞれ persist*.cpp という名前を持っています。