• Xでシェア
  • LINEでシェア
  • このエントリーをはてなブックマークに追加

Ruby クラス(class)の使い方

この記事のポイント

  • クラスの定義方法とオブジェクト作成の基本構文をマスター
  • 属性アクセサやメソッド定義による実用的なクラス設計手法の習得
  • 継承やモジュール機能を活用した効率的なプログラミング技術の理解

目次

Rubyのクラスとは?

Rubyのクラスは、オブジェクト指向プログラミングの中核となる概念で、データと処理をひとつにまとめた設計図のような役割を果たします。クラスは属性とメソッドを持ち、同じ性質を持つオブジェクトを効率的に作成できます。例えば、動物クラスを作成すれば、そこからイヌやネコなどの具体的なオブジェクトを生成することが可能です。クラスを使うことで、コードの再利用性が高まり、プログラムの構造がより整理された形になります。また、継承機能により既存のクラスを拡張して新しいクラスを作ることもできるため、効率的な開発が実現できます。

【関連】
Rubyをもっと詳しく学ぶならpaizaラーニング

基本構文

Rubyでクラスを定義するには、classキーワードを使用します。クラス名は必ず大文字で始め、キャメルケース記法で記述します。クラス内にはinitializeメソッドでオブジェクトの初期化を行い、その他のメソッドで機能を定義します。オブジェクトの作成はnewメソッドを使用し、作成されたオブジェクトに対してメソッドを呼び出すことで処理を実行できます。

class Animal def initialize(name) @name = name end def speak puts "#{@name}が鳴いています" end end dog = Animal.new("ポチ") dog.speak

出力結果:

ポチが鳴いています
class Calculator def add(a, b) a + b end def multiply(a, b) a * b end end calc = Calculator.new puts calc.add(5, 3) puts calc.multiply(4, 6)

出力結果:

8
24

実用例

ここでは、Rubyクラスの実践的な活用方法を具体的なコード例とともに紹介します。基本的な動物クラスから始まり、属性アクセサの使用、継承機能の実装、クラス変数やクラスメソッドの活用まで、段階的に学習できるよう構成されています。各例では動物をテーマにしたわかりやすいサンプルを用意し、実際のプログラミングですぐに応用できる知識を身につけることができます。これらの例を通じて、オブジェクト指向プログラミングの基本概念と実装方法を理解し、より効率的なRubyプログラムの作成が可能になります。

基本的な動物クラスの作成

最もシンプルなクラスの例として、動物の名前と年齢を管理するクラスを作成します。このクラスはオブジェクトの基本的な属性管理とメソッド呼び出しの仕組みを理解するのに最適です。

class Pet def initialize(name, age) @name = name @age = age end def introduce puts "私の名前は#{@name}で、#{@age}歳です" end end cat = Pet.new("タマ", 3) cat.introduce

出力結果:

私の名前はタマで、3歳です

属性アクセサを使用したクラス

attr_readerやattr_accessorを使用することで、インスタンス変数への外部アクセスが簡単になります。この機能により、オブジェクトの属性を安全に取得・変更できるようになります。

class Bird attr_accessor :name, :species def initialize(name, species) @name = name @species = species end def fly puts "#{@name}(#{@species})が空を飛んでいます" end end parrot = Bird.new("ピーちゃん", "インコ") parrot.fly

出力結果:

ピーちゃん(インコ)が空を飛んでいます

継承を使用したクラス階層

継承機能を使用することで、既存のクラスを拡張して新しいクラスを作成できます。共通の機能を親クラスに定義し、特有の機能を子クラスで追加することで効率的な設計が可能です。

class Animal def initialize(name) @name = name end def sleep puts "#{@name}が眠っています" end end class Dog < Animal def bark puts "#{@name}がワンワンと吠えています" end end shiba = Dog.new("ハチ") shiba.bark shiba.sleep

出力結果:

ハチがワンワンと吠えています
ハチが眠っています

メソッドのオーバーライド

継承先のクラスで親クラスのメソッドを再定義することで、クラス固有の動作を実装できます。これにより、同じメソッド名でも異なる処理を実行することが可能になります。

class Mammal def initialize(name) @name = name end def move puts "#{@name}が移動しています" end end class Rabbit < Mammal def move puts "#{@name}がぴょんぴょん跳ねています" end end bunny = Rabbit.new("ウサギちゃん") bunny.move

出力結果:

ウサギちゃんがぴょんぴょん跳ねています

クラス変数とクラスメソッドの活用

クラス全体で共有する情報を管理したい場合には、クラス変数とクラスメソッドが有効です。作成されたオブジェクトの数を数えるなど、クラス全体に関わる処理を実装できます。

class Fish @@count = 0 def initialize(name, color) @name = name @color = color @@count += 1 end def self.total_count puts "現在の魚の数: #{@@count}匹" end def swim puts "#{@color}の#{@name}が泳いでいます" end end goldfish = Fish.new("キンちゃん", "金色") goldfish.swim Fish.total_count

出力結果:

金色のキンちゃんが泳いでいます
現在の魚の数: 1匹

プライベートメソッドの実装

クラス内部でのみ使用するメソッドはprivateキーワードで定義します。これにより、オブジェクトの内部実装を隠蔽し、安全なクラス設計が実現できます。

class Elephant def initialize(name, weight) @name = name @weight = weight end def status puts "#{@name}の状態: #{health_check}" end private def health_check @weight > 3000 ? "健康" : "痩せ気味" end end jumbo = Elephant.new("ジャンボ", 3500) jumbo.status

出力結果:

ジャンボの状態: 健康

複数の属性を持つ複雑なクラス

実際のアプリケーションでは、多くの属性とメソッドを持つクラスが必要になります。動物園の動物管理システムを想定した例で、実用的なクラス設計を学びます。

class ZooAnimal attr_reader :name, :species, :age attr_accessor :health_status def initialize(name, species, age) @name = name @species = species @age = age @health_status = "良好" end def profile puts "名前: #{@name}, 種類: #{@species}, 年齢: #{@age}歳, 健康状態: #{@health_status}" end end lion = ZooAnimal.new("レオ", "ライオン", 5) lion.profile

出力結果:

名前: レオ, 種類: ライオン, 年齢: 5歳, 健康状態: 良好

クラス内での条件分岐とループ処理

クラスのメソッド内で条件分岐やループ処理を組み合わせることで、より柔軟な動作を実装できます。動物の年齢に応じて異なるメッセージを表示する例を通じて学習します。

class Horse def initialize(name, age) @name = name @age = age end def life_stage case @age when 0..2 puts "#{@name}は子ウマです" when 3..15 puts "#{@name}は成ウマです" else puts "#{@name}は高齢ウマです" end end end stallion = Horse.new("サラブレッド", 8) stallion.life_stage

出力結果:

サラブレッドは成ウマです

まとめ

Rubyのクラスは、オブジェクト指向プログラミングの基礎となる重要な概念です。基本的な定義方法から始まり、属性アクセサ、継承、メソッドオーバーライドなどの応用技術まで学ぶことで、効率的で保守性の高いプログラムが作成できるようになります。今回紹介した実用例を参考に、実際のプロジェクトでクラスを活用してみてください。

レベルを更に上げたい方はpaizaプログラミングスキルチェックへ

  1. paizaラーニングトップ
  2. リファレンス
  3. Rubyのリファレンス記事一覧
  4. Ruby クラス(class)の使い方