クラス

Rubyにおけるオブジェクト指向プログラミング(OOP)の中核となる概念の一つが「クラス」です。Rubyは純粋なオブジェクト指向言語であり、数値や文字列、配列などの基本的なデータ型さえもすべてオブジェクトです。そして、これらのオブジェクトはすべて何らかの「クラス」のインスタンス(実体)です。


1. クラスとは何か

**クラス(class)とは、オブジェクトの設計図にあたるものです。クラスには、オブジェクトが持つ属性(状態)メソッド(振る舞い)**を定義します。Rubyではclassキーワードを使ってクラスを定義します。


2. クラスの基本構文

ruby
class クラス名 # 属性(インスタンス変数)やメソッドの定義 end

クラス名は慣習として先頭を大文字にしたキャメルケースで書きます(例: Person, Car など)。


3. クラスの定義例

ruby
class Person def initialize(name, age) @name = name # インスタンス変数 @age = age end def introduce puts "私は#{@name}、#{@age}歳です。" end end

説明:

  • initialize はコンストラクタで、Person.new でオブジェクトが生成されたときに自動的に呼ばれます。

  • @name@age はインスタンス変数で、個々のオブジェクトがそれぞれ異なる値を持ちます。

  • introduce はインスタンスメソッドで、そのオブジェクトに対して呼び出すことができます。


4. クラスのインスタンス生成とメソッド呼び出し

ruby
taro = Person.new("太郎", 20) taro.introduce # => 私は太郎、20歳です。

5. クラスの特徴

  • カプセル化: データとそれを操作するメソッドを一つの単位(クラス)にまとめる。

  • 再利用性: 同じ設計図(クラス)を使って複数のオブジェクトを生成可能。

  • 継承: あるクラスをベースにして別のクラスを作成可能(詳細は「継承」の項目で解説)。

  • ポリモーフィズム(多態性): 同じメソッド名でも、オブジェクトによって異なる挙動が可能。


6. アクセサメソッド(attr_accessor など)

インスタンス変数へのアクセスにはアクセサメソッドを使うのが一般的です。

ruby
class Person attr_accessor :name, :age def initialize(name, age) @name = name @age = age end end p = Person.new("花子", 25) puts p.name # => 花子 p.age = 26 puts p.age # => 26

まとめ

Rubyにおけるクラスは、オブジェクトを定義・操作するための基本単位です。クラスを使うことで、プログラムを柔軟かつ再利用可能な形で構築することができます。OOPの三大要素(カプセル化、継承、ポリモーフィズム)を活用することで、保守性の高いコードが書けるようになります。

生成日:2025/05/03