标准建模语言uml.ppt

上传人:牧羊曲112 文档编号:6137106 上传时间:2023-09-27 格式:PPT 页数:181 大小:1.74MB
返回 下载 相关 举报
标准建模语言uml.ppt_第1页
第1页 / 共181页
标准建模语言uml.ppt_第2页
第2页 / 共181页
标准建模语言uml.ppt_第3页
第3页 / 共181页
标准建模语言uml.ppt_第4页
第4页 / 共181页
标准建模语言uml.ppt_第5页
第5页 / 共181页
点击查看更多>>
资源描述

《标准建模语言uml.ppt》由会员分享,可在线阅读,更多相关《标准建模语言uml.ppt(181页珍藏版)》请在三一办公上搜索。

1、第6章 统一建模语言UML,戴立红,第6章 统一建模语言UML,6.1 UML概述6.2 UML世界的构成、视图、图6.3 用 例 建 模6.4 类和对象建模6.5 动 态 建 模6.6 物理体系结构建模6.7 UML建模工具ROSE的使用,6.1 UML概述,6.1.1 UML与模型一、什么是UMLUML(Unified Modeling Language)统一建模语言是用来设计软件蓝图的可视化建模语言。UML是一种基于面向对象的可视化建模语言。UML提供了丰富的基于面向对象概念的模型元素和图形表示元素。规定了严格的语法、语义和构架规则。,6.1.1 UML与模型,二、模型及其作用1、模型在

2、解决问题之前必须首先理解所要解决的问题。对问题理解得越透彻,就越容易解决它。为了更好地理解问题,人们常常采用建立问题模型的方法。所谓模型,就是为了理解事物而对事物作出的一种抽象。2、模型的作用(1)模型可以按照易于理解的方式提供了对复杂系统的简明描述。(2)模型为项目参与者之间提供了交流的手段。,6.1.1 UML与模型,三、为什么使用UML(1)是否使用面向对象技术来开发软件。(2)软件的规模和复杂程度是否超出了用户的控制能力。(3)是否是一个团队进行软件项目开发。,6.1.2 UML工具,UML工具是帮助软件开发人员方便使用UML的软件。它的主要功能包括:支持各种UML模型图的输入、编辑和

3、存储;支持正向工程和逆向工程;提供与其他开发工具的接口。UML工具有很多,各种工具提供的功能不同。下面介绍主要的UML工具。,6.1.2 UML工具,一、主要的UML工具介绍1、Rational公司推出的Rose是目前最好的基于UML的工具。Rose具有正向工程、逆向工程和对象模型更新等功能。用户修改模型后可以直接反映到代码上,同样用户对代码框架的修改也可以反映到模型上。同时它还提供对多种程序设计语言的支持,包括常见的C+、Java、Visual Basic等。2、Together Soft 公司的Together将建模工具和Java集成开发环境有机地结合到一起。它的主要特点是符合UML规范的

4、建模工具,提供程序开发人员使用的源码编辑器。支持Java和C+。3、微软公司的Visio Professional 2000提供内建的UML支持。如果考虑Visio绘图工具同时提供绘制多种图形的功能,这是一个相当有价值的工具。,6.1.2 UML工具,二、如何选择UML工具从技术方面考虑,选择UML工具应考虑以下方面。1、支持UML1.3。工具至少应该支持以下UML模型图:用例图、类图、协作图、顺序图、包图和状态图。2、支持项目组的协同开发。对于一个大项目,开发人员之间可以共享设计模型图是必需的。UML工具应该允许从另一个模型只引入所需要的组件而不必引入整个模型。这样方便一个项目的协作开发。3

5、、支持双向工程。支持正向工程和逆向工程是一项复杂的需求。正向工程是从模型产生代码,这样可以节省编程时间。逆向工程是从代码产生模型,它在重新同步模型和代码时非常有用。,6.1.2 UML工具,二、如何选择UML工具4、HTML文档化。建模工具应能产生HTML文档。以便开发者可以通过浏览器迅速查询模型中的各个图形,而不需要加载建模工具本身。5、打印支持。建模工具应允许一张大图能够准确地用多个页面打印出来,并提供打印预览和缩放功能。6、健壮性。软件的健壮性是一个基本的要求,必须防止设计期间,模型没有备份的情况下,工具崩溃。7、开发平台。UML工具应该与应用系统保持平台一致。8、提供XML支持。XML

