hi brandon,
that would be my approach:
create one class which holds the board, the position and methods for moving the piece. if you number your fields in a unique way, it's probably enough to hold the fields in a simple list-like structure:
...1...
..2.3..
.4.5.6.
(...)
your only maybe hardcoded part would be to develop the movement. say you got one piece on field 2. then getPossibleDirections(2) would return something like (up left, down right, down left). or, even better, the numbers of allowed fields (1,4,5). "maybe hardcoded" because in the moment i do not see an easy way to calculate the possible directions. this does not mean that no way exists ;-)
moving would be extremely simple, just make sure that the new field is an allowed position.
that't just a rough idea, but i'd say that's a good start for you project.
but: you said nothing about the game itself.
if you need functionality for (for example) judging the constellation of pieces (what is a good constellation to reach?, what is a bad one to avoid?), you need to find a clever way to weight a constellation. for example you might need a method which returns the number of pieces in the center region of the board, while another method might have to count the pieces which a blocked
those method would perfectly fit into the board class (or a subclass / delegate), but make sure that you don't have needs which require different design ;-)
hope it helped a bit,
jan