|
|
オブジェクト指向は、当初プログラムの構造をオブジェクト群の相互作用とおよびその雛形であるクラス群の関係として捉え、プログラムコードを書き表すオブジェクト指向プログラミングから始まっているが、その後、システム開発における要求分析フェイズにおいて、開発しようとする対象領域の構成要素をオブジェクトとして発見・定義していくオブジェクト指向分析、システムの動作や構造をオブジェクトとクラスとして記述するオブジェクト指向設計技術としても広く発展・普及することとなった。
オブジェクト指向の枠組みが持つ道具立ては、一般的で強力な記述能力を持つ。特に複雑なシステム記述、巨大なライブラリ(特に部品間で緊密で複雑な相互関係を持つもの)の記述においては、現実問題としてオブジェクト指向の考え方は必須であるといえる。
| Table of contents |
|
2 オブジェクト指向開発方法論・プロセス 3 オブジェクト指向プログラミングの構成要件 4 オブジェクト指向言語 5 クラスベースとインスタンスベース 6 関連項目 |
オブジェクト指向分析が提唱される以前には、システム分析のレベルにおいては、データ構造を中心としたシステムの分析技法である構造化技法が存在した。
また、プログラミングのレベルでは、プログラムの実行の流れを決められた制御構造の組み合わせとして書き下す構造化プログラミングや、カプセル化を促すモジュールプログラミング、多態
に対応するデータ指向プログラミングという技法が存在していた。
これらに対し、オブジェクト指向手法はそれらを一般化しさらに推し進めたものであるという考え方がある。
オブジェクト指向分析や設計に基づいてシステムを実際に開発する際には、オブジェクト指向言語を用いる必要は必ずしもない。ただし、オブジェクト指向によるシステム分析結果を実装するには、プログラム構造とのセマンティクスギャップが少ないオブジェクト指向言語を用いるのが普通である。
オブジェクト指向開発の方法論として、Booch法、OMTなどが提唱されていた。
近年、これらの各種の方法論で使用するダイアグラムの表記法は、OMGによってUML(Unified Modeling Language)として標準化されている。
開発方法論としては、IBM社のRationalブランドのUP(RUP, Ratinal Unified Process)が台頭してきていた。
オブジェクト指向プログラミングを構成する概念には、次のようなものが挙げられる。
オブジェクト指向プログラミング言語と呼ばれるものには、
これらの言語では、クラスの定義、インスタンスの生成、オブジェクト間の通信を構文または専用の関数などでサポートしている。
なお、オブジェクト指向言語では、オブジェクトのメモリへの割り当てのため自動ガベージコレクション機能を備えているものがあるが、すべてがではない。
オブジェクト指向言語の多くは、オブジェクトの雛形であるクラスを記述する機構を持っており、このような言語ではオブジェクトはクラスのインスタンスとして生成される。このような言語をクラスベース(class-based)のオブジェクト指向言語と呼ぶ。
一方で、オブジェクトの生成や、属性や手続きの継承に際してクラスに依存せずに、もしくはクラス自体を持たずに別の手段でこれらを実現している言語も存在する。つまり、クラスはオブジェクト指向言語の必須要件ではない。このような言語はインスタンスベース(instance-based)、オブジェクトベース(object-based)あるいはプロトタイプベース(prototype-based)のオブジェクト指向言語と呼ぶ。
パラダイムとしてのオブジェクト指向
オブジェクト指向開発方法論・プロセス
オブジェクト指向プログラミングの構成要件
この構成要件には異論・例外がある。オブジェクト指向言語
などがある。これらは、非オブジェクト指向言語にオブジェクト指向機能を拡張したもの(ハイブリッド型オブジェクト指向言語)と、
当初からオブジェクト指向言語として設計されたもの(純粋なオブジェクト指向言語)に分類できる。
Simula, C++およびObjective C,CLOS,Object Pascalなどは前者であり、
Smalltalk, Self(インスタンスベース), Java, Eiffelは後者である。クラスベースとインスタンスベース
などがインスタンスベースまたはそれに類するのオブジェクト指向言語である。なお、クラスベースとインスタンスベースには明確な境界線はない。たとえば、インスタンスベースの代表格ともいえる Self には、traits と呼ばれるクラスのような枠組みがあり、JavaScript、NewtonScript に至っては traits 様のものをそのまま「クラス」と呼称している。誕生の順は逆だが、クラスベースはインスタンスベースの特殊な形態と考えることもできる。関連項目