收藏 分享(赏)

软件工程 新的第九章 面向对象的方法2.ppt

上传人:dreamzhangning 文档编号:3357348 上传时间:2018-10-17 格式:PPT 页数:72 大小:745KB
下载 相关 举报
软件工程 新的第九章 面向对象的方法2.ppt_第1页
第1页 / 共72页
软件工程 新的第九章 面向对象的方法2.ppt_第2页
第2页 / 共72页
软件工程 新的第九章 面向对象的方法2.ppt_第3页
第3页 / 共72页
软件工程 新的第九章 面向对象的方法2.ppt_第4页
第4页 / 共72页
软件工程 新的第九章 面向对象的方法2.ppt_第5页
第5页 / 共72页
点击查看更多>>
资源描述

1、第九讲 面向对象的方法,软件工程,传统方法与面向对象方法 传统面向对象方法 UML与RUP 基于UML的实例分析,第9讲 面向对象的方法,9.1传统方法与面向对象方法,(1)传统方法存在的问题 传统方法的发展 以结构化程序设计为基础,并逐步扩展到分析与设计阶段的一种软件工程方法。 面向功能的方法 面向数据流的方法 面向数据结构的方法 传统方法的本质 进行功能分解,从目标系统的整体功能着手,自顶向下不断将复杂的处理分解为子处理,直至每个子处理比较简单,在使用的时候一个一个依次调用就可以了 。,传统方法存在的主要问题 由于围绕处理功能来构造系统的,因此任何需求的变化都会对原有系统产生致命的影响;

2、需求不能精确描述,从分析到设计的转化存在鸿沟,造成分歧,系统的稳定性和易变性差; 将数据与实现方法相分离的做法,偏离了客观世界中人们处理问题的方式; 产生的软件重用性差,易变性差,可维护性差,软件不能满足用户要求的问题。,(2)面向对象的概念与思想,(1)认识问题、分析问题、解决问题的方式不同 将数据和方法封装在一个称为“对象”的统一体中; 对象之间通过“消息”相互联系,“对象+消息”机制取代了“数据结构+算法”的思路,减小了系统变化所带来的波动性; 以对象为中心构建系统。 (2)“问题空间”与“解空间” 有较一致的表示 在“OOA-OOD-OOI”的过程中,采用一致的模型表示,弥合了“鸿沟”

3、问题。 (3)利用继承性和封装性支持软件复用 后一阶段可直接复用前一阶段的结果,可重用性好。 (4)适应复杂大型系统的发展和变化要求 以对象为中心,而不是基于功能与功能的分解来建立系统,因此,当功能需求发生变化时,不会引起系统的整体变化,稳定性较好,(5)采用迭代的思想,通过连续的分析、设计,逐步认识系统,例如五子棋,传统的设计思路就是确定问题的步骤: 1、开始游戏, 2、黑子先走, 3、绘制画面, 4、判断输赢, 5、轮到白子, 6、绘制画面, 7、判断输赢, 8、返回步骤2, 9、输出最后结果。 把上面每个步骤用分别的函数来实现,问题就解决了。 面向对象的设计则是从另外的思路来解决问题。整

4、个五子棋可以分为: 1、黑白双方,这两方的行为是一模一样的, 2、棋盘系统,负责绘制画面, 3、规则系统,负责判定诸如犯规、输赢等。 第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。,9.2 传统面向对象方法,OOA/OOD方法(Coad和Yourdon提出) OMT方法(Rumbaugh提出) Booch方法(Booch提出) OOSE方法(Jacobson提出),例 问题简要描述:一个管理机构对于购买车的信息进行管理。管理机构有多名职员参与该管理工

5、作。如果职员被授权进行进行管理,那么要对购车的信息进行登记:谁买了车、买了什么车、登记合法信息。合法信息分为注册和颁发执照。一个车主可能购买几部不同种类型的车,也可能一部车有几个车主。车分为卡车、小轿车、拖车,拖车分为标准拖车和旅行拖车。,Coad/Yourdon方法,(1)方法简介 提出: P. Coad 和E. Yourdon于 1991年提出。 该方法分2个阶段: OOA(Object-Oriented Analysis)面向对象分析 OOD(Object-Oriented Design)面向对象设计。,1、获取用户基本需求用户与开发者之间进行充分交流,常用User case来收集和描述