6、将成为各种工具之间数据交换的标准格式。提供与其他开发工具的接口。,6.2 UML世界的构成、视图、图,6.2.1 UML世界的构成 对于UML而言,其建模要素主要包括三个方面:1、基本构造块:即建模元素,是模型的主体。2、UML规则:即支配基本构造块如何放在一起的规则。3、公用机制:运用于整个UML模型中的公共机制、扩展机制。,6.2.1 UML世界的构成,一、UML基本构造块,6.2.1 UML世界的构成,二、UML建模规则UML的模型图不是UML基本图素的简单堆砌,它必须按特定规则有机地组合而成,从而构成一个完整的UML模型图。UML建模规则包括以下方面:1、命名:任何一个UML基本图素和

7、模型图(统称UML成员)都必须命名。2、作用域:UML成员所定义的内容起作用的上下文环境,如类名受所属包的约束。3、可见性:UML成员能被其它成员引用的方式。4、完整性:UML成员之间互相关联的合法性和一致性。5、运行属性:UML成员在运行时的特性,如进程、线程、同步等。,6.2.1 UML世界的构成,三、公用机制:规格描述、修饰、通用划分、扩展机制。1、规格描述(规格说明)UML不仅仅是一种图形语言,在图形表示法的每个部分后面都有一个规格描述,用来对构造块的语法和语义进行文字叙述。就是非图形的文档。2、修饰为了使建模的表述可视化和容易理解,UML提供了有选择地公开相关细节的方式。如表示的类的

8、属性和方法的可见性。UML模型中类的成分带“-”表示私有的(Private),带“+”表示公开的(Public),其他类可以访问,带“#”表示受保护的(Protected)。,6.2.1 UML世界的构成,三、公用机制:规格描述、修饰、通用划分、扩展机制。3、通用划分(1)类和对象的划分。类是一种抽象,对象是一个具体的实例;类定义了基本的属性,每个对象则具有不同的属性值。(2)接口和实现的分离。接口是一种声明,是一个契约,也是服务的入口;实现负责实施接口提供的契约。4、扩展机制(extensibility mechanisms)当使用UML的基本图素难以有效地表达复杂事物时,就需要对UML进行

9、某种形式的扩充,以描述各种新事物。UML提供了这种扩充机制。UML 包含三种主要的扩展组件:约束、构造型和标记值。,6.2.1 UML世界的构成,三、公用机制:规格描述、修饰、通用划分、扩展机制。4、扩展机制(1)约束是对语义的扩展,用于增加和修改规则。用某种形式化语言或自然语言表达的文字说明。约束信息约束可以附加在表元素、依赖关系,或注释上。如图所示的约束,对剧目类的约束保证了剧目具有唯一的名称。,6.2.1 UML世界的构成,4、扩展机制(2)构造型用于增加新的模型元素,但是这个模型元素要建立在 UML 已定义的模型元素基础上。构造型用双尖括号内的文字字符串表示。构造型关键字构造型可以放在

10、表示基本模型元素的符号的里边或旁边。可以为特殊的构造型创建一个符号,来替代原来的基本模型元素的符号。,6.2.1 UML世界的构成,4、扩展机制(3)标记值用于为模型元素添加新的特性。附加到任何模型元素上的信息块。用形如标记信息的字符串表示。其中标记信息通常由标记名称、分隔符(=)和值三部分组成。标记是建模者想要记录的一些特性的名字,而值是给定元素的特性的值。标记值直接放在UML元素中。如图所示Scheduling 包中的标记值。说明 Frank Martin 要在年底世纪前完成计划的制定。,6.2.2 UML的视图和图,UML中用一组视图(View)反映系统的各个方面。每个视图说明了系统的一

11、个特殊侧面。若干个不同的视图可以完整地描述所建造的系统。视图是由若干幅图(Diagram)组成的一种抽象。一幅图包含了系统某一特殊方面的信息,它阐明了系统的一个特定部分或方面。一幅图由若干个模型元素组成。模型元素表示图中的类、对象、用例、节点、包、注解、构件、关系等概念。对视图的划分带有一定的随意性。,6.2.2 UML的视图和图,一、用例视图(Use Case View)二、静态视图(Static View)三、行为视图(Behavior View)四、交互视图(Interactive View)五、实现视图(Implementation View),6.2.2 UML的视图和图,一、用例视

12、图(Use Case View)强调从用户角度看到的或需要的系统功能,并指出各功能的操作者。包括用例图。用例图用来描述系统功能。用例视图是中心,因为它的内容决定了其他视图的开发。用例视图还可用于确认和最终验证系统,用户根据用例视图来确认所建造的系统是否是他所想要的,开发者用用例视图测试系统是否完成了指定的功能。,6.2.2 UML的视图和图,二、静态视图(Static View)展现系统的静态或结构组成及特征。包括类图、对象图和包图。1、类图(Class Diagram):描述系统中类的静态结构。不仅定义系统中的类,表示类之间的联系如关联、聚合、泛化、依赖等,也包括类的内部结构类的属性和操作。

