我目前正在制作一个格斗游戏的域模型,我很难确定某些元素应该是它们自己的一个类还是某个类的属性。例如,我使用了一个类别列表来确定以下想法/对象:战士、等级、武器、护甲、属性、技能、竞技场、游戏模式、游戏日志、对手。
例如,我分不清等级、武器、护甲、属性、技能是应该简单地表述为战士的属性,还是应该将它们划定为自己的对象。我也不能确定对手是否应该是一个独特的类,因为它最终是一个与另一个战斗机有“攻击/防御”关联的战斗机对象。
如何确定类别列表中每个元素的正确选择是什么?这些可以是主观的吗?
仅供引用,我使用 Craig Larman 的“应用 UML 和模式”第 3 版作为信息源。
最佳答案
澄清一下您的问题——域模型中的每个类都有一组属性。我认为您要问的问题是,这些属性中的每一个的类型是否应该是类本身,还是其他一些数据结构(例如结构、枚举、原语等)?
如果这是正确的,那么答案归结为源于您的分析的设计选择;没有一种“正确的方法”——这就是软件设计的艺术。但是,在做出决定时,您可能需要考虑以下几个关键因素:
因此,例如,您可以将“武器”表示为类型为类或使用简单类型的属性。 “武器”有自己的行为吗?它是否包含多个复杂数据?是否有 NFR 意味着它只能真正被视为枚举?等等。
关于UML 领域模型 : How to distinguish attributes and classes?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50552822/