package Banking is type Balance_Type is digits 2; type Account_ID_Type is mod 2**32; type Account_Type is tagged limited private; Default_Balance: constant Balance_Type := 0.0; Default_ID: constant Account_ID_Type := 0; Account_Overspent_Exception: exception; Invalid_Amount_Exception: exception; function Create_Account( ID: Account_ID_Type := Default_ID; Initial_Balance: Balance_Type := Default_Balance) return Account_Type; procedure Deposit(Account: in out Account_Type; Amount: Balance_Type); function Get_Balance(Account: Account_Type) return Balance_Type; procedure Withdraw(Account: in out Account_Type; Amount: Balance_Type); private type Account_Type is tagged limited record ID: Account_ID_Type; Balance: Balance_Type; end record; end Banking;