クラスとインスタンスを学ぼう
クラスとインスタンスで理解するオブジェクト指向プログラミング
学習の目標
本章では、以下の内容を学習します。
- オブジェクト指向プログラミングの基本的な考え方を理解する
- クラスとは何か、その役割と定義方法を学ぶ
- インスタンスの概念と作成方法を習得する
- Rubyにおけるオブジェクトの基本的な性質を理解する
- クラスとインスタンスの関係性を実例を通して把握する
はじめに
これからRubyでプログラミングをする上での基本的な考え方の一つである、オブジェクト指向プログラミングについて学習していきます。
オブジェクト指向プログラミングは初めて聞くと複雑な概念に思えるかもしれませんが、私たちの身近な例を用いながら段階的に理解を深めていきましょう。オブジェクト指向の考え方を身につけることで、より整理された、拡張性の高いプログラムを書けるようになります。
まずは、オブジェクト指向プログラミングの基本的な概念である「クラス」と「インスタンス」から見ていきましょう。
クラスとは何か
クラスは、プログラムの中でモノの設計図のような役割を果たします。
私たちの身の周りにあるものを例に考えてみましょう。例えば「犬」を考えると、どんな犬にも共通する特徴があります。
- 名前がある
- 吠えることができる
- 走ることができる
- 特定の犬種に属している
このような共通の特徴や機能をプログラムの中で表現したものが、クラスです。クラスは、同じような性質を持つオブジェクトをまとめて定義するための枠組みと言えます。
それでは、実際にプログラムの中で犬のクラスを作成してみましょう。
クラスの定義方法
まず、class.rb
というファイルを作成し、以下のコードを記述します。
class Dog def bark puts "わんわん!" endend
このコードでは、Dog
というクラスを定義しています。クラスの主なポイントは以下の通りです。
class
というキーワードを使用してDog
というクラスを定義しています- クラス名は必ず大文字で始める必要があります(これはRubyの命名規則です)
- クラスの中に
bark
(吠える)というメソッドを定義しています
このクラスだけではまだ何も実行されません。これはあくまで「犬」という概念の設計図を作っただけです。この設計図を元に、実際の犬(オブジェクト)を作成する必要があります。
インスタンスを作成する
次は、作成したDog
クラスを使用して実際の犬のオブジェクトを作成してみましょう。クラスから作られた実際のモノのことを、インスタンスと呼びます。
class.rb
ファイルに以下のコードを追記してください。
pochi = Dog.newpochi.bark#=> わんわん!
このコードを実行すると、ターミナルに「わんわん!」と表示されます。
ここで発生している処理を詳しく見ていきましょう。
Dog.new
でDog
クラスの新しいインスタンスを作成します- 作成したインスタンスを
pochi
という変数に代入します pochi.bark
で、pochi
のbark
メソッドを呼び出します
Dog.new
は「犬の設計図を元に、実際の犬を作る」という操作です。そしてpochi
は「その設計図から作られた具体的な一匹の犬」を表しています。
複数のインスタンスを作成する
同じクラスから複数のインスタンスを作成することも可能です。以下のコードを追記してみましょう。
hachi = Dog.newhachi.bark#=> わんわん!
このコードを実行すると、hachi
も同様に「わんわん!」と吠えます。
ここで重要なのは、pochi
とhachi
は同じDog
クラスから作られていますが、それぞれが独立した存在だということです。例えば、pochi
にだけ何か特別な命令をしても、hachi
には影響しません。
これがオブジェクト指向の基本的な考え方です。共通の性質(クラス)を持ちながらも、個別の存在(インスタンス)として振る舞うことができるのです。
Rubyにおけるオブジェクト
Rubyの特徴的な点として、実は文字列や数値なども含めて、すべてがオブジェクトとして扱われています。オブジェクトとは、あるクラスから作られたインスタンスのことです。
実際に確認してみましょう。以下のコードを追記してください。
name = "ポチ"puts name.class#=> String
このコードを実行すると、String
と表示されます。これは、name
変数に格納されている文字列が、String
クラスのインスタンスであることを示しています。
数値についても確認してみましょう。
number = 42puts number.class#=> Integer
このコードを実行すると、Integer
と表示されます。これは、数値42
がInteger
クラスのインスタンスであることを示しています。
このように、Rubyでは私たちが普段何気なく使っている文字列や数値なども、実はすべてクラスのインスタンス(オブジェクト)なのです。このことを理解すると、Rubyのプログラミングがより直感的に感じられるようになるでしょう。
まとめ
本章では、オブジェクト指向プログラミングの基本的な概念について学習しました。
- クラスは、モノの設計図として機能し、その中にメソッドを定義できます
- クラスから
new
メソッドを使用してインスタンスを作成できます - 作成されたインスタンスは、クラスで定義されたメソッドを使用できます
- 同じクラスから作られた複数のインスタンスは、同じメソッドを持ちながらも独立した存在です
オブジェクト指向プログラミングは、プログラムを「モノ」とその「振る舞い」という観点で考えることで、より現実世界に近い形でプログラムを設計する手法です。今回学んだクラスとインスタンスの概念は、オブジェクト指向プログラミングの基礎となる重要な部分です。
Starterプランでより詳しく学習
この先のコンテンツを読むにはStarterプラン以上が必要です。より詳細な解説、実践的なサンプルコード、演習問題にアクセスして学習を深めましょう。