# 3.1分配和当地状态

> 译者： [https://sicp.comp.nus.edu.sg/chapters/48](https://sicp.comp.nus.edu.sg/chapters/48)



通常，我们将世界视为由独立对象组成的世界，每个对象的状态都会随着时间而变化。 如果对象的行为受其历史影响，则称该对象的状态为。 例如，一个银行帐户的状态为&lt;quote&gt;，我可以提取 &lt;dollar&gt;&lt;/dollar&gt; 100吗？&lt;/quote&gt; 取决于存款和取款交易的历史。 我们可以通过一个或多个_状态变量_来表征对象的状态，其中这些变量保持足够的历史信息来确定对象的当前行为。 在简单的银行系统中，我们可以通过当前余额来表征帐户的状态，而不必记住帐户交易的整个历史。

在由许多对象组成的系统中，对象很少是完全独立的。 每个对象都可以通过交互影响其他对象的状态，这些交互作用将一个对象的状态变量与其他对象的状态变量耦合。 的确，当系统的状态变量可以分组为紧密耦合的子系统（仅松散耦合到其他子系统）时，关于系统由单独的对象组成的观点最为有用。

系统的此视图可以是组织系统计算模型的强大框架。 为了使这种模型模块化，应该将其分解为对系统中的实际对象建模的计算对象。 每个计算对象必须具有描述自己实际状态的_局部状态变量_。 由于要建模的系统中对象的状态随时间变化，因此相应计算对象的状态变量也必须更改。 如果我们选择通过计算机中经过的时间来建模系统中的时间流，那么我们必须有一种方法来构造行为随程序运行而变化的计算对象。 特别是，如果我们希望通过编程语言中的普通符号名称对状态变量进行建模，则该语言必须提供_赋值运算符_，以使我们能够更改与名称关联的值。

