using System; namespace DesignPatterns.State { public class PinEnteredState : IState { public PinEnteredState( 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 ) { Console.Out.WriteLine( "You've already entered a pin." ); } public void ProcessTransaction( ) { _terminal.CurrentState = new ProcessingTransactionState( _terminal ); } public void PrintReceipt( ) { Console.Out.WriteLine( "The transaction needs to be authorized first" ); } private IPosTerminal _terminal; } }