传统方法的缺点 瀑布模型的缺点:僵化 瀑布模型要求:生命周期各阶段间遵守严格 的顺序。 实际情况是:软件开发往往在反复实践中完 成 瀑布模型要求:预先定义并“冻结”软件需 求 实际情况是:某些系统的需求的一个逐渐明 确的过程,且预先定义的需求到软件完成时 可能已经过时
1 • 瀑布模型的缺点:僵化 • 瀑布模型要求:生命周期各阶段间遵守严格 的顺序。 • 实际情况是:软件开发往往在反复实践中完 成。 • 瀑布模型要求:预先定义并“冻结”软件需 求。 • 实际情况是:某些系统的需求的一个逐渐明 确的过程,且预先定义的需求到软件完成时 可能已经过时
传统方法学的缺点: 本质上是功能分解,以实现功能的过程为中心, 而用户的需求变化主要是针对功能的。这就使 基于过程的设计不易被理解;且功能变化往往 引起结构变化较大,稳定性不好。 系统有明确的边界定义,且系统结构依赖于系 统边界的定义,这样的系统不易扩充和修改。 数据与操作分开处理,可能造成软构件对具体 应用环境的依赖,可重用性较差
2 本质上是功能分解,以实现功能的过程为中心, 而用户的需求变化主要是针对功能的。这就使 基于过程的设计不易被理解;且功能变化往往 引起结构变化较大,稳定性不好。 • 系统有明确的边界定义,且系统结构依赖于系 统边界的定义,这样的系统不易扩充和修改。 • 数据与操作分开处理,可能造成软构件对具体 应用环境的依赖,可重用性较差. 传统方法学的缺点:
软件工程 第6章面向对象的分析与设计方法
3 第6章 面向对象的分析与设计方法
§1.OOM 81.面向对象方法学 面向对象方法学(0 bject-0 riented Methodology), 简称00M ●特点:尽可能模拟人类习惯的思维方式,即问题 域与求解域在结构上尽可能一致。与传统方法相反, OOM以数据或信息为主线,把数据和处理结合构成 统一体—对象。这时程序不再是一系列工作在数 据上的函数集合,而是相互协作又彼此独立的对象 的集合
4 §1. OOM 面向对象方法学(Object - Oriented Methodology), 简称OOM §1. 面向对象方法学 特点:尽可能模拟人类习惯的思维方式,即问题 域与求解域在结构上尽可能一致。与传统方法相反, OOM以数据或信息为主线,把数据和处理结合构成 统一体 —— 对象。这时程序不再是一系列工作在数 据上的函数集合,而是相互协作又彼此独立的对象 的集合
例 桂林 北京 Message 9 Post-office Send by method 我想把邮局搬到 Attributes location: 我家门口,多加几个 employee Obiect 邮递员2、24小时都开门 唉,那就先送束花 Methods: 对不起 Post_office. Send (request, payment) send 本邮局不提供 此类服务 对象 Object=属性 Attribute+操作 Method 注意:对象内部的属性不允许外部用户直接改动,只有当它提供了 相应的服务操作时,用户才能通过发送消息来提请它执行
5 桂 林 北 京 Post-office Message Send by method 对象Object Object = 属性Attribute Attributes: location; employee; …… + 操作Method Methods: send; sell;…… 注意:对象内部的属性不允许外部用户直接改动,只有当它提供了 相应的服务操作时,用户才能通过发送消息来提请它执行。 我想把邮局搬到 我家门口,多加几个 邮递员,24小时都开门 …… 对不起, 本邮局不提供 此类服务 唉,那就先送束花吧 —— Post_office.Send (request, payment) 例:
§1.OOM OOM的四要素: ①对象 object):世界由对象组成。 ②类( class):具有相同属性和操作的对象可划分为类; 单个对象可视为某一类的实例( Instance) ③继承( inheritance):类可分层,下层子类与上层父类 有相同特征,称为继承
6 OOM的四要素: ①对象(object):世界由对象组成。 ② 类 (class) :具有相同属性和操作的对象可划分为类; 单个对象可视为某一类的实例 (instance)。 ③ 继承(inheritance):类可分层,下层子类与上层父类 有相同特征,称为继承。 §1. OOM
§1.OOM ④消息( message):对象间只能通过发送消息进行联 系,外界不能处理对象的内部数 据,只能通过消息请求它进行处 理(如果它提供相应消息的话)
7 ④ 消息(message):对象间只能通过发送消息进行联 系,外界不能处理对象的内部数 据,只能通过消息请求它进行处 理(如果它提供相应消息的话)。 §1. OOM
§1.OOM OOM= Object+ Class+Inheritance+Communication with messages OOM的优点: ①传统方法:面向过程设计,以计算为核心,数据与 操作分离,不易理解。 OOM:以 object为核心,强调对现实概念的模拟而 不强调算法。“面向对象方法学的基本原则 是按照人们习惯的思维方式建立问题域的模 型,开发出尽可能直观、自然地表现求解方 法的软件系统”。 ◆Clas:由特殊到一般的归纳( Induction ◆ Inheritance:由一般到特殊的演绎 deduction)
8 OOM:以object 为核心,强调对现实概念的模拟而 不强调算法。 “面向对象方法学的基本原则, 是按照人们习惯的思维方式建立问题域的模 型,开发出尽可能直观、自然地表现求解方 法的软件系统” 。 Class:由特殊到一般的归纳(induction) Inheritance:由一般到特殊的演绎(deduction) OOM = Object+Class+Inheritance+Communication with messages OOM的优点: ① 传统方法:面向过程设计,以计算为核心,数据与 操作分离,不易理解。 §1. OOM
§1.OOM ②传统方法:结构依赖于功能,不稳定。 OOM:以 object模拟实体,需求变化不会引起结构 的整体变化,因为实体相对稳定,故系统 也相应稳定。 ③传统方法:通过建立标准函数库来重用软构件。 但标准函数缺少必要的“柔性”,难 以适应不同场合的不同需要。 0OM:一个cass所有的 instances都可重用它的代 码;由 inheritance派生出的新的 class可 重用其父类的代码,并且可以修改、扩充 而不影响其父类的使用
9 OOM:以object模拟实体,需求变化不会引起结构 的整体变化,因为实体相对稳定,故系统 也相应稳定。 ② 传统方法:结构依赖于功能,不稳定。 ③传统方法:通过建立标准函数库来重用软构件。 但标准函数缺少必要的“柔性” ,难 以适应不同场合的不同需要。 OOM:一个class所有的 instances 都可重用它的代 码;由 inheritance 派生出的新的 class 可 重用其父类的代码,并且可以修改、扩充 而不影响其父类的使用。 §1. OOM
§1.OOM ④传统方法:可维护性是最令人头痛的问题。 OOM:从以下几方面改善了可维护性 稳定性好:软件功能需求的变化不牵动全局, 只需局部修改; Class独立性强:只要修改不涉及clas的对外 接口,则内部修改完全不影响外部调用; Inheritance和多态性( polymorphism)使其很容 易被修改和扩充; 容易理解; 有这一条就什么都好办了! 容易测试、调试。 这一点还可商榷
10 • 稳定性好:软件功能需求的变化不牵动全局, 只需局部修改; • Class 独立性强:只要修改不涉及class的对外 接口,则内部修改完全不影响外部调用; • Inheritance和多态性(polymorphism)使其很容 易被修改和扩充; • 容易理解; ④ 传统方法:可维护性是最令人头痛的问题。 OOM:从以下几方面改善了可维护性 —— 有这一条就什么都好办了! 容易测试、调试。 这一点还可商榷 §1. OOM