13、类图描述的是一种静态关系,在系统的整个生命周期都是有效的。2、对象图(Object Diagram):对象图描述系统在某个时刻的静态结构。对象是类的实例。由于对象存在生命周期,因此对象图只能在系统某一时间段存在。3、包图(Package Diagram):由包或类组成。主要显示类的包以及这些包之间的依赖关系、继承关系和组成关系。包图用于描述系统的分层结构。,6.2.2 UML的视图和图,三、行为视图(Behavior View)描述系统的动态行为。包括状态图和活动图。1、状态图(State Diagram):用来描述一个特定对象的所有可能状态及其引起状态转移的事件。通常,状态图是对类图的补充。

14、在实用上并不需要为所有的类画状态图,仅为那些有多个状态其行为受外界环境的影响并且发生改变的类画状态图。2、活动图(Activity Diagram):活动图用来描述完成一个操作所需要的活动,或者是一个用例实例(场景)的活动。活动图有利于识别并行活动。,6.2.2 UML的视图和图,四、交互视图(Interactive View)描述对象间的交互关系。包括顺序图和协作图。1、顺序图(Sequence Diagram):也称顺序图、序列图。显示对象之间的动态合作关系,它强调对象之间消息发送的顺序,同时显示对象之间的交互。2、协作图(Collaboration Diagram):描述对象间的协作关系

15、,显示对象间的动态合作关系。除显示信息交换外,协作图还显示对象以及它们之间的关系。也称合作图。3、区别如果强调时间和顺序,则使用顺序图。如果强调上下级关系,则选择协作图。,6.2.2 UML的视图和图,五、实现视图(Implementation View)包括构件图和部署图。1、构件图(Component Diagram):也称组件图。描述代码部件的物理结构及各部件之间的依赖关系。一个部件可能是一个资源代码部件、一个二进制部件或一个可执行部件。2、部署图(Deployment Diagram):也称配置图或实施图。用来描述系统运行时软件和硬件的物理配置。其中硬件配置包含硬件节点(如计算机和设备

16、)及其连接关系,软件配置包含各构件在硬件节点上的分布情况。,UML中的模型和图,6.2.2 UML的视图和图,顺序图、协作图、活动图和状态图四种动态图的运用 为帮助理解类而画它的状态图。状态图描述跨越多个用例的单个对象的行为,而不适合描述多个对象间的行为合作。顺序图和协作图适合描述单个用例中几个对象的交互行为。顺序图突出对象间交互的顺序,而协作图描述交互对象间静态的连接关系。当行为较为简单时,顺序图和合作图是最好的选择。当行为比较复杂时,想显示跨越多用例或多线程的复杂行为,可考虑使用活动图。顺序图和协作图仅适合描述对象之间的合作关系,而不适合对行为进行精确定义,如果想描述跨越多个用例的单个对象

17、的行为,应当使用状态图。,6.2.3 UML用于软件开发,一、面向对象方法学、UML和统一开发过程1、方法学、语言和过程方法学定义了语言和过程。语言定义了使用的模型和表示这些模型的表示法。过程定义了如何以及何时产生各种不同的模型。2、面向对象方法、UML和统一开发过程UML是一种基于面向对象的可视化建模语言。使用面向对象开发软件可以使用UML。软件开发过程的各个阶段可以使用UML进行建模。,6.2.3 UML用于软件开发,二、UML在软件开发各个阶段的应用UML常用于建立软件系统的模型,适用于系统开发的不同阶段。1.用户需求该阶段可使用用例图来捕获用户的需求,用例图从用户的角度来描述系统的功能

18、。通过用例建模,描述对系统感兴趣的外部角色和他们对系统的功能要求。2.系统分析分析阶段主要对用户的需求进行进一步的分析,建立问题域的模型。使用UML的类图来描述系统的静态结构,使用顺序图、协作图、活动图和状态图开描述系统的动态行为。,6.2.3 UML用于软件开发,3.系统设计在分析模型基础上,考虑定义软件系统中的技术细节用到的类,如引入处理用户交互的接口类、处理数据的类、处理通信和并行性的类。主要使用类图。此阶段可使用包图对类进行分组,帮助对整个系统的框架进行理解。4.系统实现实现阶段的任务是使用面向对象程序设计语言,将来自设计阶段的类转换成源程序代码,用构件图来描述代码构件的物理结构以及构

