Код IT Загрузка примера кода…

Ruby main.rb
class BankAccount
  attr_reader :account_number
  
  def initialize(account_number, initial_balance)
    @account_number = account_number
    @balance = initial_balance
    @pin_code = generate_pin
  end
  
  public
  
  def deposit(amount)
    @balance += amount
    record_transaction(:deposit, amount)
  end
  
  def withdraw(amount, pin)
    if verify_pin(pin) && @balance >= amount
      @balance -= amount
      record_transaction(:withdrawal, amount)
      true
    else
      false
    end
  end
  
  protected
  
  def verify_pin(pin)
    @pin_code == pin
  end
  
  private
  
  def generate_pin
    rand(1000..9999)
  end
  
  def record_transaction(type, amount)
    puts "#{type.capitalize} of #{amount} at #{Time.now}"
  end
end

account = BankAccount.new("ACC123", 1000)
account.deposit(500)           # Работает
account.withdraw(200, 1234)    # Работает
# account.verify_pin(1234)     # Ошибка — метод защищенный
# account.generate_pin         # Ошибка — метод приватный
class BankAccount
  attr_reader :account_number
  
  def initialize(account_number, initial_balance)
    @account_number = account_number
    @balance = initial_balance
    @pin_code = generate_pin
  end
  
  public
  
  def deposit(amount)
    @balance += amount
    record_transaction(:deposit, amount)
  end
  
  def withdraw(amount, pin)
    if verify_pin(pin) && @balance >= amount
      @balance -= amount
      record_transaction(:withdrawal, amount)
      true
    else
      false
    end
  end
  
  protected
  
  def verify_pin(pin)
    @pin_code == pin
  end
  
  private
  
  def generate_pin
    rand(1000..9999)
  end
  
  def record_transaction(type, amount)
    puts "#{type.capitalize} of #{amount} at #{Time.now}"
  end
end

account = BankAccount.new("ACC123", 1000)
account.deposit(500)           # Работает
account.withdraw(200, 1234)    # Работает
# account.verify_pin(1234)     # Ошибка — метод защищенный
# account.generate_pin         # Ошибка — метод приватный