6、用户的需求。即先标识使用该系统的不同的行为者(actor)。,(2) OOA的分析过程,行为者所提出的每个使用场景(或功能)称为一个用例,所有的用例则构成完整的系统需求。,2、标识类和对象在确定系统的用例后,可标识类及类的属性和操作。,确定最终对象可根据以下原则确定:需要保留的信息,需要的服务,具有多个属性,具有公共属性及操作。,从问题域或用例描述入手,发现对象。对象可能的形式有:外部实体 、事物、发生的事件、角色、组织单位、场所、构造物等。,标识属性从本质上讲,属性定义了对象。可从问题的陈述中或通过对类的理解而标识出属性。,定义操作操作定义了对象的行为并以某种方式修改对象的属性。操作分为:对

7、数据的操作,计算操作,控制操作。,标识类和对象,3、定义类的结构和层次类的结构有:一般特殊 (generalization - specialization)结构整体部分(whole-part)结构,主题(subject)又称为子系统(subsystem)是将一些联系密切的类组织在一起的类的集合。按照粒度控制原则,将系统组成几个主题,便于理解。,4、标识主题(可选),用“对象-关系模型”描述系统的静态结构,5、定义类(对象)间的关系,通过消息连接说明所标识的各种对象是如何通信、协作,使系统运作起来 。,6、定义服务及消息连接,是将OOA所创建的分析模型转换为设计模型,解决如何作的问题。OOD与

8、OOA没有明显的分界,采用相同的符号。,(3)OOD(Object-Oriented Design),什么是问题域设计 OOD是对OOA的修改、增补 根据实现技术及实现方面的限制,合并或分开一些类及对象、结构、属性、服务,但保留在OOA模型中所捕获到的基本的系统行为 什么是人机交互设计 通常在OOA阶段给出了所需的属性和操作,在设计阶段必须根据需求把交互的细节加入到用户界面的设计中,包括有效的人机交互所必需的实际显示和输入。什么是任务管理设计 当系统中有许多并发行为时,需要依照各个行为的协调和通信关系,划分各种任务。任务管理主要包括识别事件驱动任务、识别时钟驱动任务、识别优先任务、识别协调任务

9、、审查每个任务、定义每个任务等什么是数据管理设计 数据管理提供了在数据管理系统中存储和检索对象的基本结构,包括对永久性数据的访问和管理。它分离了数据管理机构所关心的事项,包括文件、关系型DBMS或面向对象DBMS等。,9.3 UML与RUP,(1)UML概述 20世纪90年代,3个最流行的面向对象方法是:OMT方法(Rumbaugh提出),Booch方法(Booch提出),OOSE方法(Jacobson提出),每种方法各有所长,但不同符号体系的使用给用户带来了混乱。 1994年Rumbaugh加入Booch所在的Rational公司,他们将Booch和OMT方法统一为UM0.8,后来Jacob

10、son也加入到这一工作中,并于1996年6月和10月发布了UML0.9和UML0.91。到1996年年底,UML已经占据面向对象技术市场85%的份额,成为事实上的工业标准。97年在其它一些组织的参与下,OMG采纳了UML1.1为面向对象的标准建模语言。,(2)UML的特点统一了Booch,OMT,OOSE和其它面向对象方法的基本概念和符号,汇聚了面向对象领域中各种优秀的思想。 UML是一种可视化建模语言,而不是一种方法,因为UML中没有过程的概念,而过程是方法的一个重要组成部分。这意味着,用户在使用UML进行建模时,可以根据需要选用任何适合的过程。,(3)UML的组成UML语义:描述基于UML

11、的精确元模型定义。使开发者能在语义上取得一致,消除了因人而异的最佳表达方法所造成的影响. UML表示法:定义UML符号的表示法。 UML中包括三种构造模块:元素、关系、图。其中 元素包括: 类、接口、用例、组件、节点、消息、连接、状态、事件、活动、包等。 关系包括: 依赖关系、关联关系、泛化关系、聚合关系、实现关系等。 图共有9种,包括: 用例图、类图、对象图、状态图、时序图,协作图、活动图、组件图和配置图。,(1)标准建模语言UML (用例图),用例图描述的是外部执行者(Actor)所理解的系统功能。它将系统看作黑盒,从外部执行者的角度来理解系统,一个用例模型由若干个用例图描述,用例图主要元

