第3章面向对象开发方法与_第1页
第3章面向对象开发方法与_第2页
第3章面向对象开发方法与_第3页
第3章面向对象开发方法与_第4页
第3章面向对象开发方法与_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

现代软件工程

ModernSoftwareEngineering

第三章面向对象与UML西邮计算机学院

第三章面向对象与UMLPart1面向对象技术概述3·1传统方法学的缺点3·2面向对象方法学概述3·3面向对象的基本概念3·1传统方法学的缺点传统的生命周期方法学的本质,是通过需求分析预定义软件需求,然后一个阶段接着一个阶段有条不紊的开发用户所要求的软件,实现预定义的软件需求。

虽然生命周期方法较之传统的软件开发方法更为规范化,对实现软件开发工程化起到了重要的促进作用,部分缓解了软件危机,引起了软件开发原理的一次重大变革。

但是,对于那些大的复杂的软件系统而言,这种方法仍然显得力不从心。一、瀑布模型的缺点:僵化

生命周期各阶段间存在严格的顺序性与依赖性,因此其特别强调预先定义需求的重要性。要求预先定义并“冻结”软件需求。 实践表明:在系统建立起来很难仅仅依靠分析就能确定一套完整、准确、一致、有效的应用需求,而且该方法不适用与用户需求不断变化的情况: (1)某些类型的系统需求是模糊的。 (2)项目参与者之间存在通讯鸿沟。 (3)预先定义的需求可能是过时的。二、SA-SD-SP技术的缺点 本质上是功能分解,以实现功能的过程为中心,而用户的需求变化主要是针对功能的。这就使基于过程的设计不易被理解;且功能变化往往引起结构变化较大,稳定性不好。系统有明确的边界定义,且系统结构依赖于系统边界的定义,系统不易扩充和修改。数据与操作分开处理,可造成软构件对具体应用环境的依赖,可重用性(reusability)较差.3·2面向对象方法学概述一、传统的软件开发方法的缺点: 特点是把软件视为处理流,并定义成由一系列步骤构成的算法。每一步骤都是带有预定输入和特定输出的一个过程,把这些步骤串联在一起可产生合理的稳定的贯通于整个程序的控制流,最终产生一个简单的具有静态结构的体系结构。过程性开发模式侧重建立构成问题解决的处理流。数据抽象、数据结构根据算法步骤的要求开发,它贯穿于过程,提供过程所要求操作的信息。系统的状态是一组全局变量,这组全局变量保存状态的值,把它们从一个过程传送到另一个过程。二、面向对象思想的由来传统的软件开发方法—没有直接而全面地反映问题的本质

直接面对问题域中客观存在的事物来进行软件开发—

面向对象希望二、面向对象思想的由来(续)对象表示现实世界中某个具体的事物。事物可分为两大部分:物质

:表达具体的事物意识

:描述抽象的概念解决问题方法:(OOObject-Oriented)现实问题空间面向对象解空间物质对象(客观存在的)意识类(抽象的概念)三、对象、实体与类关系图对象实体类抽象数据类计算机世界现实世界计算机逻辑的实现影射抽象实例化抽象四、面向对象方法(OOM)特点

尽可能模拟人类习惯的思维方式,即问题域与求解域在结构上尽可能一致。与传统方法相反,OOM以数据或信息为主线,把数据和处理结合构成统一体——对象。这时程序不再是一系列工作在数据上的函数集合,而是相互协作又彼此独立的对象的集合。OOM举例:邮局业务管理杭州北京Post-officeMessageSendbymethod对象ObjectObject=数据AttributeAttributes:location;employee;……+操作MethodMethods:send;sell;……注意:Object内部的attributes不允许外部用户直接改动,只有当它提供了相应的服务method时,用户才能通过发送message来提请它执行。我想把邮局搬到我家门口,多加几个邮递员,24小时都开门……对不起,本邮局不提供此类服务唉,那就先送束花吧——Post_office.Send(request,payment)五、面向对象的定义面向对象=对象+类+继承+通信如果一个软件系统是使用这样4个概念设计和实现的,则我们认为这个软件系统是面向对象的。一个面向对象的程序的每一成份应是对象,计算是通过新的对象的建立和对象之间的通信来执行的。面向对象四要素:(1)对象(2)类(3)继承(4)消息六、面向对象四要素——对象对象(Object)是面向对象的基本成份。每个对象可用它本身的一组属性和它可以执行的一组操作来定义。属性一般只能通过执行对象的操作来改变。操作又称为方法或服务,它描述了对象执行的功能,若通过消息传递,还可以为其它对象使用。六、面向对象四要素——类类(Class)是一组具有相同数据结构和相同操作的对象的集合。类的定义包括一组数据属性和在数据上的一组合法操作。类定义可以视为一个具有类似特性与共同行为的对象的模板,可用来产生对象。在一个类中,每个对象都是类的实例

