価値のあることですが、私は通常、他の人が触れたようにコードから離れて、問題のドメインで考え始めることが生産的であると感じています。
モノポリーのようなボードゲームだと思います。実際の支払いはどのように行われますか? 実際にモデル化しようとしているプロセスは何ですか?
あなたが銀行口座クラスを持っていると述べたのは承知していますが、プロセスが実際にジョー・ブロッグスが実際に現金で(トイレの貯水池の彼の隠し場所から)支払うことである場合、フレッドは銀行とは何の関係もありません。銀行口座が必要です。フレッドがマットレス (またはゲームボード) の下に詰め続けるのではなく、ある時点で銀行に預けることを選択した場合、その時点で銀行と口座が必要になります。
プレーヤーが他のプレーヤーのハンドルを取得/保持できると仮定すると、最初のプロセスは (プレーヤーで) 次のようになります。
void payPlayer( player, amount )
{
spendCash( amount ); // reduces stash by "amount"
player.recieveCash( amount );
}
現金の隠し場所のサイズは、プレーヤー クラスの属性にすぎない可能性があります。
2 番目のアクティビティは、まったく別のものです。フレッドは今、まず自分の銀行に 100 ドルを預けたいと伝えなければなりません。それから、彼の銀行は、壁に穴を開けるか窓口係のどちらかによって (願わくば) 彼の口座に入金します。したがって、フレッドは本当に銀行を必要としており、おそらく今すぐ口座を必要としています。しかし、なぜ彼はアカウントが必要なのですか? ゲーム内でどのような目的に使用されますか? それは間違いなくプログラムの必要な要素ですか、それとも銀行は実生活でお金が動く場所だからですか?
次に、プレーヤーが自分の口座の銀行資金を別のプレーヤーの口座に支払いとして送金したい場合があります。このシナリオでは、両方のプレーヤーが銀行と口座を必要としますが、実際に資金を送金できるのは銀行だけであるため、銀行について知る必要があるだけです。もちろん、銀行がゲームで他の重要な役割を果たしている場合にのみ、これを行います。
したがって、ゲームで送金を実装する方法に対する答えは、完全にゲームの仕組みに依存します。銀行口座のようなクラスが本当に必要な場合は、銀行を持っている方が安全です。しかし、そもそもなぜ銀行口座オブジェクトが飛び交う必要があるのか、自問する必要があります。また、プレーヤーの銀行口座が直接関連付けられている場合、それは本当に銀行口座なのか、それともジョーがトイレの水槽に手を浸しているだけなのか?