Object Pascal

Object Pascalオブジェクト パスカル)は、コンピュータプログラミング言語のひとつ。広義にはPascal言語にオブジェクト指向の概念を導入したものを指し、狭義には統合開発環境 (IDE) であるDelphiや、コンパイラであるFree Pascalで使用される言語仕様を指す。

沿革

Object Pascalは1980年代に登場したPascalのオブジェクト指向拡張に端を発する。Pascalは当時アップルコンピュータ(現Apple)の主要な開発言語として利用されており、Apple Pascal英語版と呼ばれる処理系の実装が存在した。Apple LisaにおいてもLisa Pascalと呼ばれる開発環境が使われていた。1983年、アップルコンピュータのラリー・テスラー率いるチームはPascal言語の発明者であるニクラウス・ヴィルトを招き、Lisa Pascalにオブジェクト指向のための拡張を導入し、これをClascal英語版と名付けた。このClascalがMacintosh上のObject Pascalにつながっていくことになる。

Object Pascalは、現在ではクラスライブラリと呼ばれる拡張可能なMacintoshアプリケーションフレームワークであるMacApp英語版をサポートするために必要だった。Object Pascalをサポートするソフトウェア開発環境であるMacintosh Programmer's Workshop英語版 (MPW) の開発は1985年に始まり、1986年に製品となった。しばらくの間、Object PascalはアップルやMacintoshの主要な開発言語の1つになった。MPW Pascalのサポートは1995年11月まで続いた。後にMPW Pascal (Apple Object Pascal) は遡ってMac Pascalと命名された[1]。また、Object Pascal拡張はSymantec社のTHINK PascalやMetrowerks英語版社のCodeWarrior Pascalにも実装された。

1990年にリリースされたボーランド社のTurbo Pascal 5.5でも類似のObject Pascal拡張が実装されており、Object Pascalを最大限に利用したTurbo Vision等のCUIライブラリが製品に付属するようになった。これらのObject Pascalクラスライブラリの技術は後のDelphiとDelphiに付属するVisual Component Library (VCL) へと引き継がれていった。

1995年にリリースされたボーランド社のWindows用Rapid Application Development (RAD) ツールであるDelphiは、当初難解だったWindows GUIアプリケーション開発[2]の難易度を下げるだけでなく効率も高めることで成功を収め、また無償の個人向けエディションも配布されていたことから、多くの一般ホビープログラマにObject Pascalが認知されることとなった。Microsoft Visual Basicと異なり、Delphiでは当初から高速な機械語コードを実行可能なネイティブバイナリを出力する方式であったこと、またC++と比べてコンパイルが高速であったことも人気に影響した。

DelphiのバージョンXE2以降には従来のクラスライブラリ (VCL) に加え、マルチプラットフォーム用クラスライブラリであるFireMonkey英語版 (FMX) と各プラットフォーム向けのクロスコンパイラが付属する。

なお、開発環境としてのDelphiで使用されるプログラミング言語は、Delphi 6まではObject Pascalと呼ばれていたが、Delphi 7よりDelphi言語 (Delphi Language) と改称された。その後、ボーランドの開発ツール部門CodeGearは2008年にエンバカデロ・テクノロジーズに合併され、DelphiおよびDelphi言語はエンバカデロに移管された。Appmethodが登場してからは再びObject Pascalと呼ばれるようになっているが、ドキュメント類にはDelphi言語という表記も依然として残っている。

同じくWindows用RADツールとしてVisual Basicをリリースしていたマイクロソフト社は、DelphiのプログラミングスタイルおよびVCLの完成度の高さに着目し、Object Pascalのように言語に依存しないものとして、.NET Frameworkと呼ばれるアプリケーション開発・実行環境を開発した。.NETの主要言語であるC#の言語仕様、.NETの基本クラスライブラリの設計思想、およびRADとしてのVisual C#は、それぞれObject Pascal、VCL、およびRADとしてのDelphiに強く影響を受けている。なお、C#の開発者アンダース・ヘルスバーグは、もともとボーランドに在籍しており、Delphiの開発者でもあった[3]

ボーランド社の.NET用 Object Pascal コンパイラは、Delphi 8から始まりRAD Studio 2007まで存在していた。これらはDelphi for .NETと呼ばれた。代替製品としてRAD StudioにはRemObjects社のOxygeneDelphi Prismという名称でRAD Studio 2009からXE3まで付属した。Oxygeneの開発は現在も継続されており、言語名もOxygene言語となっている。

