小説や本のオブジェクト指向表現を作成しています。オブジェクトを何にするか、別のオブジェクトの属性を何にするかという点で、設計パターンまたはアドバイスを探しています。
たとえば、小説の登場人物に興味があり、登場する章やページに興味があるとします。
私が苦労している概念は、同じインスタンスとの関係に参加する 2 種類の「コンテナー」を使用してオブジェクト システムを編成する方法です。これは、基になるデータの比喩的な「物理的」ビューと「論理的」ビューがある他のシステムで発生すると思います。
ここには、小説、章、ページ、キャラクターなど、さまざまなオブジェクトがあります。
これらの可能なオブジェクト間には、さまざまな関係があります。
- 小説には一連の章、一連のページ、一連のキャラクターがあります
- チャプターには一連のページと、0 個以上のキャラクターのコレクションがあります
- ページは、1 つまたは複数の章、および 0 個以上の文字に関連付けられています
- 文字は 1 つまたは複数のページと章に関連付けられています
これらのオブジェクトの目的は、次のような質問に答えることです。
- アリスというキャラクターが登場するページは?
- 第6章に登場するキャラクターは?
- 同じページに頻繁に登場するキャラクターは?
- ボブというキャラクターが初めて言及されたページは?
この種のデザインにアプローチする方法について、私は少し迷っています。いくつかのアプローチがあります。
すべて (小説、章、ページ、キャラクター) をオブジェクトにすると、これらの各オブジェクトには、含まれている/関連する他のオブジェクトへの参照のリストがあります。
章またはページのどちらか一方を優先し、もう一方を最初の属性にします。たとえば、Novel、Chapter、Character オブジェクト リストだけを使用して、"pages" を Chapter オブジェクトの属性にすることができます。
上記のアイデアをさらに進めて、小説とキャラクターに固執し、各キャラクターに「章で発生」や「ページで発生」などのいくつかの属性を与えることができます。
OO 設計の達人が、オブジェクトまたは属性の間の線をどこで引くべきか、また、関心のあるオブジェクト (キャラクター) ) に属します。