main
 1namespace mars.rover.domain
 2{
 3    public class Rover
 4    {
 5        public Coordinate y { get; private set; }
 6        public Coordinate x { get; private set; }
 7        public Heading heading { get; private set; }
 8
 9        public Rover(Coordinate x, Coordinate y, Heading heading)
10        {
11            this.x = x;
12            this.y = y;
13            this.heading = heading;
14        }
15
16        public virtual void turn_left()
17        {
18            heading = heading.turn_left();
19        }
20
21        public virtual void turn_right()
22        {
23            heading = heading.turn_right();
24        }
25
26        public virtual void move_forward()
27        {
28            heading.move_forward_from(x, y);
29        }
30
31        public override string ToString()
32        {
33            return string.Format("{0} {1} {2}", x, y, heading);
34        }
35    }
36}