オブジェクト指向用語集

2項関連 関連が2つのクラスに作用するもの。国クラスが1つの都市を首都として持つ場合、国クラスと都市クラスは首都と言う関連において2項関連である。cf.多項関連
HASA関係(aggregation) クラス間における関連の一種。クラスはそれ自身が最小要素である場合もあれば、別の要素から構成されている場合もある。自動車クラスは、エンジン・タイヤ・シート・ボディなどのクラスから構成されている。自動車 has a エンジン .がなりたち、自動車とエンジンはHASA関係にあると言う。partof関係とも言われる。 cf.ISA関係
ISA関係 クラス間における関連の一種。継承関係、汎化特化によって導出される関係。バス is a 自動車.バスは自動車の一種(または特殊形)であり、バスを汎化したものが自動車である。この様な関係を、ISA関係と言い、kindof関係とも言われる。cf.HASA関係
OOA(ObjectOriented Analysis) オブジェクト指向分析。ソフトウエア開発における分析工程にオブジェクト指向技術を適用した分析方法論。システム化対象となる周辺領域を、クラスおよびクラス間の関連を明確にすることによって整理することが目的。連接する下流にOOPがあることを前提とする訳ではない。
OOD(ObjectOriented Design) オブジェクト指向設計。通常は上流工程であるOOAでの成果物を入力として、導出されたクラスをもとに下流の言語で表現可能なクラスの詳細な定義を行なう工程。オブジェクト設計とも言われる。
OODB データだけを保存するDBではなく、クラス情報やインスタンスそのものを保存するデータベースシステム。インスタンスはその属性と操作手続きを合わせ持っているため、インスタンスの構造を知らないアプリケーションからも操作手続きを介して利用することが可能となる。取り扱えるデータ型が整数・実数・文字列にとらわれることなく利用者定義のデータ型を格納できるため、マルチメディアやリポジトリの保存手段として注目されている。
OOP/OOPL(ObjectOriented Programming/Language) オブジェクト指向言語。ソフトウエア開発工程上では、下流の実装(プログラミング)工程を意味している。文脈によっては、オブジェクト指向言語を指す。
アクター理論 あたかも役者のように、データ構造と操作手続きに制御構造をさらに加えて一体化したアクターが自立的・並列的に動作するという理論。
アーキテクチャ(architecture) (1)情報技術において、コンピューターハードウエアとソフトウエアの相互作用を記述する規則の構成方法と体系。(2)ビジネス目標を達成しビジネスビジョンを成し遂げるために要求される情報技術基盤の一貫性のある定義。
インスタンス クラスの定義に基づいて実行時に生成される、個々の値を保持するオブジェクト。例えば、Integer ijk;で定義された変数ijk がインスタンスに相当。
インスタンスオブジェクト インスタンスと同義。cf.クラスオブジェクト
インスタンスメソッド Smalltalkなどではメソッドには2種類ある。インスタンスに送られるメッセージに対応するメソッド。通常はインスタンス変数が操作対象となる。
インスタンス変数 インスタンスの内部属性。
ウォーターフォール ダムの水が高いところから低いところへと段々と流れるように開発工程の進行において、分析・設計・実装工程と順次進んで後戻りすることのない進め方。この進め方では当初確定した工程に対して機能追加などの修正要求が発生するといろいろな問題が発生する。
オブジェクト 上流工程では、実世界を構成している実体(モノ)の事をオブジェクトと呼んでいる。物理的に実在しているモノだけではなく概念的なモノも対象となる。下流工程では、部品の意味に使用され、データ構造と振舞い(=手続き)とが一体化したもののことをオブジェクトと呼んでいる。

オブジェクトと言う言葉は文脈によって、狭義には個々の実体を指すインスタンスと言う意味合いを表わす場合と、広義にはインスタンスを汎化したクラスと言う概念までを含んだ曖昧な意味合いを表わす場合がある。