12、素是用例和执行者。用例图是包括执行者、由系统边界(一个矩形)封闭的一组用例,执行者和用例之间的关联、用例间关系以及执行者的泛化的图。,(1)标准建模语言UML (用例),一个用例是用户与计算机之间的一次典型交互作用。是系统执行的一系列动作,执行的结果能被执行者察觉到(为参与者产生一个可观测的结果值)用例特点:用例捕获某些用户可见的需求,实现一个具体的用户目标。用例由执行者激活,并提供确切的值给执行者。用例可大可小,但它必须是对一个具体的用户目标实现的完整描述。,(1)标准建模语言UML(执行者),执行者是指用户在系统中所扮演的角色(执行者未必是人)。通信联系:将执行者与用例连接到一起不带箭头的

13、线段,表示两者之间交换信息。执行者触发用例,并与用例进行信息交换。单个执行者可与多个用例联系;反过来,一个用例可与多个执行者联系。对一个大系统,要列出用例清单常常是十分困难。这时可先列出执行者清单,再对每个执行者列出它的用例,问题就会变得容易很多。,使用和扩展(Use and Extend):扩展关系:一个用例可由其它用例扩展而来,但扩展是有条件的。在没有遇到扩展点前,基用例正常执行,在到达扩展点且条件为真时,转入扩展用例执行,完成后再回到基用例继续执行。使用关系:当有一大块相似的动作存在于几个用例,又不想重复描述该动作,将重复的部分分离为一个用例,两用例间关系称为使用关系,(1)标准建模语言

14、UML (用例间关系),泛化关系将特定用例抽象为更一般的用例,子用例继承父用例的行为和含义,增加新行为或覆盖父用例的行为。参与者之间也可以存在泛化关系,(1)标准建模语言UML (符号表示),用例图中的图符:用例执行者系统:用于界定系统功能范围,描述该系统功能的用例都置于其中,而描述外部实体的执行者都置于其外。关联:使用:由用例A指向用例B,表示用例A中使用了用例B中的行为或功能。扩展:由用例A指向用例B,表示用例B描述了一项基本需求,而用例A则描述了该基本需求的特殊情况。泛化:,银行系统用例模型,与用例有些相似的概念是脚本。用例是一个类,它代表一类功能。而脚本是该用例的某个具体实例,表明系统

15、的一次具体执行过程。 如旅客订票是一个用例,而张三向系统订购到上海的机票,系统找零并打印车票,这就是一个脚本;而李四订购到北京的机票,但票已售完,这是另一个脚本。用例描述了系统做什么,但没有规定怎么做,它只是显示了参与者与用例间的关系,因此需要为用例图配上结构化的文本或图形(时序图、协作图、活动图)。,用例图与脚本(场景),例如:某系统中用户“登录”用例: 简单描述 本用例描述用户如何登录到系统中。 前置条件 无 后置条件 如果用例成功,则用户登录到系统中。否则,系统状态不变。 扩充点 无 事件流 基本流程 当用户登录到银行系统时,用例启动。(1)系统提示用户输入用户名和密码。(2)用户输入自

16、己的用户名和密码。(3)系统验证用户名和密码(E1),用户登录系统成功。 可选流程 E1:如果用户名和密码无效,系统提示错误信息,用户可重新输入或停止。,脚本示例,(2) 标准建模语言UML (类图),在面向对象的建模技术中,类、对象和它们之间的关系是最基本的建模元素。对于一个想要描述的系统,其类模型、对象模型以及它们之间的关系揭示了系统的结构。类图描述了系统中的类及其相互之间的各种关系,其本质反映了系统中包含的各种对象的类型以及对象间的各种静态关系(关联,子类型)。,类图中的图符:类:表示一个类,其中第一栏是类的名,第二栏是类的属性,第三栏是类的操作。包:包是一种分组机制,表示一个类图集合。

17、关联:用于表示类的对象之间在语义上的联系。其特殊形式有组成关联和聚集关联。,(2) 标准建模语言UML (类图),(2) 标准建模语言UML (类图),类图中的图符:聚集关联:用于表示类的对象之间的关系是整体与部分的关系。组成关联:用于表示类的对象之间的关系:整体拥有各部分,部分与整体共存,如整体不存在了,部分也会随之消失。泛化关联:泛化关系(继承关系)定义了类和包间的一般元素和特殊元素之间的分类关系。依赖关系:是指对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。,(2) 标准建模语言UML (类图),依赖关系比如说拧螺

