プログラミングのクラスやインスタンスとは?簡単に覚えるコツを紹介

クラスやインスタンスとは

プログラミングを始めるなら避けては通れない「クラス」や「インスタンス」について、あなたは正しく理解できていますか?

「クラス」と「インスタンス」の違いを正しく理解していないと、今後プログラミングしていく中でつまづく場面がたくさん出てくるでしょう。

この2つをめちゃくちゃ簡単に説明するとこんな感じ。

  • クラスは、「設計図」
  • インスタンスは、設計図を使って出来上がった「実体」

「クラス」は何もないところから作ることができますが、「インスタンス」はクラスがないと作ることができません。

つまり、何はともあれ、まずはクラスを定義する必要があるってことですね。インスタンスを考えるのはそのあとで大丈夫!

クラスを定義するにはどうするのか?

クラスからどうやってインスタンスを作るのか?

今回はクラスとインスタンスについて、ゲームのキャラクターを作るときの考え方を例にして解説していきます!

プログラミングのクラスとは

インスタンス化とは

プログラミングにおけるクラスとは、インスタンス(実体)を作るための「設計図」のことです。

そしてクラスを構成している要素は以下の3つです。

  1. クラス名
  2. プロパティ
  3. メソッド

「さらにわからない用語が出てきた…」と思ってしまうかもしれませんが、内容はとっても簡単です!

ゲームキャラクターをクラス化する例で考えてみましょう。

クラス名をつける

まず、クラスには必ず名前をつける必要があります。

車の設計図なら「車」になりますし、家の設計図であれば「家」になります。

今回はゲームに出てくるキャラクターの設計図なので「キャラクター」というクラス名にしましょう。

プロパティを考える

ゲームキャラクターは、以下のような「パラメータ」を持っています。

  • 名前
  • HP
  • ちから

このようなクラスが持っているパラメータや情報のことを「プロパティ」と呼びます。

メソッドを考える

また、キャラクターはパラメータの他にも以下のような「動き」を持っているはずです。

  • たたかう
  • にげる

このようなクラスが持っている動きのことを「メソッド」と呼びます。

クラスの使い方

では、さきほどのキャラクターの例を使って、クラスを定義する構成を見てみましょう。

クラス定義
# クラス名
クラス開始 Character

  # プロパティ(名前、HP、ちから)
  name変数
  hp変数
  power変数

  # メソッド(たたかう、にげる)
  fight関数
  escape関数

クラス終了

上を見てもらうとわかるとおり、クラスを定義するときは最初に「クラス名」を記述し、クラスの中に「プロパティ」と「メソッド」を定義します。

プロパティは「変数」、メソッドは「関数」を使って表します。

クラス定義の書き方はプログラミング言語によっても多少違いますが、構成はほとんど同じです。

キツネ

クラスの細かい書き方はプログラミング言語を学ぶときで大丈夫!まずはクラスのイメージを掴もう!

インスタンスの使い方

先ほど定義した「Character」クラスを使うには、インスタンスを作る必要があります。

これをプログラミング用語では、「インスタンスを生成する」といいます。

では、Characterクラスのインスタンスを生成してみましょう。

インスタンス生成
# インスタンスを生成する
Character.new

インスタンスの生成もプログラミング言語によって多少違ってきますが、「クラス名.new」や「new クラス名」のように書くことで簡単に生成できます。

次に、生成したインスタンスのプロパティを使ってみましょう。

クラスのプロパティ使用例
# インスタンスを生成し、変数に代入
kitsune = Character.new

# プロパティを設定
kitsune.name = 'キツネ'
kitsune.hp = '100'
kitsune.power = '10'

# プロパティの値「キツネ」「100」「10」が出力される
kitsune.name
kitsune.hp
kitsune.power

まずは生成したインスタンスを変数に代入して、いつでも使える状態にしておきます。

あとは「インスタンス.プロパティ」と書けば、プロパティに値を代入したり出力したりすることが簡単にできます。

では、最後にクラスのメソッドを使ってみましょう。

クラスのメソッド使用例
# インスタンスを生成し、変数に代入
kitsune = Character.new

# メソッドを実行
kitsune.fight()
kitsune.escape()

クラスで定義したメソッドも、「インスタンス.メソッド」で簡単に呼び出すことができます。

クラスやインスタンスを使うメリット

ここまでクラスやインスタンスの使い方を見てきましたが、メリットがイマイチわからないという方もいるでしょう。

そんな方は、クラスを使わないでキャラクターをたくさん作るときのことを考えてみましょう。

もしクラスがなければ、キャラクターが増えるたびに、パラメータや動きの記述をキャラクターの数だけ書かなくてはいけませんよね。

どれも似たような内容なのに毎回書かなきゃいけないなんて、めちゃくちゃ面倒だと思いませんか?

できるだけ共通で使う部分は使いまわしたいと思うはずです。というか思ってください!

これは、DRY(Don’t Repeat Your Self:繰り返しを避ける)という、プログラマーの基本的な考え方の1つです。

キツネ

プログラマーは「楽をするための努力は惜しまない」と覚えておこう!

まとめ

  • クラスは「設計図」である
  • クラスは「プロパティ」と「メソッド」を持っている
  • クラスを定義するとインスタンスが生成できる
  • インスタンスがあれば、プロパティとメソッドを使える

クラスやインスタンスの使い方について紹介しました。

細かい書き方はプログラミング言語によって違いますが、どれも似たような構成になっています。

クラスやインスタンスは、プログラミングをする上で必ず覚えなくてはいけないので、理解できるまで何度も読み直してください。

テキストのコピーはできません。