我需要获取下面的单个文件代码并将其分成模型,视图,控制器(MVC)ruby程序,该程序可以在命令行中由ruby
命令运行,而不使用Rails(有关如何使用的说明)要从irb
运行此程序,请查看我的RubyBank Github Repo上的README.md。
require_relative 'view'
class BankAccount
attr_accessor :name, :balance
def initialize(name, balance=0)
@name = name
@balance = balance
end
def show_balance(pin_access)
if pin_access == pin || pin_access == bank_manager
puts "\nYour current balance is: $#{@balance}"
else
puts pin_error_message
end
end
def withdraw(pin_access, amount)
if pin_access == pin
@balance -= amount
puts "'\nYou just withdrew $#{amount} from your account. \n\nYour remaining balance is: $#{@balance}\n\n"
else
puts pin_error_message
end
if @balance < 0
@balance += amount
return overdraft_protection
end
end
def deposit(pin_access, amount)
if pin_access == pin
@balance += amount
puts "\nYou just deposited $#{amount} into your account. \n\nYour remaining balance is: $#{@balance}"
else
puts pin_error_message
end
end
private
def pin
@pin = 1234
end
def bank_manager
@bank_manager = 4321
end
def pin_error_message
puts "Invalid PIN number. Try again."
end
def overdraft_protection
puts "\nYou have overdrafted your account. We cannot complete your withdrawl. Please deposit money before trying again. \n\nYour corrected balance is $#{@balance}"
end
end
我正在寻找一个好的起点或采取一般方法来完成这项任务。
答案 0 :(得分:2)
一种简单的方法是创建三个类:
BankAccount
减去文字输出是您的Model
。
所有文本I / O都会进入您的View
。提示用户进行操作或注册。从控制器获取模型(用于显示数据)或直接使用模型。
你的Controller
负责a)对用户输入作出反应,b)修改模型,c)保持与BankAccount没有直接关系的状态(这一点可以讨论),比如登录或行动是什么可能来自您当前的状态。您的Controller
会从您的视图中收到用户提供的数据的所有操作。
在控制台应用程序中,View和Controller之间的清晰分离可能有点困难。此外,大约有一百万种可能的方式以MVC风格实现它。最重要的一点是:模型中没有UI代码(put / gets)。