(Instance),它们都可使用类中提供的函数。对象的状态则包含在它的实例变量,即实例的属性中。六、面向对象四要素——消息消息(Message)是一个对象与另一个对象的通信单元,是要求某个对象执行类中定义的某个操作的规格说明。发送给一个对象的消息定义了一个方法名和一个参数表(可能是空的),并指定某一个对象。一个对象接收的消息则调用消息中指定的方法,并将形式参数与参数表中相应的值结合起来。classPost_office//定义类{private:loc_typelocation;emp_typeemployee;……public:voidsend(req_typerequest,money_typepayment);voidsell(intgoods,money_typepayment);……};

main(){Post_officeMy_PO;//声明类的示例:对象req_typeMy_request;money_typeMy_payment;……My_PO.Send(My_request,My_payment);//通讯……}OOM举例:邮局业务管理六、面向对象四要素——继承继承(Inheritance)是使用已存在的定义做为基础建立新定义的技术。新类的定义可以是既存类所声明的数据和新类所增加的声明的组合。新类复用既存的定义,而不要求修改既存类。既存类可当做基类来引用,则新类相应地可当做派生类来引用。例如,从一个既存的车辆类派生的四轮驱动车类可能不仅是车辆类子集合定义的特殊化,而且还可能在新类的界面中引入新的能力。七、面向对象与传统方法比较①OOM与人类习惯的思维方法一致传统方法:面向过程设计,以计算为核心,数据与操作分离,不易理解。OOM:以object为核心,强调对现实概念的模拟而不强调算法。“面向对象方法学的基本原则,是按照人们习惯的思维方式建立问题域的模型,开发出尽可能直观、自然地表现求解方法的软件系统”。Class:由特殊到一般的归纳(induction)

Inheritance:由一般到特殊的演绎(deduction)七、面向对象与传统方法比较②OOM稳定性好传统方法:结构依赖于功能,不稳定。OOM:以object模拟实体,需求变化不会引起结构的整体变化,因为实体相对稳定,故系统也相应稳定。七、面向对象与传统方法比较(续)③OOM可重用性好传统方法:通过建立标准函数库来重用软构件。但标准函数缺少必要的“柔性”,难以适应不同场合的不同需要。

OOM:一个class所有的instances都可重用它的代码;由inheritance派生出的新的class可重用其父类的代码,并且可以修改、扩充而不影响其父类的使用。七、面向对象与传统方法比较(续)稳定性好:软件功能需求的变化不牵动全局,只需局部修改;面向对象的软件比较容易修改:只要修改不涉及class的对外接口,则内部修改完全不影响外部调用;Inheritance和多态性(polymorphism)使其很容易被修改和扩充;易于测试和调试面向对象的软件比较容易理解;④可维护性好传统方法:可维护性是最令人头痛的问题。

OOM:从以下几方面改善了可维护性——七、面向对象与传统方法比较(续)⑤较易开发大型软件产品

采用00M,便于一个大型软件产品分解成一系列本质上相互独立的小产品来处理,这就不仅降低了开发的技术难度,而且也使得对开发工作的管理变得容易多了。

OOM并不一定减少了开发时间,而是通过提高可重用性、可维护性,进行扩充和修改的容易程度等,从长远角度改进了软件的质量。OOM与快速原型法结合使用效果好。八、喷泉模型

主要用于支持面向对象开发过程,体现了软件创建所固有的迭代和无间隙的特征。3·3面向对象的基本概念f1f2f3……fi……fnfi(X)Sgi(X,S)S’输出输出1、对象Object:=ID+Method+Attribute+Message对象的基本特点①以数据为中心,不设与数据无关的操作;②Object主动处理而不被动地等待被处理,外部只能通过message请求操作;③具有黑盒性:外部操作时,无须知道该object内部的数据结构及算法;④具有并行性:不同object各自独立地处理自身数据,彼此间仅通过传递message完成通信;⑤模块独立性好:内聚强(①)、耦合松(③④)2、类Class:具有相同数据和相同操作的一组对象;3、实例Instance:某个class描述的具体对象;4、消息Message:=object_ID.method_ID(parameter(s));5、方法Method:object能做的操作,亦称为service、responsibility,在

class中须定义相应的代码;6、属性Attribute:object的固有数据;7、继承Inheritance:子类自动共享父类attributes和methods,而不必重复定义。面向对象的基本概念(续)面向对象的基本概念(续)Class中国人中国人Attributes中国人Methods张山(instance)

Class中国人张山的AttributesClass杭州人(子类)杭州人Attributes杭州人Methods

Class中国人李士(instance)中国人李士的Attributes杭州人李士的Attributes

Class杭州人例:继承的特点:①低层性质覆盖高层性质:若杭州人的methods中有与中国人的同名,则李士执行该method时以杭州人为准,不执行中国人中定义的同名method。②传递性(transitivity):AB、BCAC

一个

class继承了上层全部classes

的一切性质。③一个子类只有一个父类称为单继承(singleinheritance),一个子类可有多个父类称为多重继承(multipleinheritance).例④修改与扩充可以很容易地通过派生子类来完成。注意:multipleinheritance在定义中应避免二义性(ambiguity),即二个父类中定义重名,但各具不同性质。例:FemaleChineseScholarICardDeckGraphicalObjectGraphicalDeckMethod:Draw:=takeacardfromadeckMethod:Draw:=displayagraphicalobjectMethod:Draw:=?例:面向对象的基本概念(续)8、多态性(Polymorphism):不同层次的classes可共享一个method名,但按各自的方式来实现这种method。 C++中定义了虚函数(virtualfunction)来实现这一功能。即一个method有多个版本,运行时才决定执行哪一个。故亦称为动态联编(dynamicbinding)或滞后联编(latebinding)面向对象的基本概念(续)doubleavg(constdoublea[],intsize);{doublesum=0.0;for(inti=0;i<size;++i)sum+=a[i];return(sum/size);}doubleavg(constinta[],intsize);{intsum=0;for(inti=0;i<size;++i)sum+=a[i];return((double)sum/size);}main(){intk[3]={1,2,3};doublex[3]={1.1,2.2,3.3};cout<<avg(k,3)<<“intaverage\n”;cout<<avg(x,3)<<“doubleaverage\n”;}9、重载Overloading⑴函数重载:不同函数共用一个名字,而调用参数的特征不同。例:面向对象的基本概念(续)⑵运算符重载Operatoroverloading:同一运算符(operator)作用于不同类型的操作数(operand)上面。在编译(compile)阶段就决定了使用类型及执行代码,故意亦称为静态联编

(staticbinding)或先前联编

(earlybinding)。3·4面向对象建模所谓模型,就是为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述。通常,模型由一组图示符号和组织这些符号的规则组成,利用它们来定义和描述问题域中的术语和概念。更进一步讲,模型是一种思考工具,利用这种工具可以把知识规范地表示出来。3·4面向对象建模面向对象的开发方法Booch方法

Booch最先描述了面向对象的软件开发的基础问题,指出了面向对象开发方法是一种完全不同于传统的功能分解的设计方法。面向对象的软件分解方法更接近人对客观事物的理解,而功能分解只能通过问题空间的转换获得。

Booch方法包括各种模型,涉及软件系统的对象、动态及功能各方面,对类及继承方面的描述特别值得借鉴。面向对象的开发方法(续)Coad方法 1989年Coad与Yourdon提出的面

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论