数据建模,如何将这样的结构建模成类?

时间:2015-07-30 14:06:03

标签: javascript java entity data-modeling

我有一本书课

Class Book
{
    String name;
    String id;
}

具有一些常规属性和一些其他库特定属性,因此库“xyz”中的书ID“111”具有title属性,而库“abc”中具有numberOfPages和维度 所以,它看起来像:

Class Book
{
    String name;
    String id;
    String xyzTitle;
    int abcNumberOfPages;
    float abcHeight;
    float abcWidth;
}

但这看起来并不好。为什么不为书籍信息创建单独的类

Class XYZBookInfo
{
   String title;
}

Class ABCBookInfo
{
   int numberOfPages;
   float height;
   float width;
}

Class Book
{
   String name;
   String id;
   XYZBookInfo xyzInfo;
   ABCBookInfo abcInfo;
}

到目前为止这么好,但是;如果几个库共享一些属性怎么办? 如果XYZ和ABC库对书的重量感兴趣但是另一个库ZZZ不是?

在哪里增加重量属性? 即使我们创建了一个类WeightedBookInfo然后从它创建子类XYZBookInfo和ABCBookInfo,那么我们将不得不在两个类的实例中复制权重值!! !!

我正在尝试创建一个xcode核心数据模型来表示这种结构,但这并不重要,它是一个与技术无关的概念相关问题。

1 个答案:

答案 0 :(得分:0)

您需要将智力内容与陈述区分开来,否则您将严重限制其有用性。此外,利用物理属性的泛化。也许吧:

具有标题和作者等属性的书籍类。 (这个类可能继承自出版物或其他东西。)

bookEdition的界面,包含ISBN,日期,出版商,格式(平装本,精装本,手机版,pdf等)

具有numberOfPages

的physicalPublication接口

某种具有尺寸和重量的物理接口。