The Last Day Of Summer

.NET技术 C# ASP.net ActiveReport SICP 代码生成 报表应用 RDLC
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

《计算机程序的解释和构造》(SICP)学习3-赋值的引入

Posted on 2006-10-23 12:40  Cure  阅读(1491)  评论(4编辑  收藏  举报

原文:

在一个由许多对象组成的系统里,其中的这些对象很少是独立的。每个对象都可能通过交互作用,影响其他对象的状态,所谓交互就是建立起一个对象的状态变量与其他对象的状态变量之间的联系。确实,如果一个系统中的状态变量可以分组,形成一些内部紧密结合的子系统,每个子系统与其他子系统间只存在松散联系,此时将这个系统看做是由一些独立对象组成的观点就会特别有用。

 

理解:

面向对象设计的目的?本质?手段?

 

原文:

对于一个系统的这种观点,有可能成为组织这一系统的计算模型的有力框架。要使这样的模型成为模块化的,就要求它能分解为一批计算对象,使它们能够模拟系统里的实际对象。每一个计算对象必须有它自己的一些局部状态,用于描述实际对象的状态。由于被模拟的系统里的对象的状态是随着时间变化的,与它们相对应的计算对象的状态也必须变化。如果我们确定了要通过计算机里的时间顺序去模拟实际系统里的时间流逝,那么我们就必须构造起一些计算对象,使它们的行为随着程序的运行而改变。特别是,如果我们希望通过程序设计语言里的常规的符号名字去模拟状态变量,那么语言里就必须提供一个赋值运算符,使我们能用它去改变一个名字相关联的值。

 

理解:

面向对象的方法归根结底就是对在不同时间给对象不同的值,时间在这里是根本问题。为了改变某个局部状态的值,就引入了赋值的概念,这样就必须提供赋值运算。说了半天,原来这就是赋值操作的本质。