RosettaCodeData/Task/Naming-conventions/Ruby/naming-conventions-2.rb

48 lines
1.2 KiB
Ruby

# Global variable
$number_of_continents = 7
module Banking
# Module constants for semantic versioning
VERSION = '1.0.0.1'
class BankAccount
attr_accessor :first_name, :last_name
attr_reader :account_number
@@ATM_FEE = 3.75
@@adiministrator_password = 'secret'
# The class's constructor
def initialize(first_name, last_name, account_number)
@first_name = first_name
@last_name = last_name
@account_number = account_number
@balance = 0
end
# Explicit setter as extra behavior is required
def account_number=(account_number)
puts 'Enter administrator override'
if gets == @@adiministrator_password
@account_number = account_number
else
puts 'Sorry. Incorrect password. Account number not changed'
end
end
# Explicit getter as extra behavior is required
def balance
"$#{@balance / 100}.#{@balance % 100}"
end
# Check if account has sufficient funds to complete transaction
def sufficient_funds? (withdrawal_amount)
withdrawal_amount <= @balance
end
# Destructive method
def donate_all_money!
@balance = 0
end
end
end