我对我的编程技能有了更多信心,所以我决定重新开始一个之前开发的纸牌游戏。现在这个程序的目标是,由于我对程序流程、变量、条件等方面有了不错的掌握,我想深入了解面向对象编程。
因此,我需要一些关于面向对象设计的建议。
我的纸牌游戏将有5个类:
- Main
- Card
- Deck(拥有一个 Card ArrayList)
- Player(从 Deck 对象接收 Card 对象的 Card ArrayList)
- Dealer
我想知道将 Dealer 类作为接口是否符合面向对象编程的原则。所有玩家都应该能够扮演荷官的角色,但不用说,在每一轮发牌中只有一个荷官。即使在任何给定回合中有 8 个 Player 对象中的 7 个不使用其实现的方法,也不能将其视为荷官。那么,即使如此,将 Player 类实现荷官可执行的方法(例如 dealGame())是否可以,或者将 dealGame() 方法归属于 Deck 类并调用 deck 来发牌是否更好?抱歉如果这是一个愚蠢的问题,但我对面向对象编程的原则有点模糊,想要一些建议,以便第一次就做对。
我还想让 Dealer 扩展 Player,但我认为这是错误的,因为我需要玩家能够在游戏中随时扮演荷官的角色,而不是以不可改变的方式声明为 Dealer 对象。在这种情况下,如果 Dealer 扩展 Player,则我认为需要将游戏中的所有玩家都声明为 Dealers。
所以基本上我在问:
- 如果您正在开发这 5 个类的纸牌游戏,您会将 Dealer 类作为接口,其余正常类吗?为什么或为什么不?
- 我的面向对象编程是否正确?还是我完全迷失了方向?
Dealer
类不太确定。也许一个更好的想法是创建一个Game
类,它可以跟踪元数据。它处理来自牌堆的实际发牌,跟踪哪些玩家已经弃牌,哪个玩家是庄家,计分等等。 - nhgrif