一方、オープンソースのObject Pascal実装としてはFree PascalGNU Pascalがある。Free Pascalは当初Turbo Pascalの言語仕様をベースにして作られた。現在ではApple互換モードやDelphi互換モードも実装され、さらにはクロスプラットフォームのための独自の仕様追加や、C言語のようなマクロ等の拡張も行われている。Delphiのような統合開発環境マルチプラットフォームで実現するためのLazarusやクラスライブラリLazarus Component Library英語版 (LCL) の開発もオープンソースの元で進められている。GNU Pascalは標準Pascal (ISO/IEC 7185) や拡張Pascal (ISO/IEC 10206) をメインに実装されているが、Delphiの機能も部分的に実装している。また、GNU PascalにもDev-Pascalと呼ばれる統合開発環境が存在する。

Pascalからの拡張

Object Pascalは(C++系統の)オブジェクト指向言語の三大要素である、カプセル化継承、および多態性(ポリモーフィズム)をサポートしている。Object Pascalにおける、従来のPascalからの主な拡張点は次のような点が挙げられる。

クラス

クラスの定義構文は、従来のPascalにおけるrecord(C言語構造体に相当)の定義構文を拡張したものである。クラス型の要素として変数以外にも手続きや関数を書けるようになっている。クラスに属する変数はフィールド(C++のメンバ変数に相当)、また手続きおよび関数はメソッド(C++のメンバ関数に相当)と呼ばれ、通常の変数、手続きおよび関数と区別される。

また、クラスの属性であるフィールドにアクセスする際に、冗長なメソッドを用いるのではなく、より簡潔に記述するための仕組みとして、プロパティと呼ばれる構文が用意されている。プロパティを用いることで、オブジェクト指向のカプセル化を維持しつつ、あたかもフィールドに直接アクセスしているかのような直感的な記述でクラスの属性を操作することが可能となる。

メソッドの実装は(クラス名).(メソッド名)という形で記述する。

例:

program MyObjectPascalTest;

type
  TMyBaseClass = class
  private
    Fa: Integer;
    Fb: Integer;
  public
    procedure SetValueA(v: Integer);
    function GetValueA: Integer;
    property ValueB: Integer read Fb write Fb; // 読み書き両方が可能なプロパティ。
    procedure DoSomething; virtual; abstract;
  end;

  TMySubClass = class(TMyBaseClass)
  public
    procedure DoSomething; override;
  end;

procedure TMyBaseClass.SetValueA(v: Integer);
begin
  Fa := v
end;

function TMyBaseClass.GetValueA: Integer;
begin
  Result := Fa
end;

procedure TMySubClass.DoSomething;
begin
  WriteLn('TMySubClass.DoSomething is called.');
  WriteLn('ValueA = ', GetValueA);
  WriteLn('ValueB = ', ValueB)
end;

var
  obj: TMyBaseClass;
begin
  obj := TMySubClass.Create; // オブジェクトの生成。
  obj.SetValueA(100);
  obj.ValueB := -5;
  obj.DoSomething; // 派生クラスでオーバーライドされたメソッドが実行される(ポリモーフィズム)。
  obj.Free; // オブジェクトの解放。
  obj := Nil
end.

クラス名は慣例的にTypeを意味する 'T' で始められることが多く、フィールド名は慣例的に 'F' で始められることが多い。

type TX = class の構文は、Systemユニットで定義されている基底クラスTObjectから暗黙的に派生することを意味する。type TB = class(TA) の構文において、クラスTAはTObjectそのものであるか、あるいはTObjectから派生している必要がある[4]。一方、type TB = object(TA) の構文を使用することで、TObjectから派生せず、組み込みのコンストラクタやデストラクタなどのメソッドをサポートしないオブジェクト型の宣言を行なうことができるが、DelphiやAppmethodにおいては下位互換性を保つ目的でのみ残されており、オブジェクト型の使用は推奨されていない[5][6][7]

クラスの定義にユニット (unit) を用いる場合、クラスの宣言は interface 部に、メソッドの実装は implementation 部に記述する。

例:

unit MyUnit;

interface

type
  TMyClass = class
  public
    procedure Proc;
  end;

implementation

procedure TMyClass.Proc;
begin
  { ここに実装を記述 }
end;

end.

インターフェイス

