- PR -

メンバという言葉について

1
投稿者投稿内容
Rikuro
会議室デビュー日: 2003/09/04
投稿数: 12
投稿日時: 2003-09-04 22:38
初めまして、Rikuro と申します。

最近、常務の関係で ASP.NETを使い始めまして、よくこちらの記事を参考にさせていただいております。

さて、基本的なことなのかも知れませんが、メンバという言葉の意味についてお聞きいたします。

たとえば OleDbConnection について Web で調べたところ、
・OleDbConnection クラス
・OleDbConnection メンバ
・OleDbConnection オブジェクト
と、いうのが見つかりました。

この、メンバ、クラス、オブジェクトで何がどう違うのか、色々なサイト、書籍で調べましたが要領を得ません。
ご存知の方がいらっしゃいましたらご教授願います。

以上
mei
大ベテラン
会議室デビュー日: 2003/04/08
投稿数: 114
投稿日時: 2003-09-04 23:02
こんばんは、meiです。

引用:

この、メンバ、クラス、オブジェクトで何がどう違うのか、色々なサイト、書籍で調べましたが要領を得ません。
ご存知の方がいらっしゃいましたらご教授願います。



具体例を挙げた方がわかりやすいので、簡単な例を。

class 人間 {
private string 名前;
private string 性別;
private int 年齢;
public void 食う();
public void 寝る();
public void 遊ぶ();
}

と、あったとき"クラス"人間というのは、
名前、性別、年齢という属性(変数)を持っていて、
また、食う、寝る、遊ぶという操作(関数)を持っている"型"を表しています。

人間 a, b, c;
のように人間型の変数を用意すれば持っている属性や操作はa,b,cとも共通です。

メンバとはクラスに属する属性や操作のことを指しています。
C++ではメンバ変数やメンバ関数と呼びますが、
この例でいうと、名前、性別、年齢がメンバ関数で、
食う、寝る、遊ぶがメンバ関数となります。

最後にオブジェクトですが、
オブジェクトという言葉は曖昧に使われているので、
文脈をみてみないと分からないですが、
通常はオブジェクト=インスタンスだと思います。
このインスタンスも日常使わない言葉ですが、
型に対する具体的な値を意味します。

'型'人間に対して、その1つの値として、例えば私(='mei')があります。
また犬という型があったとして、
ポチやジョンなど実際に存在しているものがオブジェクトです。

この辺の話はオブジェクト指向の本に詳しく書いているので、
一読することをお勧めします。

オブジェクト指向に対する基本知識があった方が開発が効率的に行えると思います。
Rikuro
会議室デビュー日: 2003/09/04
投稿数: 12
投稿日時: 2003-09-05 10:01
mei 様、早速のご回答ありがとうございました。

メンバ変数 ≒ プロパティ
メンバ関数 ≒ メソッド

であると理解しました。

オブジェクト、インスタンスに関してはサイトによって異なった定義がされているため、もう少し深く調べることに致します。
Micky
大ベテラン
会議室デビュー日: 2002/09/04
投稿数: 137
投稿日時: 2003-09-05 11:16
Mickyです。
いつも勉強させていただいております。

引用:

Rikuroさんの書き込み (2003-09-05 10:01) より:

メンバ変数 ≒ プロパティ
メンバ関数 ≒ メソッド




この辺り皆さんの御意見を聞いてみたくなりました
C++からだと、「メンバ変数、メンバ関数」ってよく
使うと思うのですが、オブジェクト指向的には
「プロパティ、メソッド」ですよねぇ?
でも、思うに、
プロパティ:外部に公開された属性
メソッド:外部に公開された振舞
だと思っているのですがいかがでしょう?
公開されていないとヘルプ関数なんて分類もありました。

特にプロパティは.Netでは単なる変数の認識ではないですよねぇ?
publicなメンバ変数との兼ね合いが難しい所ですが、
自分はpublicなメンバ変数と言うのはある用途の構造体以外使用しないように
しています。

引用:

オブジェクト、インスタンスに関してはサイトによって異なった定義



こっちの方が問題で
オブジェクト指向の概念説明等ではクラスとオブジェクトを
同義に使ったり「オブジェクト」を広義に使うような事もあるようですが、
プログラミング上の会話でこの定義がバラバラだと、
コンセンサス取れないような気がするんです。
なので、