19、件之间的关系。用部署图来描述和定义系统中软硬件的物理体系结构。5.测试UML建立的模型也是测试阶段的依据。可使用类图进行单元测试,使用构件图、协作图进行集成测试,使用用例图进行确认测试,以验证测试结果是否满足用户的需求。,6.3 用 例 建 模,用例建模是用于描述一个系统应该做什么的建模技术。用例模型包括用于描述一个系统的所有用例图和用例描述。用例图包括用例、参与者、用例和参与者之间的关系和系统。用例描述是一个关于参与者与系统如何交互的规格说明。系统:代表的是一部机器或一个业务活动等等,而并不是真正实现的软件系统。,6.3.1 用例图,一幅用例图包含的模型元素有系统、参与者、用例、参与者和用例

20、之间的关系以及用例之间的不同关系。图中的方框代表系统。系统的边界用来说明被构建的用例模型的应用范围。被看作是一个提供用例的黑盒。系统的边界定义了系统所具有的功能。系统边界的确定实质上就是系统责任的确定。描述该系统功能的用例置于方框内,描述外部实体的参与者置于其外。,6.3.2 参与者,参与者是指与系统交互的人、设备和其他系统。“与系统交互”是指参与者向系统发送消息,或从系统那里接收消息,或与系统交换信息。简单地说,参与者执行用例。特殊的参与者系统时钟。特殊的参与者系统时钟。有时候我们需要在系统内部定时地执行一些操作,如检测系统资源使用情况、定期地生成统计报表等等。如图所示。参与者代表一种角色,

21、而不是具体的某个人。例如,张三要向保险公司投保,我们要创建的是投保人这个角色,而不是张三这个人。参与者可以分为主动参与者和被动参与者。主动参与者启动一个用例,而被动参与者从不启动用例。,6.3.2 参与者,二、寻找参与者可以通过回答下列问题来确定参与者:(1)谁使用系统的主要功能?(2)谁需要从系统中得到对日常工作的支持?(3)谁需要维护、管理和维持系统的日常运行?(4)系统需要控制哪些硬件设备?(5)需要与系统交互的其他系统有哪些?(6)系统产生的结果感兴趣的人或其他系统。,6.3.2 参与者,三、参与者之间的关系泛化关系因为参与者属于类。参与者之间也可以存在泛化关系。把某些参与者的共同行为

22、抽取出来表示成通用行为,且把它们描述称为父类。用一个三角箭头从子类参与者指向父类参与者。参与者之间的泛化关系如图所示。,6.3.3 用例,用例(Use Case):用例代表的是一个完整的功能。表示系统所提供的服务。在UML中,用例定义为:给特定参与者一个可观察的结果值的系统所完成的一系列动作。一、用例的特征(1)用例总是被参与者启动的。用例所代表的功能必须由参与者激活,而后才能执行。(2)用例向参与者提供值,这些值必须是可识别的;(3)用例是完整的,一个用例必须是一个完整的描述。一种不适当的用法是把一个用例分成几个小的用例。这些小的用例像程序设计语言中的函数一样相互调用,而事实上,在最终的值产

23、生前,这些小的用例是不完整的。,6.3.3 用例,二、用例和参与者之间的关系用例和参与者之间也有连接关系,用例和参与者之间的关系属于关联,又称作通信关联。这种关联表明哪个参与者能与该用例通信。,6.3.3 用例,三、寻找用例可以通过让每个参与者回答以下问题来寻找用例:(1)参与者需要系统提供哪些功能?参与者需要做什么?(2)参与者需要读、创建、删除或储存系统中的信息有哪些?(3)参与者是否要被系统中的事件提醒,或者参与者是否要提醒系统中的某些事情?从功能观点看,这些事件表示什么?(4)参与者的日常工作是否因为系统的新功能(尤其是目前尚未自动化的功能)而被简化或提高了效率?对同一个项目,不同的开

24、发者选取的用例数是不一样的。要在项目规模和用例数之间保持平衡。,6.3.3 用例,四、用例之间的关系 1、泛化关系如果两个或更多用例在行为、结构和目的方面存在共性,可以使用用例的一般特殊关系,即泛化关系。子用例继承父用例的所有结构、行为和关系。,6.3.3 用例,四、用例之间的关系 2、包含关系当在两个或多个独立用例重复自已并希望避免重复时,使用包含关系。关键字为include。3、扩展关系表达某些可选或只在特定条件下才执行的系统行为的用例,称为扩展用例。关键字为extent,由扩展用例指向基本用例。,6.3.3 用例,五、用例的描述图形化表示的用例本身不能提供该用例所具有的全部信息,因此还必

