>>416
>>420
補足しておくと

>たとえばバトルクラス(のオブジェクト)がキャラクラス(のメソッド)に、
>キャラクラスがウェポンクラスに、、と短いアクセスを繰り返す

これは単純化して話してしまったが、実際の設計では
汎用的なキャラクラスをそのままバトルで使うことはまずしない

つまりマップを歩くのもバトルするのも
ひとつのクラスを使い回す、ということはしない

実際はバトラー(戦闘用キャラ)クラスを使う
戦闘にしか使わず戦闘以外で参照されないから
戦闘終了時にインスタンスを消しても問題ないというわけ

外部でも使うゴールドとかアイテムとかについては
戦闘終了時に引き渡すようにする

それから戦闘システム内でも
戦闘に参加するキャラがそれぞれを相互参照はしない

仲介するクラスが一元的に管理することで
参照は必要最小限で済む

こういうのは説明しだすとキリがないから
やはりOOPとか設計の本を読むしかない