gpt4 book ai didi

Java国际象棋 : Should finding nearby square be a method of Square or Board class?

转载 作者:行者123 更新时间:2023-12-03 02:32:52 27 4
gpt4 key购买 nike

我正在用 Java 编写一个国际象棋游戏,并使用包含 Square 对象的二维数组的 Board 类对其进行设置。每个正方形都有高度和宽度(介于 0 和 7 之间(包括 0 和 7))。我将编写一个接受方形对象、垂直偏移和水平偏移的方法。

例如:如果我调用 getNearbySquare(mySquare, 3, 2),它应该返回我的 Board 中位于 mysquare 上方 3 和 mySquare 右侧 2 的正方形对象。

我最初将其编写为 Square 类中的实例方法,它只接受垂直和水平偏移。问题是,我正在创建然后返回一个新的方形对象,而不是 Board 类中的二维数组中的正确对象。

我看到两个选项:

1) 在 Square 类中创建一个实例方法,该方法接受 Board 对象、垂直偏移和水平偏移。我将找到调用此方法的正方形对象的当前高度和宽度,添加垂直和水平偏移以获取所需正方形在 Board 中的新位置,然后使用 Board[newHeight][newWidth] 访问它。

2) 在 Board 类中创建一个实例方法执行相同的操作,但不需要我像 1) 那样传入 Board 对象。相反,我需要传入方形对象。

就做出这些决定而言,是否存在普遍接受的做法?

感谢您的帮助,马里奥格

最佳答案

从一个非常简单的角度来看,将 getNearbySquare() 方法作为 Board 的实例方法比作为 Squares 的实例方法更有意义,因为该方法将需要有关电路板布局和人口的详细信息,这将更容易在 Board 实例中完成(并保持封装/松散耦合)。

Square 实例上使用该方法意味着让 Square 对象能够访问有关棋盘的信息,而这些信息可能应该是私有(private)的。

相关阅读;

关于Java国际象棋 : Should finding nearby square be a method of Square or Board class?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27870276/

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