18、丝(screw) ,需要依赖螺丝刀(Screwdriver),public class Person public void screw(Screwdriver screwdriver) screwdriver.screw(); ,(2) 标准建模语言UML (类图),继承关系表示,交通工具,水上交通工具,路面交通工具,空中交通工具,火车,汽车,地铁,(2) 标准建模语言UML (类图),关联关系的UML表示,public class Company private Person per; public Person getPerson() return per; public void se

19、tPerson(Person per) this.per=per; ,(2)标准建模语言UML (类图),自关联与限定关联,(2) 标准建模语言UML (类图),关联表示的一些说明:UML并不要求关联一定要有名字。但给所有关联命名(组成和聚集关联除外),是一个好习惯。UML也不需要角色名。但最好给出有意义的角色名。UML通常简写多重性。Eg. 0* 简写为*,11写为1。,聚集关系表示,组成关系表示,(2) 标准建模语言UML (类图),类图实例,(3) 标准建模语言UML (对象图),对象图是类图的一种变形。除了在对象名下面要加下划线以外,对象图中所使用的符号与类图基本相同。 对象图是类图的

20、一种实例化。一张对象图表示的是与其对应的类图的一个具体实例,即系统在某一时期或者某一特定时刻可能存在的具体对象实例以及它们相互之间的具体关系。,(3)标准建模语言UML (对象图),(3)标准建模语言UML (对象图),对象图并不象类图那样具有重要的地位,但是利用它可以帮助我们通过具体的实例分析,更具体直观地了解复杂系统类图的丰富内涵。 对象图还常常被用作协作图的一部分,用以展示一组对象实例之间的动态协作关系。,(4)标准建模语言UML (包图),包是将许多类集合成一个更高层次的单位,形成一个高内聚、低耦合的类的集合。 包图所显示的是类的包以及这些包之间的依赖关系。 如果两个包中的任意两个类之

21、间存在依赖关系,则这两个包之间存在依赖关系。 包的依赖是不传递的。,(4)标准建模语言UML (包图),何时使用包图在大项目中,包图是一种重要工具(有专家建议,只要你不能将整个系统的类图压缩到一张A4纸上,你就应该使用包图);,(5)标准建模语言UML (状态图),状态图是对类的一种补充描述,它展示了此类对象所具有的可能的状态以及某些事件发生时其状态的转移情况。 1) 状态表示状态。状态的改变称作转移,状态转移由箭头表示,箭头旁可以标出转移发生的条件。状态转移可以伴随有某个动作,它表明当转移发生时系统要做什么。表示初始状态。表示终止状态。表示中间状态,2)转移状态图中状态之间带箭头的连线被称为

22、转移。转移上标出触发转移的事件表达式。未标明事件,表示在源状态的内部活动执行完毕后自动触发转移。,(5)标准建模语言UML (状态图),状态 1 do/内部动作 entry/入口动作 exit/出口动作,状态 2 do/内部动作 entry/入口动作 exit/出口动作,消息(属性)条件/动作,何时使用状态图:如果某类对不同的事件响应不同,或有一个以上的状态,那么,它就有重要的时序行为,并不是所有的类都需要状态图,(6)标准建模语言UML (时序图),时序图描述了对象之间动态的交互关系,着重体现对象间消息传递的时间顺序。 时序图由一组对象构成,每个对象分别带有一条竖线,称作对象的生命线,它代表

23、时间轴,时间沿竖线向下延伸。 时序图描述了这些对象随着时间的推移相互之间交换消息的过程。消息用从一条垂直的对象生命线指向另一个对象的生命线的水平箭头表示。 时序图的主要作用在于详细说明一个用例中某脚本的具体实现过程。(与基于文本的描述相比,它能更清楚表示每条消息的接收和发送者),给定用例:添加借阅者管理员选择菜单项“添加借阅者”,对话框弹出,管理员输入借阅者信息,提交,系统根据借阅者ID号查询数据库,看数据库中是否存在该借阅者,如果不存在,创建该借阅者帐户,并存储其信息画出其对应的时序图。,时序图中的消息可以是信号、操作调用或类似于C+中的RPC和Java中的RMI。当收到消息时,接收对象立即

