public MarsRover(Position position, CompassDirection compassDirection, ILocation plateau) { if (!plateau.IsPositionValid(position)) { throw new ArgumentException("position", $"{position} is not valid."); } if (!plateau.IsPositionFree(position)) { throw new ArgumentException("position", $"{position} is not free."); } Position = position; CompassDirection = compassDirection; Plateau = plateau; Plateau.AddRover(this); }