【问题标题】:Conceptualization: generalization or not?概念化:泛化与否?
【发布时间】:2014-05-26 05:49:52
【问题描述】:

我正在为一个应用程序建模,它可以让用户寻找房地产。因此,它将成为一个网站,用户可以在其中查找房屋、公寓、城堡、场地、商店、停车场、办公室的出租和销售信息。据此,我在类图中犹豫不决。我应该从类 RealEstateProperty 中概括所有类型的房地产,还是应该只将其关联到一个 TypeOfRealEstate 类,知道例如“Ground”类型也可以作为房地产的基础房屋或城堡之类的财产。停车场也可以是房地产,也可以是房屋的停车场。

任何人都知道最好的方法是什么?提前致谢。

【问题讨论】:

  • 绘制两种设计(例如GenMyModel)并在此处发布,以便我们提供一些想法,哪个更好(:)

标签: uml modeling generalization


【解决方案1】:

这取决于您的系统必须实现的不同房地产的功能。类的特性包括属性、方法和关联

  1. 如果您所有的潜在房地产都具有相同的特征,例如 ID、类型、价格、日期和负责的代理,您无需进一步区分它们,而不是关联类型将完成工作。将 RealEstateType 建模为 Enum(甚至类,如果您希望添加新类型)并将其关联到单个 RealEstate 类。

  2. 如果不同的 RealEstates,在另一个极端,需要具有不同的特性,则需要从基本抽象类继承这些特性。例如,地面有一个属性“面积”,而建筑物有一个“楼层数”。甚至方法也可以不同,或关联。

按照您的示例,您希望将 Ground 链接到 House。这在第二个版本中更清晰 - 只是 Ground 和 House 类之间的关联。在一类版本中,您必须将 RealEstate 与其自身链接并添加空间限制(非常“丑陋”的设计)。

总而言之,尝试考虑不同房地产的特征,并根据它们的差异制定您的房地产层次结构。

您最终可以得到一个班级或几十个班级。 :) 尽量保持这种层次结构尽可能简单(更少的类),但足以清楚地标记它们的不同特征。

【讨论】:

  • 感谢您的回答,真的很有帮助:)
猜你喜欢
  • 2015-04-02
  • 2015-08-17
  • 2012-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多