第04章面向对象程序设计语言 4.1 Smalltalk语言 对象的思想最早源于人工智能研究,60年代末描述智能对象的框架 ( frame)即封装了许多槽(s1ot),槽既可以是属性(数据)也可以 是行为(操作)和(约束)。但最早见诸文献是 sketchpad提到的oO 图形学(1963)。 60年代挪威的Dahl和 Nard为模拟系统硏制了 SIMULA-67语言 首先提出封装的类和动态生成实例对象的概念 60年代末,美国犹他大学 Alan Kay到 Xerox公司Pa1oA1o研究 中心参加了 Dynabook项目。该项目的硬件是star(个人机的前驱 软件是Sma11a1k 1972年 Dan Inga1ls完成Sma11ta1k-72第一个实用版,以后又 经过-76-80两次改进,Sma11ta1k-80成为向外发行的正式版本
第04章 面向对象程序设计语言 4.1 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成为向外发行的正式版本
4.1 Smalltalk语言 对象的思想最早源于人工智能研究,60年代末描述智能对象的框架 ( frame)即封装了许多槽(slot),槽既可以是属性(数据)也可以 是行为(操作)和(约束)。但最早见诸文献是 sketchpad提到的oo 图形学(1963 60年代挪威的Dah1和 Naro为模拟系统研制了 SIMULA-67语言, 首先提出封装的类和动态生成实例对象的概念。 60年代末,美国犹他大学A1 an kay到 Xerox公司 Palo1to研究 中心参加了 Dynabook项目。该项目的硬件是star(个人机的前驱) 软件是sma11ta1k。 1972年 Dan Inga11s完成Sma1ta1k-72第一个实用版,以后又 经过-76-80两次改进,Sma11ta1k-80成为向外发行的正式版本
4.1 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成为向外发行的正式版本
4.1.1 Smalltalk系统 语言核心( Kerne1) 程序设计系统 程序设计范型( Paradigm) 用户界面模型( User Interface Mode1)
4.1.1 Smalltalk系统 ·语言核心(Kernel) ·程序设计系统 ·程序设计范型(Paradigm) ·用户界面模型(User Interface Model)
412用户界面模型 系统工作空间 WorkSpace System Workspace (System Workspace) Bit Editor 工作空间 System Trancript Project (Workspace) again 系统副本 Form editor copy cut (System paste Transcript cancel 项目( Project) 两种图形编辑窗 (Form和Bit)
4.1.2 用户界面模型 • 系 统 工 作 空 间 (System WorkSpace) • 工 作 空 间 (WorkSpace) • 系 统 副 本 (System Transcript) • 项目(Project) • 两种图形编辑窗 (Form和Bit) WorkSpace System Workspace Project Bit Editor System Trancript again undo copy cut paste accept cancel enter Form Editor
系统浏览器( System Browser)窗 System Browser CLASSNAMES CLASS MENU MESSAGE MESSAGE CATEGORIES CATEGORIES SELECTORS MENU Instance Class 正文TEXT 用户就是按浏览窗中显示的模板填写程序
• 系统浏览器(System Browser)窗 • 用户就是按浏览窗中显示的模板填写程序。 System Browser 类类类类类 CLASS CATEGORIES MENU 类类类类类类类 MESSAGE SELECTORS MENU 类类类类类类 MESSAGE CATEGORIES MENU 类类类类 CLASSNAMES MENU Instance Class 正文 TEXT
413语言核心 (1)保留字 有五个ni1,true, false,se1f, super (2)字面量 字符字面量/数字面量/符号字面量/数组字面量 (3)限定符和特殊符号 $##() 1:=或← []()} (4)变量 实例变量/类变量/临时变量/全局变量/汇聚变量/参数
4.1.3 语言核心 (1) 保留字 只有五个nil,true,false,self,super (2) 字面量 字符字面量 /数字面量 / 符号字面量 / 数组字面量 (3) 限定符和特殊符号 " ' $ # #( ) , ; : | :=或← ↑ [ ] ( ) {} (4) 变量 实例变量 / 类变量 / 临时变量 / 全局变量 / 汇聚变量 / 参数
(5)消息表达式与语句 消息表达式的一般格式是 对象选择子参数 对象 选择子 Smalltalk的消息表达式有三种: 单目的不带参数 tree class消息 class发向tree,得到tree的类 0.3 sin 消息sin发向0.3,得sin(0.3) Array new消息new发向 Array,创建- Array 的实例
(5) 消息表达式与语句 消息表达式的一般格式是: 对象 选择子 参数 Smalltalk的消息表达式有三种: ·单目的 不带参数 tree class 消息class 发向tree,得到tree的类。 0.3 sin 消息sin 发向0.3,得sin(0.3) Array new 消息new 发向Array,创建-Array 的实例 对象 选择子-参数
双目的 3+4消息、‘+′带参数4发向对象3,得对象7。 100@50消息‘@′带参数50发向对象100,得(100,50 (sum/count) reserve amount 双目,括号优先单目优先 双目
· 双目的 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′。 f array at:4。数组第4元素与‘foo′同名
·关键字消息表达式 用关键字(带有‘:’的选择子)描述的双目表达式,也是自 左至右释义。 anArray at:3 put:100 finances totalSpentOn: ‘food’ ·赋值 变量在不同时间可赋以不同对象,任何表达式加 上赋值前缀‘← ’ quantity←19. name←‘chapter 1’ 。 foo ← array at:4。 数组第4元素与‘foo’同名
块表达式 L: X:y| BicPen goto: X@y] L:X:y| BicPen goto: X@y] value: 100 value: 250 BicPen goto 100@ 250 I ablock aBlock+[ This is a string' displayat: 500@ 500] Display white. aBlock value
·块表达式 [:x:y|BicPen goto:x@y] [:x:y|BicPen goto:x@y] value:100 value:250 BicPen goto 100@ 250 |aBlock| aBlock←['This is a String' displayAt:500@ 500]. Display white. aBlock value