オブジェクト(おぶじぇくと)情報システム用語事典

object

» 2009年09月29日 00時00分 公開
[@IT情報マネジメント編集部,@IT]

 オブジェクト指向における基本要素で、分析や考察する世界・領域・システムを構成する存在のこと。認識・思考・参照・記述・経験の対象として識別できるすべてをいう。人間が世界把握する際の基本単位である概念をコンピュータでも利用できるように形式化したものともいえる。その意味では知識表現の1つである。

 オブジェクト指向分析では、分析対象(世界)をモデル化する際の概念的要素を指し、オブジェクト指向設計ではシステム化対象を機能や性質から整理・分類したもので、最も基本的なシステム構成単位をいう。オブジェクト指向プログラミングでは、オブジェクト指向プログラムを構成するソフトウェア・モジュールであり、メソッドとデータの構造体と定義される。

 オブジェクトには属性と状態がある。属性はオブジェクトが持つ一般的な性質や機能のことで、ソフトウェア・プログラムにおいては手続き、メソッド、関数である。状態はオブジェクトを個体識別したり、変化の結果を表するデータや数値で、プログラムにおいてはデータ型/データ、変数/値をいう。

 ソフトウェア・モジュールとしてのオブジェクトは、メソッドとデータが1つにまとめられ、データへのアクセスはそのオブジェクトが持つメソッドを介して行うように作られる。これは「カプセル化」といい、オブジェクト指向プログラミングの大きな特徴である。

 オブジェクト同士は独立した存在で、ほかのオブジェクトにメッセージ(オペレーション、コール)を送って参照、依頼、問い合わせなどを相互に行って協調動作する。オブジェクト間には主従関係はなく、手続き型プログラムのような制御主体はない。これもオブジェクト指向プログラムの特徴とされる。

 オブジェクト指向でプログラミングするとは、オブジェクトのメソッドとデータ型を定義することだが、このとき「クラス」という単位を置いてそこに定義を記述することが多い。クラスとは同一の機能や性質を持つオブジェクトの定義をまとめて記述したもので、プログラム実行時にはクラスのデータ型に実データ(値)を与えて、オブジェクトを生成する。オブジェクトの生成は「インスタンス化」ともいい、こうして作られたオブジェクトのことを「クラスのインスタンス」という。

 ソフトウェアのインスタンスはメモリ(ハードウェア)やプログラムの仕様上の制限がなければ、1つのクラスからいくつでも生成できる。例えば、1つの画面にプログラムを同時に2つ起動したとき、それぞれの機能が同じなのはクラスで定義されたメソッドが共通だからであり、ウィンドウの表示位置やウィンドウサイズが違うのはインスタンスがウィンドウの位置やサイズを表すパラメータに異なる値を保持しているからと考えればよい(※)。

※ 実在のウインドウシステムの仕組みを説明する文章ではありません

 プログラミング/実装のレベルでは、プログラム実行時の実体であるインスタンスがオブジェクトだが、言語によってはクラスをオブジェクトと呼ぶ。例えば、Smalltalk-80では内部で取り扱うものをすべてオブジェクトと考えるので、クラスも独自のメソッドを持つオブジェクトとして扱われる。なお、オブジェクト指向言語の中には、クラスの考え方を使わず、既存のオブジェクトをコピーして新たにオブジェクトを生成するプロトタイプベース・オブジェクト指向言語(インスタンスベース、あるいはオブジェクトベースとも)もある。

 一方、オブジェクト指向分析/モデリングにおけるオブジェクトは、概念的な存在である。分析/モデリング作業は抽象化の作業なので、個別具体的な存在を目的に合った切り口でまとめ、抽象概念であるクラスを作っていくことになる。例えば、会社で働いている「山田さん」「田中さん」……から“従業員クラス”を作るのであれば、「出社する」「報告する」「働く」などの属性と、「名前」「役職」「所在」などの状態(の型)を定義する作業を行うことになる。

 このクラスの“状態”として定義されたパラメータに実データを与えると「出社している田中部長」「出張中の山田課長」というようにインスタンス化すると考えることは可能だが、業務分析では「(任意の)ある部長」「ある課長」レベルで考察すれば十分であるためか、個別存在については「インスタンス」ではなく「オブジェクト」という言葉を用いることが多い。

 オブジェクトは必ずしも「社員」「商品」「顧客」のように物理的実体を持つものばかりでなく、「会社」「営業部」「注文」「会議」などの概念的存在を用いてもよい。なお、業務分析で定義されたオブジェクトをビジネスオブジェクトと呼ぶことがある。

 オブジェクト指向分析/モデリングは「実世界をそのまま表現する方法」と解説されることがあるが、モデルとは現実を捨象したものであって、世界を記述しつくすことではない。同じ「商品オブジェクト」でも販売システムが目的ならば「価格」属性が重要だが、出荷管理システムならば「重量」や「形状」が必要になろう。必要・目的に応じて何をオブジェクトとして抽出するか、システム化に必要な属性は何かをよく考えることが大切となる。

参考文献

▼『オブジェクト指向への招待――思考表現のための新しい技法』 春木良且=著/啓学出版/1995年3月

▼『オブジェクト指向でなぜ作るのか――知っておきたいプログラミング、UML、設計の基礎知識』 平澤章=著/日経BP社/2004年6月

▼『いちばんやさしいオブジェクト指向の本』 井上樹=著/技術評論社/2007年2月

▼『はやわかりオブジェクト指向』 ピーター・ウェグナー=著/尾内理紀夫=訳/共立出版/1992年12月(『Concepts and paradigms of object-oriented programming』の邦訳)

▼『オブジェクト指向方法序説〈基盤編〉』 ジェームズ・マーチン、ジェームズ・J・オデル=著/三菱CC研究会 OOタスクフォース=訳/トッパン/1995年9月(『Object-Oriented Methods: A Foundation』の邦訳)

▼『オブジェクト指向概論〈第2版〉』 イアン・グラハム=著/MISCOオブジェクト指向研究会=訳/トッパン/1996年2月(『Object-Oriented Methods, second editon』の邦訳)


Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