25、须描述用例不可能反映在图形上的信息。通常用文字描述不能反映在图形上的信息。用例的描述其实是一个关于参与者与系统如何交互的规格说明。1、用例描述的主要内容:用例名称、用例简要说明、参与者、基本事件流、备选事件流、前置条件、后置条件等。,6.3.3 用例,五、用例的描述事件流:描述了一个用例在执行时执行者与系统之间的交互过程。基本事件流:对用例中常规和预期路径的描述。备选事件流:由于受其他一些条件的影响,可能执行了其他的路径,这种路径称为备选事件流。前置条件(Pre-Condition):是该用例执行的前提条件。一般用参与者或系统的状态来表示。后置条件(Post-Condition):用例结束时系

26、统的状态。,6.3.3 用例,五、用例的描述2、基本事件流和备选事件流实例针对每一个用例可以用事件流来描述参与者与系统之间对话的细节内容。例:在ATM系统中的“提款”用例事件流 提款-基本事件流(Basic Flow)(1)用户插入信用卡(2)输入密码(3)输入提款金额(4)提取现金(5)退出系统,取回信用卡,6.3.3 用例,五、用例的描述2、基本事件流和备选事件流实例 提款-备选事件流(Alternative Flow)(1)备选流一:用户可以在基本流中的任何一步选择退出,转至基本流步骤5。(2)备选流二:在基本流步骤1中,用户插入无效信用卡,系统显示错误并退出信用卡,用例结束。(3)备选

27、流三:在基本流步骤中,用户输入错误密码,系统显示错误并提示用户重新输入密码,重新回到基本流步骤2;三次输入密码错误后,信用卡被系统没收,用例结束。,6.3.3 用例,五、用例的描述3、场景(Scenario)类似于对象是类的实例,用例的实例称为场景。可以给出一些用例实例的真实场景作为用例描述的补充。这些场景显示了一些特殊的情况,其中参与者和用例都以实例形式出现。当用多个实例的场景描述系统的行为时,客户能更好地理解一个复杂的用例。例如,用例“签署保险合同”的一个实例是“张三为他刚买的双杠桑塔纳汽车签署一份保险合同”。但是场景描述只是一种补充,它不能替代用例描述。,6.3.3 用例,五、用例的描述

28、4、使用活动图、顺序图和协作图描述用例用例也可用活动图来描述。活动图描述了活动的顺序,以及可选择的路径。顺序图和协作图适合描述单个用例中几个对象的交互行为。,6.3.4 创建用例模型的过程,1、确定参与者。2、确定用例。3、确定参与者和用例之间的关系,画出用例图。4、用例描述。,6.4 类和对象建模,6.4.1 类图和对象图6.4.2 包图6.4.3 模板,6.4 类和对象建模,6.4.1 类图和对象图类图由系统中使用的类以及它们之间的关系组成。类之间的关系有关联、聚集、泛化、依赖、实现等。类图是一种静态模型,是其他图的基础,是最重要的一种图。一个系统可以有多张类图,一个类也可出现在几张类图中

29、。,6.4 类和对象建模,一、类1、类的表示类被画成矩形。例如一个学生类如图所示。,Student,2、类名命名规范:每个类都必须有一个名字,用来区分其它的类。类名是一个字符串。第一个字母大写,如果类名是由两个单词组成,那么将两个单词合并,第二个单词首字母大写。,6.4 类和对象建模,2、类名命名规范:简单名:单独的名称。路径名:用类所在的包的名称作为前缀。带有路径名的类Household:WashingMachine,6.4 类和对象建模,3、寻找类(分析问题陈述)(1)是否有要储存、转换、分析或处理的信息?如果有,那么它可能是候选的类。(2)是否有外部系统?外部系统可视为系统中包含的或要与

30、该系统交互的类。(3)是否有模式、类库和构件等?如果有已开发成功的类似软件,或由同事、制造商提供的模式、类库或构件,那么其中常常含有待开发系统的候选类。(4)是否有系统必须处理的设备?连接到系统的任何技术设备都可能成为处理这些设备的候选类。(5)是否有组织部分?可以用类表示一个组织。(6)业务中的参与者扮演什么角色?这些角色可以看作类,如客户、操作员等。,6.4 类和对象建模,二、定义类的属性1、属性的表示可见性 属性名:类型=初始值特征字符串可见性(Visibility):描述了该属性在哪个范围内可见(即可使用)。公共可见性用“+”表示;私有可见性用“-”表示;受保护可见性用#表示。如果可见

