オブジェクトデータモデル、オブジェクト指向とは、オブジェクト同士の相互作用としてシステムの振る舞いをとらえる考え方のこと。オブジェクト指向は、当初プログラムの構造をオブジェクト群の相互作用の関係として捉えてプログラムコードを書き表すオブジェクト指向プログラミングから始まっていますが、その後、システム開発における要求分析フェイズにおいて、開発しようとする対象領域の構成要素をオブジェクトとして抽出・定義していくオブジェクト指向分析、システムの動作や構造をオブジェクトとクラスとして記述するオブジェクト指向設計のための、技術としても広く発展・普及することとなりました。オブジェクト指向の枠組みが持つ道具立ては、一般的で強力な記述能力を持ちます。特に複雑なシステム記述、巨大なライブラリの記述においては、現実問題としてオブジェクト指向の考え方は必須であるといえるでしょう。
オブジェクト指向分析が提唱される以前には、システム分析のレベルにおいては、データ構造を中心としたシステムの分析技法である構造化技法が存在していました。また、プログラミングのレベルでは、プロラムの実行の流れを決められた制御構造の組み合わせとして書き下す構造化プログラミングや、カプセル化を促すモジュールプログラミング、多態に対応するデータ指向プログラミングという技法が存在していました。これらに対し、オブジェクト指向手法はそれらを一般化しさらに推し進めたものであるという考え方があります。オブジェクト指向分析やオブジェクト指向設計に基づいてシステムを実際に開発する際には、オブジェクト指向プログラミング言語 を用いる必要は必ずしもありません。しかし、オブジェクト指向によるシステム分析結果を実装するには、プログラム構造とのセマンティクスギャップが少ないオブジェクト指向プログラミング言語を用いるのが普通であるとされています。オブジェクトという用語は時に「もの」という直訳語で認識される場合があるが、英語のobjectには「目的語」、または「目的となる対象物」という意味があります。従ってオブジェクト指向は本来「述語(機能)よりもその対象を中心に据える」というニュアンスをもつ用語です。
オブジェクト指向開発の方法論として、Booch法、オブジェクトモデル化技法 (OMT) 、オブジェクト指向ソフトウェア工学などが提唱されていました。近年、これらの各種の方法論で使用するダイアグラムの表記法は、OMGによってUMLとして1997年に標準化されており、以降はほとんどのオブジェクト指向開発方法論においてUMLが採用されています。
SEARCH
CALENDER
2012年5月 月 火 水 木 金 土 日 « 11月 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 MENU
カプセル化とは、オブジェクト指向を構成する概念の一つで、オブジェクト内部のデータを隠蔽したり、オブジェクトの振る舞いを隠蔽したり、オブジェクトの実際の型を隠蔽したりすることをいいます。データ隠蔽と勘違いされやすいですが、データ隠蔽はカプセル化の具体例の1つにすぎず、同一のものではありません。例えば、カプセル化の第一の利点は変更に対する耐久性です。いま色の内部表現がRGB (光の三原色) で保持されているとして、これが何らかの都合でCMYK (色の三原色) に変更されたとします。外部のプログラムがデータ内部に直接アクセスを行っていた場合、このデータにアクセスしていたすべての箇所を同時に変更しなければなりません。ですが公開メソッドを用いていれば、変更は内部表現から外部表現への公開メソッド内のみで済み、変更の影響を局所にとどめる事ができるのです。第二の利点は概念の抽象化です。そもそも「色」という概念にとって、その内部表現がRGBであるかCMYKであるかは主要な問題ではなく、必要なら望みの形式がとりだせる抽象的な「色」であることが望ましいのです。その他の表現形式が追加されたとしても「色」の意味は変化するべきではありません。このように、できるだけ形式と意味を分離する手段としてカプセル化は有効となります。
ナビゲーショナルデータベースとは、ネットワーク型データモデルと階層型データモデルを包含したデータベースインターフェイスです。ナビゲーショナル技術は「ポインタ(pointer)」と「パス(path)」を使ってデータレコード間で誘導(navigate)を行います。対照的にリレーショナルデータモデルでは「宣言型(declarative)」または論理プログラミング技法を使います。一般にリレーショナルデータベースへの問い合わせは『what』 であるのに対して、ナビゲーショナルデータベースへの問い合わせは『how』となります。階層型データモデルもナビゲーショナルの一種と考えられます。階層型データモデルを扱うとき、上位に登ったり、下位に下ったりする「パス」があり、これは階層型ファイルシステムのパスに類似しています。一般にナビゲーショナルシステムはパスと前置詞の組み合わせを用います。
ナビゲーショナル技術に批判的な人々は、これを「構造化されていないスパゲッティのめちゃくちゃ状態」と見なし、構造化プログラミング以前のGoto文のようなものと言います。つまり、制御構造にとってのGoto文とデータ構造にとってのナビゲーショナル技術を似たような関係と見るのです。この観点では、リレーショナルモデルに基づくリレーショナル技術 (リレーショナルデータベース) は集合論と述語論理に基づいてデータ構造とその使用法に洗練された規則と一貫性をもたらします。ですが実際には、リレーショナルモデルではデータセットを可能な限り小さくする必要があります。これがリレーショナルモデル固有の問題なのか、将来の実装技術の改善によって解決される問題なのかは現時点では不明です。一部の人々はリレーショナル理論全体ではなくSQL言語に批判的です。また、現状のリレーショナルデータベース製品が固定カラム幅と事前定義された型に依存しすぎているとの指摘もあるようです。このため、リレーショナルデータベースをちょっとした仕事に素早く利用するのは難しいとされています。一部の人々は、リレーショナルデータベースに比較してナビゲーショナルデータベースエンジンの方が構築が簡単でメモリ消費も少ないと指摘します。ですが、SQLをサポートしていなかった1980年代終盤のリレーショナルデータベースのエンジンは非常に小さく、この指摘が当てはまらないことを意味していまうs。理由はどうあれ、小さな構造を扱う場合、ナビゲーショナル技術はよく使われています。興味深いことに、データ構造図の形式として一般に使われているものは全てネットワーク型データモデルに基づくグラフィカル表現です。これは、ナビゲーショナルな構造の方が視覚的に自然であることを示唆しています。相対的な多次元データを視覚化することは難しいのですが、リレーショナルモデルを擁護する人々は、相対主義はリレーショナルデータモデルの一部に過ぎないと主張するのです。