抽象型 – 定義

導入

ソフトウェア エンジニアリングにおいて、抽象型とは、一連のデータと、それが実行できる一連の操作の数学的仕様です。このタイプのデータは、データ構造が実装する必要がある仕様に対応しているため、抽象と呼ばれます。一般に、ほとんどの抽象型は再帰的な構造を記述することに注意してください。

最も使用される抽象型は、スタック、キュー、リスト、バイナリツリーです。

抽象型 - 定義

構造

抽象型は5 つのフィールドで構成されます。

  • TA (抽象型)
  • 使用済み
  • 運営
  • 前提条件
  • 公理

これら 5 つの要素は、多くの場合、頭字語TUOPAでまとめられます。

抽象型 - 定義

抽象型

「TA」フィールド(抽象型) には、記述されている型の名前が含まれており、場合によっては、それが別の抽象型の拡張ではないかどうかを指定します。たとえば、スタックとは何かを説明する Stack という名前の型を作成するには「TA: Stack」と書き、それを拡張したい場合は「Extension TA: Stack」と書きます (新しい非操作操作を に割り当てることで抽象型を拡張します)。最初の仕様で定義されています)。

使用済み

「Uses」フィールドには、説明しているもので使用する抽象型が含まれています。たとえば、定義する抽象型 Pile は仕様内で抽象型Boolean を使用するため、「Uses: Boolean」と記述します。

運営

「操作」フィールドには、すべての操作のプロトタイピングが含まれます。プロトタイピングとは、名前、引数、戻り値による操作の説明を意味します。


操作はいくつかのタイプに分類されます。

  • コンストラクター (定義しているタイプのオブジェクトを作成できます)。
  • トランスフォーマー (オブジェクトとそのコンテンツを変更できるようにします);
  • オブザーバー (オブジェクトの状態に関する情報を与える関数)。

タイプ「TA:スタック」の動作例:

 作成: -> スタック

「作成」操作はコンストラクターであることに注意してください。実際、この関数はスタック オブジェクトを作成します。さらに、このスタックの作成には引数は必要ありません。これは、矢印の左側に表示がないことで示されます。

抽象型 - 定義

前提条件

「事前条件」フィールドには、関数が通常の動作を行うために関数の引数で尊重される条件が含まれています。ここで関数の一連の定義について説明します。

公理

「公理」フィールドには、抽象型の各操作の動作を記述する一連の公理が含まれています。それぞれの公理は真の論理命題です。

コメント付きの例: スタック

スタックは、LIFO (「後入れ先出し」) 原則を尊重した単純なデータ構造であることを思い出してください。つまり、この構造に追加したばかりの最後の要素に常にアクセスします。

抽象タイプ:スタック

使用法:ブール値、要素

操作:

作成する :

$$ {\rightarrow} $$
スタック

スタック: スタック

$$ {\times } $$
要素
$$ {\rightarrow} $$
スタック

上:尻尾

$$ {\rightharpoonup} $$
要素

残り: 尾

$$ {\rightharpoonup} $$
スタック

isEmpty: スタック

$$ {\rightarrow} $$
ブール値

insertEnd: スタック

$$ {\times} $$
要素
$$ {\rightarrow} $$
スタック

ここでは、基本的なスタック操作と、スタックの最後に要素を挿入できる「insertEnd」操作を考慮します (この操作により、抽象型で再帰を表現できるようになります)。シンボル「

$$ {\rightharpoonup} $$
» は、操作に前提条件があることを意味します。

ここにはコンストラクターがあります。 3 つのトランスフォーマー: stack剰余、およびinsertEnd ;そして 2 つのオブザーバー: vertexisEmpty 。どのスタックも「stack(p,e)」または「create()」の形式であることがわかるため、「スタック」操作はコンストラクターであると考える人もいます。

前提条件: p
$$ {\in} $$
スタック

定義済み(頂点(p))

$$ {\Rightarrow} $$
$$ {\neg} $$
isEmpty(p)

定義済み(剰余(p))

$$ {\Rightarrow} $$
$$ {\neg} $$
isEmpty(p)

これらの前提条件は、上部を「見る」ことができない、または空のスタックの残りを取得することができないという事実に対応しています。

公理: p
$$ {\in} $$
スタック e、f
$$ {\in} $$
要素

(P1) 頂点(スタック(p,e)) = e

(P2) 剰余(スタック(p,e)) = p

(P3) isEmpty(create()) = true

(P3) isEmpty(stack(p,e)) = false

(P4) insertEnd(create(),e) = stack(create(),e)

(P5) insertEnd(stack(p,f),e) = stack(insertEnd(p,e),f)

vdm
コンピュータプログラミング要素
ソフトウェアライブラリ標準ライブラリ ・ネームスペース ・フレームワーク ・テンプレート・インターフェース ・プログラミングインターフェースAPI
語彙
アルゴリズム • 式 • インデント • コード行 • 演算子 • 擬似コード • 演算子のオーバーロード
機能周り命名規則 • 因数分解 • 入れ子関数 • コールバック関数 • 再帰関数 • ジェネリック性 • オペランド • パラメータ • ポリモーフィズム • プロシージャ •型シグネチャ
オブジェクトの周囲クラス ・ コンストラクター ・ デストラクター ・ カプセル化 ・ 継承 ・ 多重継承 ・ インスタンス ・ メソッド ・ガベージコレクター・ リファレンス
ソースコード
データ構造ツリー • 属性 • 文字 • レコード • ファイル • 先入れ先出し(fifo) • 後入先出し(lifo) • リスト • リンクリスト • スタック • シンボルテーブル • 配列 • ヒープ •抽象型• セマフォ
宣言: 型と変数代入 • ポインタ • スコープ • 連想配列• 列挙型 • 再帰型 • 静的型付け • 変数 • グローバル変数• ローカル変数
制御構造case、do、else、eval、if、for、goto、loop、switch、while
共通機能連結 • インクリメント • malloc • printf
ソフトウェア開発ツール開発環境統合開発環境( IDE ) • ドキュメントジェネレータ • バージョン管理 • モデル • パッチ • 仕様
民間伝承Hello world • シンプルで愚かなままにしてください • エキゾチックなプログラミング言語
カテゴリ:ソフトウェア開発 • カテゴリ:コンピュータプログラミング
  1. نوع بيانات مجرد – arabe
  2. Tipus abstracte de dades – catalan
  3. Abstraktní datový typ – tchèque
  4. Abstrakt datatype – danois
  5. Abstrakter Datentyp – allemand
  6. Αφηρημένος τύπος δεδομένων – grec

抽象型 – 定義・関連動画

サイエンス・ハブ

知識の扉を開け、世界を変える。