第1篇 复习ANSI-C语方 1
第1章 嵌入式时代最划算策略 3
1.1迎接高质量的嵌入式软件时代 4
1.2基于Turbo C2.0环境的评估 4
1.2.1加入第1个类 4
1.2.2加入第2个类 6
1.2.3加入第3个类 9
1.2.4加入第4个类 11
1.2.5评估统计图 13
1.3基于Visual C++环境的评估 14
1.4LW OOPC与C++的比较和评估 17
第2章 C程序的基本组成 19
2.1认识C语言与LW_OOPC语言 20
2.1.1C语言的身世背景 20
2.1.2C影响C++、Java、C#等语言文化 20
2.1.3用C语言编写面向对象(Object-Oriented)程序 21
2.1.4面向对象概念让UML与C携手合作 22
2.2函数:C程序的基本结构 25
2.2.1指令、函数与程序 25
2.2.2函数间的调用(Call) 25
2.2.3库函数 26
2.3变量的概念 26
2.3.1数据分类与变量 26
2.3.2声明变量 27
2.4变量的声明格式 27
2.5如何输出数据 28
2.6如何传递参数 29
2.7如何替函数和变量命名 30
第3章 C语言的数据类型 33
3.1基本数据类型 34
3.2整数类型 34
3.2.1shortint类型 35
3.2.2longint类型 36
3.3无符号整数 37
3.3.1无符号字符(unsignedchar) 38
3.3.2无符号短整数(unsignedshortint) 38
3.3.3无符号(长)整数(unsignedint) 39
3.4整数的输出格式 41
3.5字符类型 43
3.5.1一般字符 43
3.5.2控制字符 45
3.6浮点数类型 46
3.6.1float类型 46
3.6.2double类型 48
第4章 C的数据运算 51
4.1基本运算符号 52
4.2算术及赋值运算 52
4.3关系运算 56
4.4逻辑运算符号 57
4.5算术赋值运算符号 59
4.6加1及减1运算符号 60
4.7取地址运算符号 61
4.8按位运算符号 62
4.8.1&、|、^及~运算符号 63
4.8.2<<及>>运算符号 65
4.8.3按位赋值运算符号 66
4.9类型转换运算符号 67
第5章 决策与循环 69
5.1逻辑运算与决策 70
5.2嵌套的if指令 71
5.3多选1的抉择 72
5.4while循环 74
5.5for循环 75
5.5.1基本格式 75
5.5.2各式各样的for循环 76
5.6do循环 78
第6章 C语言的指针 79
6.1认识指针 80
6.1.1指针是什么 80
6.1.2指针的声明 80
6.1.3指针的指针 81
6.2传递指针参数 82
6.3函数回传指针 83
6.4函数指针 84
第7章 结构(struct)及动态内存分配 87
7.1C语言的结构(struct) 88
7.2结构指针 90
7.3传递结构参数 91
7.4结构内的函数指针 92
7.4.1先介绍typedef指令 92
7.4.2复习函数指针 93
7.4.3把函数指针放入结构里 94
7.4.4让函数存取结构里的数据细项 94
7.5动态内存分配 97
7.5.1malloc()及free()函数 97
7.5.2calloc()及realloc()函数 100
第8章 外部变量与静态函数 101
8.1变量的储存种类 102
8.2自动变量 103
8.3外部变量 103
8.4外部静态变量 104
8.5extern种类 107
8.6静态函数 110
第9章 数组与字符串 113
9.1数组的意义 114
9.21维数组 114
9.31维数组与指针 115
9.42维数组与多维数组 120
9.52维数组与指针 121
9.6数组参数 123
9.6.11维数组参数 123
9.6.22维数组参数 124
9.7为数组赋初值 125
9.8使用字符串 126
9.8.1何谓字符串 126
9.8.2给予字符串初值 126
9.9库字符串函数 127
9.10传递字符串参数 129
第10章 预处理程序 131
10.1预处理程序的工作 132
10.2使用宏 132
10.2.1宏常数 132
10.2.2#define与typedef的区别 134
10.2.3带参数的宏 135
10.2.4取消宏 138
10.3添加头文件 139
10.4条件性编译 140
10.4.1条件性编译概述 140
10.4.2条件性定义 141
10.5认识MISOO的lw_oopc.h宏文件 143
10.5.1复习重要的C宏 143
10.5.2使用lw_oopc.h头文件 145
第2篇 介绍面向对象概念及OOPC 149
第11章 认识对象(Object) 151
11.1自然界的对象(NaturalObject) 152
11.1.1对象(Object) 152
11.1.2信息(Message) 152
11.1.3事件(Event) 152
11.2软件对象(SoftwareObject) 153
11.2.1“抽象”的意义 153
11.2.2抽象表示 153
11.2.3数据和函数 153
11.2.4历史的足迹 154
11.3对象与函数 155
11.3.1函数的角色 155
11.3.2对象与类 156
11.3.3类的用途:描述对象的共同特点 156
11.4对象与类 157
11.4.1类的用途 157
11.4.2定义类 158
11.5对象指针 161
11.6构造器(Constructor) 162
11.7类设计的实例说明 163
11.7.1以电灯(Light)类为例 163
11.7.2以数学矩阵(Matrix)类为例 164
第12章 对象沟通方法 167
12.1“信息传递”沟通方法 168
12.2“信息传递”示例说明 169
12.2.1分析与设计 169
12.2.2设计OOPC类 169
12.2.3生成OOPC对象 170
12.3以OOPC实现:使用TurboC 170
12.4以OOPC实现:使用VC++2005 173
第13章 对象沟通实例 181
13.1以向量类封装1维数组 182
13.1.1定义Vector类 182
13.1.2运用malloc()库函数 183
13.1.3运用#define语句 184
13.1.4运用void*指针 185
13.2以矩阵类封装2维数组 189
13.2.1定义Matrix类 189
13.2.2Matrix对象包含Vector对象 190
第14章 认识接口(Intertace) 197
14.1如何定义接口 198
14.2多个类实现同一接口 201
14.3以接口实现多态性(Polymorphism) 204
14.4一个类实现多个接口 208
第15章 接口应用实例 213
15.1电池接口的用意 214
15.2设计电池接口 214
15.3以OOPC实现接口设计 216
第16章 集合对象链表(LinkedList) 221
16.1认识集合对象 222
16.2以OOPC实现LList集合类 224
16.3应用实例说明 229
第17章 LWOOPC宏的设计思维 235
17.1前言 236
17.2从ANSI-C出发 236
17.3运用C的结构 237
17.4设计构造器 238
17.5运用函数指针 239
17.6运用C宏 240
17.6.1定义宏:CLASS(类名称) 241
17.6.2定义宏:CTOR(类名称) 242
17.7定义接口(Interface)宏 243
17.8定义CTOR2()构造器宏 246
17.9将宏独立成1w_oopc.h头文件 248
第3篇 介绍UML 251
第18章 认识UML 253
18.1UML:世界标准对象模型语言 254
18.2UML的演化 254
18.3UML的基本元素 256
18.4UML的图示 256
第19章 UML类图 259
19.1为什么需要面向对象思维 260
19.2为什么需要设计类 261
19.3为什么要描述类间的关系 263
19.3.1类间的组合关系 263
19.3.2类间的结合关系 265
19.4为什么要绘制UML类图 267
19.5如何绘制UML类图 270
19.5.1EA的类图 270
19.5.2StarUML的类图 272
19.5.3JUDE的类图 272
19.6如何得到类 274
19.6.1从对象归类而得到类 274
19.6.2从领域概念(DomainConcepts)找到类 276
第20章 UML用例图 279
20.1为什么需要用例图 280
20.2用例的内涵是什么 280
20.2.1用例图表达What及Who 281
20.2.2用例描述表达How及When 282
20.3用例与对象的密切关系 283
20.4用例的经济意义 284
20.5用例间的关系 286
20.5.1udBill-1UC描述:结账 288
20.5.2udBill-1UC描述:买汉堡套餐 288
20.5.3udBill-2UC描述:结账 289
20.5.4udBill-2UC描述:买汉堡套餐 289
20.5.5udBill-2UC描述:赠送玩具 289
20.6企业用例与系统用例 290
20.6.1上、下层级的用例 290
20.6.2上、下层级用例的美妙关联 290
20.6.3从“上层用例”导出“下层用例”的步骤 292
20.7如何绘制UML用例图 295
第21章 UML序列图 299
21.1UML序列图的意义 300
21.2UML序列图的语法 301
21.3如何绘制UML序列图 302
21.4从序列图落实到OOPC类 304
21.4.1共享类的考虑 305
21.4.2对应到类 306
21.4.3对应到函数 306
21.4.4对方对象→信息名称(参数) 308
21.5UML序列图示例说明 309
21.5.1绘制用例图 309
21.5.2绘制类图 310
21.5.3绘制序列图 311
21.5.4对应到OOPC类 312
第22章 UML对象状态图 315
22.1Why状态图 316
22.2简介UML状态图 316
22.2.1状态、事件与转移 316
22.2.2活动 318
22.2.3复合状态 319
22.2.4子机状态 320
22.2.5历史状态 321
22.2.6决策 323
22.2.7汇合 323
22.2.8并行 324
22.2.9同步 324
22.3使用UML绘图工具 325
22.3.1绘图区 325
22.3.2工具箱 326
22.3.3画一个状态 326
22.3.4状态转移 327
22.3.5活动的表示 328
22.4如何以OOPC实现UML状态图 329
22.4.1举例:以小灯状态为例 329
22.4.2举例:以冰箱的状态为例 332
22.4.3举例:以银行账户(Account)的状态为例 334
第4篇 UML+OOPC实用示例 341
第23章 UML+OOPC实用示例之一 343
23.1形形色色的涂鸦程序 344
23.2涂鸦程序示例说明 345
23.3涂鸦系统分析与设计 346
23.3.1绘制系统用例(UseCase)图 346
23.3.2绘制类图 348
23.3.3绘制Scribble状态图 349
23.3.4绘制序列图 350
23.3.5用例:“涂鸦” 350
23.3.6用例:“播放” 351
23.4涂鸦程序的实现:使用OOPC语言 352
第24章 UML+OOPC实用示例之二 365
24.1认识“录音”概念和技术 366
24.1.1认识PCM规格 366
24.1.2设定录音格式 366
24.1.3设定缓冲区格式 367
24.1.4将音频数据写入.wav声音文件 367
24.1.5使用Win32所提供的录音API 368
24.2单纯“录音”的示例分析 368
24.2.1绘制系统用例图 368
24.2.2绘制类图 368
24.2.3绘制序列图 370
24.3“录音/播放”示例的分析 370
24.3.1绘制系统用例图 370
24.3.2绘制类图 372
24.3.3绘制序列图 372
24.4“录音/播放”示例的实现 372
第25章 UML+OOPC实现示例之三 385
25.1层次分析(AHP)法简介 386
25.2AHP的分析步骤 387
25.3如何得到权数值 388
25.3.1成对相比 388
25.3.2从“成对比值”算出“权数值” 391
25.3.3“成对比值”的一致性检验 396
25.4“AHP”示例分析与设计 398
25.4.1绘制系统用例图 398
25.4.2绘制类图 399
25.4.3绘制序列图 400
25.5“AHP”示例的实现:使用OOPC 402
25.5.1准备决策数据 402
25.5.2以OOPC编写AHP程序 404
第26章 UML+OOPC实用示例之四 413
26.1什么是半加器 414
26.2设计一个“位计算器” 415
26.2.1以软件模拟硬件的意义 415
26.2.2设计单位计算器的操作画面 416
26.2.3设计单位计算器的UML状态图 417
26.3实现位计算器:使用OOPC 418
第5篇 面向对象Keil C51语言:在单片机(SOC)上的应用 427
第27章 替KeilC51黄袍加身 429
27.1以200Bytes代价换得优雅架构 430
27.23种弹性又高雅的写法 431
27.2.1动态型(Dynamic,昵称为豪华型) 431
27.2.2静态型(Static,昵称为标准型) 431
27.2.3纯粹静态型(PureStatic,昵称为精简型) 432
27.3静态(Static)型写法及其评估 432
27.4纯粹静态(Pure Static)型写法及其评估 441
27.5动态(Dynamic)型写法及其评估 444
第28章 KeilC51的特殊数据类型 449
28.18051的CODE存储区 450
28.28051的DATA存储区 450
28.3KeilC的存储模式 451
28.4KeilC的专用数据类型 452
第29章 以KeilC51定义类 455
29.1定义类 456
29.2构造器(Constructor) 456
29.3KeilC51类设计之实例说明 457
29.3.1分析与设计 457
29.3.2以KeilC实现红绿灯控制程序 459
29.3.3红绿灯类的另一种写法 461
第30章 应用范例一 463
30.1以ToggleLight电灯为例 464
30.1.1分析与设计 464
30.1.2设计OOPC类 464
30.1.3以OOPC实现:使用KeilC 465
30.2以红绿灯控制系统为例 469
30.2.1分析与设计 469
30.2.2以LW_OOPC实现:使用KeilC 473
第31章 应用范例二 479
31.1界面用途:从硬件的PnP谈起 480
31.1.1硬件端口(Port)就是接口 480
31.1.2软件接口 480
31.2LED显示器控制设计(1) 481
31.2.1分析与设计 481
31.2.2UML图示 482
31.2.3以KeilC实现范例 483
31.3LED显示器控制设计(2) 486
31.3.1分析与设计 486
31.3.2以KeilC实现范例 487
31.4LED显示器控制设计(3) 489
第32章 应用范例三 495
32.1模式观念 496
32.2软件设计模式 496
32.2.1Why设计模式 496
32.2.2设计模式的起源 497
32.3IoC模式简介 498
32.3.1传统细节设计方法:高度耦合性 498
32.3.2使用接口方法:中等耦合性 500
32.3.3使用IoC模式:低度耦合性 501
32.4以8051控制LED显示器为例 504
32.4.1分析与设计 504
32.4.2以KeilC实作范例 505
32.5IoC与COR模式的携手合作 508
第33章 应用范例四 515
33.1前言 516
33.2活用State模式 516
33.2.1温故而知新 516
33.2.2State模式 518
33.3以飞机状态控制为例 522
33.3.1需求分析(Analysis) 522
33.3.2以KeilC实现范例(1) 523
33.3.3以KeilC实现范例(2) 527
33.4结语:类、接口与模式 532
33.5祝福您 536
关于本书的习题和示例代码 537
著作权说明 538