Object PascalはC++と異なり、実装の多重継承をサポートしない。その代わりに、インターフェイスを実装することによる型の多重継承をサポートする。インターフェイス名は慣例的にInterfaceを意味する 'I' で始められることが多い。

Object Pascalにおける継承の機能やメカニズムはJavaとよく似ており、のちにC#にも受け継がれることになった。

クラス参照型

C++などのオブジェクト指向言語と比較して、Object Pascalが優れている点として、クラス参照型のサポートが挙げられる。クラス参照型の変数には、実体ではないクラス自体を変数に代入することができる。これは、設計図をもとに作られた製品ではなく、設計図自体を格納する変数を定義できると考えれば分かりやすい。クラス参照型はメタクラスとも呼ばれ、実行時型情報 (RTTI) によって実現される。クラス参照型は、その実際の型がコンパイル時にわからないクラスまたはオブジェクトでクラスメソッドまたは仮想コンストラクタを呼び出したい場合(例えば逆シリアライズなど)に便利である。

例外

Object Pascalは、エラーハンドリング機構として例外をサポートしている。例外オブジェクトは、エラーやその他のイベントによりプログラムの通常の実行が中断された場合に生成される。例外を用いることで、整数値エラーコードを用いるよりも多くの情報を呼び出し側に伝播させることができる。

例外処理の構文には try...except および try...finally がある。

言語としての特徴

Object Pascalはそのコンパクトで明快な言語仕様ゆえに、オブジェクト指向言語の学習に適していると言われる(C++の演算子オーバーロード、テンプレート多重継承のような便利だが比較的難解で複雑な機能を持たない)。反面、近年多くのプログラミング言語が導入しているジェネリクスラムダ式をサポートしていなかったため、ジェネリックプログラミング関数型プログラミングには不向きだった。

DelphiではDelphi 2006で演算子のオーバーロードが、Delphi 2009でジェネリクスおよび無名メソッド(匿名メソッド)が、Delphi 10.3 Rioで型推論可能なインライン変数宣言が実装された[8]ため、柔軟な記述が可能になっている。また、Delphi 2005以降ではインライン関数がサポートされ、実行速度面での強化も図られている。Delphi 2010ではRTTIが強化され、リフレクションをサポートするようになった。

また、DelphiのVCLやFMXは単なるクラスライブラリにとどまらず、コンポーネントと呼ばれるソフトウェア部品の集合で構成され、このコンポーネントを組み合わせて視覚的にアプリケーションを開発する方式となっている。Delphiではユーザープログラマコンポーネントを自由に作成して開発環境自体に組み込むことができるため、「コンポーネント指向言語」と呼ばれることもある。

出典・脚注

  1. ^ Mac Pascal - Free Pascal wiki
  2. ^ Windows APIおよびC言語あるいはC++の知識を必要とし、またVisual Basic以外のRADは十分にサポートされていなかった。
  3. ^ 主な機能 - Embarcadero Website
  4. ^ TObjectは、Javaにおける暗黙の最上位基底クラスであるオブジェクト型java.lang.Objectや、.NETにおけるSystem.Objectに相当するが、Object Pascalにおける「オブジェクト型」という用語は意味が異なるので注意されたい。
  5. ^ Borland (2001年). “Object Pascal 言語ガイド”. p. 124. 2019年1月11日閲覧。
  6. ^ クラスとオブジェクト(Object Pascal) - Appmethod Topics
  7. ^ クラスとオブジェクト(Delphi) - Embarcadero DocWiki
  8. ^ インライン変数宣言 - RAD Studio

関連項目

外部リンク

Read other articles:

Восьмой крестовый походОсновной конфликт: Крестовые походы Смерть Людовика IX во время осады Туниса. Миниатюра Жана Фуке из «Больших французских хроник». XV в. Дата 1270 Место Тунис Итог частичный успех, заключение перемирия с Тунисом Противники Королевство ФранцияКоролев�...

 

 

Datum or structured component of reality For other uses, see Fact (disambiguation). Non-fiction books at a Danish library, shelves displaying the word Fakta, Danish for Facts A fact is a true datum about one or more aspects of a circumstance.[1] Standard reference works are often used to check facts. Scientific facts are verified by repeatable careful observation or measurement by experiments or other means. For example, This sentence contains words. accurately describes a linguistic ...

 

 

