【发布时间】:2013-02-21 22:24:58
【问题描述】:
我目前学习 Java 有几个原因,其中一个主要原因是它是一种非常面向 OOP 的语言,而用 Java 编写代码确实有助于我理解 OOP 编程背后的核心概念。
但是,我在定义我的类之间的关系时遇到了困难。我了解继承和组合之间的区别,但我很难看清全局,以及我的所有类应该如何作为一个整体协同工作。
我将如何使用 OOP 编写简单的井字游戏的示例;
创建
Game类 - 创建gameBoard类的实例, 决定谁先开始,跟踪比赛的输赢,开始 并结束游戏。创建一个
gameBoard类 - 更新井字游戏板, 确定下一位玩家的回合,如果移动是合法的,并且 确定何时有赢家创建一个抽象的
Player类 - 保存玩家的图块(X 或 O),并且 包含一个将gameBoard实例作为参数的方法,并且 将玩家的移动传递给实例引用创建一个扩展
Player类的Human类。包含 处理来自键盘的玩家输入的方法创建一个扩展
Player类的Computer类。有个 将gameBoard实例作为参数并分析的方法 制胜棋步、阻挡棋步或任何其他棋子的棋盘 移动,然后移动
这是我将采取的方法。但是,我在将所有课程联系在一起时遇到了一些麻烦。在某些情况下,关于某些方法和字段应该属于何处的界限似乎有些模糊。
编辑:修改后的问题:
在为我的类确定清晰、已定义的角色时,什么是一种好的方法,而不是太忙于尝试定义和封装我的程序的各个方面?我的很多对象可以从其他类调用来执行每个类具有的特定功能,即Player更新gameBoard,gameBoard更新Game,但我不知道这是否是一个好习惯,或者传递过多的对象引用会使代码变得僵硬且难以维护。
【问题讨论】:
-
您的问题过于宽泛,无法合理回答。您能否进一步简化并以您想回答的具体问题结束(我可以在您的文本中看到很多问题,每个问题都不容易回答)?
-
我会尝试将我的问题重新表述为一个具体问题。
-
来自堆栈溢出常见问题解答:“你的问题应该有合理的范围。如果你能想象一本书可以回答你的问题,那你就问得太多了。”这不是堆栈溢出的问题。
-
我的问题很具体,但我发现很难简洁地表达出来。我的问题是关于创建明确定义的类和可读的代码。
-
我同意 vikingsteve 的回答,他说对 Gameboard 重视没有多大意义是对的。 Gameboard 只是一个被动实体,将由玩家更新并由 Game(或 GameController)评估。
标签: java oop inheritance composition