Hatena Blog Tags

オブジェクト指向

(コンピュータ)
おぶじぇくとしこう

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 はオブジェクト指向言語と見なされない場合が多い

このタグの解説についてこの解説文は、すでに終了したサービス「はてなキーワード」内で有志のユーザーが作成・編集した内容に基づいています。その正確性や網羅性をはてなが保証するものではありません。問題のある記述を発見した場合には、お問い合わせフォームよりご連絡ください。

ネットで話題

もっと見る

関連ブログ