【教学课件】第七章统一建模语言UML.ppt

上传人:小飞机 文档编号:5660447 上传时间:2023-08-07 格式:PPT 页数:149 大小:1.43MB
返回 下载 相关 举报
【教学课件】第七章统一建模语言UML.ppt_第1页
第1页 / 共149页
【教学课件】第七章统一建模语言UML.ppt_第2页
第2页 / 共149页
【教学课件】第七章统一建模语言UML.ppt_第3页
第3页 / 共149页
【教学课件】第七章统一建模语言UML.ppt_第4页
第4页 / 共149页
【教学课件】第七章统一建模语言UML.ppt_第5页
第5页 / 共149页
点击查看更多>>
资源描述

《【教学课件】第七章统一建模语言UML.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第七章统一建模语言UML.ppt(149页珍藏版)》请在三一办公上搜索。

1、第七章 统一建模语言UML,7.1 UML简介 7.2 用例建模 7.3 静态建模 7.4 动态建模 7.5 物理架构建模 7.6 基于UML的统一建模过程RUP,7.1 UML简介,Unified Modeling Language近十几年来OOSE最重要的成果贡献者:Grady Booch,James Rumbaugh,Ivar Jacobson于1996年6月推出中文网站http:/,参考书,美 G Booch,J Rumbaugh,I Jacobson.邵维忠等译.UML用户指南.北京:机械工业出版社,2001美 James Rumbaugh.姚淑珍,唐发根译.UML参考手册.北京:机

2、械工业出版社,2001 美 W Boggs等.邱仲潘等译.UML与Rational Rose2002从入门到精通.北京:电子工业出版社,2002,UML是一种可视化的图形符号建模语言,利用它可以进行需求分析、概要设计、详细设计、编程实现、项目计划、测试、原型迭代、产品发布、产品维护等。目前在软件工程里主要用于系统分析与系统设计。Rational Rose是UML的主要建模工具。Microsoft Visio是UML常见的建模工具。,模型是一个系统的完整的抽象,模型是对现实的简化。人们对某个领域特定问题的求解及解决方案,对它们的理解和认识都蕴涵在模型中。通常,开发一个计算机系统是为了解决某个领域

3、特定问题,问题的求解过程,就是从领域问题到计算机系统的映射。,领域问题,概念模型,分析、抽取,系统需求,解决方案,分析、设计,提取,UML作为一种可视化的建模语言,提供了丰富的基于面向对象概念的模型元素及其图形表示元素。,什么是模型?为什么要建模?,UML的重要影响,软件生存周期:RUP(Rational Unified Process)软件建模方式:可视化的语言软件文档规范:文档由UML建模工具自动产生软件人员分工:岗位界线逐渐趋向模糊,UML的内容结构,UML模型中的图,UML共提供了九种图:第一类图是用例图。用例图(Use Case,用况、实例)从用户的角度描述系统功能,并指出各功能的操

4、作者。第二类图是静态图,包括类图(Class)、对象图(Object)。类图描述类的定义和类之间的关系(关联、继承、聚合等),对象是类的实例。包描述系统的分层结构。第三类图是行为图,包括状态图(Statechart)和活动图(Activity)。状态图描述对象的所有可能状态及事件发生时状态的转移条件。活动图描述了用例的活动行为以及活动时的约束关系。,第四类图是交互图,包括时序图(Sequence、循序、顺序、序列、轨迹)和协作图(Collaboration、合作图)。顺序图描述了对象间的动态协作关系,强调消息的时间排列;合作图同样描述了对象间的动态协作关系,但他强调消息发送和接收的对象的结构组

5、织(及连接关系)。第五类图是实现图,包括构件图(Component、组件、部件)和部署图(Deployment、配置、实施)。构件图描述了代码构件(模块)的物理结构和构件(模块)间的依赖关系;配置图定义了系统中软、硬件的体系结构。,UML模型中的图,UML五类九种图的符号体系1,UML五类九种图的符号体系2,UML五类九种图的符号体系3,UML五类九种图的符号体系4,UML五类九种图的符号体系5,UML是一种标准化的图形建模语言,它是面向对象分析与设计的一种标准表示。由:视图(views),图(Diagrams),模型元素(Model elements)通用机制(general mechani

6、sm)等几个部分构成。,UML的主要内容,一个系统应从不同的角度进行描述,从一个角度观察到的系统称为一个视图(view)。视图由多个图(Diagrams)构成,它不是一个图表(Graph),而是在某一个抽象层上,对系统的抽象表示。如果要为系统建立一个完整的模型图,需定义一定数量的视图,每个视图表示系统的一个特殊的方面。另外,视图还把建模语言和系统开发时选择的方法或过程连接起来。,UML的主要内容,视图(views),Use case View描述系统的外部特性、系统功能等。,Implementation View 表示系统的实现特征,常用构件图表示。,Design View 描述系统设计特征,

