ITパスポート試験 用語辞典
カプセル化、継承、多態性など、オブジェクト指向の考え方を取り入れたプログラム言語をオブジェクト指向言語といい、近年使用されているモダンなプログラム言語にはほぼ実装されている。
(Wikipedia オブジェクト指向より)
オブジェクト指向(オブジェクトしこう)とは、オブジェクト同士の相互作用として、システムの振る舞いをとらえる考え方である。英語の object-oriented (直訳は、「対象物志向の」・「目的重視の」という意味の形容詞) の日本語訳である。
オブジェクト指向の枠組みが持つ道具立ては、一般的で強力な記述能力を持つ。複雑なシステム記述、巨大なライブラリ(特に部品間で緊密で複雑な相互関係を持つもの)の記述においては、オブジェクト指向の考え方は必須である。
パラダイムとしてのオブジェクト指向
オブジェクト指向分析が提唱される以前には、システム分析のレベルにおいては、データ構造を中心としたシステムの分析技法である構造化技法が存在した。
また、プログラミングのレベル (プログラミングパラダイム) では、プログラムの実行の流れを決められた制御構造の組み合わせとして書き下す構造化プログラミングや、カプセル化を促すモジュールプログラミング、多態に対応するデータ指向プログラミングという技法が存在していた。オブジェクト指向手法はそれらを一般化しさらに推し進めたものであるという考え方がある。
オブジェクト指向プログラミングの構成要件
オブジェクト指向プログラミング
オブジェクト指向プログラミングを構成する概念は次のようなものである。
- カプセル化 (情報隠蔽)
- オブジェクトの振る舞いを隠蔽したり、オブジェクト内部のデータを隠蔽したり(データ隠蔽)、オブジェクトの実際の型を隠蔽したりすることをいう。これは古典的な可視性の定義である。
また、オブジェクト指向プログラミングの概念拡大に伴い、必須と表現するのが不適切になりつつあるが、旧来の多くのオブジェクト指向言語が備えている性質には以下のものがある。
- リモーフィズム (多態性)
- あるオブジェクトへの操作が呼び出し側ではなく、受け手のオブジェクトによって定まる特性。クラスベースのオブジェクト指向の場合には、派生クラスの複数分岐として多態性を実現する。 プロトタイプベースのオブジェクト指向の場合では関係がない概念とされる。
オブジェクト指向の方式
- クラスベース方式 — クラスを定義し、それを元にインスタンスを生成する方式である。継承ベースともいう。
- プロトタイプベース方式 — 既存のインスタンスを元に、新たなインスタンスを生成する方式である。インスタンスベースともいう。
- Mixin方式 — さまざまなオブジェクトの原型を組み合わせて一つのオブジェクトを構成する方式である。
オブジェクト指向の名称とメッセージング
Eclipseを開発したDave Thomasや、オブジェクト指向という言葉の生みの親であるAlan Kay博士は、オブジェクト指向という言葉は失敗だったと語っている。
これは、本来オブジェクト指向が重視すべきは「オブジェクト」ではなく「メッセージング」であるにもかかわらず「メッセージング」がおろそかにされているためである。特に言語の進歩において「オブジェクト」や「クラス」の側面ばかり強調される傾向にあり、Alan Kay博士は「Smalltalkが最高に好きという訳ではないが、他の言語に比べればマシである。」と述べている。
出題例
- クラス
- 継承
- データの正規化
- ホワイトボックステスト
- a,b
- a,c
- b,c
- c,d
正解
- オブジェクト指向
- データ中心アプローチ
- プロセス中心アプローチ
- UML
- DevOps
- ウォータフォールモデル
- スパイラルモデル
- プロトタイピングモデル
- RAD
- リバースエンジニアリング
- アジャイル
- XP
- テスト駆動開発
- ペアプログラミング
- リファクタリング
- スクラム
- 共通フレーム
- CMMI
このページのWikipediaよりの記事は、ウィキペディアの「オブジェクト指向」(改訂履歴)の記事を複製、再配布したものにあたり、このページ内の該当部分はクリエイティブ・コモンズ 表示 - 継承 3.0 非移植 ライセンスの下 に提供されています。