作成日 2009/1/31
最終更新日 2009/1/31

自分自身への参照

 ここでは、自分自身への参照について説明します。
 VB6.0、VBAでは「Me」、C++では「this」ポインタ、Javaであれば「this」、UML2.0のOCL(※1)では「self 」が相当します。
 このページでは、これの意味、どのようなときに使用するかを、説明します。

-----
※1:OCLはObject Constraint Languageの略で、オブジェクト制約言語のことです。

1.自分自身への参照について
2.使いどころ
3.注意事項など
4.参考文献など


1.自分自身への参照について

 自分自身への参照といっても、よくわからない。
 図を使って説明します。

 図1に示す、生徒の情報と、成績の情報があるとします。図2は図1から抽出したクラス図です。

生徒情報と成績のデータ
図1 生徒情報と成績のデータ

生徒情報と成績のデータから抽出したクラス図
図2 生徒情報と成績のデータから抽出したクラス図


 ここで、派生属性(図2のクラス図で"/"(スラッシュ)が付いている属性)の算出方法について考えてみる。
 
 わかるとは思いますが、
  合計得点 = 図1で同じ行にある国語の得点 + 図1で同じ行にある英語の得点
  平均点 = 図1で同じ行にある国語と英語から計算した合計得点/2

となります。で、この赤太文字で書いた「図1で同じ行にある」というのが、「自分自身への参照」と考えてよいです(※1)。

-----
※1:じゃあ、「同じ行にある」ではなく、「1つ上にある行にある」や「1つ下にある行にある」を意味するキーワードはあるのかと言うと、ありません。
このページのトップへ

2.使いどころ

 ここでは、VB6.0やVBAの「Me」、C++の「this」、Javaの「this」、UML2.0のOCLの「self」がどのようなときに使用されるかを説明します。

 …。
 えーと、すいません。説明しにくいのですが…、実はあまり使用されることが無いのです。
 理由は以下の通りです。
  1. VB6.0やVBAの「Me」、C++の「this」、Javaの「this」においては、省略されることが多い。 
    ただし、これらの意味を理解し、省略しているということをわかっていないと駄目です。

  2. UML2.0のOCLの「self」においては、そもそもOCLがあまり使用されていない…。
    仕事で使用したことがありません。今のところ(2009/1/31)、他の人が使用しているところを見たこともありません。
    知名度が低いのと、そもそもUMLやオブジェクト指向に対して不慣れな人が多いためだと思います。
このページのトップへ

3.注意事項など

 一応説明します。
  1. [VB6.0、VBA]標準モジュールではMeキーワードは使用できません。
    標準モジュールからはオブジェクトは生成されないので、これは当然のことです。

  2. [VB6.0、VBA]Meキーワードの次に"."(ドット)をつけてアクセスできるのはpublicなプロシージャ、変数のみです。
    C++やJavaはそうではありません。
    正直言って不便です。なんでこういう仕様なのでしょうか…。

  3. [VB6.0、VBA]フォームモジュールを作成すると、モジュール名(例:UserForm1)と同じ名前のグローバル変数が定義されます。これとMeは別物です。よく勘違いしている人がいます。
    詳細は「エクセルVBAやVB6.0でフォーム上のコントロールにアクセスするとき、「Me」って使ってる? - だるまのエクセルVBA」を参照してください。

  4. [C++、Java]staticメンバ関数(メソッド)内でthisは使用できません。
    staticメンバ関数(メソッド)はオブジェクトメソッドではないので、当然です。(VB6.0やVBAにて標準モジュールでMeが使用できないのと同じ理由です。
このページのトップへ

4.参考文献など

 このページを作成するのに参考にしたページです。
 ただし、だるまが以下のページをちゃんと理解してこのページを作成したとは思わないように。

番号

リンク先の名称

リンク先の説明

リンクした日

1 Java 入門 | this キーワード Javaのthisキーワードについての説明があります 2009/1/31


 
Prev Up Next  Top
このページのトップへ

このページの利用によって発生した、いかなる損害について、このホームページの作成者は責任を負いません。
このページの間違いや嘘を見つけた方、このページに書いて欲しい情報がある方はメールをお願いします。

Microsoft 、Windows 、Visual Basic および Excel は米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
ここではExcel® をエクセル、Visual Basic® for Applications をVBAと表記する場合があります。
Mac 、Mac OS 、Mac OS X は米国Apple Computer,Inc.の登録商標または商標です。
Sun、Sun Microsystems、サンのロゴマーク、Java、及び、Sun/Solaris/Java に関連するすべての商標およびロゴマークは米国 Sun Microsystems, Inc. の米国およびその他の国における商標または登録商標です。
OMG、UML、Unified Modeling Languageは、Object Management Groupの商標または登録商標です。
その他、社名および商品名、システム名称などは、一般に各社の商標または登録商標です。

このホームページの作成者はこれらの会社とはいっさい関係がありません。