7、包括结构模型视图和行为模型视图,前者描述系统的静态结构(类图、对象图),后者描述系统的动态行为(交互图、状态图、活动图)。,Process View 表示系统内部的控制机制。常用类图描述过程结构,用交互图描述过程行为。,Deployment View 配置视图描述系统的物理配置特征。用配置图表示。,UML的主要内容,UML常用视图,UML语言定义了五种类型,9种不同的图,把它们有机的结合起来就可以描述系统的所有视图。用例图(Use case diagram)从用户角度描述系统功能,并指出各功能的操作者。静态图(Static diagram),表示系统的静态结构。包括类图、对象图、包图。行为图(

8、Behavior diagram),描述系统的动态模型和组成对象间的交互关系。包括状态图、活动图。交互图(Interactive diagram),描述对象间的交互关系。包括顺序图、合作图。实现图(Implementation diagram)用于描述系统的物理实现。包括构件图、部件图。,UML的主要内容,图(Diagrams),图,代表面向对象中的类,对象,关系和消息等概念,是构成图的最基本的常用的元素。一个模型元素可以用在多个不同的图中,无论怎样使用,它总是具有相同的含义和相同的符号表示。通用机制(general mechanism)用于表示其他信息,比如注释,模型元素的语义等。另外,为了

9、适应用户的需求,它还提供了扩展机制(Extensibility mechanisms),包括构造型(Stereotype)、标记值(Tagged value)和约束(Constraint).使用UML语言能够适应一个特殊的方法(或过程),或扩充至一个组织或用户。,UML的主要内容,模型元素(Model elements),UML在演变过程中还提出了一些新的概念。在UML标准中新加了模板(Stereotypes)、职责(Responsibilities)、扩展机制(Extensibility mechanisms)、线程(Threads)、过程(Processes)、分布式(Distributi

10、on)、并发(Concurrency)、模式(Patterns)、合作(Collaborations)、活动图(Activity diagram)等新概念,并清晰地区分类型(Type)、类(Class)和实例(Instance)、细化(Refinement)、接口(Interfaces)和组件(Components)等概念。,UML的主要内容,(1)统一标准UML统一了Booch、OMT和OOSE等方法中的基本概念,已成为OMG的正式标准,提供了标准的面向对象的模型元素的定义和表示。(2)面向对象UML还吸取了面向对象技术领域中其他流派的长处。UML符号表示考虑了各种方法的图形表示,删掉了大量

11、易引起混乱的、多余的和极少使用的符号,也添加了一些新符号。(3)可视化、表示能力强系统的逻辑模型或实现模型都能用UML模型清晰的表示,可用于复杂软件系统的建模。(4)独立于过程UML是系统建模语言,独立于开发过程。(5)易掌握、易用由于UML的概念明确,建模表示法简洁明了,图形结构清晰,易于掌握使用。,UML的特点,模型元素是UML构造系统的各种元素,是UML构建模型的基本单位。模型元素代表面向对象中的类,对象,关系和消息等概念,是构成图的最基本的常用的概念。分为以下两类:1、基元素 是已由UML定义的模型元素。如:类、结点、构件、注释、关联、依赖和泛化等。2、构造型元素 在基元素的基础上构造

12、的新的模型元素,是由基元素增加了新的定义而构成的,如扩展基元素的语义(不能扩展语法结构),也允许用户自定义。构造型用括在双尖括号中的字符串表示。目前UML提供了40多个预定义的构造型元素。如使用Use、扩展 Extend。,通用模型元素,模型元素,可以在图中使用的概念统称为模型元素。模型元素在图中用其相应的视图元素(符号)表示,下图给出了常用的元素符号:类、对象、结点、包和组件等。,元素符号图,属性,用例,包,结点,状态,组件,类,操作,对象,属性,操作,注释,Name 名称,Attribute 属性,Operation 操作,接口,关联:连接(connect)模型元素及链接(link)实例。

13、依赖:表示一个元素以某种方式依赖于另一种元素。泛化:表示一般与特殊的关系,即“一般”元素是“特殊”关系的泛化。聚合:表示整体与部分的关系。除了上述的模型元素外,模型元素还包括消息,动作和版类(stereotype)等。组合聚集特殊聚合。,连接关系图,模型元素,关联,聚合(集),组合(成),依赖,实现,泛化(继承),模型元素与模型元素之间的连接关系也是模型元素,常见的关系有关联(association)、泛化(generalization)、依赖(dependency)和聚合(聚集、aggregation),其中聚合是关联的一种特殊形式。这些关系的图示符号如下图所示。,关联和链,关联(assoc

14、iation)是两个或多个类之间的一个关系。,关联的表示关联有二元关联(binary)、三元关联(ternary)、多元关联(higher order),如下图(a)(b)所示。,关联图,(a)二元关联,(b)三元关联,链(link)是关联的具体体现。也就是累之间的关联实例对象与对象的关联。在对象名下加下划线。,姚明,男,中锋,火箭队,专业,关联的表示,关联的重数重数(multiplicity)表示多少个对象与对方对象相连接(右图),常用的重数符号有:“0.1”表示零或1“0.*”或“*”表示零或多个“1.*”表示1或多个“1,3,7”表示1或3或7(枚举型)重数的默认值为1。,关联的表示,个

15、人,业余爱好,1*,委员会,个人,年龄,0.2,1.4,3.5,Post,带有多重性关联的图,有序关联与导航(导引)在关联的多端标注ordered指明这些对象是有序的(右图)。关联可以用箭头,表示该关联使用的方向(单向或双向),称为导引或导航(navigation)。,受限关联(qualified association)使用限定词对该关联的另一端的对象进行明确的标识和鉴别(下图所示)。,限定词,类1,类2,受限关联图,关联的表示,约束,UML中提供了一种简便、统一和一致的约束(constraint),是各种模型元素的一种语义条件或限制。一条约束只能应用于同一类的元素。,约束的表示如果约束应用

16、于一种具有相应视图元素的模型元素,它可以出现在它所约束元素视图元素的旁边。通常一个约束由一对花括号括起来(constraint),花括号中为约束内容(如下图所示)。,如果一条约束涉及同一种类的多个元素,则要用虚线把所有受约束的元素框起来,并把该约束显示在旁边(如或约束)。,约束关系图,约束,计本学生,软件工程,or,管理信息系统,约束,对泛化的约束的两种表示方法,约束可分为:对泛化的约束、关联的约束,对泛化的约束应用于泛化的约束,显示在大括号里,若有多个约束,用逗号隔开。如果没有共享,则用一条虚线通过所有继承线,并在虚线的旁边显示约束,如下图所示:,约束,constraint 1,对泛化有以下

17、常用的约束:1、完全(complete):说明泛化中所有子元素都已在模型中说明,不允许再增加其它子元素。2、互斥(disjoint):父类对象不能有多于一个型的子对象。3、不完全(incomplete):说明不是泛化中所有子元素都已说明,允许再增加其它子元素。4、重叠(overlapping):给定父类对象可有多于一个型的子对象,表示重载。,约束,对消息,链接角色和对象的约束 自定义约束,对象类的xor关联,关联的约束 对关联有以下常用的约束:1、隐式(implicit):该关联只是概念性的,在对模 型进行精化时不再用。2、有序(ordered):具有多重性的关联一端的对象是 有序的。3、可变

18、(changeable):关联对象之间的链(Link)是 可变的(添加、修改、删除)。4、只增(addonly):可在任意时刻增加新的链接。5、冻结(frozen):冻结已创建的对象,不能再添加、删除和修改它的链接。6、xor:“或约束”,某时刻只有一个当前的关联实例。,依赖,依赖关系描述的是两个模型元素(类,组合,用例等)之间的语义上的连接关系,其中一个模型元素是独立的,另一个模型元素是非独立的(或依赖的)。如下图表示类A依赖于类B的一个友元依赖关系。,类A,类 B,友元,依赖关系图,依赖的形式可能是多样的,针对不同的依赖的形式,依赖关系有不同的变体(varieties)。,抽象(abstr

19、action):从一个对象中提取一些特性,并用类方法表示。绑定(binding):为模板参数指定值,以定义一个新 的模板元素。组合(combination):对不同类或包进行性质相似融合。许可(permission):允许另一个对象对本对象的访问。使用(usage):声明使用一个模型元素需要用到已存 在的另一个模型元素,这样才能正确实现使用者的 功能(包括调用、实例化、参数、发送)。跟踪(trace):声明不同模型中元素的之间的存在一 些连接。访问或连接(access):允许一个包访问另一个包的 内容。调用(call):声明一个类调用其他类的操作的方法。,依赖关系的不同变体,导出(derive

20、):声明一个实例可从另一个实例 导出。友元(friend):允许一个元素访问另一个元 素,不管被访问的元素是否具有可见性。引入(import):允许一个包访问另一个包的内 容,并为被访问组成部分增加别名。实例(instantiation):关于一个类的方法创 建了另一个类的实例声明。参数(parameter):一个操作和它参数之间的 关系。实现(realize):说明和其实之间的关系。精化(refine):声明具有两个不同语义层次上 的元素之间的映射。发送(send):信号发送者和信号接收者之间的 关系。,实现,实现关系是一种模型元素(如类)与另外一种模型元素(如接口)连接起来其中接口只是行为

21、的说明而不是结构或者实现。真正的实现由前一个模型元素来完成。如下图(a)所示。,图(a),注释,注释用于对UML语言的元素或实体进行说明,解释和描述。通常用自然语言进行注释。如上图(b)所示。,这是一个类,人员,图(b),有效用户,验证,1992年由Jacobson提出了Use case 的概念及可视化的表示方法Use case图,受到了IT界的欢迎,被广泛应用到了面向对象的系统分析中。用例驱动的系统分析与设计方法已成为面向对象的系统分析与设计方法的主流。用例模型由Jacobson在开发AXE系统中首先使用,并加入由他所倡导的OOSE和Objectory方法中(Objectory过程逐渐进化为

22、Rational统一过程)。用例方法引起了面向对象领域的极大关注。自1994年Ivar Jacobson的著作出版后,面向对象领域已广泛接纳了用例这一概念,并认为它是第二代面向对象技术的标志。,7.2 用例建模,用例建模概述:用例建模技术,用于描述系统的功能需求。在宏观上给出模型的总体轮廓。通过对典型用例的分析,使开发者能够有效地了解用户的需求。,7.2 用例建模,用例图,用例模型(Use case model)用例模型描述的是外部执行者(Actor)所理解的系统功能。它描述了待开发系统的功能需求。它驱动了需求分析之后各阶段的开发工作,不仅在开发过程中保证了系统所有功能的实现,而且被用于验证和

23、检测所开发的系统,从而影响到开发工作的各个阶段和 UML 的各个模型。用例模型由若干个用例图构成,用例图中主要描述执行者和用例之间的关系。在UML中,构成用例图的主要元素是用例和执行者及其它们之间的联系。,7.2 用例建模,创建用例模型的工作包括:定义系统、确定执行者和用例、描述用例、定义用例间的关系、确认模型。,一、执行者(角色、Actor)执行者是指用户在系统中所扮演的角色。执行者在用例图中是用类似人的图形来表示,但执行者可以是人,也可以是一个外界系统。,注意:用例总是由执行者(角色)启动的。还应画出相应的执行者描述模板。,如何确定执行者:1、谁使用系统的主要功能(主执行者)?2、谁需要从

24、系统获得对日常工作的支持和服务?3、需要谁维护管理系统的日常运行(副执行者)?4、系统需要控制哪些硬件设备?5、系统需要与其它哪些系统交互?6、谁需要使用系统产生的结果(值)?,一、执行者,角色描述模板,二、用例,二、用例(use case)从本质上讲,一个用例是用户与计算机之间的一次典型交互作用。在UML中,用例被定义成系统执行的一系列动作(功能)。用例有以下特点:用例捕获某些用户可见的需求,实现一个具体的用户目标。用例由执行者激活,并将结果值反馈给执行者。用例必须具有功能上的完整描述。,如何确定用例:1、与系统实现有关的主要问题是什么?2、系统需要哪些输入/输出?这些输入/输出从何而来?到

25、哪里去?3、执行者需要系统提供哪些功能?4、执行者是否需要对系统中的信息进行读、创建、修改、删除或存储?,二、用例,用例模型,供货,买饮料,取货款,客户,供货人,收银员,售货系统用例图,用例图的元素,用例图描述了系统的功能需求,它是从执行者的角度来理解系统,由“执行者”、“用例”和“用例之间的关系”3类模型元素构成。图中还有另外两种类型的连接,即使用和扩展关系,是两种不同形式的泛化关系。,Use表示一个用例使用另一个用例。Extend通过向被扩展的用例添加动作来扩展用例。,用例图,用例图实例,例1:用例图实例,应用生命周期用例图,金融贸易系统用例图,用例图实例,课堂练习,现有一医院病房监护系统

