软件工程面向对象方法学引论.ppt
《软件工程面向对象方法学引论.ppt》由会员分享,可在线阅读,更多相关《软件工程面向对象方法学引论.ppt(70页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件工程面向对象方软件工程面向对象方法学引论法学引论现在学习的是第1页,共70页软件工程给软件产业带来巨大进步!软件工程给软件产业带来巨大进步!部分的缓解了软件危机!部分的缓解了软件危机!大量中、小规模的软件项目获得成功!大量中、小规模的软件项目获得成功!但是,人们发现一个现象但是,人们发现一个现象.传统方法学应用于大型项目时,很少成功!传统方法学应用于大型项目时,很少成功!传统方法学应用于大型项目时,很少成功!传统方法学应用于大型项目时,很少成功!软件工程方法学的思考软件工程方法学的思考现在学习的是第2页,共70页瀑布模型的缺点:瀑布模型的缺点:僵化僵化僵化僵化表现表现(1)(1):瀑布模型
2、要求:生命周期各阶段间遵守严格的顺序瀑布模型要求:生命周期各阶段间遵守严格的顺序实际情况实际情况:软件开发往往在反复实践中完成:软件开发往往在反复实践中完成表现表现(2)(2):瀑布模型要求:预先定义并瀑布模型要求:预先定义并“冻结冻结冻结冻结”软件需求软件需求软件需求软件需求实际情况实际情况:某些系统的需求是一个逐渐明确的过程,且预先定义的需求到软:某些系统的需求是一个逐渐明确的过程,且预先定义的需求到软件完成时可能已经过时件完成时可能已经过时传统方法学的缺点传统方法学的缺点现在学习的是第3页,共70页本质上是本质上是功能分解功能分解功能分解功能分解,以实现功能的,以实现功能的过程过程过程过
3、程为中心,而用户的需求变化为中心,而用户的需求变化主要是针对主要是针对功能功能功能功能的的这就使基于过程的设计这就使基于过程的设计不易被理解不易被理解不易被理解不易被理解;且功能变化往往引起结构变化;且功能变化往往引起结构变化较大,较大,稳定性不好稳定性不好稳定性不好稳定性不好系统有明确的边界定义,且系统结构依赖于系统边界的定义,系统有明确的边界定义,且系统结构依赖于系统边界的定义,这样的系统这样的系统不易扩充和修改不易扩充和修改不易扩充和修改不易扩充和修改数据与操作分开处理,可能造成软构件对具体应用环境的依赖,数据与操作分开处理,可能造成软构件对具体应用环境的依赖,可重用性较差可重用性较差可
4、重用性较差可重用性较差传统方法学的缺点传统方法学的缺点 cont.现在学习的是第4页,共70页2020世纪世纪6060年代后期出现面向对象编程语言年代后期出现面向对象编程语言Simula-67Simula-67,提出,提出类类类类和和对象对象对象对象的概念的概念2020世纪世纪8080年代中期开始面向对象分析和设计研究,逐步形成年代中期开始面向对象分析和设计研究,逐步形成面向对面向对面向对面向对象的方法学象的方法学象的方法学象的方法学2020世纪世纪9090年代末面向对象方法学成为软件开发技术的首选范型年代末面向对象方法学成为软件开发技术的首选范型面向对象方法学面向对象方法学现在学习的是第5页
5、,共70页9.1 9.1 面向对象方法学概述面向对象方法学概述9.2 9.2 面向对象的概念面向对象的概念9.3 9.3 面向对象建模面向对象建模9.4 9.4 对象模型对象模型9.5 9.5 动态模型动态模型9.6 9.6 功能模型功能模型9.7 39.7 3种模型之间的关系种模型之间的关系提纲提纲现在学习的是第6页,共70页9.1 9.1 面向对象方法学概述面向对象方法学概述9.2 9.2 面向对象的概念面向对象的概念9.3 9.3 面向对象建模面向对象建模9.4 9.4 对象模型对象模型9.5 9.5 动态模型动态模型9.6 9.6 功能模型功能模型9.7 39.7 3种模型之间的关系种
6、模型之间的关系现在学习的是第7页,共70页面向对象方法学面向对象方法学(Object-Oriented Methodology)(Object-Oriented Methodology),简称,简称OOMOOM面向对象方法学的要点面向对象方法学的要点(1)OOM(1)OOM的的出发点出发点出发点出发点和和基本原则基本原则基本原则基本原则是是尽可能模拟人类习惯的思维方式尽可能模拟人类习惯的思维方式,使描述问题的问题空间,使描述问题的问题空间(问题域问题域)与实现与实现解法的解空间解法的解空间(求解域求解域)在结构上尽可能一致在结构上尽可能一致(2)(2)面向对象方法是一种以数据和信息为主线,面向
7、对象方法是一种以数据和信息为主线,把数据和处理相结合把数据和处理相结合的方的方法法面向对象方法把对象作为由数据及可以施加在这些数据上的操作所构成的统一体面向对象方法把对象作为由数据及可以施加在这些数据上的操作所构成的统一体面向对象方法学概述面向对象方法学概述现在学习的是第8页,共70页解空间解空间与与问题空间问题空间的的“语义断层语义断层语义断层语义断层”问题空间对象问题空间对象是行为是丰富多彩的是行为是丰富多彩的解空间对象解空间对象的行为的非常呆板的的行为的非常呆板的需要借助于复杂的算法才能够操纵解空间对象需要借助于复杂的算法才能够操纵解空间对象客观世界实体:静态属性客观世界实体:静态属性+
8、动态行为动态行为传统方法:属性与行为分离传统方法:属性与行为分离解空间对象为描述实体属性的数据,在程序中从外部操纵它解空间对象为描述实体属性的数据,在程序中从外部操纵它面向对象方法:属性与行为统一面向对象方法:属性与行为统一对象是行为的主体对象是行为的主体现在学习的是第9页,共70页OOMOOM的的4 4个要素:个要素:对象对象(object)(object):世界由:世界由对象对象对象对象组成组成 类类 (class)(class):具有相同属性和操作的:具有相同属性和操作的对象对象对象对象可划分为可划分为类类类类;单个对象可视为某一;单个对象可视为某一类的类的实例实例实例实例 (insta
9、nce)(instance)继承继承(inheritance)(inheritance):类可分层下层:类可分层下层子类子类子类子类与上层与上层父类父类父类父类有相同特征,称为有相同特征,称为继继继继承承承承消息消息(message)(message):对象间只能通过发送:对象间只能通过发送消息消息消息消息进行联系,外界不能处理进行联系,外界不能处理对象对象对象对象的内部数据,只能通过的内部数据,只能通过消息消息消息消息请求它进行处理(如果它提供相应消息的话)请求它进行处理(如果它提供相应消息的话)OOM=Object+Class+Inheritance+Communication with
10、messagesOOM=Object+Class+Inheritance+Communication with messages现在学习的是第10页,共70页OOM=OOM=对象对象+类类+继承机制继承机制+消息机制消息机制基于对象基于对象(objects-based)(objects-based)方法方法对象对象-消息消息基于类基于类(class-based)(class-based)方法方法类类-对象对象-消息消息面向对象面向对象(objects-oriented)(objects-oriented)类类-对象对象-消息消息-继承继承现在学习的是第11页,共70页1.1.与人类习惯的思维方
11、式一致与人类习惯的思维方式一致传统方法:面向过程设计,以计算为核心,数据与操作分离,不易理解。传统方法:面向过程设计,以计算为核心,数据与操作分离,不易理解。OOMOOM:以:以object object 为核心,强调对现实概念的模拟而不强调算法。为核心,强调对现实概念的模拟而不强调算法。“面面向对象方法学的基本原则,是按照人们习惯的思维方式建立问题域的向对象方法学的基本原则,是按照人们习惯的思维方式建立问题域的模型,开发出尽可能直观、自然地表现求解方法的软件系统模型,开发出尽可能直观、自然地表现求解方法的软件系统”。ClassClass:由特殊到一般的归纳:由特殊到一般的归纳(inducti
12、on)(induction)InheritanceInheritance:由一般到特殊的演绎:由一般到特殊的演绎(deduction)(deduction)2.2.稳定性好稳定性好传统方法:结构依赖于功能,不稳定。传统方法:结构依赖于功能,不稳定。OOMOOM:以:以objectobject模拟实体,需求变化不会引起结构的整体变化,因为模拟实体,需求变化不会引起结构的整体变化,因为实体相对稳定,故系统也相应稳定。实体相对稳定,故系统也相应稳定。面向对象方法学的优点面向对象方法学的优点现在学习的是第12页,共70页3.3.可重用性好可重用性好传统方法:通过建立标准函数库来重用软构件。但标准函数缺
13、少必要的传统方法:通过建立标准函数库来重用软构件。但标准函数缺少必要的“柔性柔性”,难以适应不同场合的不同需要。,难以适应不同场合的不同需要。OOMOOM:一个:一个classclass所有的所有的 instances instances 都可重用它的代码;由都可重用它的代码;由 inheritance inheritance 派派生出的新的生出的新的 class class 可重用其父类的代码,并且可以修改、扩充而不影可重用其父类的代码,并且可以修改、扩充而不影响其父类的使用。响其父类的使用。4.4.可维护性好可维护性好传统方法:可维护性是最令人头痛的问题。传统方法:可维护性是最令人头痛的问
14、题。OOMOOM:从以下几方面改善了可维护性:从以下几方面改善了可维护性稳定性好:需求的变化不牵动全局,只需局部修改;稳定性好:需求的变化不牵动全局,只需局部修改;Class Class 独立性强独立性强(易修改易修改):只要修改不涉及:只要修改不涉及classclass的对外接口,则内部修的对外接口,则内部修改完全不影响外部调用;改完全不影响外部调用;继承继承(Inheritance)(Inheritance)和多态性和多态性(polymorphism)(polymorphism)使其易被修改和扩充;使其易被修改和扩充;容易理解、容易测试、调试容易理解、容易测试、调试现在学习的是第13页,共
15、70页面向对象方法学的优点面向对象方法学的优点 小结小结OOMOOM并不是减少了开发时间并不是减少了开发时间并不是减少了开发时间并不是减少了开发时间,而是通过提高可重用性、可维护性,而是通过提高可重用性、可维护性,进行扩充和修改的容易程度等,从长远角度进行扩充和修改的容易程度等,从长远角度改进了软件的质量改进了软件的质量改进了软件的质量改进了软件的质量。OOMOOM与与PrototypingPrototyping结合使用效果好结合使用效果好现在学习的是第14页,共70页9.1 9.1 面向对象方法学概述面向对象方法学概述9.2 9.2 面向对象的概念面向对象的概念9.3 9.3 面向对象建模面
16、向对象建模9.4 9.4 对象模型对象模型9.5 9.5 动态模型动态模型9.6 9.6 功能模型功能模型9.7 39.7 3种模型之间的关系种模型之间的关系现在学习的是第15页,共70页对象对象对象既可以是具体的物理实体的抽象,也可以是人为的概念,或者是任对象既可以是具体的物理实体的抽象,也可以是人为的概念,或者是任何有明确边界和意义的东西。何有明确边界和意义的东西。例如,一名职工、一家公司、一个窗口、一座图书馆、一本图书、贷例如,一名职工、一家公司、一个窗口、一座图书馆、一本图书、贷款、借款等等,都可以作为一个对象。款、借款等等,都可以作为一个对象。面向对象的概念面向对象的概念现在学习的是
17、第16页,共70页f1f1f2f2f3f3fi fifnfnfi(X)fi(X)Sgi(X,S)gi(X,S)S输输出出出出输输出出出出Object:=ID+Method+Object:=ID+Method+Attribute+MessageAttribute+Message一个对象好像一个黑盒子,表示它内部的数一个对象好像一个黑盒子,表示它内部的数据和实现各个操作的代码及局部数据,都被据和实现各个操作的代码及局部数据,都被封装在这个黑盒子内部,在外部是看不见的,封装在这个黑盒子内部,在外部是看不见的,更不能从外部去访问或修改这些数据代码。更不能从外部去访问或修改这些数据代码。现在学习的是第1
18、7页,共70页对象的定义对象的定义定义定义1 1:对象是具有相同状态的一组操作的集合。:对象是具有相同状态的一组操作的集合。定义定义2 2:对象是对问题域中某个东西的抽象,这种抽象反映了系统保:对象是对问题域中某个东西的抽象,这种抽象反映了系统保存有关这个东西的信息或与它交互的能力。存有关这个东西的信息或与它交互的能力。定义定义3 3:对象对象:=:=名字名字 操作集合操作集合 数据结构数据结构 对外接口对外接口 现在学习的是第18页,共70页对象的特点对象的特点 以数据为中心以数据为中心以数据为中心以数据为中心,不设与数据无关的操作;,不设与数据无关的操作;ObjectObject主动处理主
19、动处理主动处理主动处理而不而不 被动地等待被处理,外部只能通过被动地等待被处理,外部只能通过messagemessage请求操请求操作;作;具有具有封装性封装性封装性封装性:外部操作时,无须知道该:外部操作时,无须知道该objectobject内部的数据结构及算法;内部的数据结构及算法;具有具有并行性并行性并行性并行性:不同:不同objectobject各自独立地处理自身数据,彼此间仅通过各自独立地处理自身数据,彼此间仅通过传递传递messagemessage完成通信;完成通信;模块模块独立性独立性独立性独立性好:内聚强、耦合松好:内聚强、耦合松现在学习的是第19页,共70页类类类类:是对具有
20、相同数据和相同操作的一组相似对象的定义。:是对具有相同数据和相同操作的一组相似对象的定义。例如:人、圆例如:人、圆实例实例实例实例:是由某个特定的类所描述的一个具体对象。:是由某个特定的类所描述的一个具体对象。消息消息消息消息:是要求某个对象执行在定义它的那个类中所定义的某个:是要求某个对象执行在定义它的那个类中所定义的某个操作的规格说明。操作的规格说明。由由3 3部分组成:接受消息的对象、消息选择符部分组成:接受消息的对象、消息选择符(名名)、零个和多个变元。、零个和多个变元。方法方法方法方法:是对象所能执行的操作:是对象所能执行的操作即类中所定义的服务。即类中所定义的服务。方法描述了对象执
21、行操作的算法,响应消息的方法。方法描述了对象执行操作的算法,响应消息的方法。属性属性属性属性:是类中所定义的数据,是对客观实体所具有的性质抽象:是类中所定义的数据,是对客观实体所具有的性质抽象面向对象的概念面向对象的概念 其他概念其他概念现在学习的是第20页,共70页封装封装封装封装:是把某个事务包起来,使外界不知道该事物的具体内容。:是把某个事务包起来,使外界不知道该事物的具体内容。(字字面含义面含义)在面向对象程序中,把数据和实现操作的代码集中存放在对象内部。在面向对象程序中,把数据和实现操作的代码集中存放在对象内部。封装的条件:封装的条件:(1)(1)有一个清晰的边界有一个清晰的边界 私
22、有与共有私有与共有(2)(2)有确定的接口有确定的接口(3)(3)受保护的内部实现受保护的内部实现现在学习的是第21页,共70页继承继承继承继承继承是子类自动地继承是子类自动地共享共享共享共享基类中定义的数据和方法的机制,其特性是:一个基类中定义的数据和方法的机制,其特性是:一个类的上层可以有父类,下层可以有子类。类的上层可以有父类,下层可以有子类。继承具有继承具有传递性传递性传递性传递性,如果类,如果类C C继承类继承类B B,类,类B B继承类继承类A A,则类,则类C C继承类继承类A A。当类等级为树形结构时,类的继承是当类等级为树形结构时,类的继承是单继承单继承单继承单继承;当允许一
23、个类有多个父亲时,;当允许一个类有多个父亲时,类的继承是类的继承是多重继承多重继承多重继承多重继承。现在学习的是第22页,共70页继承继承 cont.cont.在程序执行期间,对对象某一性质的在程序执行期间,对对象某一性质的查找查找查找查找是从该对象类在类等级中所在的是从该对象类在类等级中所在的程序开始,程序开始,沿类等级逐层向上沿类等级逐层向上沿类等级逐层向上沿类等级逐层向上进行的,并把第一个被找到的性质作为所要的进行的,并把第一个被找到的性质作为所要的性质。因此,低层的性质将性质。因此,低层的性质将屏蔽屏蔽屏蔽屏蔽高层的同名的性质。高层的同名的性质。从原有类派生出新的子类的办法有:从原有类
24、派生出新的子类的办法有:需要扩充原有功能时,派生类的方法可以调用基类的方法,并在此基础上增需要扩充原有功能时,派生类的方法可以调用基类的方法,并在此基础上增加必要的程序代码;加必要的程序代码;需要完全改变原有操作的算法时,可以在派生类中实现一个与基类方法同名需要完全改变原有操作的算法时,可以在派生类中实现一个与基类方法同名而算法不同的方法;而算法不同的方法;需要增加新的功能时,可以在派生类中实现一个新的方法。需要增加新的功能时,可以在派生类中实现一个新的方法。现在学习的是第23页,共70页Class Class 中国人中国人中国人中国人中国人中国人中国人中国人 AttributesAttrib
25、utes中国人中国人中国人中国人 MethodsMethods张张山山山山 (instance)(instance)Class Class 中国人中国人中国人中国人 张张山的山的山的山的 AttributesAttributesClass Class 杭州杭州杭州杭州人人人人 (子子子子类类)杭州人杭州人杭州人杭州人 AttributesAttributes杭州人杭州人杭州人杭州人 MethodsMethods Class Class 中国人中国人中国人中国人李士李士李士李士 (instance)(instance)中国人李士的中国人李士的中国人李士的中国人李士的 AttributesAttr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 面向 对象 方法 引论
限制150内