« 誰でもできるソフトウエア開発の要件定義&ドメイン分析およびクラス図の科学的アプローチ | トップページ | 第9回『科学的モデリング』技術コラム公開~「リスコフ置換原理」詳解 »

2015年3月 2日 (月)

オブジェクト指向のクラスと「代数構造」

週末は情報工学を専攻した大学生や社会人を意識した『科学的モデリング』の数学的・論理学的な話題のセミナー資料を作成した。

Adt

 

 
 
多くの若い学生や社会人のエンジニアは、ある程度のコンピューター科学をキチンと学習している。

ただし、いくつか完全に理解が十分でない部分があるので、少し補足するととてもよく理解できる。

  
今回はオブジェクト指向の分析・設計・実装に欠かせない「代数構造」と「抽象データータイプ(ADT)」についての資料を作成した。

 
  

オブジェクト指向のクラスは、抽象データータイプ(ADT)の1つである。
ただし、厳密に言えば:
 
  「抽象データータイプ(ADT)≠オブジェクト指向言語のクラス」
 
である。
  

もっとも大切なことの1つは:
 
 抽象データータイプ(ADT)とは、コンピューター科学では『代数の1つ』
 
として扱われる。
  

情報工学を専攻した大学生なら必ず習うと思う。
  

コンピュータ科学では、実数、自然数、文字列などを含めてコンピューター上で利用するために、性質や公理を構造として定義する必要がある。
 
そこで、抽象データタイプは、データオブジェクトの集合(台集合)とその集合上に定義された1つ以上の演算、そして演算を記述する公理群で定義される。
  

コンピューターで動作させるために、抽象データータイプ(ADT)の台(台集合)は実装上の制約がある。
 
しかし、これは抽象データータイプ(ADT)を設計し実装する時にエンジニアが検討する。

  
抽象データータイプ(ADT)は対象の構造を代数として形式化(仕様)したものなので、実現方法は興味の対象外である。仕様的な記述をするソフトウエア開発者は、最終的にクラスとして実装する概念を、新しい抽象データータイプ(ADT)として事前に定義を行う必要ある。

 
 
抽象データータイプ(ADT)の公理は、実装が正しいことを確かめるためにrefinementや試験の拠り所なる。
 
 

つまり、設計やプログラムが抽象データータイプ(ADT)として定義された演算や公理を満足するか試験しなければならない。
  

代数的な抽象データータイプ(ADT)は、基本となる構成子演算のみ、あるいは少しの基本演算により、他の演算を再帰的に定義していく。
 

|

« 誰でもできるソフトウエア開発の要件定義&ドメイン分析およびクラス図の科学的アプローチ | トップページ | 第9回『科学的モデリング』技術コラム公開~「リスコフ置換原理」詳解 »

「パソコン・インターネット」カテゴリの記事