はじめに
プログラミング言語の中で独特の考え方「クラス」と「インスタンス」。
初めてプログラミング言語を触れたとき理解に苦しんだ考え方の一つです。
自分なりに噛み砕いた理解をまとめてみました。
クラス
はじめに、クラスとインスタンスはプログラミング言語の中の独特な考え方と言いましたが、よくよく考えたらそうでもないかと思います。(どっちやねん 笑)
よく言われるのは、クラスとは設計図だと言います。
その設計図をもとに作られた実体がインスタンスです。
なぜクラス(設計図)が必要かですが、それは共通する部分を再利用することができるからです。
タイヤキでクラスを紐解く
たくさんのタイヤキを作ろうとしたとき、タイヤキ器を用いて作りますよね。タイヤキ器に材料を流し込んで、焼いてタイヤキが出来上がります。
このタイヤキ器こそがクラスです。出来上がったタイヤキ(実体)がインスタンスです。
先ほど、共通部分を再利用することができると言いました。
例えばタイヤキはタイヤキ器を使ってタイヤキを作っていきますが、新商品カスタードクリームタイヤキを作ることとなりました。
しかし、中のあんこをカスタードクリームに替えるだけなので、作り方はほとんど同じだったりします。
また、新商品イチゴミルクタイヤキが出ました。
これも、少しアレンジするだけでいいので元々のノーマルタイヤキから作り方を大きく変える必要はありません。
これが共通部分を再利用することができるという意味です。
※この辺は次回の記事に詳しく書きます。
インスタンスの生成
クラスを用いてインスタンスを生成する方法ですが、クラスにはnewメソッドという特別なメソッドを使用することができます。
今回のタイヤキの例でタイヤキ器からタイヤキ(実体ある商品)を生み出してみます。
※ここではクラスの中身は空です。
class Taiyaki #クラスは大文字から始めます。
end
taiyaki = Taiyaki.new
最初にクラスを定義してあげます。(タイヤキ器の構造や型を作ってあげる)
そしてそのクラスにnewメソッドを使ってインスタンスを生成します(タイヤキ器を使って商品を作成)
最後に
プログラミングでは同じ記述はコードが長くなってしまったり、読みづらくなりがちなので嫌われます。
できるだけ一度書いたら再利用することと、再利用する際にわかりやすい名前の付け方も結構重要だなと最近感じます。
私はわかりづらい概念は何かに置き換えることを意識しています。きっと近いものがどこかに存在するのではないでしょうか。
なんでもいいので自分なりにイメージを掴んでおくことは大切かと思います。