31、性未声明,则表示可见性不确定。,6.4 类和对象建模,1、属性的表示可见性 属性名:类型=初始值特征字符串初始值(initial-value):在创建一个类的实例对象时,应对其属性赋值,初值可作为创建对象时这个属性的默认值。特征字符串(Property-String):为约束特性,可用来指明该属性的候选值。,6.4 类和对象建模,2、属性还可以定义为类变量,表示在这个类的所有对象之间共享该属性。类变量用下划线来指明。在类图中属性可以只写上名字,其他部分任选。3、属性的命名约定(1)单个单词的属性名的小写。(2)如果属性名是由多个单词组成,那么将多个单词合并,除了第一个单词外,其它单词的首字母大

32、写。,6.4 类和对象建模,三、定义类的操作操作用来操作属性或完成其他动作,操作通常叫做函数,但它们在类的内部,并且只能应用于该类的对象。类中的操作描述了该类能做什么,即它提供哪些服务。操作是类的接口的一部分,操作的实现叫做方法。操作的命名:(1)单个单词的操作名的小写。(2)如果操作名是由多个单词组成,那么将多个单词合并,除了第一个单词外,其它单词的首字母大写。,6.4 类和对象建模,1、操作的表示可见性 操作名(参数列表):返回类型特征字符串操作可见性的定义同属性。参数表是用逗号分隔的形式参数序列。其语法如下:参数名:类型=默认值2、类的构造函数,即创建类的新实例的操作,也具有类作用域。类

33、的构造函数和类操作都用下划线来指明。,6.4 类和对象建模,3、课程(Course)类的C+程序class Courseprivate:char title20;char code20;static int mcount;public:Course(char in_title,char in_code);static int getCount();char*getTitle();void setTitle(char t);,6.4 类和对象建模,四、对象1、对象的表示对象是类的实例。对象的表示方法和类的表示法类似,用矩形表示。只是对象名字下面要有下划线。对象有下面三种表示形式:(1)对象名:类

34、名(2):类名这种格式用于尚未给对象命名的情况,冒号不能省略。(3)对象名省略格式,及省略掉类名。,6.4 类和对象建模,四、对象2、对象的属性的表示属性名=值对象一般用两栏的矩形表示:上栏为对象名,下栏为属性及值。例如学生类及其张三对象,表示如图所示:,五、类之间的关系,1、关联(Association)2、聚集(Aggregation)3、泛化(Generalization)4、依赖(dependency)5、实现(realization),五、类之间的关系,1、关联(Association):关联是类之间的连接,表示两个类之间存在某种语义上的联系。(1)常规关联关联的可视化方法是用一条线

35、连接两个类,并把关联的名字(例如“plays on”)放在这个连接线之上。关联的方向用一个实心三角形箭头来指明。球员为球队效力的关联关系如图所示。,五、类之间的关系,1、关联(1)常规关联当一个类与另一个类发生关联时,每个类通常在关联中都扮演着某种角色。在队员和球队的关联中,如果球队是职业篮球队,那么它就是队员的雇主。图说明了如何表示出这些角色关联角色。,五、类之间的关系,1、关联(1)常规关联关联也可以好几个类连接同一个类。如图所示。,五、类之间的关系,1、关联(2)关联上的约束有时两个类之间的一个关联有一定的规则。通过关联线附近加注一个约束来说明这个规则。有序关联,如图所示。,五、类之间的

36、关系,1、关联(2)关联上的约束或关联,如图所示。,五、类之间的关系,1、关联(3)多重关联两个以上的类之间可以互相关联。图给出了一个三重关联的例子,它描述了程序员用某种程序语言开发了某个项目。,五、类之间的关系,1、关联(3)多重关联两个以上的类之间可以互相关联。图给出了一个三重关联的例子,它描述了程序员用某种程序语言开发了某个项目。,五、类之间的关系,1、关联(4)关联类和类一样,关联也可以有自己的属性和操作,此时。这个关联实际上是个关联类。图是球员类和球队类之间的关联对应的关联类:合同关联类。它同时又和经理类发生关联。,五、类之间的关系,1、关联(5)链(Link)正如对象是类的实例一样

37、,关联也有自己的实例,关联的实例称为链。如果我们想象要一个特定的队员效力一个特定的球队,那么两者之间的为球队效力关系就叫做一个链,可以用两个对象之间的连线来表示它。和对象的名字要加下划线一样链的名字也要加下划线。链的表示如图所示。,五、类之间的关系,1、关联(6)多重性(Multiplicity)在关联的两端可写上一个被称为重数(Multiplicity)的数值范围,表示该类有多少个对象可与对方的一个对象连接。重数的符号表示通常有以下几种:,“0.1”表示“零或1”;“0.*”或“*”表示“0或多”;“1.*”表示“1或多”;5.11”表示“5至11”;“1,3,8”是枚举型,表示“1或3或8

