文档介绍:第10章面向对象程序设计语言
当今席卷软件界的面向对象技术,近因是xerox公司1980年推出的Smalltalk-80语言。
Smalltalk语言
对象的思想最早源于人工智能研究,60年代末描述智能对象的框架(frame)即封装了许多槽(slot),槽既可以是属性(数据)也可以是行为(操作)和(约束)。但最早见诸文献是sketchpad提到的OO图形学(1963)。
60年代挪威的Dahl和Nyard为模拟系统研制了SIMULA-67语言,首先提出封装的类和动态生成实例对象的概念。
60年代末,美国犹他大学Alan Kay到Xerox公司PaloAlto研究中心参加了Dynabook项目。该项目的硬件是Star(个人机的前驱)软件是Smalltalk。
1972年Dan Ingalls完成Smalltalk-72第一个实用版,以后又经过-76-80两次改进,Smalltalk-80成为向外发行的正式版本。
Smalltalk系统
·语言核心(Kernel)
·程序设计系统
·程序设计范型(Paradigm)
·用户界面模型(User Interface Model)
用户界面模型
系统工作空间(System WorkSpace)
工作空间(WorkSpace)
系统副本(System Transcript)
项目(Project)
两种图形编辑窗(Form和Bit)
系统浏览器(System Browser)窗
用户就是按浏览窗中显示的模板填写程序。
语言核心
(1) 保留字
只有五个nil,true,false,self,super
(2) 字面量
字符字面量/数字面量/ 符号字面量/ 数组字面量
(3) 限定符和特殊符号
" ' $ # #( ) , ; : | :=或←↑[ ] ( ) {}
(4) 变量
实例变量/ 类变量/ 临时变量/ 全局变量/ 汇聚变量/ 参数
(5) 消息表达式与语句
消息表达式的一般格式是:
对象选择子参数
Smalltalk的消息表达式有三种:
·单目的不带参数
tree class 消息class 发向tree,得到tree的类。
sin 消息sin ,得sin()
Array new 消息new 发向Array,创建-Array
的实例
对象
选择子-参数
· 双目的
3+4 消息‘+’带参数4发向对象3,得对象7。
100@ 50 消息‘@’带参数50发向对象100,得(100,50)
(sum/count) * reserve amount
双目,括号优先单目优先
双目
·关键字消息表达式
用关键字(带有‘:’的选择子)描述的双目表达式,也是自左至右释义。
anArray at:3 put:100
finances totalSpentOn:‘food’
·赋值变量在不同时间可赋以不同对象,任何表达式加上赋值前缀‘←’
quantity←19.
name←‘chapter 1’。
foo ← array at:4。数组第4元素与‘foo’同名
·块表达式
[:x:y|BicPen goto:******@y]
[:x:y|BicPen goto:******@y] value:100 value:250
BicPen goto 100@ 250
|aBlock|
aBlock←['This is a String' displayAt:500@ 500].
Display white.
aBlock value
(6) 控制结构
条件选择一般形式是:
布尔子表达式
ifTrue:[‘真’块执行]
ifFalse:[‘假’块执行] “可以不出现”
如:number<0
ifTrue:[absValue←number negated]
ifFalse:[absValue←number]
条件重复一般形式是:
[布尔块表达式]
whileTrue:|wlieFalse:[重复块]
如:[index>listSize]
whileFalse:[list at:index put:0。
index←index+1 ]