【文档说明】课件-软件工程教学第九章面向对象方法学引论-.ppt,共(78)页,2.181 MB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-44856.html
以下为本文档部分文字说明:
第九章面向对象方法学引论(Object-OrientedMethodology)§1面向对象方法学概述一、传统方法学的缺点1、瀑布模型的缺点:僵化•瀑布模型要求:生命周期各阶段间遵守严格的顺序。实际情况是:软件开发往往在反复实践中完
成。•瀑布模型要求:预先定义并“冻结”软件需求。实际情况是:某些系统的需求是一个逐渐明确的过程,且预先定义的需求到软件完成时可能已经过时。§1面向对象方法学概述•本质上是功能分解,以实现功能的过程为中心,而用户的需求变化主要是针对功能
的。这就使基于过程的设计不易被理解;且功能变化往往引起结构变化较大,稳定性不好。•系统有明确的边界定义,且系统结构依赖于系统边界的定义。这样的系统不易扩充和修改。•数据与操作分开处理,可能造成软构件对具体应用环境的依赖。可重用性(reus
ability)较差.2、SA-SD-SP(结构分析、设计、程序)技术的缺点:12:312二、软件工程的新途径1、快速原型法(Prototyping)适用于用户驱动的系统(即需求模糊或随时间变化的系统)PrototypeFeedbackModification§1面
向对象方法学概述12:313⑴抛弃原型法(throw-awayprototype)1:建立原型系统,评价目标系统的某个特性,以便更正确地确定需求.2:使用完之后,抛弃掉原型系统,然后再重建目标系统.本质上是瀑布模型。⑵演化原型法(e
volutionaryprototype)①螺旋模型(thespiralmodel):Boehm(1988)§1面向对象方法学概述12:314§1面向对象方法学概述12:315②渐增模型(theincrementalmodel):Gilb(
1988)Thewaterfallmodelisstillfollowed,butforeachseparateincrement.注:演化原型法与传统方法最大的不同,在于它是一种高度迭代的动态方法,系统的初始版本很早就
交付用户试用。§1面向对象方法学概述12:316杭州北京Post-officeMessageSendbymethod对象ObjectObject=数据AttributeAttributes:location;employee;……+操
作MethodMethods:send;sell;……注意:Object内部的attributes不允许外部用户直接改动,只有当它提供了相应的服务method时,用户才能通过发送message来提请它执行。我想把邮局搬到我家门口,多加几个邮递员,24小时都开门……对不
起,本邮局不提供此类服务唉,那就先送束花吧——Post_office.Send(request,payment)2、面向对象方法学(OOM)例:§1面向对象方法学概述12:317特点:尽可能模拟人类习惯的思维方式,即问题域与求解域在结构上尽可能一致。与传统方法相反,OOM以数据或信息为主线,把
数据和处理结合构成统一体——对象。程序不再是一系列工作在数据上的函数集合,而是相互协作又彼此独立的对象的集合。OOM的四要素:①对象(object):世界由对象组成。(软件也由对象组成)②类(class):对象可划分
为类;单个对象可视为某一类的实例(instance)。§1面向对象方法学概述12:318例: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_type
My_payment;……My_PO.Send(My_request,My_payment);……}§1面向对象方法学概述12:319③继承(inheritance):类可分层,下层子类与上层父类有相同特征,称为继承。④消息(message):对象间只能通过发送消息进
行联系.外界不能处理对象的内部数据,只能通过消息请求它进行处理(如果它提供相应消息的话)。§1面向对象方法学概述12:3110OOM:以object为核心,强调对现实概念的模拟而不强调算法。“面向对象方法学的基本原则,是按照人们习惯的思维方式建
立问题域的模型,开发出尽可能直观、自然地表现求解方法的软件系统”。Class:由特殊到一般的归纳(induction)Inheritance:由一般到特殊的演绎(deduction)OOM=Object+Class+Inhe
ritance+CommunicationwithmessagesOOM的优点:①传统方法:面向过程设计,以计算为核心;数据与操作分离,不易理解。§1面向对象方法学概述12:3111OOM:以object模拟实体,需求变化不会引起结构的整体变化,因为实体相对稳定,故
系统也相应稳定。②传统方法:结构依赖于功能,不稳定。③传统方法:通过建立标准函数库来重用软构件。但标准函数缺少必要的“柔性”,难以适应不同场合的不同需要。OOM:一个class所有的实例(instances)都可重用它的代码;由继承性(in
heritance)派生出的新的class可重用其父类的代码,并且可以修改、扩充而不影响其父类的使用。§1面向对象方法学概述12:3112•稳定性好:软件功能需求的变化不牵动全局,只需局部修改;•Class
独立性强:只要修改不涉及class的对外接口,则内部修改完全不影响外部调用;•继承性(Inheritance)和多态性(polymorphism)使其很容易被修改和扩充;•容易理解;④传统方法:可维护性是最令人头痛的问题。
OOM:从以下几方面改善了可维护性——容易测试、调试。§1面向对象方法学概述12:3113注:OOM并不是减少了开发时间,而是通过提高可重用性、可维护性,进行扩充和修改的容易程度等,从长远角度改进了软件的质量。OO
M与Prototyping结合使用效果更好。§1面向对象方法学概述12:31143、适于采用上述三种开发模型的软件的特点⑴瀑布模型(Waterfall)•需求稳定少变化•对环境熟悉(低风险)•用户很少参与开发•面向过
程编程⑵螺旋模型(Spiral)•需求可能在开发早期有变化•对环境较熟悉(中风险)•用户不同程度地参与整个过程•OOP§1面向对象方法学概述12:3115⑶渐增模型(Incremental)•需求随时可能变化•对环境不熟悉(高风险)•用户完全参与开发•OOP
SA-SD-SP与Waterfallmodel有本质上的密切联系;OOP可用于任何模型。OOM的工作重点在分析阶段,确定objects,此外,生命周期的各阶段可以“无缝”连接。§1面向对象方法学概述12:3116f1f2f3……fi……fnfi(X)S
gi(X,S)S’输出输出§2.基本概念1、对象Object:=ID+Method+Attribute+Message12:3117§2.基本概念特点:①以数据为中心,不设与数据无关的操作;②Object主动处理而不被动地等待被处理,外部只能通过message请求操作;③具有黑盒性:外部操作时
,无须知道该object内部的数据结构及算法;④具有并行性:不同object各自独立地处理自身数据,彼此间仅通过传递message完成通信;⑤模块独立性好:内聚强(①)、耦合松(③④)12:31183、实例(Instance):某个class描述的具体对象;
4、消息(Message)Message:=object_ID.method_ID(parameter(s));5、方法(Method):object能做的操作,亦称为service、responsibility,在class
中须定义相应的代码;6、属性(Attribute):object的固有数据;§2.基本概念7、继承性(Inheritance):子类自动共享父类的attributes和methods,而不必重复定义。2、类(Class):具有相同数据和相同操作的一组对象(抽象
);12:3119Class中国人中国人Attributes中国人Methods张山(instance)Class中国人张山的AttributesClass杭州人(子类)杭州人Attributes杭州人MethodsClass中国人李士(instance)中国人李士的Attributes杭州人李
士的AttributesClass杭州人§2.基本概念例:12:3120特点:①若杭州人的methods中有与中国人的同名,则李士执行该method时以杭州人为准,不执行中国人中定义的同名method。§2.基本概念讲官话,这叫做“低层性质overri
de高层性质”讲土话,这叫做“县官不如现管”②传递性(transitivity):AB、BCAC一个class继承了上层全部classes的一切性质。③一个子类只有一个父类称为单继承(single
inheritance),一个子类可有多个父类称为多重继承(multipleinheritance).12:3121注意:multipleinheritance在定义中应避免二义性(ambiguity),即二个父类中定义重名,但各具不同性质。§2.基本概念例:Female
ChineseScholarICardDeckGraphicalObjectGraphicalDeckMethod:Draw:=takeacardfromadeckMethod:Draw:=displayagraphicalobjectMethod:Draw:=?例:
12:3122④修改与扩充可以很容易地通过派生子类来完成。§2.基本概念8、多态性(Polymorphism):不同层次的classes可共享一个method名,但按各自的方式来实现这种method。C++中定义了虚函数(virtualfunction)来实现这一功能。即一个method有多个版本
,运行时才决定执行哪一个。故亦称为动态联编(dynamicbinding)或滞后联编(latebinding)12:3123doubleavg(constdoublea[],intsize);double
avg(constinta[],intsize);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”;}§3.基本概念9、重载(Overloading)⑴Function(orparameter)overloading:不同函数
共用一个名字,而调用参数的特征不同。例:12:3124⑵Operatoroverloading:同一运算符(operator)作用于不同类型的操作数(operand)上面。§2.基本概念在编译(compile)阶段就决定了使用
类型及执行代码,故亦称为静态联编(staticbinding)或先前联编(earlybinding)。12:3125§3.面向对象建模ObjectModelingTechnique(OMT)模型:为了理解事物对其作出的一种抽象,无歧义的书
面描述建模的目的:减少复杂性面向对象方法,需要建立三种模型:①描述系统数据结构的对象模型(objectmodel).②描述系统控制结构的动态模型(dynamicmodel).③描述系统功能的功能模型(functionmodel).12:3126建模的误区模型的
实质就是对现实的简化,帮助我们按照实际情况或需要的样式对系统进行可视化,可以详细说明系统的结构和行为。•建模就等于是写文档•从开始阶段可以考虑到所有的一切•建模意味着需要一个重量级的软件开发过程•必须“冻结”需求•设计是不可更改的•必须使用
CA5E工具•建模是在浪费时间•数据模型就是一切§3.面向对象建模12:3127UML(统一建模语言)基于面向对象的标准建模语言(符号)包括5类(9个)图形:1.用例图(UseCase):从用户角度描
述系统功能,并指明功能的操作者2.静态图(staticdiagram):包括类图、对象图和包图3.行为图(behaviordiagram):包括状态图和活动图§3.面向对象建模12:31284.交互图(interactivediagram):包括顺序
图(时序图)和合作图(协作图)5.实现图(implementationdiagram):包括部件图(组件图)和配置图(分布图)UML工具ROSEVISIO图派(Tupai)楚凡(TrufunPlato)……§3.面
向对象建模12:3129UseCaseDiagramsUseCaseDiagrams用例图ScenarioDiagramsScenarioDiagrams协作图StateDiagramsStateDiagrams组件图ComponentDiagramsComponentDiagrams分布图
StateDiagramsStateDiagrams对象图ScenarioDiagramsScenarioDiagrams状态图UseCaseDiagramsUseCaseDiagrams时序图StateDiagramsStateDiagrams类图活动图模型是对一个
系统从详细观察的角度的描述UML模型§3.面向对象建模12:31301、ObjectModel:描述系统的静态结构2、图形符号:类图(1)类、对象:ClassNameAttributesMethodsClass§4.
对象模型ObjectModel(OM)12:3131注:泛化关系------------一般-特殊。子类is_a父类§4.OM(2)关系:泛化(Inductiverelation):类之间继承关系(一般-特殊)父类子类1子类212:3132§4
.OM聚集(聚合):类之间整体-部分关系共享聚集:处于部分方的对象可以同时参与多个整体方对象的构成例如,一个课题组包含许多成员,每个成员又可以是另一个课题组的成员,则课题组和成员之间是共享聚集关系,1
2:3133§4.OM组合聚集(组成):部分类完全隶属整体类,部分与整体共存。整体不存在了部分也会随之消失(或失去存在价值了)。例如,在屏幕上打开一个窗口,它由文本框、列表框、按钮和菜单组成,一旦关闭了窗口,
各个组成部分也同时消失,窗口和它的组成部分之间存在着组合聚集关系。12:3134关联(Correlativerelation):object间的关系教师书1+一对多1+目录文件文件名限定§4.OM文件用户1+1+访问权限链属性多对多1
2:3135三要素:①事件(event):引发Object状态改变的控制信息(瞬时)②状态(status):Object的attributes所处的情形(可持续)③行为(action):Object要达到某种status所做的操作(耗时)§5.动态模型Dy
namicModel(DM)表示系统瞬时的控制性质。表示方法:Event0Status1do:Action1Status2do:Action2Event1Event2StartEnd[Condition1]12:3136闲置拨号通话断线拨号音do:响拨号音超时do:响蜂鸣音存储的信息do:播放
信息接通中do:试接通振铃do:振铃忙音do:响忙音拿起听筒数字数字有效号码已接通受话人回话受话人挂断电话挂断电话超时挂断电话超时无效号码信息播完占线例:电话的状态图§5.DM12:3137§6.功能模型FunctionModel(FM)1、FunctionM
odel:表明系统应该做什么。表示方法:数据流图(DFD)用例图2、用例图12:3138用例图•捕获用户能够看到的系统功能维护功能图书管理员增加图书信息修改或删除图书信息增加图书种类信息修改或删除图书种类
信息<<use>><<use>><<use>><<use>>查询图书<<include>>查询图书种类<<include>>§6.FM12:3139用例图•捕获系统中用户能够看见的功能•在开发过程的早期创
建•从用户角度描述系统功能,并指出各功能的操作者。•目的:–详细说明系统的表达含义;–捕获系统的需求;–验证系统的体系结构;–驱动实现和生成测试用例。•由分析人和领域专家开发§6.FM12:3140用例图•4个元素:系统、行为者、用例、用例之间关系–
系统:提供用例的黑盒子,只关心功能–用例:系统的一个完整功能(用例是一个类。它的实例-脚本)–行为者(操作者):与系统交互的人或其他系统–用例之间的关系:•扩展(extend,一个用例添加一些动作,扩展为另一
用例)•使用(use,一个用例使用另一用例)•包含(include,一个用例可以包含其它用例所定义的行为)§6.FM12:3141用例图•用例建模–获取用例是需求阶段的主要工作。–寻找行为者(操作者):使用
者、交互者–寻找用例:•行为者需要系统提供什么功能•行为者自身作什么•一个系统的完整的用例视图一般需要包括多张用例图,构成一个逻辑上呈树状结构的用例视图。–遵循自顶向下、逐层细化的原则建立。§6.FM12:31423、三者关
系FM:做什么WhatDM:何时做WhenOM:操作的实体How§6.FM12:3143OMDMFMObjectDMActionProcessMethodDatastorageDataflowAttri
buteEvent对每个object(class)建立DM;Action对应DFD中的process以及OM中的method;FM中的process对应OM中的method;FM中的数据存储及数
据的源/终点对应OM中的object;FM中的数据流对应OM中的attribute,或是整个object;FM中的process产生DM中的event;OM描述了FM中的动作对象、数据存储及数据流的结构。建立顺序§6.FM12:3144§7.UM
L建模软件工程领域在1995年至1997年取得了前所未有的进展,其成果超过软件工程领域过去15年来的成就总和。其中最重要的、具有划时代重大意义的成果之一就是统一建模语言(UML:UnifiedModelingLanguage)的出现。在世界范围内,至少在近10年内,UML将是面向对象技术领域内占主
导地位的标准建模语言。12:3145UML概要•UML是一种定义良好、易于表达、功能强大且普遍适用的建模语言。•它溶入了软件工程领域的新思想、新方法和新技术•是一个开发的标准•支持完整的软件开发生命周期模型,不限
于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。•支持不同的应用领域•是基于经验的和用户群体需要的•被许多工具支持§7.UML12:3146UML的发展Booch方法OMTUnifiedMethod0.8OOPSLA´95
OOSE其他方法UML0.9Web-June´96公共反馈最后提交给OMG,Sep‘97第一次提交给OMG,Jan´97UML1.1OMG认可,Nov1997UML2.1UML1.0UML团体§7.UML12:
3147UML合作伙伴•Rational软件公司---------ROSE•Hewlett-Packard(惠普)•I-Logix•IBM•ICONComputing•Intellicorp•MCISystemhouse•Microsoft----
--------VISIO•ObjecTime•Oracle•PlatinumTechnology•Taskon•TexasInstruments/SterlingSoftware•Unisys•SinmiuTOPAW-------图派§7.UML12:314
8UML概要•UML是一种语言:–可视化–详细描述的–构造性的–文档化的•UML是标准的建模语言,而不是标准的开发过程。§7.UML12:3149UML概要-模型元素•结构元素–类,接口,协作,用例,活动类,组件,符号•行为元素–交互,状态机•组元
素–包,子系统•其它元素–符号§7.UML12:3150UML概要-关系•依赖•关联•泛化•实现§7.UML12:3151UML概要•UML定义包括UML语义和UML表示法。•UML语义:描述基于UML的精确元模型定义。元模型为UML的所有元素在语法和语义上提供了简单、一致、通用的
定义性说明,使开发者能在语义上取得一致。•UML表示法:定义UML符号的表示法,为开发者使用这些图形符号和文本语法进行系统建模提供了标准。它们所表达的是应用级的模型,在语义上它是UML元模型的实例。§7.UML12:3152UML包括5类(9个)图
形:1.用例图(UseCase):从用户角度描述系统功能,并指明功能的操作者2.静态图(staticdiagram):包括类图、对象图和包图3.行为图(behaviordiagram):包括状态图和活动图4.交互图(interactivediagram)
:包括顺序图(时序图)和合作图(协作图)5.实现图(implementationdiagram):包括部件图(组件图)和配置图(分布图)§7.UML12:3153UseCaseDiagramsUseCaseDiagrams用例图ScenarioDiagram
sScenarioDiagrams协作图StateDiagramsStateDiagrams组件图ComponentDiagramsComponentDiagrams分布图StateDiagramsStateDiagrams对象图S
cenarioDiagramsScenarioDiagrams状态图UseCaseDiagramsUseCaseDiagrams时序图StateDiagramsStateDiagrams类图活动图模型是对一个系统从详细观察的角度的描述模型§7.UML12:3154UML静态建模机制•
用于描述系统需求,并建立系统的静态模型。1.包图:拆分系统一种方法,描述系统的分层结构。2.部件图和配置图:显示系统实现时的一些特性。①部件图描述代码部件的物理结构及各部件之间的依赖关系②配置图定义系统中软硬件的物理体系结构(硬件拓扑)§7.UML12:3155U
ML静态建模机制4.UseCase图:actor和usecase,从用户角度描述系统功能,并指出各功能的操作者。5.类和对象图:概念层描述应用域类、说明层描述类的接口、实现层描述类的实现。①类图定义系统中的类,
表示类之间的联系、类的内部结构;②对象图是类图的实例,§7.UML12:3156UML动态建模机制•用于描述系统的行为,并建立系统的动态模型。1.顺序图和合作图:前者描述对象之间消息传递的时间顺序,后者描述相互合作对象间的交互和链接关系。2.状态图:描述对象状态的变化过
程。3.活动图:描述工作流和并行过程。可以针对类的操作、用例和内部对象的行为。§7.UML12:3157UML动态建模机制•动态建模UML图形的应用限制:1.只针对重要的类画状态图,状态图描述跨越多个用例的单个对象的行为。2.顺序图和合作图描述单个用例中
多个对象的交互行为。适用于用例中简单行为的描述,行为复杂时将失去清晰性。3.活动图可以用于描述单个用例的复杂行为,并不严格区分对象,也可以用于描述对象操作。§7.UML12:3158UML应用•UML适用
于系统开发过程中从需求规约到测试的不同阶段:需求获取:用例图、活动图需求分析:类图、对象图和包图系统分析与设计:状态图、顺序图、合作图、活动图、部件图和配置图。测试:单元测试用类图、集成测试用部件图和合作图、确认测试用例图等。§7.UML12:3159用例图•捕
获用户能够看到的系统功能§7.UML12:3160用例图•捕获系统中用户能够看见的功能•在开发过程的早期创建•从用户角度描述系统功能,并指出各功能的操作者。•目的:–详细说明系统的表达含义;–捕获系统的需
求;–验证系统的体系结构;–驱动实现和生成测试用例。•由分析人和领域专家开发§7.UML12:3161类图•捕获系统的词汇表§7.UML12:3162类图•捕获系统的词汇表•在开发过程中被创建和精确化•目的–系统中的名字和模型概念–详细描述协作关系–详细描述逻辑数据库表•由分析人员、设计
人员和代码实现人员开发§7.UML12:3163对象图•捕获实例和连接§7.UML12:3164对象图•捕获实例和连接•在分析和设计阶段创建•目的–举例说明数据/对象结构–详细描述瞬态图•由分析人员、设计人员和代
码实现人员开发§7.UML12:3165组件图•捕获实现的物理结构§7.UML12:3166组件图•捕获实现的物理结构•作为体系结构规范的一部分实现•目的–组织源代码–构造一个可执行的发布版本–指定物理数据库•由集成人员和程序人员创建§7.
UML12:3167分布图•捕获系统硬件的拓扑结构§7.UML12:3168分布图•捕获系统硬件的拓扑结构•作为系统结构规范的一部分被创建•目的–描述组件的分布–标识系统性能瓶颈•由集成人员、网络工程师和系统工程师开发§7.UML12:3169时序图
•捕获系统的动态行为(面向时间的)图书管理员:图书管理员主窗体:GUI增加图书:GUI图书信息表:DB1:新书入库2:load3:提交4:验证5:保存§7.UML12:3170时序图•捕获系统的动态行为(面向时间的)•目的–模型流程的控制–举例说明典型的脚
本§7.UML12:3171协作图•捕获系统的动态行为(面向消息的)图书管理员:图书管理员主窗体:GUI借书:GUI图书信息表:DB借阅信息表:DB借阅信息表:DB读者种类表:DB读者信息表:DB1:进入2:进入3:检查图书是否借出4:检查读者是否可借书5:保存借书信息§7.UML
12:3172协作图•捕获系统的动态行为(面向消息的)•目的–模型流程控制–举例说明对象结构和控制的协调§7.UML12:3173状态图•捕获系统动态行为(面向事件的)§7.UML12:3174状态图•捕获系统动态行为(面向事件的)•目的–对象生命周期模型§7.UML12:3175活动图•捕获
动态行为(面向活动的)输入信息提交增加读者窗体保存在读者信息表主窗体检查信息错误正确§7.UML12:3176活动图•捕获动态行为(面向活动的)•目的–给商业工作流建模–给操作建模§7.UML12:3177体系结构和UML组织:包,子系统动态交互状态机设计视图实现视图过程视图组件类,接口,协作
活动类分布视图节点用例图用例§7.UML12:3178