C# tic-tac-toe领域模型的建立

C# tic-tac-toe领域模型的建立,c#,java,oop,uml,C#,Java,Oop,Uml,我正在尝试制作一个Tic-Tac-Toe游戏的域模型。然后,我将尝试继续完成统一过程的各个步骤,然后用某种语言(C#或Java)实现它 如果我走的是正确的道路,我希望得到一些反馈: 我定义了两个角色的游戏,playero和playerx 我不确定是否同时定义平铺和平铺状态。也许我应该只定义一个Tile,然后让3个可能的状态从中专门化 我不确定什么是最好的:让Player O和Player X与Tic Tac-Toe关联,或者让它们从与Tic Tac-Toe关联的Player继承。按照图中所示的

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

如果我走的是正确的道路,我希望得到一些反馈:

我定义了两个角色的游戏,
playero
playerx

  • 我不确定是否同时定义
    平铺
    平铺状态
    。也许我应该只定义一个
    Tile
    ,然后让3个可能的状态从中专门化
  • 我不确定什么是最好的:让
    Player O
    Player X
    Tic Tac-Toe
    关联,或者让它们从与
    Tic Tac-Toe
    关联的
    Player
    继承。按照图中所示的设计,理论上我们可以有一个
    Tic-Tac-Toe
    概念和两个玩家O,这是不正确的。你对此有何看法
  • 另外,我是否在图表中遗漏了什么?虽然我看不到其他的演员,但我应该有其他演员吗


    谢谢

    另一种类分解方法是用游戏和移动取代棋盘和平铺。游戏将包含一系列合法的移动,移动将包含方坐标(或其他标识符)以及玩家是O还是X。此方案包含更多信息,允许游戏可以重播和备份。

    到图表:

  • 是由应该是构成关系,而不是关联构成的 (磁贴不能单独存在,电路板的状态由其磁贴的状态定义。)
  • Player O和Player X是Player类的实例,而不是子类 (玩家0和玩家X与玩家有相同的结构,他们有相同的行为,区别在于你的图表中的身份和状态名称)

  • 当你谈论领域模型(在UP的上下文中)时,你应该忘记创建一个软件系统,只包括对tic tac toe游戏领域重要的内容。想象一下任何游戏是如何描述的——它有自己的规则(准备、回合、游戏结束条件等)、玩家(具有更多游戏的身份、点数、拥有/控制的组件、角色等)和物理组件(棋盘、令牌、人物、牌等)。如果您接受这些元素是游戏领域模型的一部分,因此您的tic-tac-toe游戏的元模型,那么您应该使用元素,这些元素就是这些元素的实例。

    我认为平铺不应该有坐标(或者应该有一块板..它有什么用。。它只有9张牌,而且它们永远不会改变,我只会从1-9开始给它们编号,这样也更容易检查获胜状态。另外,我也不确定我是否会使用播放器,你可以想出一个交替符号(O或X)来放置在磁贴中,当你发现一个获胜条件时,你只需将当前simbol Counte的分数ad+1。棋盘是一个磁贴容器。一个井字游戏有一个棋盘。这并不意味着我在类图中会有相同的类。sry对于不相关和不相关的发布,您在这个图中使用的软件是什么?