Object Pascal
Object Pascal（オブジェクト パスカル）は、コンピュータのプログラミング言語のひとつ。広義には、その名前の通りPascal言語にオブジェクト指向の概念を導入したものであり、狭義には、ボーランドの統合開発環境 (IDE) であるDelphi（ただしボーランドの開発ツール部門CodeGearは2008年にエンバカデロ・テクノロジーズに合併されている）や、Free Pascalで使用されるような個別の言語仕様を指している。
Object Pascalは、Pascalの作者ニクラウス・ヴィルトとラリー・テスラー（当時アップルコンピュータ）により開発された。Pascalにクラス拡張を施したClascalを経て、Object Pascalとなり、アップルコンピュータのLisaの開発言語のひとつとして用いられ、しばらくの間、アップルやMacintoshの主要な開発言語の1つになった。
後に、ニクラウス・ヴィルトに計算機科学を学んだフィリップ・カーンによって、MS-DOS向けのボーランドの統合開発環境Turbo Pascalが製品化された。Turbo PascalではアップルのPascalや、Smalltalkのオブジェクトの考え方を手本とし、後にObject Pascalを最大限に利用したTurbo Vision等のCUIライブラリが製品に付属した。それらのObject Pascalライブラリの技術はWindowsが開発されて以降、DelphiとDelphiに付属するVCLへと引き継がれていった。
Delphiが世に出た当初、Pascalとオブジェクト指向ライブラリの融合は、当初難解だったWindows GUIアプリケーション開発を分かりやすくして成功を収め、多くの一般のホビープログラマにObject Pascalが広がった。同じくWindows用RADとしてVisual Basicを提供していたマイクロソフトはDelphiのプログラミングスタイルおよびVCLの完成度の高さに着目し、そのなかからObject Pascalのように言語に依存しないものとして、.NET Frameworkと呼ばれるアプリケーション開発・実行環境を開発した。.NETの主要言語であるC#の言語仕様、.NET Frameworkの基本クラスライブラリの設計思想、およびVisual C# RADは、それぞれObject Pascal、VCL、およびDelphi RADに強く影響を受けている。現在のDelphiには従来のObject Pascalのライブラリ (VCL) を利用するネイティブコンパイラ版と、.NET版のものが存在する。
一方、オープンソースのObject Pascalとして、PCやPDAで使えるクロスプラットフォームのPascalの実装Free Pascalも、Object Pascalの言語仕様をベースにして拡張・発展している。Free PascalではApple互換モードや、Delphi互換モードなどを選択でき、また、さらにクロスプラットフォームのための独自の仕様やCのようなマクロ等が使えるなどの拡張が言語仕様に加えられ、DelphiのようなGUI-IDEをクロスプラットフォームで実現するLazarusというObject Pascalのクラスライブラリの開発が大勢のユーザーによってオープンソースのものとして進められている。
なお、開発環境としてのDelphiで使用されるプログラミング言語は、Delphi 7よりDelphi言語（デルファイげんご）と改称された。
Object Pascalはオブジェクト指向言語の三大要素である、カプセル化、継承、および多態性（ポリモーフィズム）をサポートしている。Object Pascalにおける、従来のPascalからの主な拡張点は次のような点が挙げられる。
クラスの定義構文は、従来のPascalにおけるrecord（C/C++の構造体に相当）の定義構文を拡張したものである。クラス型の要素として変数以外にも手続きや関数を書けるようになっている。クラスに属する変数はフィールド（C++のメンバ変数に相当）、また手続きおよび関数はメソッド（C++のメンバ関数に相当）と呼ばれ、通常の変数、手続きおよび関数と区別される。
また、クラスの属性であるフィールドにアクセスする際に、冗長なメソッドを用いるのではなく、より簡潔に記述するための仕組みとして、プロパティと呼ばれる構文が用意されている。プロパティを用いることで、オブジェクト指向のカプセル化を維持しつつ、あたかもフィールドに直接アクセスしているかのような直感的な記述でクラスの属性を操作することが可能となる。
例:
クラス名は慣例的にTypeを意味する 'T' で始められることが多く、フィールド名は慣例的に 'F' で始められることが多い。
type TX = class の構文は、Systemユニットで定義されている基底クラスTObjectから暗黙的に派生することを意味する。type TB = class(TA) の構文において、クラスTAはTObjectそのものであるか、あるいはTObjectから派生している必要がある。一方、type TB = object(TA) の構文を使用することで、TObjectから派生せず、組み込みのコンストラクタやデストラクタなどのメソッドをサポートしないオブジェクト型の宣言を行なうことができるが、Delphiにおいては下位互換性を保つ目的でのみ残されており、オブジェクト型の使用は推奨されていない。
メソッドの実装は implementation 以下に、(クラス名).(メソッド名)という形で記述する。
例:
C++などのオブジェクト指向言語と比較して、Object Pascalが優れている点として、クラス参照型のサポートが挙げられる。クラス参照型の変数には、実体ではないクラス自体を変数に代入することが出来る。これは、設計図をもとに作られた製品ではなく、設計図自体を格納する変数を定義できると考えれば分かりやすい。クラス参照型はメタクラスとも呼ばれ、実行時型情報 (RTTI) によって実現される。クラス参照型は、その実際の型がコンパイル時にわからないクラスまたはオブジェクトでクラスメソッドまたは仮想コンストラクタを呼び出したい場合（例えば逆シリアライズなど）に便利である。
Object Pascalは、エラーハンドリング機構として例外をサポートしている。例外オブジェクトは、エラーやその他のイベントによりプログラムの通常の実行が中断された場合に生成される。例外を用いることで、整数値エラーコードを用いるよりも多くの情報を呼び出し側に伝播させることができる。
例外処理の構文には try...except および try...finally がある。
Object Pascalはそのコンパクトで明快な言語仕様ゆえに、オブジェクト指向言語の学習に適していると言われる（C++の演算子オーバーロード、テンプレートや多重継承のような便利だが比較的難解な機能を持たない）。反面、近年多くのプログラミング言語が導入しているジェネリクスやラムダ式をサポートしていなかったため、ジェネリックプログラミングや関数型プログラミングには不向きだったが、Delphi 2009のDelphi言語では、ジェネリクスおよび無名メソッド（匿名メソッド）が正式サポートされている。また、Delphi 2005以降ではインライン関数がサポートされ、実行速度面での強化も図られている。
また、DelphiのVCLは単なるクラスライブラリにとどまらず、コンポーネントと呼ばれるソフトウェア部品の集合で構成され、このコンポーネントを組み合わせて視覚的にアプリケーションを開発する方式となっている。Delphiではユーザープログラマがコンポーネントを自由に作成して開発環境自体に組み込むことができるため、「コンポーネント指向言語」と呼ばれることもある。