using System; namespace CSharpAbstractionDemo { class Program { static void Main(string[] args) { Robot[] robots = new Robot[2]; robots[0] = new ApplePickerRobot("Robbie"); robots[1] = new ApplePickerRobot("Frank"); SayHelloToAllRobots(robots); robots[0].ProgramAction(new CloseRobotHandAction()); robots[0].ProgramAction(new MoveRobotForwardAction()); // Second robot performs action in reverse sequence robots[1].ProgramAction(new MoveRobotForwardAction()); robots[1].ProgramAction(new CloseRobotHandAction()); ExecuteAllRobotPrograms(robots); Console.ReadKey(); } static void SayHelloToAllRobots(Robot[] robots) { foreach (Robot robot in robots) { robot.SayHello(); } } static void ExecuteAllRobotPrograms(Robot[] robots) { foreach (Robot robot in robots) { robot.RunProgram(); } } } }