ショートカット
ファシリテーター × あり方
コーディングの向こう側
Hello, ANOTHER world!
オブジェクト指向のはなし
プログラミングのはなし
C言語実力診断クイズ
eSkillBooks
オブジェクト指向のはなし

オブジェクト指向以前の方法

導入

オブジェクトの存在が発見される以前は、どのような方法で設計していたのでしょうか? 実は、システムは「モジュール」の集まりとしてデザインされていました。

用語
このトピックでは次の用語を覚えます:
  • モジュール化プログラミング (modular programming)
  • 情報隠蔽 (information hiding)
解説

大きなシステムでは、同時に全体を把握しながらコーディングするのはほとんど不可能です。そこで、一度に把握できる大きさのパーツに分割することになります。このパーツひとつひとつのことをモジュールと呼びます。システムをモジュールの集まりと考えて作っていく方法をモジュール化プログラミングと言います。

モジュールとは一度に把握できる大きさのパーツのことなので、あるモジュールが他のモジュールの実装に極力依存しないようにしなければなりません。さもないと、コーディングするときに他のモジュールの中身がどうなっているのか気にしなければならなくなってしまい、モジュール化の意味がなくなります。

1つのモジュール内には関連性のある機能を集めるのが自然です。通常は関連性のあるいくつかの関数のセットによって1つのサービスが実現されます。いくつかの関数がセットとして動作するためには、普通、共同で利用する変数が必要です。このような変数は関数を通してのみアクセスされるべきなので、モジュールの外からは直接触れられないようにします。つまり、インターフェイスとしての関数だけモジュールの外に公開し、その実装は隠すようにします。このように、内部事情を外部と隔離する手法を情報隠蔽と呼びます。

うまく情報隠蔽されたモジュールは、良く機能するブラックボックスです。ちょうど下の図のようなイメージになります。

もちろん、オブジェクト指向におけるカプセル化も情報隠蔽の一種ですから、オブジェクトもブラックボックスです。モジュール化プログラミングとの相違点は、分割の位置です。オブジェクト指向ではシステムをオブジェクトで分割するのに対し、モジュール化プログラミングでは機能の類似性によって分割します。モジュールとオブジェクトとの間に対応関係はありません。

もうひとつの相違点は、モジュール化プログラミングにおいて、あるモジュールはひとつしか存在しないということです。すべてのモジュールが、システム中で唯一の存在です。これに対しオブジェクト指向では、同じ種類のオブジェクトがいくつも存在することができます。

実際のコーディングでは、1つのモジュールが1組のソースファイルに対応します。「1組のソース」とは、実装を行う "*.c" ファイルとインターフェイスを宣言する "*.h" ファイルの組です。

(「オブジェクト指向のはなし」は1999年2月から2000年4月にかけて作成されたコンテンツです。)