UML类图 - 多重性决定了实现限制吗?

时间:2013-11-02 11:27:20

标签: uml analysis class-diagram diagramming

考虑与我最喜欢的例子(国际象棋)进行简单的聚合:我会创建像二维棋子一样的棋盘(至少在我看来是很好的解决方案),例如:

chessman [,] board=new chessman[8,8];

这意味着在每个位置都可以有一个西洋棋棋子。但实际上,最多只会有32名西洋棋棋子。 这就是问题 - 类图应该显示,实现还是我的假设?

BOARD<> ---- Chessman 0..64或0..32?

因为实现肯定允许64,而游戏逻辑不应允许超过32。

1 个答案:

答案 0 :(得分:2)

不应该作为0...64,因为有64个ChessMan,其中只有32个数组不为空。
在类图中,我们不会省略(减少)null的引用 enter image description here
再一次,这是真的,只有32个对象不为null,但这不是类图事物,你需要游戏中的整个64个块,这就是类图描述。
但除此之外,我真的没有看到你的方法设计得很好,因为board数组总是有+ 50%为空。所以我的建议是保持(跟踪)ChessMan,并找到每个ChessMan位置。您还可能需要删除丢失的ChessMan enter image description here
正如您在上面的示例中所看到的那样,丢失每个ChessMan可能导致在数组中设置空值,但在类图中我们总是设置关联的ACTUAL大小。登记/> 您和我的解决方案存在很大差异,您的解决方案针对最佳流程执行进行了优化(针对速度进行了优化),如果每次移动您只需从board读取相关块并处理该单词。
但我的内存管理已针对最佳内存管理进行了优化(针对内存使用进行了优化),在此解决方案中,您只需检查整个数组,找出谁属于相关块。

另一种解决方案是继续跟踪位置