タピオカから学ぶオブジェクト指向プログラミング入門

あっという間に12月になりましたね。

今年に入りプログラミング学習、転職活動という事で凄まじいスピードで時が過ぎ去って行きますね。
あと1ヶ月気を抜いてはならん!!という事で今回は
オブジェクト指向プログラミング入門』をタピオカクラスを使って学習してみました!!!

はじめに

今回の学習にあたり我らが伊藤淳一さんの動画を参考にしました。(勝手に尊敬させていただいてます)

参考の動画と違う点は2つございます。
1・たい焼きではなくタピオカ(流行ってるからしただけ)
2・テストは書いてません(TDDの方がいいぞ)

へなちょこですので物足りない方はたい焼きの方がいいです。美味しいしね。

twitter.com

www.youtube.com

構成

今回はタピオカという事で注文時にありそうな物をクラスの中に入れてみます。

#タピオカ

#1・飲み物の種類

#2・トッピング
  #:種類によって値段変動

#3・サイズ(S, M, L)
  #:サイズによって値段変動

#4・氷 (少なめ、ふつう、多め)

#5・砂糖 (少なめ、ふつう、多め)

#6・合計料金

STEP1

タピオカクラスを作りインスタンス変数に必要な要素を入れます。

class Tapioca
  attr_reader :juice, :size, :topping, :ice, :suger
  def initialize(juice, size, topping, ice, suger)
    @juice = juice #飲み物の種類
    @size = size #サイズ
    @topping = topping #トッピング
    @ice = ice #氷の量
    @suger = suger #砂糖の量
  end
end

tapioca_1 = Tapioca.new('黒糖ミルクティー', 'S', 'ミルクフォーム', '少なめ', '多め')
puts tapioca_1
tapioca_2 = Tapioca.new('黒糖ほうじ茶ラテ', 'M', 'タピオカ倍増', '多め', 'ふつう')
puts tapioca_2

この時点で出力しようとしても

#<Tapioca:0x00007fe4868ab1b0>
#<Tapioca:0x00007fe4868aafa8>

このようにうまく出力されないので
to_sメソッドを上書きします!

STEP2

def to_s
    "飲み物: #{juice} | サイズ: #{size} | トッピング: #{topping} | 砂糖: #{suger} | 氷: #{ice} "
end

こんな感じにto_sメソッドを上書きすると

飲み物: 黒糖ミルクティー | サイズ: S | トッピング: ミルクフォーム | 砂糖: 多め | : 少なめ 
飲み物: 黒糖ほうじ茶ラテ | サイズ: M | トッピング: タピオカ倍増 | 砂糖: ふつう | : 多め 

受け取った情報を出力することができました!!

STEP3

次にトッピングやサイズによって値段を変更するプログラムを書いていきます。

  #ミルクフォーム  = +30円
  #タピオカ倍増   = +50円
  #コーヒーゼリー  = +70円

  def charge
    amount = 550
    if size  == "S"
      amount -= 150
    elsif size == "L"
      amount += 100
    end
    if @topping == "ミルクフォーム"
      amount += 30
    elsif @topping == "タピオカ倍増"
      amount += 50
    elsif @topping == "コーヒーゼリー"
      amount += 70
    end
    amount
  end

ふつうサイズのトッピング無しの値段を550円とします。
そしてif文で各サイズ、各トッピングの応じて値段を追加し最後にamountで出力させるようにします。

次に先ほどのto_sメソッドに料金を追加します。

飲み物: 黒糖ミルクティー | サイズ: S | トッピング: ミルクフォーム | 砂糖: 多め | : 少なめ | 合計:  430飲み物: 黒糖ほうじ茶ラテ | サイズ: M | トッピング: タピオカ倍増 | 砂糖: ふつう | : 多め | 合計:  600

どうでしょう。
このようにするとクラスの中のタピオカの『注文設計図』なるものから具体的な注文の内容を作り出すことが出来ました。

このようにクラスとは設計図みたいなもので、具体的な物を作る上でひいつようになってくる物なんですね。

最後に

今回は簡単に自分なりに作りながら学習しました。
1つ大事だと思うことはただ見て理解するだけで終わらず、少し変えるだけでもいいので自分で形ある物を作ってみると頭に残りいいインプットができると思います。
それではみなさんあと1ヶ月気を抜かず頑張りましょう!!