目次
今回はオブジェクト指向のキーとなる考え方である「隠蔽」「継承」「多形」を以下の手順で学ぶ.
classとは
Classとは事前に型を用意しておき,必要に応じて値を変更して使用できる設計図のようなものらしい.
基本的な書き方は次のようになる.
class クラス名
def initialize
// 初期化処理
end
end
クラス名は大文字から始めるルールになっているようだ.また,initializeを使用することで初期化処理を行うことができる.
クラスを利用してみる
以前作成したhello.rbは以下の通り.
hello.rb
def puts_hello name
puts "Hello #{name}."
end
def gets_name
name = ARGV[0] || 'world'
return name
end
name = gets_name
puts_hello name
これをクラスを使って表現する.
class.rb
class Hello
def initialize #初期化
@name = gets_name
puts_hello
end
def puts_hello #salute
puts "Hello #{@name}."
end
def gets_name
name = ARGV[0] || 'world'
return name.capitalize
end
end
Hello.new
こうすることで同様の結果が得られる.
動作としては,まずはじめにinitializeで初期化する.
次に@nameという変数にgets_nameメソッドを呼び出すことで値を代入している.コマンドラインに何か入力されていればそれをnameに,何もなければ「world」を代入.
最後にputs_helloメソッドを呼び出し出力している.
継承
継承とは既に作成されているクラスの機能を残しつつ別の機能を追加し別のクラスを作成することである.
inher.rb
class Hello
def hello
p "Hello!"
end
end
class CallName < Hello
def call
p "Hey! Bob!"
end
end
hey = CallName.new
hey.hello
hey.call
このようにCallNameというクラスはHelloの中にあるメソッドを利用でき,さらにcallというメソッドを追加することができている.
参考
- source ~/prog/github/grad_members_20f/members/miyanagi/post/class.org