>>363
カードゲームはUMLで描くと

フィールド have カード束 1---n カード

フィールド
  <|---- モンスター置場
  <|---- 土地置場
  <|---- 墓地
  <|---- 手札
  <|---- リムーブ領域
  <|---- 汎用一時領域(特殊ドローなど)

みたいな感じになるかな。
ゲーム中のあらゆる行動はフィールド間のやりとりに終始するような
設計にしておくと、カードの効果を実装しやすい。
あとは必要なら呪文解決用のスタック構造とか、ターン進行や
ゲーム進行を抽象化したクラスとか。さすがに戦闘フェイズの数を増やすとか
ゲームの勝利条件を変えるとかのカードはOOPだけじゃ対応できないけどねw