制作tic tac toe的域模型

dev*_*ium 9 c# java oop uml

我正在尝试制作Tic Tac Toe游戏的域模型.然后我将尝试继续统一过程的各个步骤,然后以某种语言(C#或Java)实现它.

如果我走的是正确的道路,我想得到一些反馈: alt text http://dl.dropbox.com/u/6187267/shooterpics/tictactoedm.jpg

我用两个演员定义了游戏,Player O并且Player X.

  1. 我不确定定义a Tile和a Tile State.也许我应该只定义一个Tile并且有3个可能的状态专门从它?
  2. 我不确定什么是最好的:拥有两者Player OPlayer X与之相关联Tic Tac Toe或者让它们Player与之相关联Tic Tac Toe.按照图片上显示的设计,理论上我们可以有一个Tic Tac Toe2 Player O的概念,这是不正确的.你对这个有什么看法?

另外,我在图中遗漏了什么?虽然我看不到Tic Tac Toe的其他任何演员,我还有其他吗?

谢谢

bbu*_*dge 7

另一种类别分解是用Game和Move替换Board和Tile.一个游戏将包含一个合法一系列举动,和移动将包含方坐标(或一些其它标识符)和它是否是玩家O或X.该方案拥有多一点的信息,使游戏可以重放和备份.


Gab*_*bák 1

到你的图表:

  1. 由组合关系构成,而不是关联(Tiles 不能单独存在,Board 的状态由其 Tiles 的状态定义。)
  2. 玩家 O 和玩家 X 是 Player 类的实例,而不是子类(玩家 0 和玩家 X 与 Player 具有相同的结构,它们具有相同的行为,区别在于身份和状态 - 图中的名称)

当您谈论领域模型(在 UP 的上下文中)时,您应该忘记创建软件系统,而只包含对 tic tac toe 游戏领域重要的内容。想想如何描述任何游戏 - 它有其规则(准备、回合、游戏结束条件等)、玩家(具有更多游戏的身份、分数、拥有/控制的组件、角色...)和物理组件(板、代币、人物、卡片...)。如果您接受这些元素作为游戏域模型的一部分,并因此作为井字游戏元模型的一部分,那么您应该使用元素,它们是该元素的实例。