Map should hold its own state in terms of Mark objects.
There are roughly two approaches:
Mark accepts only '0' or 'X' in its constructor, and Map stores an array of fixed size 9 with null or Mark instances
Mark accepts '0', 'X' or a special symbol for "empty square", and Map stores an array of fixed size 9 of Mark('special symbol here') by default, with Mark('0') or Mark('X') where the players have placed their symbols.
Map should hold its own state in terms of Mark objects.
There are roughly two approaches:
null
or Mark instances