using System; namespace DesignPatterns.State { public class AmountEnteredState : IState { public AmountEnteredState( IPosTerminal terminal ) { _terminal = terminal; } public void SwipeCard( string cardNumber ) { Console.Out.WriteLine( "You've already swiped a card!" ); } public void EnterAmount( double amount ) { Console.Out.WriteLine( "You've already entered an amount" ); } public void EnterPin( string pin ) { _terminal.Transaction.Pin = pin; _terminal.CurrentState = new PinEnteredState( _terminal ); } public void ProcessTransaction( ) { Console.Out.WriteLine( "You haven't entered an amount yet." ); } public void PrintReceipt( ) { Console.Out.WriteLine( "You haven't entered an amount yet." ); } private IPosTerminal _terminal; } }