24、开始执行活动,即对象被激活了。通过在对象生命线上显示一个细长矩形框来表示激活。 消息的分类简单、同步(synchronous)、异步(asynchronous)消息可以用消息名及参数来标识。消息也可带有顺序号,消息还可带有条件表达式,表示分支或决定是否发送消息。,(6)标准建模语言UML (时序图),如何建立时序图,为每个用例编写至少一个场景 把场景抽象为时序图 寻找三种类:实体类:表示系统存储和管理的永久信息边界类:表示参与者与系统之间的交互控制类:表示系统在运行过程中的业务控制逻辑,登记借书,(7)标准建模语言UML (协作图),协作图用于描述相互合作的对象间的交互关系和链接关系。 时序图

25、着重体现交互的时间顺序,协作图则着重体现交互对象间的静态链接关系。 链接关系:类似于类图中的联系。通过在对象间的链接上标志带有消息串的消息(简单、异步或同步消息)来表达对象间的消息传递 在协作图中,对象同样是用一个对象图符来表示,箭头表示消息发送的方向,而消息执行的顺序则由消息的编号来表明。,(7)标准建模语言UML(协作图),在画协作图时,先将参与交互的对象放在图中,然后连接这些对象,并用对象发送和接收的消息来装饰这些连接。,(8)标准建模语言UML (活动图),活动图描述系统中各种活动的执行顺序,通常用于描述一个操作中所要进行的各项活动的执行流程。同时,它也常被用来描述一个用例的处理流程,

26、或者某种交互流程。 活动图由一些活动组成,当一个活动执行完毕之后,控制将沿着控制转移箭头转向下一个活动。活动图中还可以方便地描述控制转移的条件以及并行执行等要求。 在很多方面,活动图是结构化开发中流程图和数据流程图 (DFD) 的面向对象等同体 。,活动和跃迁:活动仅有一个起始点,但可以有多个结束点。当一个活动执行完毕,控制流立即传递给下个活动,跃迁被定义为从一个活动传递到下一个活动的路径。一个活动可以顺序地跟在另一个活动之后,这是简单的顺序关系。如果在活动图中使用一个菱形的判断标志,则可以表达条件关系。 泳道:活动图告诉你发生了什么,但没有告诉你该项活动由谁来完成。泳道将活动图的逻辑描述与顺

27、序图、合作图的责任描述结合起来。泳道用矩形框来表示 分叉和联结:分叉将一个控制流分为多个并发的控制流;联结将多个并发的控制流合并为一个控制流,活动图基本构成,活动图的符号表示,实心圆表示活动图的起点,实际上是一个占位符,带边框的实心圆表示终点。 圆角矩形表示执行的过程或活动。菱形表示判定点。 箭头表示活动之间的转换条件 表示转换所必须满足的条件表示可能会并行进行的过程的开始和结束。,标准建模语言UML (活动图),传感器监测用例活动图,什么时候用活动图,活动图的最大用处有两点: (1)类似于传统方法中的DFD,站在用户的角度描述一个用例中所有活动的执行顺序和关系。(2)类似于传统方法中的程序流

28、图,用于对算法的实现过程进行描述。,动态建模工具对比,协作图的布局方法能更清楚地表示出对象之间静态的连接关系,时序图突出执行的时序,能更方便地看出事情发生的次序。 如果要从设计角度描述在一个用例中的几个对象协同工作的行为,交互图(时序图和协作图的统称)是一种有力的工具。 如果想要描述跨越多个用例的单个对象的行为,应当使用状态图; 如果要从需求角度描述在一个用例的实现过程,则需考虑使用活动图,此外如果要描述跨多个用例的业务流程,也可使用活动图。,用例“取款”的活动图,用户,ATM,ATM,用例“取款”的时序图,(9)标准建模语言UML (构件图),构件图描述软件构件以及它们之间的依赖关系,从而便于人们分析和发现当修改某个构件时可能对那些构件产生影响,以便对它们做相应的修改或更新。 构件可以是源代码构件、二进制目标码构件、可执行构件或文档构件。表示构件。,(10)标准建模语言UML (配置图),配置图描述系统中硬件和软件的物理配置情况和系统体系结构。 在配置图中,用结点(立方体)表示实际的物理设备,如计算机和各种外部设备等,并根据它们之间的连接关系,将相应的结点连接起来,并说明其连接方式。 在结点内部,说明分配给该结点上运行的可执行构件或对象,从而说明哪些软件单元被分配在哪些结点上运行。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报