我目前正在学习 Java 有几个原因,但其中一个主要原因是它是一种非常面向 OOP 的语言,而用 Java 编写代码确实有助于我理解 OOP 编程背后的核心概念。
但是,我很难定义我的类之间的关系。我理解继承和组合之间的区别,但是我很难看到整个画面,以及我的所有类应该如何作为一个整体一起工作。
我如何使用 OOP 编写简单的井字游戏的示例;
创建一个
Game
类 - 创建一个类的实例gameBoard
,决定谁先开始,跟踪比赛的输赢,开始和结束比赛。创建一个
gameBoard
类 - 更新井字棋盘,确定下一个玩家的回合,如果移动是合法的,并确定何时有赢家创建一个抽象
Player
类 - 保存玩家的棋子(X 或 O),并包含一个将gameBoard
实例作为参数并将玩家所做的移动传递给实例引用的方法创建一个
Human
扩展类的Player
类。包含处理来自键盘的玩家输入的方法创建一个
Computer
扩展类的Player
类。有一个方法,该方法将gameBoard
实例作为参数并分析游戏板的获胜动作、阻挡动作或任何其他动作,然后进行动作
这是我会采取的方法。但是,我在将所有课程联系在一起时遇到了一些麻烦。在某些情况下,关于某些方法和字段应该属于哪里的界限似乎有点模糊。
编辑:修改后的问题:
在为我的类确定清晰、已定义的角色时,什么是一种好的方法,而不是太忙于定义和封装我的程序的各个方面?我的很多对象可以从其他类调用来执行每个类具有的特定功能,即Player
更新gameBoard
、gameBoard
更新Game
,但我不知道这是否是一种好的做法,或者会通过传递来使代码变得僵硬且难以维护对象引用过多。