Ruby クラスとインスタンス変数
1.基礎
オブジェクトの設計図にあたるものがクラス。
なんかこの説明だとわかりづらいかもしれないけれど、要は雛形だよね。
クラスという雛形から、たくさんの同じようなオブジェクトを作る。
零戦の設計図を書いたら、工場で零戦の実機ができたわけで、それと同じ。
で、オブジェクトには色んなプロパティがあって、それは例えば飛行機だったら、「プロペラ」だったり、「椅子」だったりする。
オブジェクトのメソッドというのは、動作を示すもので、これも飛行機に例えたら、「飛ぶ」とか「着地する」とかそういう動作があるよね。
それをdef flyみたいにして、表現しているのがオブジェクト。
Rubyのクラスは
class クラス名 def メソッド #メソッドの内容 end end
インスタンス変数は変数の頭に「@」をつけて記述する。
インスタンス変数へのアクセスは、「アクセサ」と呼ばれるメソッドを自動生成する機能を使えば、よりシンプルにインスタンス変数へのアクセスができるようになる。
アクセサ | 機能 |
---|---|
attr_accessor: | インスタンス変数を読み書きする機能を提供する |
attr_reader | インスタンス変数の値を取り出す機能を提供する |
attr_writer | インスタンス変数の値を変更する機能を提供する |
2.サンプル
・アクセサを使わない場合
# -*- coding: UTF-8 -*- class Book def initialize name @title = name.to_s end def setTitle name @title = name.to_s end def getTitle return @title end def callTitle puts "This book is " + @title end end mybook = Book.new 'The Catcher in the Rye' puts mybook.getTitle mybook.setTitle 'Breakfast at Tiffanys' mybook.callTitle
・アクセサ使う場合
# -*- coding: UTF-8 -*- class Book attr_accessor:title def initialize name @title = name.to_s end def callTitle puts "This book is " + @title end end mybook = Book.new 'The Catcher in the Rye' puts mybook.title mybook.title = 'Breakfast at Tiffanys' mybook.callTitle
3.デモ
アクセサを使っても使わなくても、以下のように表示される。
>ruby sample.rb The Catcher in the Rye This book is Breakfast at Tiffanys
- 作者: 高橋征義,後藤裕蔵,まつもとゆきひろ
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2013/06/04
- メディア: 単行本
- この商品を含むブログ (22件) を見る