16e cérémonie des Critics' Choice Movie Awards Critics' Choice Movie Awards Organisée par Broadcast Film Critics Association Détails Date 14 janvier 2011 Lieu Hollywood Palladium, Los Angeles États-Unis Diffusé sur VH1 Site web http://www.bfca.org/ Résumé Meilleur film The Social Network Meilleur film étranger Millénium • Suède Film le plus récompensé Inception (6) Film le plus nommé Black Swan (12) Chronologie 15e cérémonie des Critics' Choice Movie Awards 17e...

У этого термина существуют и другие значения, см. Западный округ. Западный внутригородской округ город Краснодар Дата основания 1936 год Дата упразднения 1994 Прежние имена Кагановичский, Ленинский районы Микрорайоны Дубинка, Черёмушки, Покровка Площадь 22[1]  км² Насе...

 

 

Government minister Politics of Mali Constitution Human rights Slavery Government Interim President Assimi Goïta Interim Prime Minister Choguel Kokalla Maïga Council of Ministers Parliament National Assembly Speaker: Vacant Administrative divisions Regions Cercles Arrondissements Communes Elections Recent elections Presidential: 20182024 Parliamentary: 2020next Political parties Foreign relations Ministry of Foreign Affairs Minister: Abdoulaye Diop Diplomatic missions of / in Mali Passport ...

 

 

Town in Victoria, AustraliaEricaVictoriaThe township of EricaEricaCoordinates37°59′0″S 146°22′0″E / 37.98333°S 146.36667°E / -37.98333; 146.36667Population184 (SAL 2021)[1]Postcode(s)3825Elevation445 m (1,460 ft)Location 170 km (106 mi) E of Melbourne 36 km (22 mi) N of Moe 23 km (14 mi) SW of Walhalla LGA(s)Shire of Baw BawState electorate(s)NarracanFederal division(s)Monash Mean max temp Mean min temp Annua...

Disambiguazione – Frattali rimanda qui. Se stai cercando il calciatore, vedi Pierluigi Frattali. Questa voce o sezione sull'argomento matematica è priva o carente di note e riferimenti bibliografici puntuali. Sebbene vi siano una bibliografia e/o dei collegamenti esterni, manca la contestualizzazione delle fonti con note a piè di pagina o altri riferimenti precisi che indichino puntualmente la provenienza delle informazioni. Puoi migliorare questa voce citando le fonti più ...

 

 

这是马来族人名,“尤索夫”是父名,不是姓氏,提及此人时应以其自身的名“法迪拉”为主。 尊敬的拿督斯里哈芝法迪拉·尤索夫Fadillah bin Haji YusofSSAP DGSM PGBK 国会议员 副首相 第14任马来西亚副首相现任就任日期2022年12月3日与阿末扎希同时在任君主最高元首苏丹阿都拉陛下最高元首苏丹依布拉欣·依斯迈陛下首相安华·依布拉欣前任依斯迈沙比里 马来西亚能源转型与�...

 

 

1812 siege during the Peninsular War Siege of the Salamanca fortsPart of the Peninsular War1858 map of Salamanca shows empty spaces in the southwest corner of the city where the forts were locatedDate17–27 June 1812LocationSalamanca, SpainResult Allied victoryBelligerents French Empire United KingdomCommanders and leaders Auguste de Marmont Arthur WellesleyStrength 40,80036 guns 48,0004 guns6 howitzersCasualties and losses 800 killed, wounded or captured36 guns lost 99 killed331 wounded vte...

