クラスとインスタンスを学ぼう

クラスとインスタンスで理解するオブジェクト指向プログラミング

学習の目標

本章では、以下の内容を学習します。

  • オブジェクト指向プログラミングの基本的な考え方を理解する
  • クラスとは何か、その役割と定義方法を学ぶ
  • インスタンスの概念と作成方法を習得する
  • Rubyにおけるオブジェクトの基本的な性質を理解する
  • クラスとインスタンスの関係性を実例を通して把握する

はじめに

これからRubyでプログラミングをする上での基本的な考え方の一つである、オブジェクト指向プログラミングについて学習していきます。

オブジェクト指向プログラミングは初めて聞くと複雑な概念に思えるかもしれませんが、私たちの身近な例を用いながら段階的に理解を深めていきましょう。オブジェクト指向の考え方を身につけることで、より整理された、拡張性の高いプログラムを書けるようになります。

まずは、オブジェクト指向プログラミングの基本的な概念である「クラス」と「インスタンス」から見ていきましょう。

クラスとは何か

クラスは、プログラムの中でモノの設計図のような役割を果たします。

私たちの身の周りにあるものを例に考えてみましょう。例えば「犬」を考えると、どんな犬にも共通する特徴があります。

  • 名前がある
  • 吠えることができる
  • 走ることができる
  • 特定の犬種に属している

このような共通の特徴や機能をプログラムの中で表現したものが、クラスです。クラスは、同じような性質を持つオブジェクトをまとめて定義するための枠組みと言えます。

それでは、実際にプログラムの中で犬のクラスを作成してみましょう。

クラスの定義方法

まず、class.rbというファイルを作成し、以下のコードを記述します。

class Dog
def bark
puts "わんわん!"
end
end

このコードでは、Dogというクラスを定義しています。クラスの主なポイントは以下の通りです。

  • classというキーワードを使用してDogというクラスを定義しています
  • クラス名は必ず大文字で始める必要があります(これはRubyの命名規則です)
  • クラスの中にbark(吠える)というメソッドを定義しています

このクラスだけではまだ何も実行されません。これはあくまで「犬」という概念の設計図を作っただけです。この設計図を元に、実際の犬(オブジェクト)を作成する必要があります。

インスタンスを作成する

次は、作成したDogクラスを使用して実際の犬のオブジェクトを作成してみましょう。クラスから作られた実際のモノのことを、インスタンスと呼びます。

class.rbファイルに以下のコードを追記してください。

pochi = Dog.new
pochi.bark
#=> わんわん!

このコードを実行すると、ターミナルに「わんわん!」と表示されます。

ここで発生している処理を詳しく見ていきましょう。

  1. Dog.newDogクラスの新しいインスタンスを作成します
  2. 作成したインスタンスをpochiという変数に代入します
  3. pochi.barkで、pochibarkメソッドを呼び出します

Dog.newは「犬の設計図を元に、実際の犬を作る」という操作です。そしてpochiは「その設計図から作られた具体的な一匹の犬」を表しています。

複数のインスタンスを作成する

同じクラスから複数のインスタンスを作成することも可能です。以下のコードを追記してみましょう。

hachi = Dog.new
hachi.bark
#=> わんわん!

このコードを実行すると、hachiも同様に「わんわん!」と吠えます。

ここで重要なのは、pochihachiは同じDogクラスから作られていますが、それぞれが独立した存在だということです。例えば、pochiにだけ何か特別な命令をしても、hachiには影響しません。

これがオブジェクト指向の基本的な考え方です。共通の性質(クラス)を持ちながらも、個別の存在(インスタンス)として振る舞うことができるのです。

Rubyにおけるオブジェクト

Rubyの特徴的な点として、実は文字列や数値なども含めて、すべてがオブジェクトとして扱われています。オブジェクトとは、あるクラスから作られたインスタンスのことです。

実際に確認してみましょう。以下のコードを追記してください。

name = "ポチ"
puts name.class
#=> String

このコードを実行すると、Stringと表示されます。これは、name変数に格納されている文字列が、Stringクラスのインスタンスであることを示しています。

数値についても確認してみましょう。

number = 42
puts number.class
#=> Integer

このコードを実行すると、Integerと表示されます。これは、数値42Integerクラスのインスタンスであることを示しています。

このように、Rubyでは私たちが普段何気なく使っている文字列や数値なども、実はすべてクラスのインスタンス(オブジェクト)なのです。このことを理解すると、Rubyのプログラミングがより直感的に感じられるようになるでしょう。

まとめ

本章では、オブジェクト指向プログラミングの基本的な概念について学習しました。

  • クラスは、モノの設計図として機能し、その中にメソッドを定義できます
  • クラスからnewメソッドを使用してインスタンスを作成できます
  • 作成されたインスタンスは、クラスで定義されたメソッドを使用できます
  • 同じクラスから作られた複数のインスタンスは、同じメソッドを持ちながらも独立した存在です

オブジェクト指向プログラミングは、プログラムを「モノ」とその「振る舞い」という観点で考えることで、より現実世界に近い形でプログラムを設計する手法です。今回学んだクラスとインスタンスの概念は、オブジェクト指向プログラミングの基礎となる重要な部分です。

このセクションは有料サブスクリプションへの登録、またはログインが必要です。完全なコンテンツにアクセスするには、料金ページ(/pricing)をご覧ください。購入済みの場合は、ログインしてください。

Starterプランでより詳しく学習

この先のコンテンツを読むにはStarterプラン以上が必要です。より詳細な解説、実践的なサンプルコード、演習問題にアクセスして学習を深めましょう。

作成者:とまだ
Previous
オブジェクト指向