データメンバ
クラスの中にある変数だよ
「属性」を定義したものだよ
オブジェクト指向の話で出てくるよ
簡単に書くよ
データメンバ(英:data member)とは
「メンバ変数」のこと。
用語の中身としては
オブジェクト指向
(「モノ」に注目した考え方)における「属性」を定義したもの
です。
もう少し、ざっくばらんに書くと
クラス
(オブジェクト指向の話で出てくる概念のひとつで「設計図」っぽいやつ)の中にある変数
(プログラミングにおける値を入れておく箱)
です。
詳しく書くよ
順番に見ていきましょう。
まずは予備知識として
・変数
・オブジェクト指向
・クラス
について結構ガッツリ説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。
変数は「プログラミング言語における『値を入れておく箱』」です。
処理の途中で値を入れたり、逆に取り出したりできます。
オブジェクト指向は「『モノ』に注目した考え方」です。
「どんなやつで、どう動く」に注目した考え方です。
例えば、そうですね。
あなたがシューティングゲーム(射撃ゲーム)を作ろうとしているとしましょう。
シューティングゲームの基本的な登場人物は
1.自分
2.敵
3.弾
です。
そして、それぞれの登場人物には「どんなやつ(属性)」と「どう動く(操作)」が設定されます。
例えば
・「自分」は3回「弾」に当たると爆発する(どんなやつ)
・「敵」は左に動ける(どう動く)
・「弾」の色は威力と対応している(どんなやつ)
などが「どんなやつ」と「どう動く」です。
あとは、用意した
1.自分
2.敵
3.弾
を組み合わせて、あれやこれやする処理を たくさん作ればゲームは完成します。
例えば
「1」の「3」が「2」に当たったら「2」が消える
(「自分」の「弾」が「敵」に当たったら「敵」が消える)
のような処理を必要な分だけ作り込めば良いでしょう。
ここまでを振り返ってみてください。
「自分」「敵」「弾」といったモノ(オブジェクト)に注目して、あれこれ考えていますよね。
このような考え方がオブジェクト指向です。
誤解を恐れずに言えば、オブジェクト指向のイメージは人形劇です。
人形劇をやるときは、まず人形を用意します。
そして、人形同士を関わらせることで1つの物語を作り上げます。
人形劇の中心は人形です。
物語は「人形に何をするか(どう動かすか)」によって決まります。
オブジェクト指向では、まずモノ(オブジェクト)を用意します。
そして、オブジェクト同士を関わらせることで1つの処理を作り上げます。
オブジェクト指向の中心はオブジェクトです。
処理は「オブジェクトに何をするか」によって決まります。
人形劇は、人形を用意して、その人形同士をあれこれすることで物語を作ります。
オブジェクト指向は、モノ(オブジェクト)を用意して、オブジェクト同士をあれこれすることで処理を作ります。
似ていますよね?
まずはオブジェクトを用意して、そのオブジェクトをあれこれしちゃうぜ!
なのがオブジェクト指向です。
オブジェクト指向の理念に沿って作られたプログラミング言語を「オブジェクト指向プログラミング言語」と言います。
有名どころでは、Javaなんかがオブジェクト指向プログラミング言語です。
オブジェクト指向プログラミング言語では
・クラス
・インスタンス
・オブジェクト
の3つの用語が よく出てきます。
この3つは とても大事です。
ざっくりとで良いので関係性を覚えておいてください。
専門家の人からは怒られそうですが、ものすごい大雑把に説明すると
クラス:設計図
インスタンス:実際に作った物
オブジェクト:モノ(クラスとかインスタンスとかを、ふんわりと表現したもの)
です。
クラスは「設計図」です。
「それって、どんなもの?」を示しています。
ピヨ太君の頭の中にある「ピヨピヨ時計は こんな感じだな」がクラスです。
インスタンスは「実際に作ったもの」です。
クラス(設計図)に書かれた「それって、どんなもの?」を形にしたものを指します。
実際に作ったピヨピヨ時計がインスタンスです。
オブジェクトは……モノですよ、モノ。
結構ざっくりとした使われ方をする用語です。
「クラスとかインスタンスを ふんわりと表現したもの」くらいに解釈してください。
よく分からない人は忘れてしまって かまいません。
以上を踏まえて
オブジェクトの属性を定義したもの
が「データメンバ」です。
「メンバ変数」とも呼ばれます……というか個人的には「メンバ変数」という言い方の方が馴染みがあります。
※本ページでも以降は「メンバ変数」と表現します。
オブジェクト指向の説明をしたときに
それぞれの登場人物には「どんなやつ(属性)」と「どう動く(操作)」が設定されます。
と書きました。
これは、ちょっとカッコ付けた言い方をすると
オブジェクトには「属性」と「操作」が定義される
です。
この話における「属性(を定義したもの)」がメンバ変数です。
あと、ついでなので書いておくと「操作(を定義したもの)」は「メソッド」と言います。
気が向いたら、併せて覚えてあげてください。
メンバ変数:オブジェクトの「どんなやつ(属性)」を定義したもの
メソッド:オブジェクトの「どう動く(操作)」を定義したもの
です。
……というのが概念的な説明です。
身も蓋もないことを言うと、メンバ変数は
クラスの中にある変数
です。
例えば、そうですね。
Javaで書いた以下の内容のソースコード(プログラムの元ネタ)が あったとしましょう。
//クラス「ピヨ太」
class Piyota{
//年齢
int age;
//性別
String sex;
//年齢を設定
void setAge(int _age){
age = _age;
}
//年齢を返却
int getAge(){
return age;
}
//性別を設定
void setSex(String _sex){
sex = _sex;
}
//性別を返却
String getSex(){
return sex;
}
}
このコードは「ピヨ太」クラスを定義しています。
よく分からなければ、ピヨ太君の設計図だと思ってください。
このピヨ太君の設計図ですが、大きく分けて2つの要素からできています。
それは
//年齢
int age;
//性別
String sex;
の部分と
//年齢を設定
void setAge(int _age){
age = _age;
}
//年齢を返却
int getAge(){
return age;
}
//性別を設定
void setSex(String _sex){
sex = _sex;
}
//性別を返却
String getSex(){
return sex;
}
の部分です。
前半部分はピヨ太君の「どんなやつ(属性)」が書いてある部分です。
ピヨ太君は「年齢」という要素を持っています。
ピヨ太君は「性別」という要素を持っています。
後半部分はピヨ太君の「どう動く(操作)」が書いてある部分です。
ピヨ太君は「年齢」を設定できます。
ピヨ太君は「年齢」を答えられます。
ピヨ太君は「性別」を設定できます。
ピヨ太君は「性別」を答えられます。
このコードにおける前半部分の
//年齢
int age;
//性別
String sex;
がメンバ変数です。
後半部分の
//年齢を設定
void setAge(int _age){
age = _age;
}
//年齢を返却
int getAge(){
return age;
}
//性別を設定
void setSex(String _sex){
sex = _sex;
}
//性別を返却
String getSex(){
return sex;
}
がメソッドになります。
一言でまとめるよ
まぁ「データメンバ」って単語が出てきたら「クラス
(オブジェクト指向の話で出てくる概念のひとつで「設計図」っぽいやつ)の中にある変数
(プログラミングにおける値を入れておく箱)なんだな~」と お考えください。
おまけ
■訳してみるよ
「data(データ)」の意味は「資料」とか「知識」とか「情報」とかです。
「member(メンバ)」の意味は「一員」とか「会員」とかです。
何となく くっつけると
情報の一員
となります。
■検索してみる?






