| ISBN | 出版时间 | 包装 | 开本 | 页数 | 字数 |
|---|---|---|---|---|---|
| 未知 | 暂无 | 暂无 | 未知 | 0 | 暂无 |
第1章 需求分析:追求完美VS.容忍缺陷
1.1 开发日记:2003年11月6日,星期四
1.2 鱼和熊掌
1.3 项目目标和项目范围
1.3.1 项目目标
1.3.2 项目范围
1.4 需求分析的基本概念
1.4.1 什么是需求?
1.4.2 功能性需求和非功能性需求
1.4.3 项目干系人
1.4.4 需求分析
1.5 FISHGUI的需求分析
1.5.1 小A的错误
1.5.2 正确的需求分析方法
1.6 变化的需求
1.6.1 需求变更的原因和对策
1.6.2 FishGUI项目的需求变化
1.7 总结
第2章 用例分析:海底总动员VS.云中漫步
2.1 开发日记:2003年11月10日,星期一
2.2 为什么使用UML?
2.3 用例模型
2.3.1 什么是用例模型?
2.3.2 场景
2.3.3 用例模型的应用价值
2.4 用例建模
2.4.1 确定系统边界和参与者
2.4.2 确定用例级别
2.4.3 FishGUI的用例建模
2.5 总结
第3章 设计方法:面向过程VS.面向对象
3.1 开发日记:2003年11月13日,星期四
3.2 面向过程的方法适合FISHGUI吗?
3.3 如何衡量软件的设计质量?
3.4 面向对象的设计方法
3.4.1 关于面向对象的两种误解
3.4.2 面向对象的基本概念
3.4.3 面向对象的基本原则
3.4.4 面向对象的开发过程
3.5 框架和类库
3.5.1 框架和类库的区别
3.5.2 框架的分类
3.6 软件生命周期模型
3.6.1 瀑布模型
3.6.2 迭代模型
3.6.3 瀑布模型和迭代模型的比较
3.7 总结
第4章 模式:变化之美VS.永恒之道
4.1 开发日记:2003年11月14日,星期五
4.2 模式
4.2.1 模式的起源
4.2.2 模式的概念
4.2.3 模式的分类
4.3 设计模式
4.3.1 如何学习和实践设计模式?
4.3.2 蕴涵在设计模式中的设计原则和理念
4.3.3 设计模式最根本的意图是适应需求变化
4.3.4 针对接口编程,而不要针对实现编程
4.3.5 优先使用聚合,而不是继承
4.3.6 设计模式的分类
4.3.7 设计模式的意图和设计要点
4.3.8 设计模式中的简单和复杂
4.4 总结
第5章 分析模型:实体类VS.软件类
5.1 开发日记:2003年11月17日,星期一
5.2 面向对象的思维方式
5.3 面向对象分析
5.3.1 面向对象分析与面向对象设计的区别
5.3.2 实体类和软件类
5.3.3 用例驱动的面向对象分析工作
5.4 FISHGUI的分析模型
5.4.1 提取实体对象和实体类
5.4.2 提取属性
5.4.3 提取关系
5.4.4 添加边界类
5.4.5 添加控制类
5.4.6 绘制类图
5.4.7 绘制顺序图
5.4.8 变化的需求——快捷键表
5.4.9 编制术语表
5.5 总结
第6章 架构分析:功能分解VS.对象分析
6.1 开发日记:2003年11月20日,星期四
6.2 架构分析的基本概念
6.2.1 什么是架构分析?
6.2.2 架构分析的作用
6.2.3 避免走入功能分解的误区
6.2.4 软件系统的类型和规模
6.2.5 以架构为中心
6.2.6 架构模式
6.3 FISHGUI系统的架构分析
6.3.1 分层模式
6.3.2 FishGUI的分层架构
6.3.3 模型-视图-控制器(MVC)模式
6.3.4 应用层的MVC模式
6.3.5 子系统设计
6.3.6 FishGUI的子系统设计
6.4 总结
第7章 面向对象设计:共性VS.个性
7.1 开发日记:2003年11月24日,星期一
7.2 对象和类的粒度
7.2.1 CPU难题
7.2.2 继承的粒度
7.2.3 多重继承
7.2.4 聚合的粒度
7.2.5 纯粹为代码复用而存在的设计方案
7.2.6 类结构的重构
7.3 FISHGUI的面向对象设计
7.3.1 面向对象设计的工作步骤
7.3.2 细化和重组类
7.3.3 细化和实现类间关系,明确其可见性
7.3.4 增加遗漏的属性,指定属性的类型和可见性
7.3.5 分配职责,定义执行每个职责的方法
7.3.6 对消息驱动的系统,明确消息传递方式
7.3.7 利用设计模式进行局部设计
7.3.8 画出详细的顺序图或协作图
7.4 总结
第8章 外观模式:统一接口VS.暴露细节
8.1 开发日记:2003年12月1日,星期一
8.2 什么是接口?
8.2.1 Java语言中的接口
8.2.2 C++语言的接口
8.3 外观(FACADE)模式
8.3.1 设计意图
8.3.2 基本结构
8.4 FISHGUI适配器子系统的外观模式实现
8.4.1 适配器子系统的详细设计
8.4.2 适配器子系统的移植
8.4.3 外观类
8.5 总结
第9章 观察者模式:间接依赖VS.直接依赖
9.1 开发日记:2003年12月2日,星期二
9.2 双向依赖
9.2.1 头文件的循环嵌套问题
9.2.2 包的双向依赖问题
9.3 观察者(OBSERVER)模式
9.3.1 设计意图
9.3.2 基本结构
9.3.3 实现方法
9.4 FISHGUI系统中的观察者模式
9.4.1 为什么采用观察者模式?
9.4.2 FishGUI中观察者模式的实现方法
9.4.3 观察者模式的优点
9.5 总结
第10章 单件模式:隐式全局变量VS.显式全局变量
10.1 开发日记:2003年12月4日,星期四
10.2 关于历史问题的回顾
10.2.1 传统的思维方式
10.2.2 奇特的解决方案
10.2.3 麻烦事
10.3 全局变量——程序员心中永远的痛
10.4 单件(SIGLETON)模式
10.4.1 设计意图
10.4.2 基本结构
10.4.3 实现方法
10.5 FISHGUI中的单件模式
10.5.1 标准的单件类
10.5.2 单件类的内存释放
10.5.3 单件类的灵活运用
10.5.4 单件类的创建顺序
10.6 总结
第11章 复合模式:透明VS.安全
11.1 开发日记:2003年12月8日,星期一
11.2 类图和对象图
11.2.1 类图
11.2.2 对象图
11.3 继承树的透明和安全
11.3.1 透明的继承树
11.3.2 透明和职责分配的冲突
11.3.3 安全的类型转换
11.3.4 虚函数的声明方式
11.4 复合(COMPOSITE)模式
11.4.1 设计意图
11.4.2 基本结构
11.4.3 实现方法
11.5 FISHGUI系统的复合模式
11.5.1 最透明的GUI复合模式
11.5.2 FishGUI中的最终实现
11.6 总结
第12章 迭代器模式:继承VS.模板
12.1 开发日记:2003年12月11日,星期四
12.2 关于PROTECTED的一个小问题
12.3 只实现一次,仅只一次
12.4 容器类
12.4.1 双向链表
12.4.2 单向链表
12.4.3 已知的问题
12.5 迭代器(ITERATOR)模式
12.5.1 设计意图
12.5.2 基本结构
12.5.3 实现方法
12.6 FISHGUI中迭代器模式的具体实现
12.6.1 智能指针
12.6.2 模板的“静态多态性”
12.6.3 可复用的算法实现
12.6.4 添加迭代器
12.7 迭代器遍历时的稳定性
12.8 总结
第13章 创建型模式:工厂方法VS.抽象工厂
13.1 开发日记:2003年12月15日,星期一
13.2 创建型模式
13.3 工厂方法(FACTORY METHOD)模式
13.3.1 设计意图
13.3.2 基本结构
13.3.3 实现方法
13.4 抽象工厂(ABSTRACT FACTORY)模式
13.4.1 设计意图
13.4.2 基本结构
13.4.3 实现方法
13.5 FISHGUI的创建型模式
13.5.1 工厂方法模式
13.5.2 抽象工厂模式
13.6 策略(STRATEGY)模式
13.6.1 设计意图
13.6.2 基本结构
13.7 FISHGUI中抽象工厂模式和策略模式的组合
13.8 对象的创建和删除
13.9 总结
第14章 消息:广义消息VS.狭义消息
14.1 开发日记:2003年12月17日,星期三
14.2 消息的本质
14.2.1 广义消息和狭义消息
14.2.2 消息和回调函数
14.2.3 同步消息和异步消息
14.2.4 消息网
14.3 消息处理模式
14.4 命令(COMMAND)模式
14.4.1 设计意图
14.4.2 基本结构
14.4.3 实现方法
14.5 中介者(MEDIATOR)模式
14.5.1 设计意图
14.5.2 基本结构
14.5.3 实现方法
14.6 职责链(CHAIN OF RESPONSIBLITY)模式
14.6.1 设计意图
14.6.2 基本结构
14.6.3 实现方法
14.7 观察者(OBSERVER)模式
14.8 FISHGUI的消息处理模式
14.8.1 职责链模式
14.8.2 对象树和继承树上的消息传递
14.8.3 职责链模式的具体实现
14.9 JAVA和.NET的消息处理模式
14.9.1 JDK 1.0 AWT的职责链模式
14.9.2 JDK 1.1 AWT的观察者模式
14.9.3 用多播方式发送消息
14.9.4 .NET基于委托的观察者模式
14.10 总结
第15章 模板方法模式:正向依赖VS.依赖倒置
15.1 开发日记:2003年12月23日,星期二
15.2 模板方法(TEMPLATE METHOD)模式
15.2.1 设计意图
15.2.2 基本结构
15.2.3 实现方法
15.3 FISHGUI中的模板方法模式
15.3.1 FG_Application类中的模板方法模式
15.3.2 用模板方法模式进行重构
15.3.3 基于模板方法模式实现的消息分发机制
15.4 总结
第16章 MFC消息映射表模式:虚函数VS.映射表
16.1 开发日记:2003年12月25日,星期四
16.2 虚函数表
16.3 MFC消息映射表(MESSAGE MAP)模式
16.3.1 设计意图
16.3.2 实现方法
16.4 FISHGUI中的消息映射表模式
16.4.1 实现方法
16.4.2 优点
16.4.3 缺陷
16.5 总结
第17章 适配器模式:类模式VS.对象模式
17.1 开发日记:2004年1月5日,星期一
17.2 类模式和对象模式
17.3 适配器(ADAPTER)模式
17.3.1 设计意图
17.3.2 基本结构
17.3.3 实现方法
17.4 FISHGUI中的适配器模式
17.4.1 被适配类
17.4.2 对象适配器模式
17.4.3 类适配器模式
17.4.4 适配多个派生类
17.5 总结
第18章 MVC模式:三国演义VS三分归一
18.1 开发日记:2004年1月8日,星期四
18.2 “提炼类”和“将类内联化”
18.3 模型-视图-控制器(MVC)模式
18.3.1 设计意图
18.3.2 基本结构
18.3.3 实现方法
18.3.4 MVC模式的不足
18.4 FISHGUI中的MVC模式
18.5 总结
第19章 C++编码经验谈:理论VS.实践
19.1 开发日记:2004年1月12日,星期一
19.2 博大精深的C++语言
19.3 CONST的使用
19.3.1 为什么要使用const?
19.3.2 标识常量
19.3.3 标识类的常量成员
19.3.4 标识输入和输出参数
19.3.5 修饰成员函数
19.3.6 消除常量特性
19.4 NEW和DELETE
19.4.1 用new和delete代替malloc()和free()
19.4.2 new和delete应使用相同的形式
19.4.3 缺省构造函数和转换构造函数
19.5 谨慎地使用隐式类型转换
19.6 拷贝构造函数和赋值运算符函数
19.6.1 定义拷贝构造函数和赋值运算符函数
19.6.2 赋值运算符函数要返回*this的引用
19.7 数据成员的初始化
19.7.1 初始化比赋值高效
19.7.2 初始化顺序
19.8 传值、传指针和传引用
19.8.1 对于大型对象尽量传引用
19.8.2 有时也必须使用传值的方式
19.9 运算符重载
19.9.1 成员运算符函数和全局运算符函数
19.9.2 “++”和“--”运算符
19.10 虚析构函数
19.10.1 基类和聚合类的释放
19.10.2 虚析构函数
19.11 总结
附录A:FISHGUI的安装和使用
下载
解压
目录结构
编译运行
安装注意事项
ROSE模型
文档
移植步骤
附录B:FISHGUI的改进
异步消息传输
消息队列
消息循环
观察者模式
裁剪
视口
扩展控件库
中文处理
附录C:参考文献
参考文献