7-2-2 消費税額と税込み額を計算するクラスを定義しよう

TaxCalculatorクラスを定義する

テキストエディタを開き、以下のようにTaxCalculatorクラスを定義します。ファイル名をtax_calculator.rbで保存します。

# 消費税額と税込み額を計算するクラスを定義しよう
class TaxCalculator
  def execute(price, tax_rate: 0.08)
    tax = (price * tax_rate).to_i
    tax_included = price + tax
    { tax: tax, tax_included: tax_included }
  end
end

オブジェクトを生成するプログラムを追加する

定義したクラスのオブジェクトを生成するプログラムを以下のように追加します。

# 消費税額と税込み額を計算するクラスを定義しよう
class TaxCalculator
  def execute(price, tax_rate: 0.08)
    tax = (price * tax_rate).to_i
    tax_included = price + tax
    { tax: tax, tax_included: tax_included }
  end
end

# TaxCalculatorクラスのインスタンスを生成
calculator = TaxCalculator.new

executeメソッドを実行するプログラムを追加する

生成したオブジェクトのexecuteメソッドを実行するプログラムを以下のように追加して保存します。

# 消費税額と税込み額を計算するクラスを定義しよう
class TaxCalculator
  def execute(price, tax_rate: 0.08)
    tax = (price * tax_rate).to_i
    tax_included = price + tax
    { tax: tax, tax_included: tax_included }
  end
end

# TaxCalculatorクラスのインスタンスを生成
calculator = TaxCalculator.new

# executeメソッドを実行
p calculator.execute(100)
p calculator.execute(100, tax_rate: 0.1)

完成したプログラムを実行する

以下のようにしてコマンドラインでファイル指定して実行します。実行結果に{:tax=>8, :tax_included=>108}{:tax=>10, :tax_included=>110}というハッシュが表示されます。

$ ruby tax_calculator.rb
{:tax=>8, :tax_included=>108}
{:tax=>10, :tax_included=>110}

クラスにinitializeメソッドを追加する

定義したクラスにinitializeメソッドを以下のように記述してプログラムを保存します。

# 消費税額と税込み額を計算するクラスを定義しよう
class TaxCalculator
  def initialize
    p 'calculator is starting.'
  end

  def execute(price, tax_rate: 0.08)
    tax = (price * tax_rate).to_i
    tax_included = price + tax
    { tax: tax, tax_included: tax_included }
  end
end

# TaxCalculatorクラスのインスタンスを生成
calculator = TaxCalculator.new

# executeメソッドを実行
p calculator.execute(100)
p calculator.execute(100, tax_rate: 0.1)

修正したプログラムを実行する

修正したプログラムをコマンドラインでファイル指定して実行します。実行結果に"calculator is starting."と表示された後、同様に計算結果のハッシュが表示されます。

$ ruby tax_calculator.rb
"calculator is starting."
{:tax=>8, :tax_included=>108}
{:tax=>10, :tax_included=>110}

executeメソッド実行部分をコメントアウトする

以下のようにオブジェクト生成後の処理をコメントアウトして保存します。

# 消費税額と税込み額を計算するクラスを定義しよう
class TaxCalculator
  def initialize
    p 'calculator is starting.'
  end

  def execute(price, tax_rate: 0.08)
    tax = (price * tax_rate).to_i
    tax_included = price + tax
    { tax: tax, tax_included: tax_included }
  end
end

# TaxCalculatorクラスのインスタンスを生成
calculator = TaxCalculator.new

# executeメソッドを実行
#p calculator.execute(100)
#p calculator.execute(100, tax_rate: 0.1)

修正したプログラムを実行する

修正したプログラムをコマンドラインでファイル指定して実行します。実行結果に"calculator is starting."と表示されます。

$ ruby tax_calculator.rb
"calculator is starting."