У Вікіпедії є статті про інші значення цього терміна: Віковий дуб. Дуб віковий(пам'ятка природи) 48°55′48″ пн. ш. 24°43′07″ сх. д. / 48.93015700002777635° пн. ш. 24.718760000027778290° сх. д. / 48.93015700002777635; 24.718760000027778290Координати: 48°55′48″ пн. ш. 24°43′07″ сх. д.&#x...

 

 

Americans of Guyanese birth or descent Ethnic group Guyanese AmericansTotal population231,651 (2019)[1]Regions with significant populationsNew York · Massachusetts · Connecticut · New Jersey · Florida · Georgia ·  California ·  Texas ·  Pennsylvania ·  MarylandLanguagesEnglish · Guyanese Creole · Guyanese Hind...

 

 

Former railway station in Nottingham, England CarringtonCarrington station in 1963General informationLocationNottingham, Nottingham, NottinghamshireEnglandGrid referenceSK568416Platforms2Other informationStatusDisusedHistoryPre-groupingGreat Central RailwayPost-groupingLondon and North Eastern RailwayKey dates15 March 1899Opened24 September 1928Closed Carrington railway station was a railway station in Nottingham on the Great Central Railway main line,[1] the last main line to be buil...

أمين بركات معلومات شخصية الميلاد 2 نوفمبر 1942 (82 سنة)  مواطنة لبنان  الحياة العملية المدرسة الأم جامعة جورجتاون (الشهادة:زمالة) (1 يوليو 1970–30 يونيو 1972)[1]جامعة جونز هوبكينز (1 يوليو 1969–30 يونيو 1970)[2]الجامعة الأميركية في بيروت (1 يوليو 1967–30 يونيو 1969)[3]الجامعة الأ...

 

 

У этого термина существуют и другие значения, см. Джо-солдат. Оригинальная линейка фигурок 1964 года «Солдат Джо» или G.I. Joe — серия экшен-фигурок солдат производства компании Hasbro; первые в мире игрушки, которые были названы экшен-фигурками. История Термин G.I. является абб�...

 

 

Birkar nel 2018 Medaglia Fields nel 2018 Caucher Birkar, pseudonimo di Fereydoun Derakhshani[1] (in curdo كۆچه‌ر بیركار‎, Koçer Bîrkar[2][3], in persiano کوچر بیرکار‎[4][5]; Ney, 1º luglio 1978), è un matematico iraniano naturalizzato britannico[6], di etnia curda, professore all'Università di Cambridge. Birkar ha dato un importante contributo alla moderna geometria birazionale. Nel 2010 ha ricev...

Artikel ini sebatang kara, artinya tidak ada artikel lain yang memiliki pranala balik ke halaman ini.Bantulah menambah pranala ke artikel ini dari artikel yang berhubungan atau coba peralatan pencari pranala.Tag ini diberikan pada Februari 2023. Killoran dapat mengacu pada beberapa hal berikut: Pemain sepak bola Jepang Colin Killoran Eugene Killoran Niall Killoran Halaman disambiguasi ini berisi daftar artikel nama orang (yang terkadang digunakan untuk nama tempat) yang memiliki judul yang sa...

 

 

Pulau Bira KecilPulau Pulau Bira Kecil merupakan pulau yang berada pada gugusan Kepulauan Seribu yang secara administratif termasuk dalam wilayah Kabupaten Administratif Kepulauan Seribu provinsi DKI Jakarta yang mempunyai pantai yang indah dengan air laut yang bening serta pasir putihnya disini terdapat tempat penginapan berupa cottage yang disewakan, dan mempunyai lapangan golf 9 hole, letak berdekatan dengan Pulau Bira Besar, Pulau Papa Theo, Pulau Pelangi, Pulau Kayu Angin Bira, Pulau Kub...

 

 

District and municipality in Kayseri, TurkeyTalasDistrict and municipalityAya Panagia Greek Church in Talas, also known as the Yaman Dede MosqueMap showing Talas District in Kayseri ProvinceTalasLocation in TurkeyShow map of TurkeyTalasTalas (Turkey Central Anatolia)Show map of Turkey Central AnatoliaCoordinates: 38°41′N 35°34′E / 38.683°N 35.567°E / 38.683; 35.567CountryTurkeyProvinceKayseriGovernment • MayorMustafa Yalçın (AKP)Area444 km2 (...

Mexican politician José Manuel ZozayaEnvoy Extraordinary and Minister Plenipotentiary of Mexico to the United StatesIn office12 December 1822 – 20 May 1823[1]Succeeded byJosé Anastasio Torrens (interim)[1] Personal detailsBornJosé Manuel Zozaya y Bermúdez(1778-07-04)4 July 1778Salvatierra, Guanajuato[2]Died21 June 1853(1853-06-21) (aged 74)Mexico City[3]NationalityMexicanSpouse(s)His niece, Joaquina de Zozaya y Gurtubay ​ ​&#...

 

 

هذه المقالة بحاجة لصندوق معلومات. فضلًا ساعد في تحسين هذه المقالة بإضافة صندوق معلومات مخصص إليها. المثلث باللون الأحمر هو مثلث متوسط ضمن المثلث باللون الأسود في الهندسة الرياضية، يُعرف المثلث المتوسط لمثلث ما ABC على أنه المثلث الذي تكون رؤوسه عند منتصف الأضلاع AB,AC وBC للمث�...