ロボットシミュレーターを書いてみましょう。
ロボット工場の試験施設では、ロボットの動きを検証するプログラムが必要です。
ロボットにできる動きは3つあります。
ロボットは、無限に広がる仮想のグリッド上に置かれ、{x,y}座標(たとえば{3,8})の位置で、north、east、south、westのいずれかの方向を向いています。座標は北と東に向かって大きくなります。
その後、ロボットはいくつかの命令を受け取り、試験施設はロボットの新しい位置と、向いている方向を検証します。
この演習では、スタブがgetX()のようなゲッターを定義しているのに、テストは.xのように値へ直接アクセスしていることに気づいたかもしれません。これはGroovyがプロパティを定義する仕組みによるものです。順を追って見てみましょう。
Groovyのプロパティのポイント:
finalの場合はゲッターのみです)。この演習では、適切な実装を促すために、必要なゲッター(つまり上記のとおりプロパティ)だけを指定しています。解答にとってどのフィールド(とその型)が最適かは、自由に決めてかまいません。
フィールドとプロパティについてさらに深く知りたい場合は、Groovyのドキュメントにある3.3 フィールドとプロパティを参照してください。