momoewang 的学习日记 …..

能者劳而智者忧,无能者无所求

Archive for the 'Squeak 和 Smalltalk' Category

更多 Smalltalk 和 Squeak 的文章请访问 Smalltalk.org.cn

最近开通了 http://www.smalltalk.org.cn ,里面有最新,最全面的中文 Smalltalk 和 Squeak 的信息,请随时访问!!

14 comments

对象通过消息通讯

在 Smalltalk 里,对象通过发送给另一个对象消息来使某事发生。对象如何响应特定的消息,是由对象所属的类决定的;很重要的是,并非任何对象都能对任意消息成功响应。一个对象可以理解的消息集合及其对这些消息的响应,决定了 Smalltalk 系统中对象的行为。

所有对象知道它自己可以理解的消息集合。这个消息集合由对象所属的类来管理的。

下面是一些典型的消息实例:

  • +
  • -
  • new
  • show
  • exit
  • includes:
  • asSortedCollection

你可以用 Smalltalk 语言创建对象和发送消息给它。打开一个新的工作空间,你可以通过运行下面每行代码,来查看结果。

3+4

‘Hello world’ reverse

5 factorial

No comments

什么是对象?

从最简单的层次上来说,对象不过是一片内存区域,它包含着描述对象状态的数据字节。例如,代表文本字符串“ hello ”的对象,包括下述字节:

104 101 108 108 111

当然,这里的每个字节代表字符串里的每个字符。然而,每个对象都包含额外的信息,让它知道自己是什么类型的对象。这里不讨论这些信息是如何编码成为对象的一部分的,但它非常重要,对象要借助它才知道自己具有什么样的行为。例如,我们有两代表数字的对象,则我们就能够从一个对象减去另一个对象;然而对于两个代表字符串的对象来说,就没法进行简单的减法操作。正因为数字对象知道自己是个数字,所以它才知道减法是其相关操作,并知道如何处理这个操作。

在 Smalltalk 里,

  • 一切都是对象;
  • 对象知道自己是什么类型的对象,或者隶属于什么类( class )。

在 Smalltalk 的语法里,类( class )是一个非常重要的概念。对象所隶属的类让它知道自己的行为方式。

提示:“在 Smalltalk 里一切都是对象”的意义是非常深刻的。它使得 Smalltalk 成为一个纯的面向对象的编程语言,比其他诸如 C++, Java 等编程语言要纯粹的多。这种纯粹让系统具有一致性,使得这种语言简单易学、功能强大。

用 Smalltalk 编程,有些对象可以直接表达自己,这叫做文字对象 (literals) 。下面是一些文字对象的例子:

‘Hello world’ -是一个文本字符串对象;
$H -字符 H ;
517 -一个整数;
789.45 -一个浮点数字;
#(1 2 3) -包括三个整数的一个数字;
#show -一个特殊对象,称为记号。

No comments

Cincom Smalltalk 教程(网站日志统计)目录

本教程的目的是让你用 VisualWorks 来分析网站服务器产生的日志文件。统计将会产生网站点击计数及页面访问计数。强烈建议你按顺序来学习本教程。学习实例的工作都是基于前面课程的。虽然每课的标题描述了每课内容的主旨,但课程的内容里面包含了更多的概念。

  1. 第一课:使你的鼠标运转起来VisualWorks 最初是30年前在有三键鼠标的 Unix 系统上开发的,这仍然作为缺省方式保留到今天。如果你的系统上使用的是1键或者2键鼠标,你需要知道如何模拟3键鼠标的行为。
  2. 第二课 显示输出内容 当编写和测试 Smalltalk 代码时,我们需要一种验证其确实按预期的方式工作的途径。虽然有很多不同的方法使我们能够“看到我们在做什么”,这节课提供四个基本的 Smalltalk 回馈办法。
  3. 第三课 存取外部文件为了分析网站日志文件,最开始的工作是要定位文件位置和读取、查看文件内容。
  4. 第四课 读取外部文件和分析字符串读取一个文件并把整个内容放到编辑器里,并不会对我们计算网站点击计数带来太多帮助。我们需要一行一行地读取文件并抽取 IP 地址。
  5. 第五课 开始收集一旦你从日志文件里抽取了一个 IP 地址,你需要找地方存放它。你还需要判断是否一个新抽取的 IP 地址已经存到 IP 地址列表里了。你准备如何做这项工作呢?
  6. 第六课 读取一个目录现在我们可以计算单个文件的网站点击计数了。如何计算一个目录下的所有文件?
  7. 第七课 系统浏览器101 你目前完成的所有工作都是应用了现有的 Smalltalk 对象及其方法。所有的开发都是在工作空间中完成的。然而要利用 Smalltalk 开发环境的优势,我们要超越工作空间,学习创建自己的对象和方法。你需要工作空间以外的东西来做这项工作。
  8. 第八课 保存你的工作为了使代码工作起来,你已经做了很多的努力。不能丢失,要学习如何保存和恢复工作。
  9. 第九课 最流行的竞争网站上哪个页面是最多被访问的?最少的呢?是时候给我们代码添加更多功能了。
  10. 第十课 把前面的综合起来我们已经写了从一个日志文件里找出最热门的页面,但这仍然是在一个工作空间里面完成的。现在我们创建了自己的类,到时候了,把代码从工作空间里移动到方法里。做完了这个,要计算整个目录里面日志文件的网页计数就容易了。
  11. 第十一课 重构代码 你已经注意到代码里有些冗余。能更高效么?代码部分能否重用?我们需要整理一切。
2 comments

下一页 »