連載

オブジェクト指向プログラミング超入門
― .NETでオブジェクト指向プログラミングを始めよう ―

最終回 オブジェクトをつなぐためのインターフェイス

デジタルアドバンテージ 遠藤 孝信
2005/04/02
Page1 Page2 Page3 Page4


Back Issue
1
オブジェクトの正体
2
クラスの定義からプログラム実行まで
3 Windowsアプリケーションの正体
4 継承を使うために知っておくべきこと
5 継承を使わないとしても知っておくべきこと
6 階層の頂点に立つクラス

 オブジェクト指向プログラミングの基礎を解説してきた本連載も今回がいよいよ最終回となりました。今回は「インターフェイス」について解説します。

 インターフェイスを使えば、オブジェクトが持つ本来の機能に加えて、さまざまな機能を複数の異なるオブジェクトに統一的に持たせることができます。それらのオブジェクトを扱う側では、インターフェイスを通じてオブジェクトにアクセスすることにより、オブジェクトによらないオブジェクトの操作が可能となります。

インターフェイスといえばUSB!?

 PCの世界で「インターフェイス」といえば、代表的なものに「USBインターフェイス」があります。ご存じのとおり、USBインターフェイスを備えたデバイス(機器)は、どのようなデバイスであっても、PCのUSBポートに接続して使用することができます。

 これは簡単にいえば、USBデバイスがUSB規格書に従って形状やピン配列が設計されており、また、どのようなUSBデバイスに対しても、デバイス情報の取得、デバイスのオープン、デバイスのクローズといったコマンドを発行できるようになっているからです。

 各USBデバイス側では、それがどのようなUSBデバイスであっても、それらのコマンドに対応するように作られています。

図1 USBインターフェイスを実装したデバイス

 USBインターフェイスと同じように、C#やVB.NETでは、どのようなオブジェクトに対しても、同じコマンド(メソッド呼び出し)を使えるようにするための「インターフェイス」と呼ばれる仕組みが用意されています。

クラス・ライブラリで定義されているインターフェイス

 例えば、クラス・ライブラリには、「IListインターフェイス」というものが定義されています。インターフェイスの定義は、USBの規格書に相当するもので、具体的には、メソッドの一覧が定義されています(詳細は後述)。

 そして、クラス・ライブラリのいくつかのクラスは、このIListインターフェイスに準拠しています。つまり、IListインターフェイスで定義されているメソッドを持っているわけです。

 前回で取り上げたArrayListクラスや、第5回で取り上げたControlCollectionクラス(厳密にはControl.ControlCollecitonクラス)はIListインターフェイスを装備しているクラスの例です*1。これは、オブジェクト指向プログラミング用語では、「IListインターフェイスを実装しているクラス」といいます。

*1 IListインターフェイスを実装しているクラスの一覧はリファレンス・マニュアルで参照できます。

 IListインターフェイスは、リスト形式によりオブジェクトを扱うためのメソッドを定義したもので、そのメソッドには、例えばリストに要素を追加するAddメソッドや、指定された要素を削除するRemoveメソッドなどがあります。IListインターフェイスを実装しているオブジェクトに対しては、これらのメソッドを呼び出すことができます。

図2 IListインターフェイスを実装したクラス

 例えば、ArrayListオブジェクトやControlColletionオブジェクト(コントロールのControlsプロパティの値)に対しては、次のようにしてAddメソッドにより要素を追加できます。

C#版
VB.NET版
ArrayList myArray = new ArrayList();
myArray.Add(myObject);
Dim myArray As ArrayList = New ArrayList()
myArray.Add(myObject)
AddメソッドによるArrayListオブジェクトへの要素の追加
 
C#版
VB.NET版
Form1.Controls.Add(button1); Form1.Controls.Add(button1)
Addメソッドによるフォーム(Form1)へのコントロールの追加

 しかし、これはArrayListオブジェクトやControlColletionオブジェクトがそれぞれ独自にAddメソッドを実装しているのとは何が違うのでしょうか? その答えはインターフェイスを使ったポリモーフィズムを実現できることなのですが、それを解説する前にインターフェイスの定義と実装方法について簡単に説明します。


 INDEX
  連載 オブジェクト指向プログラミング超入門
  最終回 オブジェクトをつなぐためのインターフェイス
  1.クラス・ライブラリで定義されているインターフェイス
    2.インターフェイスの定義と実装方法
    3.foreach文の正体
    4.独自のコレクション・クラスを列挙可能に
 
インデックス・ページヘ  「連載:オブジェクト指向プログラミング超入門 」

TechTargetジャパン

Insider.NET フォーラム 新着記事
  • Kinectが切り開く“夢の近未来” (2012/2/2)
     日本を含めた世界中でKinect for Windowsセンサー商用版とSDK正式版がリリース。未来のコンピューティングはどう変化するのか?
  • 3つの視点でネイティブと.NETの適材適所を考察 (2012/1/31)
     アプリ開発は「ネイティブ」と「.NET」、どちらが最良? その問いには「適材適所」と答えるしかない。では、“適所”は一体どこかを考察する
  • SQL Azure Data Sync入門 (2012/1/30)
     SQL Azure/SQL Serverデータベース間のデータ同期を簡単に実現するサービスとは? その仕組みや使用手順を解説
  • Windows Phoneアプリ市場の現状を分析する (2012/1/27)
     Windows Phone のアプリ・ストアに日々登録されている多種多様なアプリ。カテゴリ別のアプリ数は? 市場の現状を明らかにする

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH