资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。本资料仅供参考,不能作为科学依据。谢谢。不能作为科学依据。,软件开发环境与工具复习,任课老师:黄武,1/287,/10/5,第一章软件工程与UML概述,软件工程,就是用当代工程原理、技术和方法进行软件开发、管理、维护和更新,软件工程,是一门研究怎样用系统化、规范化、数量化等工程标准和方法去进行软件开发和维护学科,综合应用数学、管理学、计算机科学知识原理,以到达提升软件质量,降低成本目标,2/287,/10/5,1.1 软件工程两个方面,软件工程包含两方面内容:,软件开发技术,,包含软件开发方法学,软件开发工具以及软件工程环境,软件项目管理,,包含软件度量、项目估算、进度控制、人员组成、资源配置以及质量控制等,3/287,/10/5,1.2 软件工程三要素,软件工程,方法、工具和过程,组成了软件工程三要素:,方法,完成软件开发各项任务技术方法,回答“怎样做”问题;,工具,为利用方法而提供自动或半自动软件工程支撑环境;,过程,为了取得高质量软件所需要完成一系列任务框架,它要求了完成各项任务工作步骤。,4/287,/10/5,1.3 软件工程基本原理,用分阶段生存周期计划严格管理,坚持进行阶段评审,结果应能清楚地审查,实施严格产品控制,不要随意改变需求,采取当代程序设计技术,开发小组人员应该少而精,认可不停改进软件工程实践必要性,5/287,/10/5,1.4 软件建模概念,软件建模是对现实客体,抽象,简化,,建模有利于清楚地表示我们意思,为何要建模,系统作为整体来了解过于复杂,模型提供了对系统主要方面简单描述,模型为开发组不一样组员之间以及开发组与客户之间提供了一个沟通伎俩,6/287,/10/5,1.5 对建模不正确认识,过分重视,只有大型项目才需要建模,建模需要使用CASE(Computer Aide Software Engineering)工具,过分轻视,全部开发人员都知道怎样建模,建模对我们并不主要,是浪费时间,7/287,/10/5,1.5 对建模不正确认识,过分呆板,认为在分析阶段就能够考虑完善,需求和设计是不能够更改,过分偏颇,建模等同于写文档,数据模型就是一起,8/287,/10/5,1.6 建模标准,模型要反应你难于处理开发问题,模型要在不一样精度级别上来表示,建造模型要和现实相连,主要系统要用一组独立模型去处理,模型应突出问题主要特征,无须追求绝正确真实和完美,建模应该支持由含糊到清楚,由粗到细逐步完善认识过程,应采取可视化图形建模语言,如UML,9/287,/10/5,2 面向对象软件开发,面向对象技术概述,面向对象分析(OOA),面向对象设计(OOD),面向对象程序(OOP),面向对象语言(OOL),10/287,/10/5,2.1 面向对象技术概述,面向对象技术,基本思想,是:以靠近人认识客观世界方法对一个软件系统进行分析,设计,详细讲就是对问题域进行自然分割,以靠近人类思维方式建立问题域模型,从而使设计出软件尽可能地描述现实世界,结构出模块化、可重用、可维护性软件,并能控制软件复杂性和降低开发维护费用,11/287,/10/5,2.2 面向对象分析(OOA),面向对象软件开发方法OOSD(Object-Oriented Software Development)包含三部分内容,面向对象分析(OOA)、面向对象设计(OOD)和面向对象程序(OOP),OOSD=OOA+OOD+OOP,OOA-OOD-OOP,12/287,/10/5,2.2.1 面向对象分析概述(OOA),面向对象分析(Object-Oriented Analysis),是指在一个软件系统开发过程中,按照面向对象方法来分析问题,其,关键思想,是:利用面向对象概念和方法为软件需求建造模型,以使用户需求逐步准确化、一致化、完全化。,实质,上就是对现实世界系统进行抽象建模,13/287,/10/5,2.2.2 OOA主要优点,加强了对问题域和系统责任了解,改进各类人员之间交流,对需求改变含有较强适应性,支持软件复用,贯通软件生命周期全过程一致性,有利于用户参加与了解,14/287,/10/5,2.2.3 OOA方法基本步骤,OOA方法包含以下5个步骤:,识别对象,识别对象属性,识别对象行为,识别对象所属类,定义主题词,15/287,/10/5,2.3 面向对象设计(OOD),面向对象设计(Object-Oriented Design),是OOA和OOP之间中间步骤,OOD作用是对OOA分析结果按照编程模型形式做深入规范化整理,方便能够使OOP直接使用,实际上OOA相当于对现实世界直接抽象,即分析建模,而OOD是对OOA结构按照计算机数据结构要求进行规范化,是设计建模,16/287,/10/5,2.3.1 OOD目标和过程,OOD目标是建立可实现系统模型,OOD过程是完善OOA成果,细化分析,结合实现技术、实现环境考虑,比如采取什么平台,什么开发语言等,OOD包含全局性设计解决议略(系统设计)和局部模型细化(对象设计)两个方面,17/287,/10/5,2.3.2 OOD七个准则,模块化,对象即OOD方法中模块,支持过程和数据抽象,注意信息隐藏,不一样对象之间应该采取低耦合方式,对象内部应该是高内聚,设计对象应该比较简单,轻易开发和管理,对象之间通讯协议应该比较简单,18/287,/10/5,2.3.3对象设计标准开闭,开闭标准(Open Closed Principle),对修改关闭,对扩展开放,就是在设计一个模块时候,应该使这个模块能够在不被修改前提下被扩展,在面向对象设计中,不允许更改是系统抽象层,而允许扩展是系统实现层。比如,我们设计一个汽车引擎,那么对于不一样汽车引擎,我们能够扩展,但上层程序不变,19/287,/10/5,2.3.4对象设计标准-替换,替换标准(Liskov Substitution Principle),子类能够替换父类,因为子类是父类扩展,所以父类能够含有属性和方法子类都含有,所以子类能够替换父类工作,20/287,/10/5,2.3.5对象设计标准-依赖,依赖倒置标准(Dependency Inversion Principle),在进行业务设计时,与特定业务相关依赖关系应该尽可能依赖接口和抽象类而不是详细类,比如,Windows中对各种设备,包含打印机,串口、USB接口操作都依赖于接口Open,Read,Write,Close等,而不是与详细设备打交道,比如OpenPrint,ReadUsb,21/287,/10/5,2.3.6对象设计标准-接口分离,接口分离标准(Interface Segregation Principle),使用多个专门接口比使用单一总接口要好。也就是说,一个类对另外一个类依赖性应该是建立在最小接口上,比如,Get_Color,Get_Weight,Get_Height比一个Get_Status愈加清楚,22/287,/10/5,2.3.7 OOD步骤,OOD步骤以下:,细化重组类,细化和实现类间关系,明确其可见性,增加属性,指定属性类型与可见型,分配职责,定义执行每个职责方法,对消息驱动系统,明确消息传递方式,利用设计模式进行局部设计,画出详细类图和时序图,23/287,/10/5,2.4 面向对象编程(OOP),面向对象编程(Object-Oriented Program),是一个计算机编程架构,其,基本标准,是计算机程序由单个能够起到子程序作用单元或对象组合而成。实际上OOP就是将OOD结果转化为计算机程序,24/287,/10/5,2.4.1 OOP方法基本思想,OOP目标,重用性、灵活性和扩展性,OOP,基本思想,是把组件实现和接口分开,而且让组件含有多态性,OOP强调在程序结构中语言要素语法,25/287,/10/5,2.5 面向对象语言,面向对象语言(Object-Oriented Language),是以对象作为基本程序结构单位程序设计语言,面向对象语言特点:,识别性,类别性,多态性,继承性,26/287,/10/5,第三章 UML语言概述,软件模型引入,面向对象语言历史,UML语言概念,UML语言特点,UML语言组成,27/287,/10/5,3.1 软件模型引入,对于多人开发较大程序而言,引入更多软件结构模型是必要,需求分析,模型结构设计,需求说明,源代码,编写代码,模型结构图,引入结构模型软件开发过程,28/287,/10/5,3.1.2 软件模型作用,软件模型设计使程序总体结构清楚,有利于处理大型软件开发中复杂性,它能够起到以下作用:,系统作为整体来了解过于复杂,模型则提供了对系统主要方面简明描述,模型为开发组不一样组员之间以及开发组和外界客户之间提供了一个有价值通讯伎俩,29/287,/10/5,3.2 面向对象语言历史,面向对象建模语言出现在20世纪70年代中期,从1989年到1994年,这类语言数量从不到10种增加到了50各种,其中,Booch、OMT、OOSE以及Coad/Yourdon建立方法占据了主流,不过不一样用户并不了解建模语言异同和优缺点,所以极难选择适合自己建模语言,30/287,/10/5,3.2.1 UML语言建立,1995年,Grady.Booch和James.Rumbaugh将他们各自设计面向对象建模方法统一为Unified Method Language0.8版本,一年以后,Ivar.Jacobson将他建模方法加入其中,形成了UML0.9版本,UML成为工业标准,1997年11月OMG采纳UML为对象建模标准,31/287,/10/5,3.2.2 UML语言历史,时间序列,其它方法,Booch91,Booch93,OMT-1,OOSE,OMT-2,1995,年,Unified Method 0.8,UML 0.9&0.91,合作搭档意见,UML 1.0,UML1.1,被,OMG,接纳为标准,1997.11.17,1996.6,和,10,月,UML 1.1,1997.9,公布,1997.1,公布,分散各部分,统一化,标准化,工业化,32/287,/10/5,3.3 UML语言概念,UML语言(Unified Modeling Language,统一建模语言),是一个通用可视化建模语言,用于对软件进行描述,可视化处理、结构和制造软件系统制品文档。,UML适合用于各种软件开发方法、软件生命周期各个阶段、各种软件开发工具,UML是总结了以往建模技术经验并吸收当今优异结果标准建模方法,33/287,/10/5,3.4 UML语言特点,UML统一了Booch、OMT和OOSE等方法中基本概念,UML还吸收了面向对象技术领域中其它方法优点,所以UML方法统一适用,易于得到大家认可,UML在演变过程中还提出了一些新概念,它是一个不停完善语言,34/287,/10/5,3.5 UML语言组成,UML由视图(View)、图(Diagram)、模型元素(Model Element)和通用机制(General Mechanism)等几个部分组成,视图(View),是表示系统某首先特征UML建模元素子集,它是由一个或多个图组成对系统某个角度抽象,图(Diagram),是模型元素集图形表示,通常由弧(关系)和顶点(模型元素)相互连接组成,35/287,/10/5,3.5.1 UML语言组成,模型元素(Model Element),代表面向对象中类、对象、接口、消息和关系等概念。UML中模型元素包含事物及事物之间联络.,通用机制(General Mechanism),用于表示UML中其它信息,比如注释,模型元素语义等,Professor,salary:Dollars,Compare,Student,major:String,Compare(obj1,obj2):bool,UML,组成元素举例,36/287,/10/5,3.5.2 UML语言内容,UML,关系,事务,图,行为事务,组织事务,辅助事务,结构事务,用例,类,接口,协作,对象,组件,节点,交互,状态机,包,注释,依赖关系,泛化关系,实现关系,关联关系,静态视图,动态试图,用例图,类图,对象图,包图,组件图,配置图,活动图,状态图,时序图,协作图,37/287,/10/5,3.6 UML不一样模型之间关系,UML能够经过称为4+1视图模型软件体系结构来了解系统,设计视图,实现视图,进程视图,布署视图,用例视图,UML 4+1,模型视图,38/287,/10/5,3.6.1 UML4+1模型视图,UML4+1模型视图经过五个不一样视图来描述系统,每个视图,对应于特定研究系统观点,,不一样视图突出特定参加者所关心系统不一样方面,经过合并全部5个视图中得到信息就能够形成系统完整描述,其中用例视图含有将其它4个视图内容结合到一起特殊作用,39/287,/10/5,3.6.2 UML5个模型视图作用,用例视图,:定义了系统外部行为,设计视图,:描述是支持用例视图中要求功效需求逻辑结构,实现视图,:描述结构系统物理组件,进程视图,:设计系统中并发性问题,布署视图,:描述物理组件怎样在系统实际环境中分布,40/287,/10/5,3.6.3 UML图与视图关系,序号,图(Diagram),视图(View),1,用例图(Use case),用例视图,2,对象图(Object),用例和设计视图,3,次序图(Sequence),用例和设计视图,4,协作图(Collaboration),用例和设计视图,5,类图(Class),设计视图,6,状态图(Stutechart),设计和进程视图,7,活动图(Activity),设计和进程视图,8,组件图(Component),实现视图,9,布署图(Deployment),布署视图,41/287,/10/5,3.7 用例驱动过程,使用用例进行UML模型视图实化和细化,用例,领域模型,Realization,Refinement,时序图,类图,状态图,42/287,/10/5,第四章 UML用例图,用例概述,用例图组成,执行者(Actor),执行者和用例之间关系,用例之间关系,用例模型获取方法,UML语境建模技术,UML需求建模技术,用例图举例,43/287,/10/5,1.用例概述,用例是由Ivar Jacobson在开发AXE系统中首先使用,然后加入到OOSE设计中,以后被广泛采取,,被认为是第二代面向对象技术标志,用例,是外部可见系统功效部分,也就是外部执行者(Actor)所能了解系统功效,比如在网上预定机票或酒店等,用例是开发者了解用户需求有利武器,44/287,/10/5,1.1 用例作用,用例图用于对系统、子系统或类行为可视化,方便使系统用户更轻易了解这些元素用途,用例经过捕捉用户可见需求,实现一个详细用户目标,用例将系统看做黑盒,从外部执行者角度来了解系统,便于简化用户需求,用例驱动了分析之后各个阶段工作,比如验证和测试,45/287,/10/5,2 用例图组成,用例图,是用来描述用例,通常由6个部分组成,执行者(Actor),用例(Use Case),关联关系(Association),包含关系(Include),扩展关系(Extend),泛化关系(Generalization),Actor,关系,用例,46/287,/10/5,2.1 用例表示,在UML语言中,用例用一个椭圆表示,而且每个用例必须有一个名字,用例名字之间不能重合,用例名字包含简单名和路径名,路径名是在用例名前加上所属包名字,购置,(简单名),网上商城,:,购置,(路径名),47/287,/10/5,3 执行者(Actor),执行者(Actor),是系统外部一个实体,它以某种方式参加用例执行,我们按照,角色,来区分执行者,每个执行者能够参加一个或多个用例,它经过交换信息与用例发生交互,在UML语言中,执行者通常使用人形图标表示,Actor,48/287,/10/5,3.1 执行者分类,执行者能够分为三类:,操作系统用户,与该系统建立联络外部系统,,比如,网上商城信用卡验证系统,股票交易系统远程数据更新系统等,系统内运行进程,,比如定时器,从执行者分类能够看出,凡是能够驱动系统产生动作内外条件均能够看做是执行者,49/287,/10/5,3.2 了解执行者注意事项,执行者对于系统而言总是外部,所以在系统控制之外,执行者直接同系统交互,能够帮助定义系统边界,执行者表示人和事物与系统发生交互时饰演角色,而不是特定人或事物,每一个执行者应该有一个与角色相一致名字,每个执行者必须有简短描述,执行者与系统发生交互时,能够饰演多个角色,50/287,/10/5,3.3 执行者之间关系,在UML中,执行者是类,所以,多个执行者之间关系是类与类之间关系,比如泛化关系。,父类,子类,1,子类,n,设计人员,软件设计,硬件设计,详细化,泛化,泛化,51/287,/10/5,3.4 执行者和用例之间关联关系,关联关系,描述执行者和用例之间关系,表示执行者与用例之间进行通信,关联关系使用箭头表示,用例,1,用例,2,用例,3,关联关系,关联关系是多对多关系,52/287,/10/5,4 用例之间关系,用例除了与执行者之间直接相关之外,还能够与其它用例之间存在关系,这些关系包含:,包含关系(使用关系),泛化关系,扩展关系等,53/287,/10/5,4.1 包含关系(使用关系),一个用例能够使用其它用例含有行为,并把它所包含用例行为作为本身一部分,叫做,包含关系,比如,我们进行,成绩查询,,,学分查询,操作之前均需要,登陆学籍管理系统,登录,成绩查询,学分查询,客户用例,提供者用例,54/287,/10/5,4.2 泛化关系,一个用例能够被尤其列举为一个或多个子用例,并称为,用例泛化,,比如,取款能够泛化为远程取款和柜台取款,远程取款,柜台取款,取款,子用例,父用例,泛化,55/287,/10/5,4.3 扩展关系,扩展关系,是一个用例被定义为基础用例增量扩展,这么经过扩展关系,就能够把新行为插入到已经有用例中,基础用例提供了一组扩展点,扩展点与一个类接口相同,我们能够写这个接口实现(扩展用例),也能够不写(基础用例),扩展用例,基础用例,56/287,/10/5,4.4 用例三种关系之间差异,包含关系,是调用关系,两个用例之间能够不存在逻辑关系,比如我们建立一个数学函数库,提供sin,cos等函数被使用,这些函数与使用者之间没有直接逻辑关系,泛化关系,用例之间存在着内在逻辑关系,子用例能够代替父用例,扩展关系,属于一个特殊泛化关系,实际上是增加接口,是一个抽象类泛化关系,57/287,/10/5,5 用例模型获取,首先经过下面问题,识别执行者,:,系统主要功效使用者是谁?,系统所服务对象及要完成工作?,系统维护、管理人员是谁?,系统所需要硬件设备有哪些?,与该系统交互其它系统有哪些?,对本系统产生结果感兴趣人或系统是谁?,58/287,/10/5,5 用例模型获取,然后经过下面问题,识别用例,:,特定执行者希望系统提供什么功效,当系统改变状态时,是否通知执行者,是否存在影响系统外部事件,哪个执行者通知系统这些事件,系统是否存放、检索信息?假如需要,由哪些执行者出发,59/287,/10/5,5.1 用例与事件流,事件流功效是为了用例逻辑流程建立文档,这个文档详细描述了系统参加者工作和系统本身工作;事件流是对用例详细描述,事件流包含:,简明说明,:描述用例作用,前提条件,:描述用例开始必须满足条件,主事件流和其它事件流,事后条件,:描述用例结束后设置状态,60/287,/10/5,6 UML语境建模技术,存在于系统外部用例与系统交互,从而组成系统,语境,,即系统存在外部环境,在UML语言中,利用用例图对系统语境进行建模,强调系统外部执行者,详细建模步骤以下:,识别系统外部执行者,为每个需要加深了解执行者结构类型,说明执行者与用例之间通信路径,将类似执行者组织成泛化结构层次,61/287,/10/5,7 UML需求建模技术,软件需求,就是依据用户对产品功效期望,提出产品外部功效描述。能够采取以下方法对功效建模:,识别系统外部执行者,建立,系统语境,考虑每一个执行者需要系统提供行为,把公共行为命名为用例,确定包含用例和扩展用例,在用例图中对执行者和用例关系建模,给用例图加上注释,便于了解,62/287,/10/5,8 UML用例图举例,我们举一个图书管理系统例子,在这个例子中,有三个执行者,分别是:,读者,、,图书管理员和系统管理员,我们分别针对这些执行者建立用例图,我们需要知道是:对于一个系统而言,我们并不是只建立一个用例图,而需要建立一系列相互关联用例图来清楚地表示整个系统,63/287,/10/5,8.1 图书管理系统用例总图,语境建模,64/287,/10/5,8.2 图书管理系统读者用例图,65/287,/10/5,8.3,图书管理系统图书管理员用例图,66/287,/10/5,8.4,图书管理系统系统管理员用例图,67/287,/10/5,第五章 静态视图类图,类图概述,类图表示,类图关系,对象图,包图,68/287,/10/5,1.类图概述,静态视图(Static View),是UML基础,它展现了整个系统静态结构组成及特征,静态视图包含了,类图、对象图和包图,类图,表述系统中类静态结构,不但描述了系统中类,还表示了类之间各种关系,比如:关联、依赖、泛化、实现等,69/287,/10/5,1.1 类图概述主要性,James Rumbaugh对类定义:,类(Classs),是含有相同结构、行为和关系一组对象描述符,类+类关系=,类图,类图技术,是面向对象设计方法关键,UML等建模工具主要依据类图来产生代码,所以在UML9个图种,类图是基石,最为主要,70/287,/10/5,1.2 类图概述类图作用,通常以下面三种方法使用类图:,对系统词汇建模,从需求描述中发觉类以及它责任,对简单协作建模,经过对类之间合作行为进行建模发觉类之间交互关系,对逻辑数据库模式建模,对永久存贮数据进行建模,71/287,/10/5,2 类图表示,类图表示概述,类表示,类名要求,类属性表示,类操作表示,72/287,/10/5,2.1 类图表示概述,客户,-,客户名:字符串,=,缺省值,地 址:字符串,+,取地 址(客户名):字符串,保险单,isPrepaid:Boolean,price:Money,dispatch(),保险单上项目,quantity,:,Integer,price:Money,isSatisfied:Boolean,团体客户,contractName,creditRating,creditLimit,个体客户,creditCardNo,remind(),certificationNo,credtRating()-,保险类别,if customer.creditRating is“poor”,the Order.isPrepaid set be true,1,1,0:*,属于,签署,1,金融保险系统类图,73/287,/10/5,2.2 类表示,在UML中,类表示为一个划分为三个格子长方形,最上面是类名字,中间是类属性,下面是类方法。除了类名字必须要之外,下面两行能够省略,类名,属性,方法,Student,nameage,getName()getAge(),74/287,/10/5,2.2.1 类元素可见性,标志可见性属性,+Public,#Protected,-Private,Package,UML支持可见性类型标志,75/287,/10/5,2.3 类名要求,每个类必须有一个名字,类名能够是简单名字或者复杂名字,1.简单名字,即类名,Student,Teacher等等,复杂名字,,包名:类名,Department:Student,School:Teacher,76/287,/10/5,2.3.1 类名约定,在UML语言中,类名有以下约定:,1.类名首字母大写,放在矩形顶部,2.假如类名由两个单词组成,那么两个单词合并,各个单词首字母大写,如:BankAccount,3.假如类名是正体字,表示这个类能够被实例化,假如是斜体字说明是抽象类,,如:Student,,Shape,77/287,/10/5,2.4 类属性表示,类属性放在类矩形框中间,普通表示形式为:,可见性 名称:类型=默认值 约束特征,/类内容表示可选项,如:,-name:String=“John”must be string,-age:Integer=18 Between 0 and 150,78/287,/10/5,2.4.1 类属性约定,在UML语言中,类属性约定以下:,1.假如属性由一个单词组成,这个单词全部小写,如:name,age,2.假如属性由多个单词组成,那么将多个单词合并,除了第一个单词外,其余单词首字母大写,如:computerModel,deskHeight,79/287,/10/5,2.5 类操作表示,类操作即类中方法,通常放在类矩形框底部,其形式以下:,可见性 名字(参数列表):返回值类型,/方括号 内内容表示可选项,如:,+getStudentName(in No:Integer):String,setValue(in value:Double),80/287,/10/5,2.5 类操作约定,在UML语言中,类操作约定以下:,1.假如方法名由一个单词组成,这个单词全部小写,如:add(),sub(),swap(),2.假如方法名由多个单词组成,那么将多个单词合并,除了第一个单词外,其余单词首字母大写,如:getAccount(),drawLine(),81/287,/10/5,3 类图关系,类图关系概述,依赖关系(Dependency),泛化关系(Generalization),实现关系(Realization),关联关系(Association),82/287,/10/5,3.1类图关系概述,关系(Relationship),是事物之间联络,类图中包含两大类事物:类及类之间关系,类是对客观世界抽象,而关系将这些类彼此之间联络起来,交换信息,组成问题处理方案,类图包含四种基本关系:,依赖,泛化,实现和关联,。在不一样建模语言中,这些关系名称略有不一样,83/287,/10/5,3.2 依赖关系(Dependency),假如有两个类A与B,当我们修改A类时会引发B类修改,我们称,类B依赖于类A,。,依赖关系,可能由各种原因引发,比如一个类向另一个类发送消息;一个类是另一个类数据组员,一个类是另一个类某个操作参数等(use a关系),UML中包含了,4种依赖关系,:使用(Usage)依赖,抽象(Abstraction)依赖,授权(Permission)依赖和绑定(Binding)依赖,84/287,/10/5,3.2.1 依赖关系分类图,依赖关系分类图,依赖关系,1.,使用依赖,2.,抽象依赖,3.,授权依赖,4.,绑定依赖,1),调用依赖(,call,),2),实例化依赖(,initialize,),3),参数依赖(,parameter,),4),发送依赖(,send,),1),跟踪依赖(,trace,),2),细化依赖(,refine,),3),导出依赖(,derive,),1),访问依赖(,access,),1),模板依赖(,template,),2),导入依赖(,import,),Abstract,Commission,Binding,Use,3),友元依赖(,friend,),85/287,/10/5,3.2.2 依赖关系表示,在UML语言中,采取虚线加箭头方式表示依赖关系,箭头指向被依赖对象,比如:,刷新屏幕,定时器类,显示类,时间到,依赖关系,提供者,客户,86/287,/10/5,3.3 泛化关系(Generalization),泛化关系,是普通事物(称为超类或父类)与该事物较为特殊种类(称为子类)之间关系,又称为继承关系,泛化关系三个特点:,子类含有父类全部特征,子类还包含自己额外特征,父类出现地方,子类也能够出现,87/287,/10/5,3.3.1 泛化关系表示,在UML语言中,采取空心箭头+实线(假如父类是接口,则采取虚线)方式表示泛化关系,箭头指向父类,类继承,接口继承,88/287,/10/5,3.3.1 泛化关系表示举例,泛化关系举例,BankAccount,owner:String,balance:Dollars,deposit(amount:Dollars),withdrawl,(amout:Dollars),CheckingAccount,insufficientFundsFee:Dollars,processCheck(checkProcess:Check),withdrawl(amout:Dollars),SavingAccount,annualRate:Percentage,depositMonthInterest(),withdrawl(amout:Dollars),89/287,/10/5,3.4 实现关系(Realization),实现关系,是规格说明和实现间关系,它表示不继承结构只继承行为,大多数情况下,实现关系用来要求接口和实现接口类或组件之间关系,能够在两种情况下使用实现关系,在接口与实现该接口类之间,在用例以及实现该用例协作之间,90/287,/10/5,3.4.1 接口(Interface),接口,外部与对象进行交互伎俩,它是一个类提供给另一个类一组操作,一个类和它接口之间关系叫做,实现,我们能够使用两种方式来表示接口,使用矩形框表示,并在矩形中加入说明是接口,将接口表示为一个小圆圈,并和实现它类用一条连线进行连接(lollipop),91/287,/10/5,3.4.2 接口表示,接口表示,汽车类,方向盘,前灯,汽车类,方向盘,司机,依赖关系,简化表示,实现关系,92/287,/10/5,3.4.3 接口继承,一个类能够有多个接口,一个接口也能够被多个类实现,比如,Professor,salary:Dollars,Compare,Student,major:String,Compare(obj1,obj2):bool,93/287,/10/5,3.5 关联关系(Association),关联,是一个结构关系,它指明一个类与另一个内在类间联络,表示类之间连接,它使一个类可见属性和方法被另一个类使用,关联关系包含:,双向关联,单向关联,聚合和反射关联,除聚合关系外,关联关系通常使用实线+箭头方式表示,94/287,/10/5,3.5.1 关联表示,关联用于连接两个类,下面列举一下关联:,球员,球队,为球队效力,员工,雇主,0.*,1,银行出纳员,用户,服务,有序,高中生,理科,选择,文科,选择,或,95/287,/10/5,3.5.2 关联关系多重值,表示含义,0.n0或n个,0.*0或任意多个,*0或任意多个,nn个,UML关联关系多重值和它们表示,96/287,/10/5,3.5.3 双向关联,双向关联,表示两个类之间彼此知道相互之间联络,默认情况下都假定双向关联,双向关联采取连接两个类实线表示,在线一端,能够放置角色名和多重值,航班,0.1,飞机,0.*,分配飞机,分配航班,97/287,/10/5,3.5.4 单向关联,单向关联,表示只有一个类知道这种联络存在,另一个类则不知道,单向关联表示为一条带有指向已知类开放箭头实线,也可包含角色名与多重值,OverdrawAccountsReport,0.*,BankAccount,overdrawAccounts,generatedOn:Date,Refresh(),98/287,/10/5,3.5.5 聚合,聚合(Aggregation),是一个特殊关联形式,用于描述整体与局部关系,聚合包含两类:,基本聚合(Aggregation),组合聚合(Composition),99/287,/10/5,3.5.5.1 基本聚合,基本聚合,表示一个类是另外一个类组成部分,但各个组成部分能够与整体单独存在,基本聚合表示:空心菱形+实线,比如,汽车与车轮关系,Car,4,Wheel,wheels,100/287,/10/5,3.5.5.2 组合聚合,组合聚合,表示一个子类生命周期依赖于父类实例生命周期,子类不能单独存在,组合聚合表示:实心菱形+实线,比如,窗口与菜单关系,窗口,0.*,菜单,拥有,101/287,/10/5,3.5.6 关联类,关联,和类一样也能够有自己属性和操作,此时,关联实际上被抽象为关联类,比如:球员和球队之间经过协议关联类进行关联,球员,球队,为球队效力,员工,雇主,0.*,1,协议,102/287,/10/5,3.5.7 类图举例,Visual Paradigm 绘制通讯类图,103/287,/10/5,2 对象图,对象图(Object Diagram),是表示在某一时刻一组对象以及它们之间关系图,对象图由节点以及连接这些节点之间连线组成。这里节点能够是对象或类,假如把类图实例化后就得到对象图,所以说对象图是类图一个特例,其表示方法也类似于类图,104/287,/10/5,2.1 对象图表示,对于任何一个类,能够实例化为很多对象,每个对象含有不一样属性值和相同操作。所以对象图只包含两个部分:对象名和特定属性值,对象名,:,类名,属性,1=“,特定值,”,属性,2=“,特定值,”,属性,3=“,特定值,”,105/287,/10/5,2.2 对象图作用,对象图显示对象集及其关系,代表了系统某个时刻状态。对象图能够表示类关系细节或动态关系,c:Company,name=“Sales”,d1:Department,name=“R&D”,d2:Department,name=“US Sales”,d3:Department,name=“Enn”,p:Person,employeeID=4362,title=“VP of Sales”,address=“1472 Miller Street.”,:ContactInformation,对象图实例,106/287,/10/5,2.2 对象图作用,捕捉实例和连接,在分析和设计阶段创建,捕捉交互静态部分,举例说明数据/对象结构,详细描述瞬态图,由分析人员、设计人员实现开发,107/287,/10/5,2.2.1 对象图作用举例,了解循环队列类工作原理,wp=0,rp=0,队列空,bRF=,false,rp=k,wp=k,队列满,bRF=,true,队列正常使用,wp=j,rp=i,bRF=,false,108/287,/10/5,2.3 对象图建模过程,确定参加交互各对象类,可以参摄影应类图和交互图,确定类间关系,如依赖、泛化、关联等,针对交互在某特定时刻各对象状态,使用对象图为这些对象建模,建模时,系统分析师要根据建模目标绘制对象关键状态和关键对象之间连接关系,109/287,/10/5,2.4 对象图和类图区分,类图,对象图,基本元素包含名称、属性和操作,基本元素只包含名称和属性,类名字由类名组成,对象名字有对象名:类名组成,类中列出了操作,对象图中不包含操作,类使用关联关系,含有多重属性,类使用,链连接,,没有多重性,类属性分栏定义了全部属性特征,对象只定义了属性当前值,以用于测试用例,110/287,/10/5,3.包与包图,对于大型系统而言,含有很多类型,这些类型之间联络复杂,假如直接使用类图进行整个系统表示,将使类图变得混乱不堪,无法了解,所以应该寻求比类更大而以功效为分解方式表示方式,这就是包,以包及类等建立起来图形就是包图,111/287,/10/5,3.1包图概述,包,在UML中用类似文件夹符号表示模型元素表示。系统中每个元素都只能为一个包全部,一个包能够嵌套在另一个包中,使用包图能够将相关元素归入一个系
展开阅读全文