38、”。,五、类之间的关系,1、关联(7)限定关联限定关联又称受限关联。用于一对多或多对多的关联,限制子(Qualifier)用来区分关联“多”端的对象集合,它指明了在关联“多”端的某个特殊对象。限制子用一个小方块表示,位于靠近受限方的关联末端。受限关联将模型中的一对多关系简化为一对一,将多对多简化为多对一。,五、类之间的关系,2、聚集(Aggregation)聚集又称聚合。它是一种特殊的关联,它指出类间的“整体-部分”关系。由于聚集是关联特例,所以它可以有重数、角色等。共享聚集是这样一种聚集,它的“部分”对象可以是任意“整体”对象的一部分。如果“整体”端的重数不是1,那么这种聚集是共享的。用空心

39、菱形箭头表示共享聚集。箭头指向一端为整体端。,五、类之间的关系,2、聚集(Aggregation)组合聚集又称组成或组合。指“整体”拥有它的“部分”,它具有强的物主身份。组成中的每个部分体只能属于一个整体。除了菱形箭头是实心之外,组成和聚集的表示法相同。,五、类之间的关系,3、泛化(Generalization)(1)泛化的表示继承在UML中也称它为泛化。泛化指出类间的“一般-特殊”关系,“特殊类”与“一般类”之间的关系是“is a kind of”的关系。用空心三角箭头表示泛化。箭头所指一端为父类。,五、类之间的关系,3、泛化(Generalization)(2)抽象类(Abstract C

40、lass)的表示不提供实例对象的类被称为抽象类。表明一个类是抽象类的方法是类名用斜体书写。也可用约束abstract标识。没有具体实现的操作为抽象操作。如C+中的纯虚函数。抽象操作表示法与抽象类类似。,五、类之间的关系,3、泛化(Generalization)(3)类之间的泛化关系实例UML各种关系类图,class Fatherprivate:int attribute;protected:double derivedAttr;public:void operation();class Son:public Father private:int sonAttribute;public:void

41、 sonOperation();,继承的UML表示和C+实现,五、类之间的关系,五、类之间的关系,4、依赖(dependency)依赖描绘的是模型元素之间不是关联、泛化、实现关系的关系。没有标注构造型的依赖表示一个元素“使用”另一个元素的一般概念。依赖是两个模型元素之间的语义连接,一个是独立的模型元素,另一个是依赖的模型元素。独立元素的变化会影响依赖元素。依赖的例子有:一个类把另一个类的对象作为参数;一个类访问另一个类的全局对象;或者一个类调用另一个类的类操作。依赖用虚线箭头表示。,五、类之间的关系,4、依赖(dependency)依赖的一个例子:类A的一个操作的接口中使用了类B。class

42、B;class A public:void anOperation(B theB);,五、类之间的关系,5、实现(realization)接口(interface):描述类的部分行为的一组操作,它也是一个类提供给另一个类的一组服务。接口和类之间的关系是一种实现,其中类实现了接口。这是类和接口之间的一种关系。接口用一个小圆圈表示,标注着接口的名字,并用一条线连接实现它的类。依赖是类和接口的另外一种关系。依赖意味着该类只使用接口中指定的操作。接口表示法的一个有用的应用是明确地表示一个类的哪些特征被另一个类使用。,五、类之间的关系,5、实现(realization)接口和实现的两种表示方法如下例所示

43、。,六、类图和对象图,类图给出了一般性的、定义性的信息:一个类的特性以及它的属性,以及和这个类关联的其他的类。对象图则在某个特定时刻及时给出了一个类的多个具体实例以及它们如何联系起来等相关信息。,6.4.2 包图,对于一个复杂的系统,通常都是把它分解成若干较小的系统(或称子系统),如果需要的话,每个较小的系统还可分解成更小的系统,这是一种解决复杂性问题的有效方法。在UML中使用了包的机制,一个包相当于一个子系统。包是一种分组机制,它把一些模型元素组织成语义上相关的组。包的实例是没有意义的,因此包仅在建模时有用,不需要转换成可执行系统。一个包拥有多个模型元素,而一个模型元素不能被一个以上的包拥有

44、。包可以嵌套,包之间可以有关系,允许的关系有依赖和泛化。依赖关系:如果两个包中任意两个类存在依赖关系,则包存在依赖关系。包的依赖没有传递关系。,6.4.3 模板,模板是一个参数化的类(Parameterized Class),它是一个没有完全指定的类,通过向模板传递参数才完成该类的完整说明。下图给出了模板的例子,图中Array是一个模块,其右上角的虚线框中给出了参数表。参数表由用逗号分隔的参数表示,每个参数由参数名、冒号、类型组成。类型的默认值是类,即T:class,n:integer与T,n:integer是等价的。,6.4.3 模板,图中的Array是模板Array的一个实例,表示有100

