Listing 3

using namespace System;

/*1*/
public ref class Deposit sealed : Transaction
{

/*2*/   Decimal amount;
    int toAccount;
public:

/*3a*/  Deposit(double amount, int toAccount) : 
                                 Transaction(TransactionType::Deposit)
    {
        DepositAmount = Decimal(amount);
        DepositToAccount = toAccount;
    }

/*3b*/  Deposit(Decimal amount, int toAccount) : 
                                  Transaction(TransactionType::Deposit)
    {
        DepositAmount = amount;
        DepositToAccount = toAccount;
    }
    property Decimal DepositAmount
    {
        Decimal get() { return amount; };
    private:
        void set(Decimal value) { amount = value; }
    }
    property int DepositToAccount
    {
        int get() { return toAccount; };
    private:
        void set(int value) { toAccount = value; }
    }

/*4*/   void PostTransaction()
    {
        Console::WriteLine("{0} -- {1}", DateTimeOfTransaction, this);
    }
    virtual String^ ToString() override
    {
/*5*/       return String::Format(" Dep: {0,10:0.00} {1,10}",
            DepositAmount, DepositToAccount);
    }
};