对象状态 ■对象状态只决定于对象的数据,和全局 数据、非对象的局部数据无关 ■对象状态和对象行为之间的关系 n<S1b1><s2,b2>b1=b2fs1=s2 ■如果你的程序不满足这条定理,有两种 情况: n类的某个方法使用了全局变量 ■类的某个方法中的局部变量初始值不确定
对象状态 ◼ 对象状态只决定于对象的数据,和全局 数据、非对象的局部数据无关 ◼ 对象状态和对象行为之间的关系: ◼ <s1,b1>,<s2,b2>,b1 = b2 iff s1 = s2. ◼ 如果你的程序不满足这条定理,有两种 情况: ◼ 类的某个方法使用了全局变量 ◼ 类的某个方法中的局部变量初始值不确定
对象关系:无法让人满意 ■目前的面向对象提供了三种对象关系描 述手段: 继承 ■聚集(组成) 关联:对象之间有关系 然而,现实世界中实体之间的关系丰富 多彩,岂止这三种?
对象关系:无法让人满意 ◼ 目前的面向对象提供了三种对象关系描 述手段: ◼ 继承 ◼ 聚集(组成) ◼ 关联:对象之间有关系! ◼ 然而,现实世界中实体之间的关系丰富 多彩,岂止这三种?
面向对象分析 目标:使用对象来描述问题域,进而抽象出问 题域类,并把求解问题的约束分配到问题域类 ■关注:是否完整、清晰的描述了问题域及约束 雷区:使用DFD,然后把每个处理节点都抽象 为一个类 ■雷区:很快就在某个局部(通常为方法)进入 算法、编码 ■面向对象分析模型的价值(领域重用、测试)
面向对象分析 ◼ 目标:使用对象来描述问题域,进而抽象出问 题域类,并把求解问题的约束分配到问题域类 ◼ 关注:是否完整、清晰的描述了问题域及约束 ◼ 雷区:使用DFD,然后把每个处理节点都抽象 为一个类 ◼ 雷区:很快就在某个局部(通常为方法)进入 算法、编码 ◼ 面向对象分析模型的价值(领域重用、测试)
面向对象设计 ■目标:引入类(族)实现问题域类(在概念层 次上),同时把系统约東分解、落实到类的方 法层次 ■关注:体系结构、接口、效率 雷区:有些类是‘上帝’,而有些类只是‘弱 智的代表’ ■雷区:盲目追求所谓封装、抽象类 ■面向对象设计模型的价值(设计 pattern,风险 跟踪、测试)
面向对象设计 ◼ 目标:引入类(族)实现问题域类(在概念层 次上),同时把系统约束分解、落实到类的方 法层次 ◼ 关注:体系结构、接口、效率 ◼ 雷区:有些类是‘上帝’,而有些类只是‘弱 智的代表’ ◼ 雷区:盲目追求所谓封装、抽象类 ◼ 面向对象设计模型的价值(设计pattern,风险 跟踪、测试)
适合面向对象的开发过程 必须能够管理面向对象分析、设计、实 现、测试、维护各阶段的模型的一致性 需要给出一套基于类的开发任务管理方 法(任务定义、风险管理、任务评审) ■能够在开发的不同阶段提供不同的知 库(不仅仅是类库!)以供重用 ■RUP是个不错的选择
适合面向对象的开发过程 ◼ 必须能够管理面向对象分析、设计、实 现、测试、维护各阶段的模型的一致性 ◼ 需要给出一套基于类的开发任务管理方 法(任务定义、风险管理、任务评审) ◼ 能够在开发的不同阶段提供不同的知识 库(不仅仅是类库!)以供重用 ◼ RUP是个不错的选择