オブジェクト指向
オブジェクト指向とはプログラミングを書くときの基本となる考え方。
プログラムの処理の対象をオブジェクトとして考える。
(オブジェクトはデータ(変数)と手続き(メソッド)をまとめたもののこと)
pablicとprivate
オブジェクト指向プログラミングではそれぞれのオブジェクトを外部に公開するかしないか制御する必要がある。
→メソッド一つ一つについて、公開・非公開を変更することができる
class AccessTest
public
def show
puts "public"
end
private
def secret
puts "private
end
end
obj = AccessTest.new
obj.show => "public"
obj.secret :x:
public : 以降のメソッドを公開にする。記述なしの場合はデフォルトでpublic
private : 以降のメソッドを非公開にする。オブジェクトの外部からは呼び出せない。
*
オブジェクトの内部 : オブジェクトクラスのメソッドの中(classからendまで)
オブジェクトの外部 : 内部以外のとこ
attr_族
attr_accessor
インスタンス変数を読み書きするメソッドを提供する文
class Recipe
attr_accessor :title
end
recipe = Recipe.new
recipe.title = "cheese cake"
p recipe.title => "cheese cake"
下記とイコール
class Recipe
def title = (t)
@title = t
end
def title
@title
end
recipe = Recipe.new
recipe.title = "cheese cake"
p recipe.title => "cheese cake"
attr_reader
読み込み用の公開メソッドを用意
class Recipe
attr_reader :title
end
recipe = Recipe.new
p recipe.title
以下とイコール
class Recipe
def title
@title
end
end
recipe = Recipe.new
p recipe.title
attr_writer
書き込み用の公開メソッドを用意
class Recipe
attr_writer :title
end
recipe = Recipe.new
p recipe.title
以下とイコール
class Recipe
def title = (t)
@title = t
end
end
recipe = Recipe.new
p recipe.title
継承
すでに定義されているクラスを拡張して他のクラスの定義とする
例)BookクラスとMagazineクラスを作る。二つには共通することがある
class Book
attr_accessor :genre, :price
end
class Magazine
attr_accessor :genre, :price, :title
end
この場合、Magazineクラスを↓のようにしても同じ
class Magazine < Book
attr_accessor :title
end
class Magazine < Book によりMagazineクラスはBookクラスの性質を受け継ぐことができる。
書き方
class クラス名 < 親クラス名
クラスの定義
end
継承したクラスは親クラスの全てのインスタンス変数、メソッドなどを受け継ぐ。
コーディングの際は重複が多くならないようにする
→動作を変更したい時にたくさん書き換えなきゃいけなくなるので・・