コンポーネントパスカル – ウィキペディア
コンポーネントパスカル | |
---|---|
パラダイム: | 必須、モジュラー、オブジェクト指向、コンポーネント指向 |
公開年: | 1990年 |
デベロッパー: | ニクラウス・ワース / Oberon Microsystems |
現行版: | 1.5 (2005年、候補者のリリース1.6:2007) |
タイピング: | 静的でダイナミック、強い |
重要な実装: | ブラックボックスコンポーネントビルダー、ガーデンズポイントコンポーネントパスカル |
に影響を受けた: | モジュラ-2 /オベロン |
オペレーティング·システム: | Windows、実行時間システム.NETフレームワーク、JVM |
ライセンス: | 無料 |
Oberon Microsystems |
コンポーネントパスカル 1990年以来、Oberon Microsystemsによって開発されたコンポーネントベースの開発システムBlackbox Component Builder用に1990年以来開発された無料のモジュール式オブジェクトおよびコンポーネント指向のプログラミング言語です。それまでの間、Gardens Point Component Pascalという名前では、.NETフレームワークとJava仮想マシンの下で実行できるバージョンもあります。
コンポーネントPascalはプログラミング言語Oberonから開発され、1994年の出版中にOberon/Lという名前でまだ運営されていました。関連するフレームワークはOberon/fと呼ばれました。リリース1.3(1996/1997年の変わり目にリリースされた)では、BlackboxコンポーネントビルダーのOberon/LコンポーネントのPascalとFramework Oberon/FがOberon/LコンポーネントPascalの言語からなりました。
コンポーネントPascalには、完全に構造化された構文を備えた非常に短くシンプルな言語説明があります。動的なバインディングだけでなく、動的なタイプだけでなく、静的タイプとオブジェクトを可能にします。モジュールである限り、非常に強く代表されたタイプのプログラミング言語です システム 明示的にインポートされていません。これは通常、システムプログラミング用のみであるため、わずかにポータブルです。継承はプログラミング言語に固定されていますが、コンパイラの追加ストレスを回避し、言語セマンティクスを可能な限り明確にし、ダイヤモンドの問題を回避するための複数の継承ではありません。
コンポーネントPascalは、インスタンスが既に存在して使用されている場合でも、モジュールまたはコンポーネントの自動ストレージクレンジングと動的充電と削除もサポートしています。
さらに、コンポーネントPASCALでは、アサート、一般的なプログラミング、および上書きデータ型を許可しているため、メソッド(SO -CALLED TYPE -BOUND手順)も許可されています。ただし、ソースコードの単純さとより良いトレーサビリティの意味では、オペレーターや方法を過負荷にすることは不可能です。
プログラミング言語コンポーネントPascalと開発および実行時間システム ブラックボックスコンポーネントビルダー 2005年以来、情報源を受け入れています。
コンポーネントPascalは、ハードウェアに対する低い需要、高い安定性、シンプルさ、速度が期間とソフトウェア開発の点で特徴付けられます。これは主に科学的および技術的なアプリケーション、教育と研究でだけでなく、商業的アプリケーションにも使用されています。
こんにちは世界 [ 編集 | ソーステキストを編集します ]
プログラム こんにちは世界 コンポーネントPascalの1つの例 [ 編集 | ソーステキストを編集します ]
IMモジュール こんにちは世界 (パラメーターレス)コマンドになります 出力 定義されています。手順名の背後にある星(*)は、手順のエクスポートを定義します 出力 、そのため、構文を使用してモジュールの外側になります Hallowelt.Output 参照できます。次のソーステキストは、メッセージの単純なプログラムを表しています 「こんにちは世界」 ラインブレークが続きます:
モジュール こんにちは世界 ; 輸入 外 ; 手順 出力 * ; 始める 外 。 開ける ; 外 。 弦 ( "こんにちは世界!" ); 外 。 ln ; 終わり 出力 ; 終わり こんにちは世界 。
プログラム こんにちは世界 コンポーネントPascal 2番目の例 [ 編集 | ソーステキストを編集します ]
IMモジュール Hallowelt2 ダイアログボックスに後で出力される変数が定義されています。手順名の背後にある星(*)は、手順のエクスポートを定義します 出力 、そのため、構文を使用してモジュールの外側になります Hallowelt.Output 参照できます。次のソーステキストは、メッセージの単純なプログラムを表しています 「こんにちは世界」 「インポートダイアログ」に記載されているダイアログボックス。輸入されました。ダイアログボックスなど。マークされた *でマークされたすべての変数。 「var issue*:of charの配列50」で だった
変数「エディション」を作成する必要があります。これはダイアログに表示されます( *
)および2. 50文字のシリーズ(charの50の配列)で構成されています
「dialog.updatestring(edition);」という行を通して「Edition」変数のコンテンツがダイアログボックスに割り当てられ、すぐに表示されることが整理されています。::
モジュール Hallowelt2 ; 輸入 ダイアログ ; だった 出力 * : 配列 50 の char ; 手順 出力 * ; 始める 出力 : = "こんにちは世界!" ; ダイアログ 。 updatestring ( 出力 ); 終わり 出力 ; 終わり Hallowelt2 。
電卓 [ 編集 | ソーステキストを編集します ]
プログラム 追加計算機 コンポーネントPascalの1つの例 [ 編集 | ソーステキストを編集します ]
モジュール Course10コンピューター ; 輸入 ダイアログ ; だった 番号1 * 、 ZAHL2 * 、 結果 * 、 休み * : 整数 ; 手順 追加 * ; 始める 結果 : = ( 番号1 + ZAHL2 ); ダイアログ 。 UpdateInt ( 結果 ); 終わり 追加 ; 終わり Course10コンピューター 。
継承可能な構造の実装は、その前身のオベロンと比較して、コンポーネントPascalでいくらか単純化されており、より明確かつ安全に構造化されています。間の発言 *
と *)
説明し、コンパイラによって無視されます。例:
モジュール 継承1 ; タイプ ( *定義タイプ *) グラフィックオブジェクト * = ポインター に 概要 記録 色 * : 整数 ; 終わり ; 点 * = ポインター に 記録 ( グラフィックオブジェクト )) バツ * 、 と * : 整数 ; 終わり ; ライン * = ポインター に 記録 ( グラフィックオブジェクト )) XSTART * 、 ystart * 、 ジェンデ * 、 彼はその人です * : 整数 ; 終わり ; だった ( *可変定義 *) Punkt1 : 点 ; 1行目 : ライン ; 手順 ( g : グラフィックオブジェクト )) 描く * ()、 新しい 、 拡張可能 ; 始める ( *空、拡張可能な方法 *) 終わり 描く ; 手順 ( 点 : 点 )) 描く * (); 始める ( * ... *) 終わり 描く ; 手順 ( ライン : ライン )) 描く * (); 始める ( * ... *) 終わり 描く ; 始める 新しい ( Punkt1 ); Punkt1 。 色 : = 0ffh ; ( *オブジェクトの色は0ff(hexadecimalの場合は "h")に設定されています *) Punkt1 。 バツ : = 初め ; Punkt1 。 と : = 初め ; Punkt1 。 描く (); 新しい ( 1行目 ); 1行目 。 色 : = 07fh ; ( *オブジェクトの色は07f(hexadecimalの "h")に設定されています *) 1行目 。 XSTART : = 初め ; 1行目 。 ystart : = 初め ; 1行目 。 ジェンデ : = 2 ; 1行目 。 彼はその人です : = 2 ; 1行目 。 描く (); 終わり 継承1 。
読み取りアクセスのみがある属性は、タイプバウンド手順(メソッド)によって変更できます。オブジェクトモジュールの外側でのみ読み取ることができる適切な識別子のエクスポートは、 *
、しかし通り -
特徴付けられます。例:
モジュール 継承2 ; タイプ 物体 * = ポインター に 記録 バツ - : 整数 ; 終わり ; ( *コメント: "internitance2"モジュール以外では、属性への直接書き込みアクセスは「x」可能です *) 手順 ( 物体 : 物体 )) Putzex * ( 価値 : 整数 )、、 新しい ; ( *コメント:属性への間接的な書き込みアクセス「X」 *) 始める 物体 。 バツ : = 価値 ; 終わり Putzex ; 終わり 継承2 。
モジュール 異なるモジュール ; 輸入 継承2 ; だった Object1 : 継承2 。 物体 ; int : 整数 ; 始める 新しい ( Object1 ); Object1 。 Putzex ( 初め ); ( *コメント:「Object1.x:= 1」という命令は、「継承2」モジュールの外では不可能です *) int : = Object1 。 バツ ; ( *コメント:属性への直接読み取りアクセス "" xが可能 *) 終わり 異なるモジュール 。
- Karlheinz Hug: モジュール、クラス、契約。コンポーネントパスカルを使用したコンポーネント指向ソフトウェア構造に関する教科書 。 Viegeg VerlagsgesEllschaft、2001
- J.スタンリーウォーフォード: コンピューティングの基礎 – ブラックボックスコンポーネントビルダーを使用したソフトウェアデザインの理論と実践 。 Vieweg、2002年
- Markus Bautsch: ソフトウェア危機のサイクル 。の: Enisa Quarterlyオン 安全なソフトウェア (PDF; 2 MB)
Recent Comments