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

3.1  代入と局所状態



われわれは通常, それぞれが時と共に変化する状態を持つ独立なオブジェクトが存在しているものとして世界を見る. オブジェクトは, その振舞いが自分の歴史によって影響されるなら「状態を持つ」という. 例えば銀行の口座は, 「私は100ドル払い出せるか」という質問の答が, 預入れと払出しの取引きの歴史に依存するという点で, 状態を持つ. オブジェクトの状態は, その中にオブジェクトの現時点での振舞いを決定する歴史について十分な情報を保持している一つか複数の 状態変数(state variables)で特記することが出来る. 単純な銀行システムでは, 口座の状態は, 口座の取引きの全体の歴史を覚えるのではなく, 現時点での残高で特記出来る.

   多数のオブジェクトで出来ているシステムでは, 完全に独立なオブジェクトは殆んどない. それぞれは他のオブジェクトの状態に, 一つのオブジェクトの状態変数と他のオブジェクトの状態変数を結合する相互作用により, 影響を与える. システムの状態変数を強く結合しているサブシステムにグループ分け出来, サブシステム同士は弱く結合しているように出来れば, システムが別々のオブジェクトで出来ているという観点は非常に有用である.

   システムのこの見方は, システムの計算モデルの組織化の強力な枠組となり得る. そういうモデルが基本部品となるためには, システムは実際のオブジェクトをモデル化する計算オブジェクトに分解しなければならない. 各計算オブジェクトは, 実際のオブジェクトの状態を記述する局所状態変数(local state variables)を持たなければならない. モデル化されているシステム中のオブジェクトの状態は, 時と共に変るので, 対応する計算モデルの状態変数も変らなければならない. システム内の時の流れを計算機の中でも経過時間でモデル化するなら, プログラムが走るにつれて振舞いが変化する計算オブジェクトを構築する方法がなければならない. 特に状態変数を, プログラム言語の通常の記号名でモデル化しようと思えば, 言語は 代入演算子(assignment operator)を用意し, 名前に対応づけられた値が変更出来なければならない.


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