详细设计基础 
详细设计的出发点 
- 需求开发的结果:需求规格说明和需求分析模型;
 - 软件体系结构的结果:软件体系结构设计方案和原型。
 
面向对象设计 
面向对象设计的过程 重点 
- 建立设计模型,通过职责建立静态设计模型,通过协作建立动态设计模型。 
- 明确抽象类的职责与关系,并添加辅助类(职责)
 - 明确抽象对象之间的协作与对象的创建,并选择合适的控制风格(协作)
 
 - 设计模型重构。 
- 高内聚低耦合(模块化思想)
 - 隐藏职责与变更(信息隐藏思想)
 - 利用设计模式重构
 
 
通过职责建立静态设计模型 
- 明确抽象类之间的关系
 - 添加辅助类来完善概念类不能实现的功能
 
类之间的关系 重点
类之间的关系表达了相应职责的划分和组合,它们有绝对的强弱关系,即
具体的关系如下表
| 关系 | 关系短语 | 关系解释 | 图示 | 
|---|---|---|---|
| 依赖 | use | 被依赖的对象作为一种工具使用,其引用不被持有。 | ![]()  | 
| 关联 | have | 某个对象长期持有另一个对象的引用,但并没有其他任何强制性的约束。 | ![]()  | 
| 聚合 | own | 暗含存在集合的从属关系,但被聚合的对象还可以再被别的对象关联。 | ![]()  | 
| 组合 | be a part of | 有生命期的约束。被包含对象可以再被其他对象关联,但不能再与其他对象组合。 | ![]()  | 
| 继承 | be | 子类继承父类的全部接口和实现。 | ![]()  | 
| 实现 | implement | 实现接口中的全部方法。 | ![]()  | 
通过协作建立动态设计模型 重点 
明确抽象对象之间的协作 
协作的设计原则主要有以下两点
- 从小到大,将对象的小职责聚合形成大职责;
 - 从大到小,将大职责分配给各个小对象。
 
我们可以使用前文需求分析中的顺序图来进行设计。
明确对象的创建 
一般来说,对象的创建可以按照下表来考虑

选择合适的控制风格 
控制风格决定了如何来做职责分配的决策。一般来说,有三种独立的控制风格:集中式、委托式和分散式。这三种控制风格如下图所示

结构化设计 
TODO