26、,病症监视器安置在每个病房,将病人的病症信号实时传送到中央监视系统进行分析处理。在中心值班室里,值班护士使用中央监视系统对病员的情况进行监控,根据医生的要求随时打印病人的病情报告,定期更新病历,当病症出现异常时,系统会立即自动报警,并实时打印病人的病情报告,立及更新病历。要求根据现场情景,对医院病房监护系统进行需求分析,建立系统的用例模型。,请对系统需求进行分析!,经过初步的需求分析,得到系统功能要求:1、监视病员的病症(血压、体温、脉搏等)2、定时更新病历3、病员出现异常情况时报警。4、随机地产生某一病员的病情报告。,例2:医院病房监护系统,监视病情,更新病历,一、情景分析,二、简单的需求分

27、析说明 系统名称:医院病房监护系统 根据分析系统主要实现以下功能:1、病症监视器可以将采集到的病症信号(组合),格式化后实时的传送到中央监护系统。2、中央监护系统将病人的病症信号开解后与标准的病症信号库里的病症信号的正常值进行比较,当病症出现异常时系统自动报警。3、当病症信号异常时,系统自动更新病历并打印病情报告。4、值班护士可以查看病情报告并进行打印。5、医生可以查看病情报告,要求打印病情报告,也可以查看或要求打印病历。6、系统定期自动更新病历。,上页,需求分析,三、建立系统的用例图1、通过以下六个问题识别角色(1)谁使用系统的主要功能?(2)谁需要系统的支持以完成日常工作任务?(3)谁负责

28、维护,管理并保持系统正常运行?(4)系统需要应付(或处理)哪些硬设备?(5)系统需要和哪些外部系统交互?(6)谁(或什么)对系统运行产生的结果(值)感兴趣?,需求分析,通过回答这六个问题以后,再进一步分析可以识别出本系统的四个角色:值班护士,医生,病人,标准病症信号库。角色描述模板,通过分析可以初步识别出系统的用例为:中央监护,病症监护,提供标准病症信号,病历管理,病情报告管理。顶层用例图为:,角色描述,2、识别出系统的用例 通过分析可以初步识别出系统的用例为:中央监护,病症监护,提供标准病症信号,病历管理,病情报告管理。顶层用例图为:,标准病症信号库,角色描述,将用例细化,可以得到分解的用例

29、:1、中央监护 分解为:a)分解信号 将从病症监护器传送来的组合病症 信号分解为系统可以处理的信号。b)比较信号 将病人的病症信号与标准信号比较。c)报警 如果病症信号发生异常(即高于峰值),发出报警信号。d)数据格式化 将处理后的数据格式化以便写入 病历库。2、病症监护 分解为:e)信号采集 采集病人的病症信号。f)模数转化 将采集来的模拟信号转化为数字信号。g)信号数据组合 将采集到的脉搏,血压等信号数 据组合为一组信号数据。h)采样频率改变 根据病人的情况改变监视器采样 频率。3、提供标准病症信号 i(此用例不分解),用例细化,3、细化系统的用例,4、病历管理 分解为:j)生成病历 k)

30、查看病历 l)更新病历 m)打印病历 5、病情报告 分解为:n)显示病情报告 在显示器上显示病情o)打印病情报告 在打印机打印病情报告,用例细化,给出细化的用例图,病人,细化的用例图,任何建模语言都以静态建模机制为基础,标准建模语言UML也不例外。所谓静态建模是指对象之间通过属性互相联系,而这些关系不随时间而转移。类和对象的建模,是UML建模的基础。我们认为,熟练掌握基本概念、区分不同抽象层次以及在实践中灵活运用,是三条最值得注意的建模基本原则。UML的静态建模机制包括:用例图(Use case diagram)类图(Class diagram)对象图(Object diagram)包图(Pa

31、ckage diagram)构件图(Component diagram)配置图(Deployment diagram),7.3 静态建模,1 类与对象,面向对象的开发方法的基本任务是建立对象模型,是软件系统开发的基础。UML中的类图(Class Diagram)与对象图(Object Diagram)表达了对象模型的静态结构,能够有效地建立专业领域的计算机系统对象模型。,一、类图与对象图 对象类简称类,是面向对象模型的最基本的模型元素,用类图来描述。类图(Class diagram)由系统中使用的类以及它们之间的关系组成,是描述系统的一种图式,分为长式和短式。类及类型名均用英文大写字母开头,属

