Your SlideShare is downloading. ×
第4回セントラルソフトRuby研究会
第4回セントラルソフトRuby研究会
第4回セントラルソフトRuby研究会
第4回セントラルソフトRuby研究会
第4回セントラルソフトRuby研究会
第4回セントラルソフトRuby研究会
第4回セントラルソフトRuby研究会
第4回セントラルソフトRuby研究会
第4回セントラルソフトRuby研究会
第4回セントラルソフトRuby研究会
第4回セントラルソフトRuby研究会
第4回セントラルソフトRuby研究会
第4回セントラルソフトRuby研究会
第4回セントラルソフトRuby研究会
第4回セントラルソフトRuby研究会
第4回セントラルソフトRuby研究会
第4回セントラルソフトRuby研究会
第4回セントラルソフトRuby研究会
第4回セントラルソフトRuby研究会
第4回セントラルソフトRuby研究会
第4回セントラルソフトRuby研究会
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

第4回セントラルソフトRuby研究会

476

Published on

若手による社内ruby勉強会の資料です。

若手による社内ruby勉強会の資料です。

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
476
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 第4回Ruby研究会 担当:石河
  • 2. AGENDA オブジェクト指向機能  ポリモルフィズム  ダックタイピング  動的型  継承  Mix-in  include  extend
  • 3. ポリモルフィズム 多態性 同じ名前のメソッドが、レシーバのオブジェ クトによって違う動きをする
  • 4. 開け方の違う箱が3つあるとして、箱を開けたい時は開けろと命令するだけで蓋を持ちあげる 紐を解く 鍵をあけるそれぞれに適した方法であけてくれるという イメージです(まつもとさん曰く)
  • 5.  sizeメソッドはオブジェクトの大きさを求め るメソッド String#size  文字列の大きさを返す Array#size  要素の数を返す
  • 6. 【コード】 【出力】 a = "A" 1 p a.size 4 3 a = 12 2 p a.size 整数の実装上のサイズ a= [1,2,3] をバイト数で返します p a.size a= [1.2],[3,4] p a.size
  • 7. ダックタイピング "If it walks like a duck and quacks like a duck, it must be a duck“ (もしもそれがアヒルのように歩き、アヒル のように鳴くのなら、それはアヒルである) オブジェクトのクラスによらず、そのオブ ジェクトが期待通りに振る舞えば適切なもの として扱う
  • 8. 【コード】 【出力】 def add_values(*v)  10 return v.inject{|result,item| result += item}  "abc" end  [1, 2, 3, 4, 5, 6, 7]  [1, 2, 3, 4, 5, [6, 7] p add_values(1,2,3,4) ] p add_values("a","b","c") p  TypeError add_values([1,2,3],[4,5],[6,7]) TypeError p add_values([1,2,3],[4,5,[6,7]]) p add_values(1,2,3,"4") injectメソッド p 繰り返し計算を行うメソッドの戻り値はブロックが最後に返した値
  • 9. 動的型 変数にどのクラスのオブジェクトが格納され ているかは、実行時に初めてわかります このような言語を動的型言語と呼ぶ
  • 10. 【コード】 【出力】 x = (rand(2) == 0)  String ? "123456" : 123456  NilClass  NameError puts x.class x = nil puts x.class puts y.class
  • 11. 継承前回触れているので簡単に スーパークラスとサブクラスの親子関係があ ります Objectクラスは全てのクラスのスーパーク ラスです サブクラスはスーパークラスのメソッドを 使ったり、上書きしたり、新たにメソッドを 追加したりできます Rubyにおける継承は単一継承です
  • 12. Mix-in モジュールを取り込むことでクラスを拡張す る仕組みです 多重継承の代わりの機能です 例えば、複数のクラスで使える sort,map,find,rejectメソッドなどは Enumerableモジュールで定義されています
  • 13. モジュール モジュールは定数やメソッドを定義できる クラス変数のようなものを宣言したり、イン スタンスやサブクラスのようなものを作るこ とはできない 関数のように実行することもできます (モジュール関数)  【コード】  puts Math.sqrt(2)  【出力】  1.4142135623731
  • 14. モジュールの定義【コード】 module モジュール名 module Gleeting def sayHello メソッド定義 puts "hello" end def sayGoodbye puts “goodbye" end end
  • 15. Incrude モジュールの実装(定数、メソッドなど)を クラスや別のモジュールに取り込みます
  • 16. モジュールのinclude【コード】 class Foo  【出力】 include  foo include Greeting  hello def say puts " foo" end end a = Foo.new a.say a.sayHello
  • 17. extend includeはクラスにモジュールを実装する が、extendはオブジェクトにモジュールを 実装します モジュールのメソッドはオブジェクトの特異 メソッドとして追加されます
  • 18. モジュールのextend【コード】 module Wareki  【出力】 def heisei  23 return self.year - 1988 end  NoMethodError end t1 = Time.local(2011,12,22) t2 = Time.local(2011,12,22) t1.extend Wareki p t1.heisei p t2.heisei
  • 19. モジュール関数【コード】  【出力】 module Gleeting  1.4142135623731 def sayHello  hello puts "hello"  NoMethodError end module_function :sayHello end モジュールの定義 class Foo include Greeting def say モジュール関数の設定 puts "foo" end end クラスの定義 puts Math.sqrt(2) a = Foo.new Gleeting.sayHello include a.sayHello
  • 20. モジュールの定数【コード】  【出力】 module Gleeting  warning: already ASA = “朝" initialized constant ASA def sayHello  朝 puts "hello"  morning end end puts Gleeting::ASA Gleeting::ASA = "morning" puts Gleeting::ASA
  • 21. 以上

×