简单应用程序的类图

时间:2012-03-03 14:58:02

标签: oop class uml aggregation

假设我们有3个实体:Library,Section&书。

Library由多个Sections组成。 Section有几个Books

Book可能只属于1 Section。最后,Section可能只属于1 Library

我看到的方式是,课程Library 汇总 Sections和课程Section 汇总的集合Books

现在我需要将所有图书上传到服务器。我构建了一个类BookUploader,它在其构造函数中获取Book对象。在服务器上,我为每个库创建了一个文件夹,在每个库中,我将创建一个Section文件夹并将Book放入其中。

问题是因为我将Book对象传递给BookUploader我不知道它是什么部分。另外我不知道哪个部分属于哪个图书馆。

所以我想我只是将Library对象传递给BookUploader然后循环所有Section然后循环每个Section中的所有Books,但是有人告诉我现在BookUploader依赖于3个类来上传Book这是一个糟糕的设计。

他建议每个Book对象应该保存它的Section,每个Section应该保存它的Library,这是我原始设计的总反转。

有人可以分享他对哪种设计更好以及为什么会这样做的想法?

提前致谢。

2 个答案:

答案 0 :(得分:1)

将聚合定义为双向关联的一端并没有错。 (查看herehere示例。)

如果您正在寻找实施细节,请查看,例如在EReferences的ecore的EOpposite功能中。

答案 1 :(得分:0)

在阅读@ Chad的评论之后,我意识到设计本身需要对相关实体进行一些修改。 缺少的是每个子类中的一个函数,它将返回对其父级的引用。