・クラス=型
・オブジェクト=インスタンス=newされた(メモリに割り当てられた)型

と認識しています。

どんな異なった定義がされているのかちょっと知りたくなりました
ほむら
ぬし
会議室デビュー日: 2003/02/28
投稿数: 583
お住まい・勤務地: 東京都
投稿日時: 2003-09-05 12:00
ども、ほむらです。
ここで出していい問題かはおいといて。。。
ということで、おふとぴチックです(笑
------------
C++的にいえば
インスタンス=実体となっていて
実体とはアクセス可能なデータ領域の確保された状態です。
newで作成されたオブジェクトというのが一番なじみあるかもしれませんね

でも、オブジェクト=インスタンスではありません。両者は別のものです。
どちらかといえば
オブジェクト=クラス(型)
といったほうがしっくりくるのではないでしょうか
このあたり モジュール>オブジェクト>インターフェイスという形で
集まった集合の関係ですね。

最近はモジュールという概念は消えつつありますけど。。。
モジュール=ライブラリと言った感じですか
クラスライブラリと言ったほうがわかり易いかもしれません。

インターフェイスについてはなんて説明すればいいんでしょう。。。
オブジェクトの最小単位なんて説明になってないですよね(笑
個人的に説明するのなら
単純な定義データの集まり(enum・struct等)とか、
共通して利用できる低レベルな動作(ファイルの読み書きとか)をする関数の集まりかな?

# 今プロパティというとメンバ変数の中でも
# もっと便利な(オブジェクトみたいな)ものを言うみたいですね。
# 当面は同じと考えても差し支えないでしょうけど
ほむら
ぬし
会議室デビュー日: 2003/02/28
投稿数: 583
お住まい・勤務地: 東京都
投稿日時: 2003-09-05 12:05
ほむらです。
書き忘れたついでに最初の投稿での違いを補足
-----------
引用:

たとえば OleDbConnection について Web で調べたところ、
・OleDbConnection クラス
・OleDbConnection メンバ
・OleDbConnection オブジェクト
と、いうのが見つかりました。


調べたというのがキーワードで

クラスとオブジェクトに
ついてはOleDbConnection そのものについての説明だと思います。

メンバと書いてあった場合には他のオブジェクトに取り込まれていて
メンバ変数の一つとして定義されているのではないしょうか。。。
あるオブジェクトはOleDbConnectionをメンバ変数として持っています。みたいな
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-09-05 12:08
たとえとして「鯛焼き」を用いると・・・

鯛焼きを作る金型 = クラス
焼き上がった1つ1つの鯛焼き = インスタンス
「鯛焼き」という言葉 = オブジェクト

かなぁ・・・?
よねKEN
ぬし
会議室デビュー日: 2003/08/23
投稿数: 472
投稿日時: 2003-09-05 14:08
・OleDbConnection クラス
・OleDbConnection メンバ

これらはどちらもMicrosoftの.NET Frameworkのヘルプの表題になっているもので、
前者がクラスの概要説明、後者がクラスのメンバ一覧
(フィールド/プロパティ/メソッド/イベント)を掲載したページが引っかかったものだと思います。
GoogleでOleDbConnectionで検索するとまっさきにひっかかるリンクですね。
「OleDbConnection クラス」は普通に使われる言い回しですが、
「OleDbConnection メンバ 」という言葉はヘルプにしかでてこないと思います。

・OleDbConnection オブジェクト
こちらはOleDbConnectionクラスを利用したプログラムの解説記事などで
使われる書き方ですね。

クラスとインスタンスは雛型と実体といった意味合い以外でしか普通使われませんが、
オブジェクトの場合は、
・クラスを指す場合
・インスタンスを指す場合
・クラス/インスタンスを区別せず(区別する必要がなく)両方を指したい場合
なんかに使われると思います。

メンバは.NETのヘルプでは、フィールド/プロパティ/メソッド/イベントなど
オブジェクト(ここではクラスとインスタンスを区別する意味がないのでオブジェクトと記述)の
持っているものをまとめてメンバと呼んでいるようです。

1

スキルアップ/キャリアアップ(JOB@IT)