Thursday 7 July 2011

The abstractions ....

The Direction and types...

namespace MarsRover
{
abstract class Direction
{
public abstract Direction GetLeft();
public abstract Direction GetRight();
public abstract Position GetNext(Position pos);
}

class East : Direction
{
public override Direction GetLeft()
{
return new North();
}

public override Direction GetRight()
{
return new South();
}

public override Position GetNext(Position pos)
{
pos.X++;
return pos;
}

public override string ToString()
{
return "East";
}
}

}


The step and steps....

namespace MarsRover
{
abstract class Step
{
public abstract Position GetPosition(Position position);
}

class LeftRotation : Step
{
public override Position GetPosition(Position position)
{
position.Direction = position.Direction.GetLeft();
return position;
}
}

class Move : Step
{
public override Position GetPosition(Position position)
{
return position.Direction.GetNext(position);
}
}
}

namespace MarsRover
{
abstract class Plateau
{
public abstract bool IsPositionOutOfRange(Position pos);
}

class RectPlateau : Plateau
{
readonly int x;
readonly int y;

public RectPlateau(int x, int y)
{
this.x = x;
this.y = y;
}

public override bool IsPositionOutOfRange(Position pos)
{
return ((x < pos.X) || (y < pos.Y))
? true
: false;
}
}
}

No comments:

Post a Comment