プログラミングのスキルに少し自信がついたので、以前に始めたカード ゲームを再開することにしました。このプログラムの要点は、プログラムの流れ、変数、条件などをある程度理解できたので、OOP の理解を深めたいということです。
だから私はオブジェクト指向設計についてのアドバイスが必要です
私のカード ゲームには 5 つのクラスがあります。
- 主要
- カード
- Deck (カード ArrayList を持つ)
- Player (Deck オブジェクトから受け取った Card オブジェクトの Card ArrayList を持っています)
- ディーラー
Dealer クラスをインターフェイスにするのが適切な OOP であるかどうか疑問に思っています。すべてのプレイヤーがディーラーの役割を果たすことができるはずですが、言うまでもなく、カードのラウンドごとにディーラーは 1 人しかいません。Player クラスに、ディーラーが実行できるメソッド (dealGame() など) を実装しても問題ありませんか? 特定のラウンドで 8 つの Player オブジェクトのうち 7 つが実装されたメソッドを使用しない場合でも、その時点でディーラーとみなされるには?それとも、dealGame() メソッドを Deck クラスに所属させ、デッキを呼び出してゲームを処理する方がよいでしょうか? これが愚かな質問である場合は申し訳ありませんが、私はOOPの原則について少し大雑把であり、最初から正しく行うことを学ぶためのアドバイスが欲しい.
また、Dealer で Player を拡張することも考えましたが、変更不可能な方法で Dealer オブジェクトとして宣言するのではなく、プレーヤーがその場で Dealer の役割を引き受ける必要があるため、それは間違っていると思います。この場合、Dealer が Player を拡張する場合、ゲームのすべてのプレイヤーを Dealers として宣言する必要があると思います。
だから基本的に私は尋ねています:
- これらの 5 つのクラスを使用してカード ゲームを作成する場合、Dealer クラスをインターフェイスにし、残りを通常のクラスにしますか? また、その理由は何ですか?
- 私は一般的にOOPで正しい軌道に乗っていますか、それとも完全に迷っていますか?