
![]() |
|||
|
オブジェクト指向を導入すれば過去の資産を簡単に有効利用できる、と考えるのは勘違いです。また、とにかく一度作ったものは将来再利用できる、と考えるのも勘違いです。本当は、再利用するために作られたものだけが再利用できるのです。 |
|||
![]() |
|||
| このトピックでは次の用語を覚えます: | |||
|
|||
![]() |
|||
|
新しいプロジェクトの開発が始まったとき、当然、以前に似たようなプロジェクトがなかったか探してみるでしょう。そうやって、流用可能なライブラリが見つかればラッキーですが、ない場合は作るしかありません。でも、新しく作るならまだマシです。それよりもっと困った結果になるのは、「似ているけれどもそのままでは使えない」場合です。 |
|||
|
「似ているけれどもそのままでは使えない」ライブラリがある場合は、まずソースコードを探し出して自分のプロジェクトにコピーするでしょう。それから、ソースレベルで自分のプロジェクトに合うように修正を加えます。この時点で、このライブラリはもはや流用元とは別の代物になります。 |
|||
|
この方法には、次のようなマズイ点があります:
|
|||
| ブラックボックスとしての流用 | |||
|
正しい再利用は、ソースレベルでの修正を伴いません。つまり、「似ているけれどもそのままでは使えない」ようなものを見つけたときは、次のどちらかのようにすべきです:
|
|||
|
修正を行わずにそのまま「ブラックボックス」として流用する場合は、カスタムバージョンを作るという悪い方法に比べて次のような利点があります:
|
|||
|
さて、賢明な方ならもうお気づきでしょうが、ブラックボックスとして流用できるライブラリは、はじめからそのように計画されていればこそ、そうなっているのです。汎用化は、意識的に行わなければ実現しません。どのようなときでも、 「この機能は汎用化できないだろうか?」 と考えてみることができるかどうかが重要です。もしそれが可能で、かつメリットがあるなら、どのようなプロジェクトでも利用できるように汎用化するようにします。もちろん、だれでも使い方がわかるようなマニュアルを書く労力を惜しんではいけません。使い方がわからなければ、意味がありません。 |
|||
|
そのままの形で再利用できるライブラリを作るとき、オブジェクト指向が威力を発揮します。そのような「ブラックボックス」オブジェクトのことをソフトウェアコンポーネントと呼びます。例えば、GUI 環境のコントロール(ボタンやテキストボックスなど)はソフトウェアコンポーネントです。 |
|||
(「オブジェクト指向のはなし」は1999年2月から2000年4月にかけて作成されたコンテンツです。)