連載
» 2004年08月14日 00時00分 公開

連載 オブジェクト指向プログラミング超入門:第3回 Windowsアプリケーションの正体 (2/4)

[遠藤孝信,デジタルアドバンテージ]

■名前空間とクラス

 いま、クラス・ライブラリにあるFormクラスの正式名称が「System.Windows.Forms.Form」であると述べましたが、これは実際には、「System.Windows.Forms」という名前の「名前空間」に含まれる、「Form」という名前のクラスです。

図4 名前空間名とクラス名

 「名前空間」というと難しそうに聞こえますが、単にクラスを分類するためのものです。クラス名を人の名前に例えたとすると、名前空間はその人の住所のようなものです。例えば、「山田太郎さん」といえば全国に何人もいると思いますが、「東京都杉並区上高井戸3-2-23の山田太郎さん」といえば、(通常は)特定の人物を指し示すことができます。

 同様に、例えばクラス・ライブラリには2種類のButtonクラスが用意されており*3、どちらのクラスをプログラムで使おうとしているのか明確にならない場合があります。しかし、クラス・ライブラリのクラスの名前には、すべて名前空間が付与されており*4、System.Windows.Forms名前空間のButtonクラスというと、クラス・ライブラリの中から一意にクラスを決定できます(同じ名前空間には、同じ名前を持ったクラスは存在できません)。

*3 Windowsアプリケーション用のSystem.Windows.Forms.Buttonクラスと、Webアプリケーション用のSystem.Web.UI.WebControls.Buttonクラスです。


*4 自分で作成したクラスにも、namespaceキーワードを使用して名前空間を指定することができます。


 名前空間については、1つ注意すべき点があります。クラス・ライブラリでは、最も基本的な機能を持ったクラス群は、「System」という名前空間に集められています。このSystem名前空間と、例えばSystem.Windows.Forms名前空間はまったく別物であるという点です。

 「東京都」と「東京都杉並区上高井戸3-2-23」には包含関係がありますが、System名前空間とSystem.Windows.Forms名前空間には包含関係はありません。System.Windows.Forms名前空間のFormクラスは、System名前空間とは無関係です。

■using/Importsによる名前空間の参照

 しかし、Formクラスを使用するのに、毎回「System.Windows.Forms.Form」という長い名前を記述するのは非常に面倒です。そこで、usingキーワード(VB.NETではImportsキーワード)が用意されています。これを使えば、クラスに対するデフォルトの名前空間を指定することができます。

 次に示すコードでは、System.Windows.Forms名前空間をusing/Importsにより指定しています。これにより、メソッド内では「System.Windows.Forms.Form」を単に「Form」と記述できます。なお、using/Importsはプログラムの先頭でしか記述できません。

 このプログラムでは、どこにもFormクラスを定義していないので、「Form」と記述した場合には、それはSystem.Windows.Forms名前空間のFormクラスとして取り扱われます。

 ちなみに、System.Windows.Forms名前空間に分類されているクラスには、FormクラスやButtonクラスのほかに、Windowsアプリケーションを作成する際に必要なTextBoxクラス、Menuクラスなどのクラスが集められています。Windowsアプリケーションを作成する場合には、「using System.Windows.Forms;」あるいは「Imports System.Windows.Forms」の記述は不可欠といえます*5

*5 VS.NETを使用している場合、VB.NETのプロジェクトでは、プロジェクトのプロパティにある[インポート]項目でも参照する名前空間を設定可能です。


■Formクラスをリファレンス・マニュアルで確認

 クラス・ライブラリには、取りあえず必要となるであろう基本的な機能を持ったクラスが一通りそろっています。オブジェクト指向プログラミングに限らず、システムで提供されている機能を可能な限り利用してプログラミングすることは、プログラムの品質を高めるうえでも重要なことです。もちろんそのためには、どのような機能がライブラリとして提供されているかをある程度把握しておかなければなりません。

 .NET Frameworkのクラス・ライブラリにどのようなクラスが含まれており、それがどのような機能を持っているか、そしてどのようなプロパティやメソッドが利用可能かはリファレンス・マニュアルを見ることによって分かります。あるクラスがどの名前空間に含まれているかもリファレンス・マニュアルに記載されています。

 ここでは、Formクラスをリファレンス・マニュアルで調べてみましょう。すでに目的とするクラスの名前が分かっている場合には、[フィルタ条件]として「.NET Frameworkドキュメント」を指定した、キーワードによる検索が最適です。

図5 リファレンス・マニュアルでFormクラスについての解説を表示
この画面はキーワードによる検索で「Form」を検索し、[Formクラスについて]の項目を開いているところ。
  (1)検索するキーワードを入力。
  (2)クラス・ライブラリのクラスを調べるときには、フィルタ条件で「.NET Frameworkドキュメント」を選択しておくと余計な項目が表示されない。
  (3)クラスが属している名前空間。

 検索結果から[Formクラスについて]の項目を選択すると、クラスの解説や使用例を見ることができます。また、「必要条件」の部分には、名前空間が示されています。

 [すべてのメンバ]の項目を選択すると、そのクラスで定義されているプロパティやメソッドを見ることができます。

図6 リファレンス・マニュアルでFormクラスの「すべてのメンバ」を表示
Formクラスで定義されているプロパティやメソッドを見ることができる。
  (1)[すべてのメンバ]を選択。
  (2)名前空間から、それに含まれているクラスを参照する場合には、この[目次]タブを使用する。

 クラスのプライベート(private)なメンバは外部から呼び出すことができないため、ここには(というより、どこにも)掲載されていません。

 名前空間から、それに含まれているクラスを参照する場合には、[目次]タブを選択してから、[.NET開発]−[.NET Framework]−[リファレンス]−[クラス ライブラリ]とツリーをたどってみてください。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。