Powershell(オセロ004_オブジェクト指向で作成_設計)

■先に作ったものをオブジェクト指向で考えてみる。
Windows S modeを解除しクラスを使えるようになったので、前に作ったオセロのプログラムをオブジェクト指向にならった考え方で直してみる。オブジェクト指向については、Wikiを見るとその歴史など細かく書いてあり奥深そうだけど、データと関数を持つオブジェクト(クラス)を使うことくらいの認識。ある程度まとまった単位のオブジェクトを作り、オブジェクト内の処理とオブジェクト間の処理など分けるので、プログラムのコードは見やすくなると思う。

まず、オセロのプログラムの登場人物(クラス)とそれぞれが持たなければならないデータと機能について下のように考えてみた。
 ・ボード(Board)
   8×8の盤上のデータ(boardData)
   表示機能(showBoard)
   保存機能(saveBoard)
   結果集計の機能(sumResult)
 ・プレイヤー(Player)
   石を置く場所を考える機能(thinkPlace)
   石を置く機能(placeStone)
   石を裏返すロジックの機能(reverseStones)

プレイヤーはボードの配置を見て、石を置く場所を考えるので、8×8の盤上のデータはプレイヤーに渡す必要がある。また、ボードはプレイヤーから石を置く位置を受ける必要がある。あとは審判のようなものも必要かなー。でも、オセロのルールはそんな複雑ではないので、ルールはプレイヤーの共通認識としてプレイヤーの機能として含める。

次に、処理の流れは下の通り。
 1.ボード、プレイヤーA、Bの初期化
 2.プレイヤーAからボードへ石の場所のデータを受け渡し。
 3.ボードからプレイヤーBへ盤上のデータを受け渡し。
 4.プレイヤーBからボードへ石の場所のデータを受け渡し。
 5.ボードからプレイヤーAへ盤上のデータを受け渡し。
 6.2~5の繰り返し。
 7.プレイヤーA、Bともに石を置けなくなったら、終了。

機能はどういったデータを入力して、どういったデータを出力するかもう少し厳密に定義しないといけない気もするけど、作る中で不具合があれば適宜変えていくとして、まずこれで初めてみる。