32、性及操作名为小写字母开头。常见类型有:Char,Boolean,Double,Float,Integer,Object,Short,String等。类图是构建其它图的基础。,类名,对象是对象类的实例(instance),用对象图来描述。对象图亦分长式和短式。,对象名,类图与对象图,对象图,(1)属性(attribute)属性用来描述类的特征,表示需要处理的数据。属性定义:visibility attribute-name:type=initial-value property-string 可见性 属性名:类型=缺省值约束特性 其中:可见性(visibility)表示该属性对类外的元素是否可见

33、。分为:public(+)公有的,即模型中的任何类都可以访问该属性。private(-)私有的,表示不能被别的类访问。protected(#)受保护的,表示该属性只能被该类及其子类访 问。如果可见性未申明,表示其可见性不确定。,1 类与对象,(2)操作 对数据的具体处理方法的描述则放在操作部分,操作说明了该类能做些什么工作。操作通常称为函数,它是类的一个组成部分,只能作用于该类的对象上。操作定义:visibility operating-name(parameter-list):return-type property-string 可见性 操作名(参数表):返回类型约束特性 其中:可见性同上

34、。参数表:参数名:类型,Parameter-name:type=default-value 返回类型:操作返回的结果类型。,1 类与对象,类图的描述,1 类与对象,二、类的识别 是面向对象方法的一个难点,但又是建模的关键。常用的方法有:1、名词识别法 2、系统实体识别法 3、从用例中识别类 4、利用分解与抽象技术,关键是要定义类的“属性”及“操作”。,UML中类的关系有关联(association)、聚集(aggregation)、泛化(generalization)、依赖(depending)和细化(refinement)。,一、关联 关联是类之间的连结,分为:1、常规关联(图a)2、多元关

35、联3、有序关联4、受限关联5、或关联(图b)6、关联类(图c),图a 顾佣关联,图b 或关联,图c 关联类,2 UML中类之间的关系,2 UML中类之间的关系,7、其它关联 递归关联(Recursive association)即一个类到自身的关联。,递归关联,人,治疗,病人,医生,带有职责的递归关联,二、聚集(aggregation),聚集是一种特殊的关联,它指出类间的“整体-部分”关系。又分为:,1、共享聚集(shared aggregation)其“部分”对象可以是任意“整体”对象的一部分。当“整体”端的重数不是1时,称聚集是共享的。,、组合聚集(composition aggregat

36、ion)其“整体”(重数为0、1)拥有它的“部分”。部分仅属于同一对象,整体与部分同时存在。,共享聚集图,组合聚集图,2 UML中类之间的关系,三、泛化,泛化指出类之间的“一般与特殊关系”,即继承关系。父类与子类之间构成类的分层结构。,2 UML中类之间的关系,抽象类 指没有实例的类,定义一些抽象的操作,即不提供实现方法的操作,只提供操作的特征。并附以abstract。交叠泛化 在继承树中,若存在某种具有公共父类的多重继承,称为是交叠(overlapping)的。否则是不交的(disjoint)。完全泛化 一般类特化出它所有的子类,称为完全泛化,记为complete。不完全泛化 即未特化出它所

37、有的子类,称为是不完全泛化 的,表示为incomplete.,有关泛化的约束,2 UML中类之间的关系,三、泛化,图b 完全泛化,图c 泛化中的多态性及带识别名称的泛化,继承性的实例,泛化关系图,图 形abstract,颜 色中心位置笔的粗细,移 动()旋 转()显 示()abstract,2 维abstract,定位填充类型,缩放填充,弧半径起始角弧度角显示,维数,2 UML中类之间的关系,抽象类加说明 abstract,2 UML中类之间的关系,泛化关系图,四、类图的抽象层次和实现关系,需要注意的是,虽然在软件开发的不同阶段都使用类图,但这些类图表示了不同层次的抽象。在需求分析阶段,类图是

38、研究领域的概念;在设计阶段,类图描述类与类之间的接口;而在实现阶段,类图描述软件系统中类的实现。按照Steve Cook和John Dianiels的观点,类图分为三个层次:概念层、说明层、实现层。需要说明的是,这个观点同样也适合于其他任何模型,只是在类图中显得更为突出。描述了类图的抽象层次和细化(Refinement)关系。,2 UML中类之间的关系,概念层,概念层(Conceptual)类图描述应用领域中的概念。实现它们的类可以从这些概念中得出,但两者并没有直接的映射关系。事实上,一个概念模型应独立于实现它的软件和程序设计语言。,说明层,说明层(Specification)类图描述软件的接

39、口部分,而不是软件的实现部分。面向对象开发方法非常重视区别接口与实现之间的差异,但在实际应用中却常常忽略这一差异。这主要是因为OO语言中类的概念将接口与实现合在了一起。大多数方法由于受到语言的影响,也仿效了这一做法。现在这种情况正在发生变化。可以用一个类型(Type)描述一个接口,这个接口可能因为实现环境、运行特性或者用户的不同而具有多种实现。,实现层,只有在实现层(Implementation)才真正有类的概念,并且揭示软件的实现部分。这可能是大多数人最常用的类图,但在很多时候,说明层的类图更易于开发者之间的相互理解和交流。理解以上层次对于画类图和读懂类图都是至关重要的。但是由于各层次之间没

40、有一个清晰的界限,所以大多数建模者在画图时没能对其加以区分。画图时,要从一个清晰的层次观念出发;而读图时,则要弄清它是根据哪种层次观念来绘制的。要正确地理解类图,首先应正确地理解上述三种层次。虽然将类图分成三个层次的观点并不是UML的组成部分,但是它们对于建模或者评价模型非常有用。尽管迄今为止人们似乎更强调实现层类图,但这三个层次都可应用于UML,而且实际上另外两个层次的类图更有用。,识别类通过名词识别法和系统实体识别法等方法可以识别出系统的十二个类,以下用类图这种简单明了的方法分别表示出类的名称,属性操作。见下图:,静态建模例:建立“医院病房监护系统”的类与对象模型,值班护士 医生 病人 病

41、症监视 中央监护系统 报警信号 标准病症信号库 病历库 病人病症信号 病情报告 病历 标准病症信号,类的识别,建立类的关系在类图中标明类之间的关系:,系统类图,3 包图,一个最古老的软件方法问题是:怎样将大系统拆分成小系统。UML中解决该问题的思路之一是将许多类集合成一个更高层次的单位,形成一个高内聚、低耦合的类的集合。UML中这种分组机制叫包(Package)。引入包是为了降低系统的复杂性。包是一种组合机制,把各种各样的模型元素通过内在的语义连在一起成为一个整体就叫包,构成包的模型元素称为包的内容,包通常用于对模型的组织管理,因此有时又将包称为子系统(subsystem)。包拥有自己的模型元

42、素,包与包之间不能共用一个相同的模型元素,包的实例没有任何语义(含义)。仅在模型执行期间包才有意义。,包的内容:可以是类的列表,也可以是另一个包图,还可以是一个类图。包之间的关系有依赖和泛化(继承)。,3 包图,包名,包A,包B,Oracle界面,Sybase界面,(a)包的表示,(b)包的依赖关系,(c)包的泛化关系,包图,包,和类一样包也有可见性,利用可见性控制外部包对包的内容的存取方式,UML中定义了四种可见性:私有(private),公有(public),保护(protected)和实现(implementation)。缺省值为公有。包也可以有接口,接口与包之间用实线相连,接口通常由包

43、的一个或多个类实现。,3 包图,包图举例,包的继承,3 包图,包图的关系举例,包的关系举例,3 包图,包图举例,例:用包图描述医院监护系统的体系结构,包图,7.4动态建模,动态模型的消息传递图符,动态模型主要描述系统的动态行为和控制结构。动态行为包括系统中对象生存期内可能的状态以及事件发生时状态的转移,对象之间动态合作关系,显示对象之间的交互过程以及交互顺序,同时描述了为满足用例要求所进行的活动以及活动间的约束关系。,在动态模型中,对象间的交互是通过对象间消息的传递来完成的。对象通过相互间的通信(消息传递)进行合作,并在其生命周期中根据通信的结果不断改变自身的状态。,UML消息的图形表示是用带

44、有箭头的线段。如下图所示:,动态模型,状态图(state diagram):状态图用来描述对象,子系统,系统的生命周期。活动图(activity diagram):着重描述操作实现中完成的工作以及用例实例或对象中的活动,活动图是状态图的一个变种。顺序图(sequence diagram):是一种交互图,主要描述对象之间的动态合作关系以及合作过程中的行为次序,常用来描述一个用例的行为。合作图(collaboration diagram):用于描述相互合作的对象间的交互关系,它描述的交互关系是对象间的消息连接关系。,动态模型主要描述系统的动态行为和控制结构。包括4类图:状态图、活动图、顺序图、合作

45、图。,UML中的消息,一、简单消息(simple)表示控制流,描述控制如何从一个对象传递到另一个对象,但不描述通信的细节。,二、同步消息(synchronous)是一种嵌套的控制流,用操作调用实现。操作的执行者要到消息相应操作执行完并回送一个简单消息后,再继续执行。,三、异步消息(asynchronous)是一种异步的控制流,消息的发送者在消息发送后就继续执行,不等待消息的处理。,1 状态图,状态图(State Diagram)用来描述一个特定对象的所有可能的状态及其引起状态转移的事件。一个状态图包括一系列的状态以及状态之间的转移。状态所有对象都具有状态,状态是对象执行了一系列活动的结果。当某

46、个事件发生后,对象的状态将发生变化。状态图中定义的状态有:,初态状态图的起始点,一个状态图只能有一个初态。终态是状态图的终点。而终态则可以有多个。中间状态可包括三个区域:名字域、状态变量与活动 域。复合状态可以进一步细化的状态称作复合状态。,中间态,响应事件的内部动作或活动的列表,定义为:事件名(参数表条件)/动作表达式,状态变量 是状态图所显示的类的属性。活动 列出了在该状态时要执行的事件和动作。有3个标准事件:entry事件用于指明进入该状态时的特定动作。exit事件用于指明退出该状态时的特定动作。do事件用于指明在该状态中时执行的动作。,例:,1 状态图,1 状态图,状态迁移(转换)一个

47、对象的状态的变迁称为状态迁移。通常是由事件触发的,此时应标出触发转移的事件表达式。如果转移上未标明事件,则表示在源状态的内部活动执行完毕后自动触发转移。,状态图,电梯状态转换图,细化的状态表示,UML给出了电梯细化的状态表示(下图)。,状态名(状态变量)活动,细化电梯状态图,在第一层,上行,上升到指定楼层,上行,空闲时间=0开始计时,到达,下降到指定楼层,下行,超时,移到第一层,到达,到达,1 状态图,1 状态图,或关系的子状态图,嵌套状态图 状态图可能有嵌套的子状态图,且子状态图可以是另一个状态图。子状态又可分为两种:“与”(并发)子状态和“或”子状态,,与子状态及或子状态图,状态图,事件,

48、1 状态图,事件是激发状态迁移的条件或操作。在UML中,有4类事件:,1、某条件变为真;表示状态迁移的上的警戒条件。2、收到来自外部对象的信号(signal)表示为状态迁移上的事件特征,也称为消息。3、收到来自外部对象的某个操作中的一个调用,表示为状态迁移上的事件特征,也称为消息。、状态迁移上的时间表达式。,状态图之间的消息发送,状态图之间可以发送消息,用虚箭头表示。,消息发送状态图,1 状态图,顺序图存在两个轴:水平轴表示一组对象,垂直轴表示时间。顺序图中每个对象图符下面的垂直虚线表示对象的生命线,每条对象生命线上的细长矩形表示该对象正处于活动时期,细长矩形底部的“”表示该对象被删除。对象间

49、的通信通过在对象的生命线之 间消息来表示,消息的箭头类型指明消息的类型。,2 顺序图,顺序图(Sequence Diagram)用来描述对象之间动态的交互行为,着重体现对象间消息传递的时间顺序。,对象名,一、概述,当收到消息时,接收对象立即开始执行活动,即对象被激活了,通过在对象生命线上显示一个细长矩形框来表示激活。,二、消息,有两种使用顺序图的方式:一般格式和实例格式。实例格式详细描述一次可能的交互。没有任何条件和分支或循环,它仅仅显示选定情节(场景)的交互(如下图所示)。而一般格式则描述所有的情节。因此,包括了分支,条件和循环。,顺序图,三、顺序图的形式,带分支的顺序图,2 顺序图,呼叫者

50、,交换,接受者,拿起话筒,响拨号声,拨号码,路由选择,鸣响音,停音,响铃声,接电话,停铃声,ABCDE,B-A1SC-B10S通过网络选择通话路径E-D5S双方通话,打电话的顺序图,2 顺序图,创建对象与对象的消亡,在顺序图中,还可以描述一个对象通过发送一条消息来创建另一个对象。,当对象消亡(destroying)时,用符号 表示。,2 顺序图,创建或删除对象,活动图(Activity Diagram)的应用非常广泛,它既可用来描述操作(类的方法)的行为,也可以描述用例和对象内部的工作过程,并可用于表示并行过程。活动图是由状态图变化而来的,它们各自用于不同的目的。活动图描述了系统中各种活动的执

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号