LoginSignup
3
0

【Ruby】クラスとモジュール、継承とミックスイン

Last updated at Posted at 2023-08-23

目次

  1. イントロ
  2. クラス(Class)
  3. 継承(Inheritance)
  4. モジュール(Module)
  5. ミックスイン(Mixin)
  6. 比較
  7. まとめ

イントロ

ダイナミックでオープンソースのプログラミング言語、Rubyはそのエレガントでシンプルなシンタックスが特徴です。Rubyはオブジェクト指向言語として、クラス、モジュール、継承、ミックスインなどの重要な概念があります。この記事では、これらの概念を解説し、Rubyプログラミングでの役割と特性について紹介します。

クラス(Class)

クラスは、オブジェクト指向プログラミングにおける中心的な概念で、データの抽象化とカプセル化を提供します。クラスは属性とメソッドの集合で、特定のオブジェクトの振る舞いと構造を定義します。クラスによって定義されたインスタンスは、実行時にその属性とメソッドにアクセスすることができます。

class Animal
  def breathe
    puts "Breathe!"
  end
end

animal = Animal.new
animal.breathe  # "Breathe!"

継承(Inheritance)

継承は、あるクラスが別のクラスの特性を受け継ぐプロセスです。これにより、コードの再利用性と維持性が向上し、既存のクラスを拡張して新しい機能を追加する能力を提供します。継承は階層的なクラスの関係を形成し、共通の特性を共有することを可能にします。

class Animal
  def breathe
    puts "Breathe!"
  end
end

class Dog < Animal
  def woof
    puts "Woof!"
  end
end

class Cat < Animal
	def meow
		puts "Meow!"
	end
end

dog = Dog.new
dog.breathe  # "Breathe!"
dog.woof     # "Woof!"

cat = Cat.new
cat.breathe  # "Breathe!"
cat.meow     # "meow!"

上記の例では、DogクラスとCatクラスはAnimalクラスを継承するサブクラスなので、Animalクラスで定義されたbreatheメソッドを使用することができます。

モジュール(Module)

モジュールは、メソッドと定数の名前空間を提供する独立したコンテナです。クラスと異なり、モジュールはインスタンス化されませんが、クラスにミックスインされることでその機能が取り込まれます。これによって、異なるクラス間で共通のメソッドを効率的に共有できるようになります。

module Movable
  def move
    puts "Move!"
  end
end

ミックスイン(Mixin)

ミックスインは、モジュールの機能をクラスに取り込むメカニズムで、多重継承の問題を解決するRubyの特徴的な手法です。クラスにモジュールを取り込むと、そのモジュールのメソッドがクラスのインスタンスメソッドとして利用可能になります。これにより、構造化されたコードの組織と、複数のクラス間での機能の共有が可能になります。

module Movable
  def move
    puts "Move!"
  end
end

class Dog
  include Movable
end


class Human
  include Movable
end

dog = Dog.new
dog.move      # "Move!"

human = Human.new
human.move    # "Move!"

上記の例でDogクラスとHumanクラスはMovableモジュールを含んでいるので、Movableモジュールで定義されたmoveメソッドを使うことができます。

比較

機能 クラス モジュール
メソッドの定義 O O
定数の定義 O O
インスタンス化 O X
継承 O X
ネームスペース役割 O O
ミキシンすること O O
ミキシンされること X O

まとめ

Rubyのオブジェクト指向プログラミングを使いこなすには、クラス、モジュール、継承、ミキシンを理解することが重要です。これらのコンセプトを理解することで、明快で効率的な DRY(Don't Repeat Yourself) なRubyコードを書くことができるようになります。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0