gpt4 book ai didi

UML 域模型 : How to distinguish attributes and classes?

转载 作者:行者123 更新时间:2023-12-01 11:16:21 26 4
gpt4 key购买 nike

我目前正在制作一款战斗游戏的领域模型,我很难确定某些元素应该是它们自己的一个类还是某个类的属性。例如,我使用类别列表来确定以下想法/对象:Fighter、Level、Weapon、Armor、Attributes、Skills、Arena、Game Mode、Game Log、Opponent。

比如Level、Weapon、Armor、Attributes、Skills,我就分不清是简单的表述为一个战士的属性,还是应该单独划定一个对象。我也不知道对手是否应该是一个不同的类,因为它最终是一个战士对象,与另一个战士有“攻击/防御”关联。

如何确定类别列表中每个元素的正确选择?这些可以是主观的吗?

仅供引用,我使用 Craig Larman 的“应用 UML 和模式”第 3 版作为信息来源。

最佳答案

暂时澄清您的问题——领域模型中的每个类都有一组属性。我认为您要问的问题是,这些属性中的每一个的类型本身应该是一个类,还是其他一些数据结构(例如结构、枚举、基元等)

如果这是正确的,那么答案就归结为基于您的分析的设计选择;没有一种“正确的方法”——这是软件设计的艺术。但是,您在做出决定时可能需要考虑一些关键事项:

  1. 行为要求的证据。 Attribute 引用的对象是否需要封装behaviour 本身?显然,某些数据结构不可能封装行为,这可能会导致您对可以封装的行为做出选择(例如,类还是结构)。
  2. 数据结构的复杂性。 Attribute 引用的对象是否需要封装复杂的数据结构? (例如,各种原始和/或复杂类型的多个,可能是分层的数据)还是简单的? (例如,单个整数值)。同样,结构的复杂性会限制您表示它的方式。
  3. 您的系统有哪些非功能性需求? (例如性能要求?)性能、可扩展性和安全性等 NFR 可能会限制您的设计选择,因此您可能会选择以简单的方式表示复杂类型或消除行为需求等。
  4. 设计选择对您有帮助还是有阻碍?以过于复杂的方式表示阻碍您的工作或系统的事物是没有意义的。
  5. 听众。这可能是最重要的一点——您将领域模型放在一起是为了谁,以及您试图与他们沟通什么?

因此,例如,您可以将“武器”表示为类型为类或使用简单类型的属性。 “武器”有自己的行为吗?它包含多个复杂数据吗?是否有 NFR 意味着它只能真正被视为枚举?等等。

关于UML 域模型 : How to distinguish attributes and classes?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50552822/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com