オブジェクト指向
 オブジェクト指向とはプログラミングを書くときの基本となる考え方。
オブジェクト指向とはプログラミングを書くときの基本となる考え方。
プログラムの処理の対象をオブジェクトとして考える。
(オブジェクトはデータ(変数)と手続き(メソッド)をまとめたもののこと)
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
public : 以降のメソッドを公開にする。記述なしの場合はデフォルトでpublic
 private : 以降のメソッドを非公開にする。オブジェクトの外部からは呼び出せない。
private : 以降のメソッドを非公開にする。オブジェクトの外部からは呼び出せない。
*
 オブジェクトの内部 : オブジェクトクラスのメソッドの中(classからendまで)
オブジェクトの内部 : オブジェクトクラスのメソッドの中(classからendまで)
 オブジェクトの外部 : 内部以外のとこ
オブジェクトの外部 : 内部以外のとこ
attr_族
 attr_accessor
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
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
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 Magazine < Book によりMagazineクラスはBookクラスの性質を受け継ぐことができる。
 書き方
書き方
class クラス名 < 親クラス名
 クラスの定義
end
 継承したクラスは親クラスの全てのインスタンス変数、メソッドなどを受け継ぐ。
継承したクラスは親クラスの全てのインスタンス変数、メソッドなどを受け継ぐ。
コーディングの際は重複が多くならないようにする
→動作を変更したい時にたくさん書き換えなきゃいけなくなるので・・