概要
オブジェクト指向(object-oriented)とは、ソフトウェア設計の考え方である。元々はプログラミングの手法のひとづだが、のちに拡張されデータベース、モデリング、ユーザーインターフェースなど各方面に適用されるパラダイムとなった。
「カプセル化」、「継承」、「多態性」(ポリモーフィズム)がオブジェクト指向三大要素と言われるが、それらに共通しているのは、データと処理手順を別々に扱っていた従来の標準的な手法に対し、双方をひとまとめにして物事の解析と組み立てを行う点である。
1970年代に開発されたSmalltalkがオブジェクト指向プログラミングのはしりだが、当時この考え方は十分に理解されず、流行し定着したのは1990年代になってからである。
この考え方が広まったきっかけは、1980年代にビャーネ・ストロヴストルップが開発した言語、C++と、NeXT社が開発したOS、NEXTSTEPにある。
C++は大規模なソフトウェアの開発に役立つよう、オブジェクト指向に加え手続き型プログラミングの考え方を取り入れた。
NEXTSTEPはC言語とSmalltalk流のオブジェクト指向を融合させたObjective-Cによる開発環境を揃えていたのみならず、ユーザーインターフェース、データ管理など全てにおいてオブジェクト指向の考え方を取り入れた。同OSは最初のWWWの設計に利用されたほか、世界初のWebアプリケーションサーバWebObjectsを生み出し、現在のインターネットの在り方を決定づけた。
オブジェクト指向プログラミング言語
オブジェクト指向三大要素を兼ね備えた言語。
上述のSmalltalk、C++、objcective-Cのほか、Java、C#、Swift、Python、JavaScript、Ruby、Kotlin...など、現在広く使われる多くの言語がオブジェクト指向の考え方を取り入れている。...が、純粋なオブジェクト指向と言えるのはSmalltalkとRubyぐらいであり、多くは手続き型とのハイブリッドである。
また、C言語のようにオブジェクト指向ではない言語も、オブジェクト指向の考え方に基づいた設計に利用されることがある(もちろん、オブジェクト思考言語を使った方がやりやすいが)。
手続き型言語との比較
- 簡潔に書けることが多い。
- 数値がカプセル化されているため外部からの変更を制限できる。
- 大型のプログラムを書きやすく、保守が容易である。
関数型言語との比較
- 動的な数値、型、配列が使えるため、動的な処理ができ易い。
- 多重継承でスパゲッティプログラムになる可能性がある。