【问题标题】:Which relationship should I choose: association or aggregation?我应该选择哪种关系:关联还是聚合?
【发布时间】:2011-06-21 06:08:57
【问题描述】:
我在数据库中有一个 Proffesor 表。我想为代码隐藏部分创建一个 UML 图。
类结构是:
- 映射数据库表中的信息(id、名字等)的 Proffesor 类
- 一个 ProffesorDAL 类,它连接到数据库并查询它以添加、删除、更新 Proffesor 实例
- 通过访问 ProffesorDAL 类添加/删除/更新教授的 3 个表单
我认为forms-ProffesorDAL关系是一种组合关系。它是否正确?
ProffesorDAL-Proffesor 关系怎么样,是聚合还是只是关联? Forms-Proffesor 关系的最佳 UML 关系是什么?
谢谢!
【问题讨论】:
标签:
uml
associations
data-access-layer
aggregation
class-diagram
【解决方案1】:
我会先假设关联,然后从那里分析和设计两者之间是否应该有更强的关系。
我的问题是“它是否拥有它”。示例我会说汽车拥有 4 个轮子(在一长串其他项目中)。
在我的标准设计中,我的 UI 和 DAL 之间有一个 BLL。我首先假设我的三者之间存在松散的关联,后来我得出结论,BLL 和 DAL 之间的联系有些紧密,并且可以从强关系中受益。
对于教授类,我假设这是一个模型类。模型类我只有松散的联系/知识 - 这意味着它们仅作为参数(关联)出现。我的 DAL 与我的模型类(聚合)没有很强的联系。它们只是消息传递者、复杂的整数和布尔值。
【解决方案2】:
UML 聚合关系几乎毫无价值——它造成的混乱远大于价值。它只有一个有用的属性,即如果用于递归关系,则生成的对象结构是非循环的。
真的不值得挂断电话。我的建议是使用简单的二元关联并专注于获得正确的基数。这更有用也更有价值。
第一次。