オブジェクト指向プログラミング
オブジェクト指向プログラミングは、ソフトウェアの大規模化に伴い、より効率的な開発手法が模索される中で1960年代に考案された。OOP言語は歴史的にクラス構造を中心とする"Simula"系統と、メッセージ機能を主体とする"Smalltalk"系統に分けられるが、後に"C++"や"Java"などの言語が派生した前者が主流となった。この前者のオブジェクト指向が示す「内部隠蔽」「継承」「多態性」の三仕様を備えていれば、OOP言語であると見なされる。
オブジェクト指向プログラミング
従来のプログラミング環境では、「動作」を定義するコードが、「状態」を表現するデータを扱う形でプログラムを記述するのが一般的だったが、開発規模の拡大に伴い、解決の難しいソフトウェア・バグ原因の大半は「データの予期せぬ変動」と「各データ間の予期せぬ不整合」である事が経験則で知られるようになって来た。そこでデータを中心にしてプログラムを組み立てようとする考え方が生まれ、データ群とそれに付随するコード群をまとめたオブジェクトというプログラミング概念が編み出された。従来の「コードの為のデータ」とは逆に「データの為のコード」としたのは、データを変動させたコード位置を容易に特定出来るようにしてバグ発見に繋げる為であった。この目的に沿って特定のデータを扱えるコード範囲を厳密に定めた内部隠蔽の仕様は、アクセス許可外のコード記述をエラー警告して、想定外のデータ変動をもたらす人的ミスを減らした。