オブジェクト指向

はじめに

 昨今、オブジェクト指向という言葉を聞くことがあります。
なんだかよくわからないけど、ちょっと魅力的なこの言葉の意味を、その概念を探っていきたいと思います。また、この紙面だけでオブジェクト指向を説明することは、不可能であります。よって、ここでは重要語句をノート的に書いていき、おおよそどんな感じのものかということに、重点を置きます。ですから、C++でのクラスに関してなどのプログラム言語の説明などは、タッチしませんのでご了承句ださい。このオブジェクト指向は、もともとは、ソフトウエア開発におけるシステム設計の過程で生み出されたようです。

広辞苑の定義

と、いうことです。

発想の原点

 このオブジェクト指向の発想原点は、現実の世界のモノとモノ同士の関係をそのままソフトウエアで表現することによって、実世界のしくみをコンピュータ上に再現しようとするものであります。そうなると、現実に近い形でシステム構築をあらわすことによって、その構造がより直感的でわかりやすくなります。  その結果、人間の間違いが少なくなり、プログラムが理解し易くなって、複数の人間が開発するソフトでも、開発しやすくなります。

オブジェクト指向が改善したこと

 これまでは、構造化手法というものであり、機能がコンピュータ上での実現単位であることから、分析・設計段階でも機能中心の問題把握が一般的に用いられてきた。しかし、これでは、だんだんわかりづらくなり、大型のシステムや複人数での開発になると、なおさら混乱を生じることになっていくる。

そこでいう弊害とは、主に4つある。

  1. 機能中心の弊害→人間の自然の感覚とは違う。
  2. データと処理する場所がちがう→構造が複雑になり、間違い易くなる。
  3. 同じようなソフトを作る時、はじめから作り始めなければならない。
  4. 暗黙の利用手続きの弊害→複数の人間が理解するのが容易でない。

 この点を、オブジェクト指向は、次のように改善した

  1. 抽象化:自然の状態に近い感覚のデータ構造にした。
  2. カプセル化:データと手続きをカプセル化した。
    →ここでやっている仕事は理解していなくても、結論が得られるようになった。
      ・オブジェクトの利用者は、オブジェクトの内部データ構造を知る必要がない。         即ち、利用者にとっての利用のしやすさ。
      ・オブジェクトの提供者は、内部データ構造を変更しても利用者に影響を与えない。      即ち、利用者にとっての変更のしやすさ
  3. 継承:一度作ったものを、新たにソフトを作るとき、一部利用できるようにした。

 特に、(2)に関しての概念は、他の分野でも用いられることがあり、例えば、野球の試合の勝敗だけを知りたいときは、その試合の内容(ヒット何本とか投手がだれだったとか)の情報などは知る必要がなく、とにかく結果だけわかればよいといった感じです。(あまり正確じゃないけど)

オブジェクト指向アプローチで用いられる用語と概念

基本用語:オブジェクト,クラス(インスタンス),属性,メッセージ,メソッド,      関係(関連,is−a,part−of)

基本概念:状態,抽象化,カプセル化,継承

応用概念:抽象クラス,多重継承,MIX−IN,多様性,動的結合,並行性,      sub-typing, アクター理論,放送,委譲,Continuation

メリット

オブジェクト指向には、次のような5つのメリットがあるといいます。

オブジェクト指向によるソフトウエア開発の順序

大きく開発の段階は、3つある。

第一段階 分析      :問題が何かを明らかにする

第二段階 設計      :問題をいかに解決するかを決定する

第三段階 プログラミング :解決法にしたがって実現する

オブジェクト指向に用いられる、具体的な主な手法

現在でも発展途上

 しかし、このオブジェクト指向も、いまのところ発展途上である。具体的な主な4大手法もそれぞれ一長一短を持っている。というのも、オブジェクト指向の根幹である、クラス概念というものが、現在の段階ではどうしても個人の能力に依存され、画一的な方法が、はっきりしていない。

 これからのオブジェクト指向環境は必然的に膨大なオブジェクト群を含み多種多様なアプリケーションの混在する環境となっていくと予想されます。これらの開発環境で効率的な作業をおこなうためには、オブジェクト管理法が重要ですが、現状は「クラスと継承」と「ユーザによる分類」などの情報を利用しています。

オブジェクト指向を支援する開発言語

Smaltaik-80 艫vロトタイピングを重視した、個人開発用の純粋なオブジェクト指向言語    C++   芟率を重視した、工業生産用のハイブリッドなオブジェクト指向言語      Eiffel艫\フトウエアの正しさを重視した、工業生産用の純粋なオブジェクト指向言語  

今後のソフトウエア開発への希望

 将来的な理想としては、ユーザのほとんどが、特定の知識がなくても、自分のほしいソフトを自在に作成できるような環境である。そのためにも、このオブジェクト指向をはじめ、ソフトウエアを支える概念が成長して行くことを期待したい。

知的サポートを目指すオブジェクト指向CASE

 CASE(Conputer Aided Software Engineering)ツールはソフトウエア工学が提唱されて以来10年以上にわたって開発が進められてきたが、ここにきてようやく実用化の段階を迎えつつある。これは何といっても昨今のソフトウエア開発の短納期化や要求仕様の高度化により、開発作業の合理化が急務になってきたことによるところが大きい。  しかし、現在のCASEといえども、現状のツールのレベルはお絵描きツールのようなものであることは、否めない。

 これからのオブジェクト指向CASEとは、知的なソフトウエア開発環境でなければならない。知的なソフトウエア開発環境(知的CASE)とは、人間とコンピュータの協調作業を効率良く支援する環境である。その環境においては、すべての作業をコンピュータがおこなうのではなく、本質的に知的な作業のみを人間が行い、コンピュータはその知的な作業を補ったり、誘導するなどのその他のさまざまな雑務を担当することが望まれる。

最後に

 当初は、C++言語も含めたフォーラムの予定でしたが、結局、オブジェクト指向概念の理解のみになってしまいました。私の非力さを実感してます。すいません。でも、これに関してやってみると、単にソフトウエアに用いるだけのものではない手法であり、多くの実戦的な概念として有効であるとが分かりました。本当に、これを実社会でも使えれば効率のよい整理法になると思います。勉強不足で、間違っている事項があるかもしれませんが、そのときはお許しください。
 詳しいことは、下記の本が非常に分かりやすいので、是非お勧め致します。
 また、いまから言語を始めようかと考えていて、C言語かC++のどっちからやったほうがいいかと考えている人がいたら、私は迷わずいきなりC++を勉強することを勧めます。そして、オブジェクト指向の概念をしっかりと自分のものにすれば、必ずや思いどおりのプログラムを設計できることでしょう。

参考文献

以上 担当:(滝口)


戻る

管研ホームページ