オブジェクト指向全般

Duck Typing

http://0xcc.net/blog/archives/000053.html class Duck def quack puts "hogehoge" end endclass Foo def quack puts "foofoo" end enddef func(ducky) ducky.quack endduck = Duck.new foo = Foo.newfunc(duck) #=> hogehoge func(foo) #=> foofoo 「Foo …

Rubyとオブジェクト指向についてアウトプットしてみる【委譲】

9.委譲 require 'forwardable' class Kuririn def kienzan print "気円斬!" end def mekuramashi print "目くらまし!" end end class Gohan extend Forwardable def initialize @q = Kuririn.new end #気円斬を Kuririnに委譲(任せる) def_delegator :@q…

Rubyとオブジェクト指向についてアウトプットしてみる【Mixin(extend)】

8.Mixin(extend) module Hiden_of_Kuririn def kienzan print "気円斬!" end end class Kamesennin def kamehameha print "かめはめ波!" end end class Goku < Kamesennin def shunkanidou print "瞬間移動!" end def kamehameha print "界王拳4倍か…

Rubyとオブジェクト指向についてアウトプットしてみる【Mixin(include)】

7.Mixin(include) module Hiden_of_Kuririn def kienzan print "気円斬!" end end class Kamesennin include Hiden_of_Kuririn def kamehameha print "かめはめ波!" end end class Goku < Kamesennin def shunkanidou print "瞬間移動!" end def kame…

Rubyとオブジェクト指向についてアウトプットしてみる【オーバーライド】

6.オーバーライド class Kamesennin def kamehameha print "かめはめ波!" end end class Goku < Kamesennin def shunkanidou print "瞬間移動!" end def kamehameha print "界王拳4倍かめはめ波" end end goku1 = Goku.new goku1.kamehameha #=> 界王拳…

Rubyとオブジェクト指向についてアウトプットしてみる【特異クラス】

5.特異クラス class Foo def hello print "hello.\n" end end foo = Foo.new foo.hello #=>hello. class << foo attr :name, true def hello print "hello. I'm ", @name, ".\n" end end foo.name = "Tom" foo.hello #=>hello. I'm Tom.参考 ○Rubyとオブジ…

Rubyとオブジェクト指向についてアウトプットしてみる【特異メソッド】

4.特異メソッド#特異メソッド class Foo def Foo.test print "this is foo\n" end end Foo.test #=>this is foo #通常 class Foo def test print "this is foo\n" end end o = Foo.new o.test #=>this is fooクラスの特異メソッドをクラスメソッドと呼びま…

Rubyとオブジェクト指向についてアウトプットしてみる【メソッドの実行】

3.メソッドの実行亀仙人(Kamesennin)と悟空(Goku)達本人は実は技を使えません。 class Kamesennin def kamehameha print "かめはめ波!" end end class Goku < Kamesennin def shunkanidou print "瞬間移動!" end def kamehameha print "界王拳4倍かめは…

Rubyとオブジェクト指向についてアウトプットしてみる【継承とは】

2.継承とは 継承とは「別のクラスの特徴を受け継ぐこと」○差分プログラミング class Kamesennin def kamehameha print "かめはめ波!" end end class Goku < Kamesennin def shunkanidou print "瞬間移動!" end end goku = Goku.new goku.kamehameha #=>…

Rubyとオブジェクト指向についてアウトプットしてみる【メッセージ】

1.メッセージ 〜オブジェクトは「問いかけたらきちんと返事をしてくれる」〜 print var1 var1.class #=> String上記の例だと、var1 がオブジェクト "class" がメッセージ。 "class"というメッセージを送ることで、オブジェクトの素性(クラス)情報を得る…

オブジェクト指向の世界 != 現実世界

「オブジェクト指向は現実世界における私たちの認識を、できるだけそのまま表現できるようにしたもの」と説明されています。 しかし、(ばば抜きプログラムの)手札クラスのように、現実にはありえない操作を持たせています。 オブジェクト指向で重要なのは…