オブジェクトモデル オブジェクト指向技術に基づくモデル、またはモデル成果物。システム化対象範囲を主要なクラスとクラス間の関連によって表現したもの。
オブジェクトモデル図 オブジェクトモデルを図示したもの。クラス(クラス名称、説明、主な属性、手続き)と関連(ISA関係、HASA関係、関連名。関連の多重度)などを明らかにしたもの。
オブジェクト型 クラスと同義。Integer i :整数型変数として i を宣言している例だが、Integerは整数を表わすオブジェクト型(=クラス)であり、i はオブジェクト(=インスタンス)となる。
オブジェクト指向 実世界をモデル化する手法として、機能に視点をあてたプロセス指向とデータ構造に視点をあてたデータ指向とがあるが、プロセスとデータ構造が本来一体化され不可分なものであるという視点にたつ考え方である。ここで一体化されたものをオブジェクトと呼んでいる。
オブジェクト指向言語(Objectoriented Programming Language) オブジェクト指向モデルで表現された特徴を支援するプログラミング言語。データ抽象・カプセル化・継承・多態性などの主要なオブジェクト指向概念を表現できる言語。既存の言語を拡張したものとして、C++、ObjectiveC、ObjectPASCAL、CLOSなどがある。オブジェクト指向言語として新たに開発されたものとしてSmalltalk、Eiffel、Oberonなどが有名。
オブジェクト多態 多態性のうち、継承関係にある上位クラスに対する操作が、下位クラスのオブジェクト各々操作に対応する効果をオブジェクト側から捉えた見方。仮引数に上位クラスが定義されている場合、そのモジュール内では実引数として具体的な下位クラスのオブジェクトが渡されることによってオブジェクト多態が機能する。
ガーベージコレクション 動的記憶領域割り当てを行なうオブジェクト指向実行環境において散在した使用済みの記憶領域を解放し再利用するための自動メモリ管理機構。ある言語処理系ではメモリ管理をプログラマが意識しなければならない為、プログラミング負荷が大きくなってしまう。このためオブジェクト指向言語機能として採用する場合が多い。
カプセル化 データ構造と振舞いをクラスと言う概念でひとまとめにすること。カプセル化によって、外部からクラス内部属性へのアクセスを制限・禁止する事を情報隠蔽と言う。
クラス 振舞いがよく似たオブジェクトを類型化して定義したもの。インスタンスは個々の情報を保持する箱と考えられるが、クラスはインスタンスに関する共通情報を保持しているものと考えられる。抽象データ型をオブジェクト指向に適用したもの。オブジェクト型と同義。
クラスオブジェクト クラスと同義。この表現からはクラスも1つのオブジェクトであるという意味合いがある。
クラスメソッド Smalltalkなどではメソッドには2種類ある。クラスに送られるメッセージに対応するメソッド。クラス変数が操作対象となる。インスタンスを生成する処理などはクラスメソッドの典型。
クラスライブラリ 再利用を目的として、クラスを集めたもの
クラス変数 クラスが保持している属性。インスタンス変数がオブジェクト固有の属性領域を指し示しているのに対して、クラス変数は当該クラスから生成された全インスタンスに対してグローバル変数となる。
サブクラス クラスが継承関係にあるとき、特化によって現れるクラスのことをサブクラスと言う。下位クラスとも言う。
シームレス 婦人のつなぎ目のない靴下の意から転じて、オブジェクト指向によるソフトウエア開発では全工程間でオブジェクトモデルと言う同一のモデルが利用でき、モデル変換作業がほとんど不用になることを意味する。
スーパークラス クラスが継承関係にあるとき、汎化によって現れるクラスのことをスーパークラスと言う。上位クラス、親クラスとも言う。
スパイラル 開発工程の進行において、分析・設計・実装工程を行ったり戻ったりしながら徐々に完成させて行く進め方。プロトタイピング開発。cf.ウォーターフォール
データ構造 ソフトウエアの構造を分析するとプロセス、データ、コントロールに分解して考えることができる。オブジェクト指向におけるオブジェクトは、これら3つのものが一体化されていると考えられる。オブジェクトは固有の属性と振舞いからなりたち、乱暴に言えばデータ構造とは属性のことである。属性はクラスで定義され、属性に具体的な値(=属性値)が格納されているものをインスタンスと言う。属性と振舞い(=機能)が一体化しているという意味は、属性は機能によって規定され、逆に機能は属性の制約を受けている。
データ抽象 抽象データ型 と同義。
パラダイム Tomas Kuhnの言葉で、理論や標準、知識をまとめるための方法の集まり、ものの考え方、世界観。オブジェクト指向がよくパラダイムシフトとかパラダイム変換と言われているのは、従来のものの見方を支配しているのがプロセス指向に基づく機能アプローチであり、オブジェクト指向では見方の基準が本質的に変わると言うことを強調している。
フレームワーク 特定用途向けに構成されるクラスライブラリ。ひな型とか枠組みとも言われ、提供されたフレームワークを土台にカスタマイズ等を加えることによって容易にソフトウエアを構築することができる。特にアプリケーション作成を支援する場合のアプリケーションフレームワークが有名。
フレーム理論 人口知能分野において知識表現を手続きとしてではなく空間的な階層関係として配置できるフレームという枠組みによって記述する理論。ミンスキーのフレーム理論として有名。
メインプログラムの消滅 プロセス指向では、あらかじめ機能を洗い出しシナリオ化することによって実装するため処理を振り分ける存在としてメインプログラムが重要な役割を演じていた。オブジェクト指向では機能を抽象化するのではなくオブジェクトと言う部品を組み立てて、メッセージ交換によって処理を依頼することによってソフトウエアを構築するため、オブジェクトの外側にメインプログラムが存在している必要がない、という意味。
メソッド オブジェクトが持つ振舞いや手続き。cf.クラスメソッド、インスタンスメソッド
メソッド多態 異なるオブジェクトに対して同一名称のメソッドを送ることができる。通常は、オブジェクト多態と同じ状況においてメソッドに視点をおいたもの。cf.多重定義
メタクラス クラスをインスタンスとして持つ上位クラスのことを言う(Smalltalkなど)。メタクラスからはすべてのクラスを参照することが可能である。
メッセージ オブジェクトがオブジェクトに対して処理依頼するための媒体。メッセージは引数情報と合わさってクラスで定義されたメソッドに対応する。
メッセージパッシング オブジェクトがオブジェクトに対して処理依頼する唯一の手段。
モデル 複雑な実世界から重要ではない部分を取り去ることによって簡素化し対象領域を理解しやすくする。モデルと言う言葉は文脈によって異なる。例えばUAのアプリケーション・プログラミング・インタフェースモデルはマルチメディア、システム、データ交換および情報交換などから構成されている。
ラウンドトリップ スパイラルと同義。
委譲(delegation) クラスを構成する属性にオブジェクトを指定すること。例えば日付クラスが利用可能なとき、従業員クラスの属性として誕生日項目に日付インスタンスを再利用する場合など。実装時に無理やり継承関係で定義するのではなく委譲によってサービス機能委託する関連の実装方法。
下位クラス サブクラスと同義。
関連(association) ISAHASA関係とは別の関係表現で、オブジェクトが別のオブジェクトを部品として利用したり参照したりする関連。
関連オブジェクト オブジェクトとオブジェクトの間には関連が存在する。関連そのものもオブジェクトとして実体化できる場合があり、導出されるオブジェクトのことを言う。関連クラスという意味合いでも使用される。例えば、教授クラスと学生クラスの間には、講座を開設し受講するという関連がなりたつ。この場合、講座そのものもクラスとすることができ、関連オブジェクトという。
機能モデル 複数のクラスに関わる(業務)処理の流れを規定する。DFDなどで表現する。
具象クラス インスタンスを生成する事のできるクラスのこと。cf.抽象クラス
継承(inheritance) 既存のクラスの性質をそのまま引き継ぎ、属性や振舞いを付け加えることによって新たにクラスをつくりだす仕掛け。継承されたクラスと元のクラスにはISA関係(=汎化関係)がなりたつ。既存のクラスのことを親クラス/上位クラス/スーパークラスといい、親クラスから見た新たに作られたクラスを下位クラス/サブクラスという。
差分プログラミング 新たなサブクラスを定義する場合、継承を利用することによって上位クラスの属性や手続きは言語処理系(=コンパイラ)によって自動的に取り込まれ、追加すべき属性と手続きだけをプログラミングする仕掛けによる効果。
再利用 オブジェクト指向ではあらかじめ提供されているクラスライブラリあるクラスや新たに作成したクラスを再利用してアプリケーションを構築したり、継承機能を利用して新たなサブクラスを容易に作ることができる。再利用を進めることによって部品としてのクラスは品質精度が向上する。
遮蔽定義 上位クラスで定義されているメソッドを継承して使用するのではなく、下位クラスで再定義すること。
手続き抽象 手続き名称を総称的にすることによってプログラミング上で処理を使い分ける労力を減らす技術。抽象アルゴリズム記述とも言われる。オブジェクト指向言語においては継承と多態性を利用することによって、上位クラスを対象とした処理の記述を可能にする。
集約(aggregation) クラスはそれ自身が最小要素である場合もあれば、別の要素から構成されている場合もある。別の要素から構成されるクラスのことを集約クラスと言う。集約はクラス関連の一種である。 cf.HASA関係
上位クラス スーパークラスと同義。
情報隠蔽 カプセル化することによってクラス内部の属性に対する外部からのアクセスを制限・禁止すること。外部からの不当な更新を防止することによってインスタンス自身の整合性を保証する効果がある。
振舞い オブジェクトが持っているデータ構造(=属性)に対する操作手続き。メソッドと同義。C++ではメンバ関数と呼ばれている。
親クラス スーパークラスと同義。
静的モデル システム化する周辺領域を主要クラスとクラス間における関連を時系列変化を考慮せずに表現したもの。オブジェクトモデル図。
静的結合 メッセージパッシングによるメソッドの特定をコンパイル時に決定する手続きの呼出方
属性 オブジェクトが持っているデータ構造。例えば従業員クラスには、住所・氏名・年齢・従業員コードという属性を持っている。
属性値 属性に具体的な値が入っているもの。主に属性はクラスで定義し、属性値はインスタンスの領域に格納される。
多項関連 関連が複数のクラスに作用するもの。従業員とプロジェクトと会社というクラスが開発管理と言う関連において3項関連となる。関連するクラスが複数になる場合を多項関連と言う。cf.2項関連
多重継承 2対上の親クラスから属性と振舞いを受け継いで新たなクラスをつくりだす継承の形態。
多重定義 同一オブジェクトに対して、引数の個数や型の違いに応じて同一名称のメソッド名を定義できること。
多態性(polymorphism) 複数のクラスに対して同一名称のメソッドを定義して操作名称を総称的に取り扱える特徴。オブジェクトの型に応じてそれぞれのメソッドを呼び出すことができる。多態性にはメソッド多態とオブジェクト多態があり、手続き抽象(=抽象アルゴリズム)を実現する事ができる。cf.手続き抽象、動的結合
単一継承 1つの親クラスからのみ、属性と振舞いを受け継いで新たなクラスをつくりだす継承の形態。
抽象クラス インスタンスを持たないクラスのこと。cf.具象クラス
抽象データ型(abstract data type) データの集合と操作手続きの集合を型として一体化させたものを言う。IntegerやStringなど言語処理系が提供する型に加えて利用者定義のデータ型が利用可能となる。オブジェクト指向とは、抽象データ型の集合によってソフトウエアを構築するとも言える。
動的モデル 1つのクラスに着目して、インスタンスの生成から消滅までの間、メッセージパッシングによる状態変化を表わしたもの。状態遷移図で表現。
動的結合(dynamic binding) メッセージパッシングによるメソッドの特定を実行時に決定する手続きの呼出方
特化(specialization) あるクラスの属性と振舞いに加えて特殊化させることで新たなクラスを下位に導出すること。導出されたクラスはサブクラスと言う。
汎化(generalization) よく似たクラスなどから類似性に着目し、個体固有の情報を捨てて新たなクラスを導出する事。例えば、バス・トラック・乗用車などのクラスをひとくくりのものとして捉えると上位に、自動車というクラスを導出することができる。このとき、バスを汎化すると自動車になる。導出されたクラスはスーパークラスと言う。
表明(assertion) 刻々変化するクラスやインスタンスの状態が実世界に即して正しい状態にあることを論理命題として宣言できる機構、考え方。オブジェクト指向言語Eiffelで採用されている。
部品化 オブジェクト指向では、抽象データ型を支援しておりクラスを部品として組み合わせることによってさらに大きな部品をつくりあげるなどして、ソフトウエアを部品によってのみ構築する。
噴水モデル オブジェクト指向ライフサイクルでは各工程間で融合や戻り・繰り返しが発生する。この状態を噴水に例えたモデルの事。反対語として落水モデルがある。
並列オブジェクト指向 オブジェクト同士の駆動機構をメッセージによる通信に限定した計算モデルで、オブジェクト各々が互いに並列動作してメッセージ交換以外の相互作用を持たない考え方。
類型化(classification) よく似た振舞いをするオブジェクトの共通性に着目しグループ化することによってクラスを導出すること。