スマートフォン用の表示で見る

オブジェクト指向

コンピュータ

オブジェクト指向

おぶじぇくとしこう

object-oriented

ソフトウェア開発の考え方のひとつ。オブジェクト同士の相互作用としてシステムの振る舞いをとらえる考え方。

クラス、インスタンスメソッド継承、 集約などの概念をソフトウェア開発に持ち込み、これによって生産性が大きく向上した*1


プログラミング言語としてのオブジェクト指向

発祥は Simula であり*2、その後 Simula の影響を受けて設計された Smalltalk によって概念が普及した。また同じく Simula の影響を受けた C++ の爆発的普及によって概念が広まり、ソフトウェア開発の主流となっていく。

ただし、プログラミング言語によってオブジェクト指向の捕らえ方に微妙な差異が存在し、それがプログラマの理解を困難にしている一面が存在する。その差異は大きく分けると次の3種類の流派として整理することができる。

C++Javaなどは、ストラウストラップのオブジェクト指向をベースに設計された。Smalltalkではケイのオブジェクト指向を基にしている。JavaScriptやSelf、Ioなどは、プロトタイプベースのオブジェクト指向が基になっている。

概念

  1. クラス
  2. インスタンス
  3. メソッド
  4. 継承(inheritance インヘリタンス)

*1:一方、間違ったオブジェクト指向を独習したプログラマによって、生産性が大きく下降したと愚痴をこぼしている人々も存在する

*2:ただし Simula では“オブジェクト指向”という単語が登場しないため、Simula はオブジェクト指向言語と見なされない場合が多い