[ 目次, 前節, 次節, 索引 ]

2.5  汎用演算のシステム



前の節ではデータオブジェクトが複数の方法で表現されているシステムの設計法を見た. 重要な考え方は, データ演算を指定するプログラムを汎用インターフェース手続きを使って複数の表現へ接続することである. ここではこれと同じ考えで, 異る表現に対して汎用な演算を定義するだけでなく, 異る種類の引数に対して汎用な演算を定義する方法を見よう. これまでいくつかの算術演算パッケージを見てきた: 言語に組み込んである基本算術演算(+, -, *, /), 2.1.1節の有理数算術演算(add-rat, sub-rat, mul-rat, div-rat), 2.4.3節で実装した複素数算術演算である. さてこれまでに構成した算術演算パッケージを組み入れて算術演算パッケージを構成するのにデータ主導の技法を使う.

   図2.23はこれから作るシステムの構造を示す. 抽象の壁に注意しよう. 「数」を使う人の視点からは, 与えられたどんな数についても演算する一つの手続きaddだけがある. addは汎用インターフェースの一部で, 数を使うプログラムが別々の通常の算術演算, 有理数算術演算, 複素数算術演算のパッケージにアクセス出来るようにする. (複素数パッケージのような)個々の算術演算パッケージは, (直交座標や極座標のような)異る表現のために設計されたパッケージを統合する, (add-complexのような)汎用手続きを通してアクセスされる. 更にシステムの構造は加法的であり, 個々の算術演算パッケージは別々に設計出来, 汎用算術演算システムを作るために組み合せられる.



図2.23 汎用算術演算システム




[ 目次, 前節, 次節, 索引 ]