45、个元素的汽车类数组。实例与模板之间是一种依赖关系,如图中的实例colorArray与模板Array之间就用依赖关系连接,此时用表示用参数值进行绑定。,6.5 动 态 建 模,动态建模用来描述系统的动态行为,显示系统的动态交互。UML用状态图、顺序图、协作图和活动图来建立动态模型。其中状态图和活动图属于行为视图。状态图侧重于行为的结果,活动图侧重于行为的动作。协作图和顺序图属于交互视图。顺序图侧重于时间顺序,协作图侧重于对象间的静态链接关系。,6.5.1 状态图,状态图用来描述一个特定对象的所有可能状态及其引起状态转移的事件。状态图的要素:状态、事件(触发条件)、迁移、动作。一、状态状态是对象执

46、行了一系列活动的结果。当某事件发生后,对象的状态将发生变化。如图所示。,6.5.1 状态图,一、状态1、在状态图中定义的基本状态有:(1)初态。是状态图的起始点,表示对象的初始状态。初态只有一个,用实心圆表示。(2)终态。是状态图的终点,表示一个对象完成必要操作后的最终状态。终态可能有多个,或者没有终态(如电梯的工作状态)。用实心圆外加一个圆圈表示终态。(3)中间状态。处于初态和终态之间的状态。状态用一个圆角矩形表示。,6.5.1 状态图,一、状态2、状态的组成状态由状态名、状态变量和活动三部分组成。其中状态变量和活动是任选的。状态变量(属性)是状态图所显示的类的属性,有时它还可以是临时变量,

47、如计数器等。活动部分列出了在该状态时要执行的动作和活动。如图所示的登陆(login)状态。,6.5.1 状态图,3、动作和活动状态图标中增加细节:(1)入口动作(entry):系统进入该状态时要发生的动作。(2)出口动作(exit):系统离开该状态时要发生的动作。(3)活动(do):系统处于该状态时要发生的延续的操作。动作是瞬时的,活动是发生在一段延续时间之内的。入口动作和出口动作是一定发生的。而活动可以被中断。如图所示的传真机示例。,6.5.1 状态图,二、迁移状态的改变称为迁移(transition)。即如果满足某个条件并当某一事件发生时,对象将从一个状态变迁到另一个状态并同时完成一些活动

48、。迁移用状态之间的箭头表示。迁移有两种:一种为无触发器转移,又称完成转换,该转换不需要事件的触发。另一种为由触发器事件引起的迁移。,6.5.1 状态图,二、迁移1、完成转换(无触发器转移)完成转换是没有事件标注的转换。在状态的内部活动执行完毕后自动触发转移。该转换不需要事件的触发,所以又称无触发器转移。如图所示的示例。其中,在个人计算机初始化(Initializing)状态中,装入操作系统(Boot up)完成后,自动进入工作(Working)状态。该转换为无触发器转移。,6.5.1 状态图,二、迁移2、增加转移的细节(1)触发器事件:引起转移发生的事件。一个事件可以是另一个对象向它发送的一条

49、消息,或者是对象本身满足了某些条件。表示方法:将事件名直接标注在转移的箭头上即可。,6.5.1 状态图,二、迁移2、增加转移的细节(2)动作表达式(action_expression)动作表达式是一个触发状态迁移时可执行的过程表达式,表达式中可引用该状态所表示的对象中的属性、操作或者事件特征中的参数。转换上增加动作表明对象响应检测到的特定事件时做些什么。表示方法:动作表达式前面加斜线。一个状态上可以有多个动作表达式,但它们必须用符号/分隔。动作表达式按从左到右的顺序依次执行。,6.5.1 状态图,二、迁移2、增加转移的细节(3)保护条件:当满足这个条件时,转移才能发生。表示方法:将保护条件用方

50、括号括起来。转移细节的顺序:首先写上事件名,然后是保护条件,最后写动作。如图所示的示例。,6.5.1 状态图,三、子状态和组合状态一方面,一个状态可以进一步地细化为多个子状态。另一方面,我们将一些子状态合并成一个状态称作复合状态,或称组合状态。1、子状态子状态主要有以下两种:(1)顺序子状态:子状态按照顺序一个接一个出现。(2)并发子状态:并发子状态同时进行。如图所示的示例。,6.5.1 状态图,三、子状态和组合状态1、Working为个人计算机的工作状态,其中包括处理用户的输入和更新系统的时钟两个并发子状态。,6.5.1 状态图,三、子状态和组合状态2、组合状态(composite stat

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号