JavaScript勉強会

JavaScriptの学習日記

オブジェクト指向の用語「プロパティ」「メソッド」

JavaScriptの勉強をしていて、説明の順番を変えた方がいいかも?と思われる箇所がありました。

→「オブジェクト」という仕組みと、その用語についてです。

 

jsstudy.hatenablog.com

windowやdocumentなど、すべてのオブジェクトは、メソッド以外に「プロパティ」を持っています。

オブジェクトのプロパティとは、そのオブジェクトの状態を表すものです。

 

「オブジェクト」「プロパティー」「メソッド」…英語の専門用語がいきなりたくさん出てくると、訳が分からなくなるかも!?

 

JavaScriptの教材を作る場合、

  1. 先に、データ構造(変数、定数、配列など)の話を出す。
  2. 次に、オブジェクトの話を出す。

という順番が分かりやすいのではないか?と思いました。

(まあ、人それぞれだと思いますが…。)

 

オブジェクト指向プログラミングの仕組みと用語

「プロパティ」や「メソッド」という仕組み、用語は、オブジェクト指向プログラミングの一般的な内容です。

オブジェクト指向プログラミングの説明を抜きにして、この部分だけ抜き出して、いきなり説明されると、ちょっと分かりづらいかんじもあるでしょうか?

 

→分かりやすい説明がないか?ググってみました。

オブジェクト指向 プロパティ メソッド メンバー - Google 検索

 

オブジェクト指向超入門

データと操作(メソッド)をまとめて1つのオブジェクトとして捉える」 ということは共通している。

オブジェクト指向ではオブジェクトを基本単位として考え、 1つのオブジェクトの中には、データとメソッドが備わっているとする。

なお、データとメソッドの個数はそれぞれ自由であり、 データのないオブジェクトやメソッドのないオブジェクト(C言語でいう構造体Pascalでいうレコード型)を作ることが可能である。

 

f:id:jsstudy:20170310155134g:plain

 

JavaScript学習 準備編 - JavaScript勉強会

●データと処理

プログラムは、

・データ

・処理(計算)

という2つの構成要素から成り立っています。

プログラム → 「データ」+「処理」

 

ざっくり言うと、

データと処理をまとめて束にしたもの

が「オブジェクト」です。(上記の図を参照)

 

  • データ → オブジェクトの「状態」を表し、「プロパティ」と呼ばれる。
  • 処理 → オブジェクトの「操作」を表し、「メソッド」と呼ばれる。

 

もともとは、C言語の「構造体」という仕組みを改造して作られたのが、「オブジェクト」です。

 

(参考)

C言語での構造体について

C言語での構造体とは、ひとつの名前でまとめられた、いくつかの異なった型の変数の集まりです。異なった型を格納できる点が配列と異なっています。

構造体の中で命名された変数はメンバと呼ばれます。そして、このメンバは通常互いに関連のあるものになります。例えば、人に関する構造体なら、氏名、年齢、性別、身長、体重などがメンバとなるでしょう。このように関連のある属性をひとつの単位として扱え、組織化できるところが構造体の利点です。

 

C言語プログラミング入門 - 異なる型名データをまとめて取り扱う構造体(1/2)

f:id:jsstudy:20170310163145j:plain

 

「データ」の束(構造体)に、「処理」(メソッド)も入れられるように改造したのがオブジェクトです。

 

  • メンバーがデータだけ → 構造体
  • メンバーがデータと処理 → オブジェクト

 

オブジェクトとクロージャーの違い

いろんなJavaScriptの本を読み比べてみると、関数の説明辺りで「クロージャ―」という仕組みの話が出てきます。

 

「オブジェクト」と「クロージャ―」を対比すると、

  • 「データ」(状態)に「処理」(操作)を付けたものがオブジェクト
  • 「処理」(操作)に「データ」(状態)を付けたものがクロージャ

となります。

 

クロージャ - Wikipedia

クロージャはプログラム内で環境を共有するための仕組みである。

 

developer.mozilla.org

 

クロージャ―は、実際にサンプルコードを動かしてみないと、仕組みが分かりづらいので、もう少し後で詳しく見てみたいと思います。

 

まとめ

プログラミングの話には、英語由来の専門用語がたくさん出てきます。

  • オブジェクト
  • プロパティー
  • メソッド

という用語、仕組みについては、JavaScriptのデータ構造(変数、定数、配列など)の仕組みを理解してから、もう一度見直してみたいと思います。

 

クロージャ―は、込み入った処理をしなければ、出番はないと思います。