ピクシブ百科事典は2024年5月28日付でプライバシーポリシーを改定しました。改訂履歴

概要

オブジェクト指向(object-oriented)とは、ソフトウェア設計の考え方である。元々はプログラミングの手法のひとづだが、のちに拡張されデータベース、モデリング、ユーザーインターフェースなど各方面に適用されるパラダイムとなった。

「カプセル化」、「継承」、「多態性」(ポリモーフィズム)がオブジェクト指向三大要素と言われるが、それらに共通しているのは、データと処理手順を別々に扱っていた従来の標準的な手法に対し、双方をひとまとめにして物事の解析と組み立てを行う点である。

1970年代に開発されたSmalltalkがオブジェクト指向プログラミングのはしりだが、当時この考え方は十分に理解されず、流行し定着したのは1990年代になってからである。

この考え方が広まったきっかけは、1980年代にビャーネ・ストロヴストルップが開発した言語、C++と、NeXT社が開発したOS、NEXTSTEPにある。

C++は大規模なソフトウェアの開発に役立つよう、オブジェクト指向に加え手続き型プログラミングの考え方を取り入れた。

NEXTSTEPはC言語とSmalltalk流のオブジェクト指向を融合させたObjective-Cによる開発環境を揃えていたのみならず、ユーザーインターフェース、データ管理など全てにおいてオブジェクト指向の考え方を取り入れた。同OSは最初のWWWの設計に利用されたほか、世界初のWebアプリケーションサーバWebObjectsを生み出し、現在のインターネットの在り方を決定づけた。

オブジェクト指向プログラミング

オブジェクト指向三大要素を兼ね備えた言語。

上述のSmalltalk、C++、objcective-Cのほか、JavaC#SwiftPythonJavaScriptRubyKotlin...など、現在広く使われる多くの言語がオブジェクト指向の考え方を取り入れている。

また、C言語のようにオブジェクト指向言語でなくても、オブジェクト指向に基づいた設計に利用されることがある。

手続き型との比較

  • 簡潔に書けることが多い。
  • 数値がカプセル化されているため外部からの変更を制限できる。
  • JavaC#Python等で大型のプログラムを書くことができる。

関数型との比較

  • 動的な数値、型、配列が使えるため、動的な処理ができ易い。
  • 多重継承でスパゲッティプログラムになる可能性がある。

関連記事