web制作のしおり

日々の学習をアウトプットします。

78.クラスって何だろう? ~データと処理の塊~

昨日までとは変わって、概念的なものを学んでいきます。

 

オブジェクト指向言語には必ずついて回るらしい「クラス」について、やっていきましょう。

 

クラスとは

データと処理の塊を作る。

データのことをプロパティ

処理のことをメソッド

と呼びます。

 

複数のプロパティ、複数のメソッドを1つの塊として管理するのがクラス。

わかったような、わからないような…。

引き続き見ていきましょう。

 

クラスのまま使うことは稀

クラス自体は実はそのまま使うことは少なくて、

インスタンスという実体をクラスから生成して

インスタンスを使うというのが基本のようです。

 

調べていてよく目にする説明が、

クラスは設計図、インスタンスは設計図から作られた物

わかったような、わからないような…。

 

 

どんなメリットがあるのか?

ゲームのアイテムを例にしてみましょう。

今までの知識で複数のゲームのアイテム(武器)を作る場合を考えてみます。

まず、武器にはいろいろなパラメータがありますよね。

武器名、攻撃力、属性、種類、特殊効果

これらのパラメータを持った武器を作る場合、連想配列などを使うことになると思います。

例えば、

["武器名"=>"テストの剣",”攻撃力”=>10,”属性”=>"火",”種類”=>"剣",”特殊効果”=>1]

こんな感じの連想配列を作って、特殊効果は数値を引数にとって処理する関数を作って…。

さらに武器を作りたい場合は同じ様式で、連想配列を作って…。

["武器名"=>"テストの斧",”攻撃力”=>15,”属性”=>"水",”種類”=>"斧",”特殊効果”=>2]

武器のリストにするから、さらにこの武器の連想配列連想配列にして…。

["テストの剣"=>

["武器名"=>"テストの剣",”攻撃力”=>10,”属性”=>"火",”種類”=>"剣",”特殊効果”=>1],

"テストの斧"=>

["武器名"=>"テストの斧",”攻撃力”=>15,”属性”=>"水",”種類”=>"斧",”特殊効果”=>2]]

…。

 

キリがないですよね。

これがクラスを使うと楽になるということなのです。

なぜなら、データと処理をまとめて、そこからインスタンスという実体を作れるから。

???

先程の例の武器で考えると

「武器のパラメータのテンプレートを作って、用意された箇所に必要な値いれるだけ」

こんなイメージです。

 

クラスとインスタンスのざっくりとした理解

自分は以下のようにイメージしています

ーーーー武器クラスーーーー

武器名:X

攻撃力:X

属性:X

種類:X

特殊効果:Y

ーーーーーーーーーーーーー

青色・・・データ

橙色・・・処理

こんな感じのテンプレート的なものを定義したのがクラス

 

データや処理に対して個別に値を設定して、1つの個体化したものがインスタンス

 

おそらくこういうことが言いたいのでは無いかと…。

 

今日のまとめ

  • クラスはデータと処理をまとめたテンプレートのようなもの
  • インスタンスはテンプレートを使って作った1つのもの

 

抽象的な説明が多くてイマイチですが、ゲームを例にしたらなんだか掴めた気がします。

実際に使ってみて、どうか。

ですね。

 

では、また。