オブジェクト指向言語（Object-Oriented Languages）とは、オブジェクト指向プログラミングを支援する仕組みを持ったプログラミング言語のことです。オブジェクト指向プログラミングは、クラスとオブジェクトの概念を利用した設計・プログラミング手法であり、カプセル化、データの隠蔽、継承、ポリモーフィズムなどの特徴があります。
一般的には、クラスやプロトタイプの形式で継承を使用して、コードの再利用性や拡張性を高めることができます。クラスは、与えられたタイプまたはクラスのオブジェクトのデータフォーマットと利用可能なプロシージャの定義を表し、オブジェクトは、そのクラスのインスタンスです。オブジェクトは、実世界に存在するものに対応することもありますが、より抽象的なものである場合もあります。
代表的なオブジェクト指向言語には、C#、OO-COBOLなどのようなハイブリッド言語も存在します。
カプセル化:カプセル化とは、オブジェクト内にデータと操作をカプセル化することで、オブジェクト外部からのアクセスを制限する仕組みです。これにより、データの状態を安全に保ちながら、オブジェクトの外部からの不正な操作を防止することができます。
継承:継承とは、あるクラスから派生したサブクラスを作成することで、サブクラスが親クラスのすべての特性と機能を継承することができる仕組みです。これにより、コードの再利用性を高めることができます。
ポリモーフィズム:ポリモーフィズムとは、同じ名前のメソッドが異なるクラスで異なる動作をすることができる仕組みです。これにより、同じ名前のメソッドを呼び出すことで、異なるクラスに対して同じ処理を行うことができます。
メッセージング:オブジェクト間の相互作用は、メッセージを送信することで実現されます。メッセージは、オブジェクトのメソッドを呼び出すための要求であり、オブジェクトは自分自身の状態を変化させるためにメッセージに応答します。
プロトタイプベースのオブジェクト指向言語 (Prototype-Based Object-Oriented Language) は、クラスベースのオブジェクト指向言語とは異なり、オブジェクトのプロトタイプに基づいてオブジェクトを生成する言語です。プロトタイプとは、オブジェクトが持つプロパティやメソッドのテンプレートのようなものであり、プロトタイプをコピーして新しいオブジェクトを生成することができます。
プロトタイプベースのオブジェクト指向言語では、クラスの概念がありません。代わりに、オブジェクトが自身のプロトタイプを持ち、そのプロトタイプが他のオブジェクトから継承されることで新しいオブジェクトを生成することができます。これにより、プロトタイプベースの言語では、クラスベースの言語よりも柔軟性が高く、動的なプログラミングに適しています。
プロトタイプベースのオブジェクト指向言語の代表的な例としては、JavaScriptがあります。JavaScriptでは、オブジェクトはプロトタイプを持ち、そのプロトタイプから継承されることで新しいオブジェクトを生成することができます。JavaScriptでは、オブジェクトを動的に生成することができるため、プロトタイプベースの言語を用いることで、動的なプログラミングに適したアプリケーションを実装することができます。
プロトタイプベースのオブジェクト指向言語は、クラスベースの言語とは異なる特徴を持つため、一部の開発者にとっては慣れるまで時間がかかることがあります。しかし、柔軟性が高く動的なプログラミングに適した特性を持つため、Webアプリケーションやモバイルアプリケーションのような動的なアプリケーションを実装する際に有用な言語として広く使われています。