目录 1
第一章 系统构造 1
1.1 系统构造与软件危机 3
1.2 对策 6
1.2.1 封闭式策略 7
1.2.2 开放式策略 8
1.2.3 综合策略 10
1.3 OOP程序设计 10
1.4 小结 14
第二章 面向对象程序设计:目的 15
2.1 软件生产率 18
2.1.1 软件规模 18
2.1.2 软件界面 18
2.2 组装技术 20
2.2.1 UNIX的管道/过滤技术 20
2.2.2 子程序库技术 21
2.2.3 软件IC技术 22
2.2.1 软件IC的意义 21
2.2.5 讨论 25
2.3 约束时刻与系统的耦合强度 26
2.3.1 静态约束与紧耦合系统 27
2.3.2 动态约束与松耦合系统 28
2.4 小结 31
第三章 面向对象程序设计:语言 33
3.1 Smalltalk-80 33
3.1.1 虚拟机 35
3.1.2 程序设计语言 37
3.1.3 消息表达式 37
3.1.4 块结构 39
3.1.5 程序设计坏境 10
3.1.6 Smalltalk的应用 12
3.2 Ada 43
3.2.1 Ada的OOP特性 43
3.2.2 程序包 44
3.2.3 讨论 45
3.3 C-- 46
3.3.1 C与C+- 47
3.3.2 类 47
3.3.3 友函数 48
3.3.4 成员函数 49
3.3.5 导出类 50
3.3.6 操作符重写 51
3.3.7 存储管理 52
3.3.8 分别编译 53
3.4 小结 53
第四章 对象、消息和封装 55
——面向应用的程序设计 55
4.1 对象、消息和封装 55
4.1.1 对象 55
4.1.2 消息 56
4.1.3 封装 57
4.2 Objective-C 58
4.3 对象标识符 61
4.4 消息表达式 62
4.4.1 一元消息表达式 63
4.4.2 关键字消息表达式 64
4.4.3 消息表达式的类型 65
4.5 生成对象 65
4.6 例 66
4.6.1 例:Pen 66
4.6.2 例:PencilCup 68
4.7 小结 72
第五章 类、继承和类簇 73
——面向系统的程序设计 73
5.1 类 73
5.1.1 实例 74
5.1.2 对象的组成 74
5.1.3 实例化 75
5.2 继承 78
5.3 类:软件IC及其描述文件 79
5.3.1 软件IC 79
5.3.2 类描述文件 80
5.4 继承的实现 82
5.4.1 实例变量的继承 83
5.4.2 实例方法的继承 83
5.4.3 生成方法的继承 86
5.5 方法 89
5.5.1 实例方法 90
5.5.2 变量self 92
5.5.3 生成方法 94
5.5.4 变量super 96
5.5.5 继承和封装的综合运用 97
5.6 编译和链接 98
5.6.1 类簇 98
5.6.2 涉及多类簇的程序开发 102
5.6.3 实现 102
5.6.4 多重继承 101
5.7 小结 106
第六章 面向对象程序设计:依赖图练习 108
6.1 信息网络 108
6.1.1 目录 111
6.1.2 规格说明单 111
6.1.3 工程技术决窍 113
6.2 依赖图应用程序 114
6.3 设计阶段 115
6.3.1 画蓝图 116
6.3.2 确定与使用者的接目 117
6.3.3 回顾:面向对象的设计 121
6.4 实现阶段 122
6.4.4 软件IC库 122
6.4 2 Graph类:Graph.m 126
6.4.3 Node类:Node.m 127
6.4.4 驱动程序:mGraph.m 128
6.5 成本与效益度量 130
6.5.1 源程序量比较 131
6.5.2 二进制程序量比较 133
6.5.3 运行程序量比较 134
6.5.4 运行速度比较 139
6.6 总结 141
第七章 基础类簇 142
7.1 概述 143
7.2 类Object 144
7.2.1 数据说明 145
7.2.2 内存分配/释放方法 148
7.2.3 依赖图练习回预 150
7.2.4 实用方法 151
7.2.5 对象的激活/冻结 153
7.2.6 有关进行比较的方法 158
7.2.7 消息操作值 159
7.2.8 出错处理 160
7.3 类Array,ByteArray和IdArray 161
7.3.1 类Array 162
7.3.2 类ByteArray 163
7.3.3 类IdArray 161
7.4 消息函数 164
7.5 小结 170
第八章 汇集类簇 172
8.1 汇集 172
8.2 类Collection 174
8.3 类Sequence 177
8.4 类OrderedCollection 179
8.5 类Set 182
8.5.1 方法—add:anObject 185
8.5.2 方法—?ilter:newObject 186
8.5.3 方法—expand 187
8.5.4 方法—(id*)findElementOrNil:anElement 187
8.5.5 方法—remove:oldObject 190
8.6 集合的综合应用 191
8.7 小结 192
第九章 图符式用户界面 193
9.1 面向对象式语言和图符式用户界面 195
9.2 用户界面体系结构 197
9.3 make程序 199
9.4 workbench程序 203
9.4.1 应用层 203
9.4.2 虚终端层 206
9.4.3 表示层 207
9.5 workbench用户界面便览 211
9.5.1 类属应用程序 213
9.5.2 初始化 216
9.5.3 建立一个视图层次 219
9.5.4 定义与具体应用有关的视图 222
9.5.5 剪裁与填充 226
9.5.6 在透明视图上作画 227
9.5.7 响应事件 231
9.5.8 选择视图 237
9.5.9 擦除显示的图像 242
9.5.10 视图之间的依赖性 243
9.6 其它 245
9.7 构造和使用图符式用户界面的成本 246
9.7.1 源程序量 247
9.7.2 可执行程序的大小 251
9.8 总结 251
第十章 更深入的课题 254
10.1 堆压缩与垃圾回收 254
10.1.1 对象表 256
10.2 自动垃圾回收 258
10.2.1 标记/擦除方式 258
10.2.2 引用计数方式 259
10.3 虚拟对象存储 260
10.3.1 全局空间有多大 260
10.3.2 能力寻址 261
10.4 并发 262
10.4.1 协同程序 262
10.5 分布式系统 264
10.6 合作系统 265
附录A 规格说明单 269
A.1 关于这些规格说明 269
A.2 技术规格说明段 270
A.3 全局说明 272
A.4 抽象数组父类 276
A.5 字符数组 279
A.6 抽象汇集类 283
A.7 对象引用数组 290
A.8 所有对象的抽象类 295
A.9 有序汇集类 304
A.10 对类Collection及IdArray成员的枚举 306
A.11 集合的类 309
附录B 手工编制的依赖图应用程序 313
B.1 说明文件:gr.h 313
B.2 类Node:Node.m 316
B.3 类Graph:Graph.m 318
B.4 类Set:Set.m 319
B.5 驱动程序:cDriver.m 323
B.6 语法分析程序:Syntax.m 324
OOP术语表 326