メタプログラミング1章 準備

メタプログラミングRuby第一章

第一章は分量も多くないため、頭の整理のため オブジェクト志向についてまとめておきます。

クラス

教科書通りの説明ですと、クラスとは「設計図」です。 よくある例ですと、たい焼きの型ですね オブジェクト志向は再利用を目的としています。

例えば、「たい焼き」を構成するものは 「おおきさ」「素材」「あんこ」「価格」 といったものがあると思います。

ここでは「たい焼き」の情報(素材・中身・個数)を 表示するプログラムを作ります。

今回はクラスを用いて表現してみます。

素材は共通的に用いるため、 クラス変数 を用います。 クラス変数は頭に「@@」をつけます。 代入可能でクラス内での共通的な定数です。

実行方法はclass.newでオブジェクト化して、メソッドを使用します。 initializeはオブジェクトを作成する際に実行した際、自動で呼び出す処理です。intializeは引数を指定することが出来ます。

オブジェクト化した際のメソッド「order」は インスタンスメソッドと呼ばれます。 インスタンスメソッドはクラスから作成されたオブジェクトしか 呼び出すことは出来ません。

class Taiyaki
  # (素材・中身・個数)
@@material = "komugi" #素材は決まっている。

  def  initialize(order=1,content="azuki") #初期設定
    @order_num = order
    @order_content = content
  end

  def order #インスタンスメソッド
    puts "素材は#{@@material}です。個数は\n#{@order_num}\n中身は#{@order_content}"
  end

end

puts Taiyaki.new.order
puts Taiyaki.new(2,"チーズ").order