プロを目指す人のためのRuby入門 その8
第7章 クラスの作成を理解する
オブジェクト指向プログラミングの主要な構成要素であるクラスを使ったプログラミングを行います。
クラスの作成
User クラスは、苗字、名前、年齢 をインスタンス変数に持ちます。
class User attr_reader :first_name, :last_name, :age def initialize(first_name, last_name, age) @first_name = first_name @last_name = last_name @age = age end end
attr_reader (Module) - Rubyリファレンス
initializeメソッド - クラスの概念 - Ruby入門
initialize() メソッドがコンストラクタのような働きをするんでしょうか。
インスタンスの作成
users = User.new('Alice', 'Ruby', 20) user.first_name # Alice
クラスメソッド
インスタンスから呼ばれるメソッドとクラスオブジェクトの特異メソッドを定義できます。
class User def initialize(name) @name = name end # クラスメソッド def self.create_user(names) names.map do |name| User.new(name) end end # インスタンスメソッド def hello "Hello, I am #{@name}" end end names = ['Alice', 'Bob'] users = User.create_user(names) users.each do |user| puts user.hello end # これはエラー User.hello
定数
定数は大文字で始めます。
class Product # デフォルトの価格を定数として定義する DEFAULT_PRICE = 0 attr_reader :name, :price def initialize(name, price = DEFAULT_PRICE) @name = name @price = price end end product = Product.new('A free movie') puts product.price # 0
本
プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで (Software Design plusシリーズ)
- 作者: 伊藤淳一
- 出版社/メーカー: 技術評論社
- 発売日: 2017/11/25
- メディア: 大型本
- この商品を含むブログを見る
感想
クラスメソッドは Java の static メソッドに該当すると思いました。