gpt4 book ai didi

oop - 小说/书籍面向对象的设计方法

转载 作者:行者123 更新时间:2023-12-04 14:06:04 29 4
gpt4 key购买 nike

我正在创建小说或书籍的面向对象表示。我正在寻找关于如何制作对象以及如何制作另一个对象的属性方面的设计模式或建议。

例如,假设我对小说中的人物感兴趣,以及他们出现在哪些章节和页面上。

我正在努力解决的概念是如何使用两种类型的“容器”组织对象系统,这两种类型的“容器”都参与与相同实例的关系。我想这会出现在其他系统中,这些系统对底层数据有隐喻的“物理”和“逻辑” View 。

这里有多种可能的对象:小说、章节、页面、人物。

这些可能的对象之间存在多种关系:

  • 小说有一系列章节、一系列页面和一系列人物
  • 章节有一系列页面,以及零个或多个字符的集合
  • 页与一个或多个章节、零个或多个字符相关联
  • 字符与一个或多个页面和章节相关联

  • 这些对象的目的是回答以下问题:
  • 爱丽丝角色出现在哪些页面?
  • 第6章出现了哪些人物?
  • 哪些字符经常出现在同一页面上?
  • 鲍勃第一次提到角色是在哪一页?

  • 我对如何处理这种设计有点迷茫。我看到了一些方法:
  • 将所有内容(小说、章节、页面、角色)设为对象,并且这些对象中的每一个都有对它们包含的/与之相关的其他对象的引用列表
  • 将章节或页面中的一个放在首位,并使另一个成为第一个的属性。例如,我们可以只使用 Novel、Chapter 和 Character 对象列表,并使“pages”成为 Chapter 对象的属性。
  • 我们可以更进一步,坚持使用小说和角色,并为每个角色赋予一些属性,例如:“出现在章节中”和“出现在页面上”

    好吧,我希望这对于一些 OO 设计大师来说已经足够清楚,可以建议在对象或属性之间划清界线,以及如何设计一个对象系统,其中有不同类型的容器(章节,页面),感兴趣的对象(字符) ) 属于。
  • 最佳答案

    重要的是您已经说明了您的软件的目的是回答有关本书的各种问题,包括给定页面上出现的字符。

    这告诉我们两件事:

  • 您正在寻求对特定的物理布局进行建模
    一本书的版本(否则上面的示例问题将
    没有意义)。
  • 您的设计将受到以下因素的严重影响
    需要回答的问题的范围,因为这将
    确定您的系统是否会:
  • 使用数据结构预先缓存需要作为答案的元数据(例如
    显式存储字符出现的页面列表),
  • 存储“原始数据”(例如,作为小说树>章节>页面>文本),然后对其进行处理以回答给定的问题,
  • 两者的某种组合

  • 我怀疑在您的情况下组合可能是正确的,因此您的“原始数据”将以与您提到的第一种方法类似的方式表示:

    Make everything (Novel, Chapter, Page, Character) an object, and each of these objects has lists of references to other objects they contain / relate to"



    除了 Page 的实例将引用 Text 的实例, 而不是 Character相反,它将成为一个元数据类。

    元数据可以预先缓存,或通过拖网原始数据按需生成。

    无论哪种方式,您都需要规范化您的数据模型,

    关于oop - 小说/书籍面向对象的设计方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16848007/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com