静态视图—类图_对象图和包图
- 格式:pdf
- 大小:497.87 KB
- 文档页数:72
UML中共有5种静态图:用例图,类图,对象图,组件图和配置图。
(1)用例图Use Case Diagram用例图展现了一组用例、参与者以及它们之间的关系可以用来描述系统的静态使用情况。
上图中小人形状的用户和ATM是参与者、椭圆形状的如插入卡、输入密码等是用例(2)类图Class Diagram类图展示了一组类、接口、子类以及他们之间的关系,在建模中最常用到的图就是类图;可以用类图说明系统的静态设计视图,包含主动类的类图。
上图中反应了5个类之间的关联关系,人民币账户和美元帐户从账户继承,账户和ATM相关联,两种账户和用户相关联(3)对象图Object Diagram对象图展示了一组对象和他们间的关系,可以用来说明类图中翻译的事物实例的数据结构和静态快照,表达了系统的静态设计视图和静态过程视图,除了显示和原型方面的因素外,它与类图的作用是相同的。
(4)组件图Component Diagram组件图,又名构件图,展现了一组组件之间的组织和依赖,用于对源代码、可执行的发布、物理数据库和可调整的系统建模。
上图中组件1和组件3依赖于组件2(5)配置图Deployment Diagram配置图展现了对运行时处理节点以及其中组件的配属,它描述系统硬件的物理拓扑结构,以及在此结构上执行的软件。
用配置图说明系统结构的静态配置视图,即说明分布、交互和安装的物理系统。
上图中,三个处理机与两个涉笔,相互之间是关联的关系UML中动态图有四种,分别是:时序图、协作图、状态图和活动图。
(1)时序图Sequence Diagram时序图展现了一组对象和由这组对象收发的信息,用于按时间顺序对控制流建模。
可以用时序图来说明系统的动态视图。
这里貌似有不同的说法Visual Paradigm里面叫时序图为Timing Diagram,而我参照的教材里边没有这种图,按理说是应该有的。
上图反应了用户与ATM交互的整个过程。
(2)协作图Collaboration Diagram协作图展现了一组对象之间的链接以及这组对象收发的消息,强调收发消息对象的组织结构,按组织结构对控制流建模。
软件工程各种图结构本文档旨在提供一个软件工程中各种图结构的详细说明和范例。
1.引言软件工程中的图结构是表示软件系统的重要工具之一。
通过对图结构的使用,可以清晰地描述软件系统中各个组件之间的关系,帮助开发人员理解系统的结构和功能。
本文档旨在介绍常见的软件工程图结构,并提供范例供参考。
2.需求图需求图是软件工程中最基础的图结构之一,用于表示系统的需求和功能。
需求图通常由用例图和活动图组成,用例图用于描述系统的外部行为,活动图用于描述系统的内部行为。
以下是一个需求图的范例:[插入需求图范例]3.静态结构图静态结构图用于表示系统的静态结构,主要包括类图、对象图和包图。
类图用于描述系统中的类及其关系,对象图用于描述系统中的对象及其关系,包图用于描述系统中的包及其关系。
以下是一个静态结构图的范例:[插入静态结构图范例]4.动态行为图动态行为图用于表示系统的动态行为,主要包括序列图、状态图和活动图。
序列图用于描述系统中的交互过程,状态图用于描述系统中的状态变化,活动图用于描述系统中的业务流程。
以下是一个动态行为图的范例:[插入动态行为图范例]5.部署图部署图用于表示软件系统的部署结构,包括系统中的各个节点和节点之间的关系。
节点可以是物理设备或者软件执行环境。
以下是一个部署图的范例:[插入部署图范例]6.附件本文档附带的附件包括需求图范例、静态结构图范例、动态行为图范例和部署图范例。
7.法律名词及注释在本文档中,涉及到的法律名词及其注释如下:●著作权:指创作作品的权利,包括复制、发行等权利。
●商标:指标识商品来源的标志,可以是图形、文字、颜色等。
●专利:指对发明的技术解决方案的专有权利。
UML各种图例——用例图、类图、状态图、包图、协作图、顺序图面向对象的问题的处理的关键是建模问题.建模可以把在复杂世界的许多重要的细节给抽象出.许多建模工具封装了UML(也就是Unified Modeling Language™),这篇课程的目的是展示出UML的精彩之处.UML中有九种建模的图标,即:∙用例图∙类图∙对象图∙顺序图∙协作图∙状态图∙活动图∙组件图∙配置图本课程中的某些部分包含了这些图的细节信息的页面链接.而且每个部分都有一个小问题,测试一下你对这个部分的理解.为什么UML很重要?为了回答这个问题,我们看看建筑行业.设计师设计出房子.施工人员使用这个设计来建造房子.建筑越复杂,设计师和施工人员之间的交流就越重要.蓝图就成为了这个行业中的设计师和施工人员的必修课.写软件就好像建造建筑物一样.系统越复杂,参与编写与配置软件的人员之间的交流也就越重要.在过去十年里UML就成为分析师,设计师和程序员之间的“建筑蓝图”.现在它已经成为了软件行业的一部分了.UML提供了分析师,设计师和程序员之间在软件设计时的通用语言.UML被应用到面向对象的问题的解决上.想要学习UML必须熟悉面向对象解决问题的根本原则――都是从模型的建造开始的.一个模型model就是根本问题的抽象.域domain就是问题所处的真实世界.模型是由对象objects组成的,它们之间通过相互发送消息messages来相互作用的.记住把一个对象想象成“活着的”.对象有他们知道的事(属性attributes)和他们可以做的事(行为或操作behaviors or operations).对象的属性的值决定了它的状态state.类Classes是对象的“蓝图”.一个类在一个单独的实体中封装了属性(数据)和行为(方法或函数).对象是类的实例instances.用例图用例图Use case diagrams描述了作为一个外部的观察者的视角对系统的印象.强调这个系统是什么而不是这个系统怎么工作.用例图与情节紧紧相关的.情节scenario是指当某个人与系统进行互动时发生的情况.下面是一个医院门诊部的情节.“一个病人打电话给门诊部预约一年一次的身体检查.接待员找出在预约记录本上找出最近的没有预约过的时间,并记上那个时间的预约记录.”用例Use case是为了完成一个工作或者达到一个目的的一系列情节的总和.角色actor是发动与这个工作有关的事件的人或者事情.角色简单的扮演着人或者对象的作用.下面的图是一个门诊部Make Appointment用例.角色是病人.角色与用例的联系是通讯联系communication association(或简称通讯communication)角色是人状的图标,用例是一个椭圆,通讯是连接角色和用例的线.一个用例图是角色,用例,和它们之间的联系的集合.我们已经把Make Appointment作为一个含有四个角色和四个用例的图的一部分.注意一个单独的用例可以有多个角色.用例图在三个领域很有作用.∙决定特征(需求).当系统已经分析好并且设计成型时,新的用例产生新的需求∙客户通讯.使用用例图很容易表示开发者与客户之间的联系.∙产生测试用例.一个用例的情节可能产生这些情节的一批测试用例.类图类图Class diagram通过显示出系统的类以及这些类之间的关系来表示系统.类图是静态的-它们显示出什么可以产生影响但不会告诉你什么时候产生影响.下面是一个顾客从零售商处预定商品的模型的类图.中心的类是Order.连接它的是购买货物的Customer和Payment.Payment有三种形式:Cash,Check,或者Credit.订单包括OrderDetails(line item),每个这种类都连着Item.每个类图包括类,关联和多样性表示.方向性和角色是为了使图示得更清楚时可选的项目.包和对象图为了简单地表示出复杂的类图,可以把类组合成包packages.一个包是UML上有逻辑关系的元件的集合.下面这个图是是一个把类组合成包的一个商业模型. dependencies关系.如果另一个的包B改变可能会导致一个包A改变,则包A依赖包B.包是用一个在上方带有小标签的矩形表示的.包名写在标签上或者在矩形里面.点化线箭头表示依赖对象图Object diagrams用来表示类的实例.他们在解释复杂关系的细小问题时(特别是递归关系时)很有用.这个类图示一个大学的Department可以包括其他很多的Departments.这个对象图示上面类图的实例.用了很多具体的例子.UML中实例名带有下划线.只要意思清楚,类或实例名可以在对象图中被省略.每个类图的矩形对应了一个单独的实例.实例名称中所强调的UML图表.类或实例的名称可能是省略对象图表只要图的意义仍然是明确的.顺序图类图和对象图是静态模型的视图.交互图是动态的.他们描述了对象间的交互作用.顺序图将交互关系表示为一个二维图.纵向是时间轴,时间沿竖线向下延伸.横向轴代表了在协作中各独立对象的类元角色.类元角色用生命线表示.当对象存在时,角色用一条虚线表示,当对象的过程处于激活状态时,生命线是一个双道线.消息用从一个对象的生命线到另一个对象生命线的箭头表示.箭头以时间顺序在图中从上到下排列.协作图协作图也是互动的图表.他们像序列图一样也传递相同的信息,但他们不关心什么时候消息被传递,只关心对象的角色.在序列图中,对象的角色放在上面而消息则是连接线.对象角色矩形上标有类或对象名(或者都有).类名前面有个冒号(:).协作图的每个消息都有一个序列号.顶层消息的数字是1.同一个等级的消息(也就是同一个调用中的消息)有同样的数字前缀,再根据他们出现的顺序增加一个后缀1,2等等.状态图对象拥有行为和状态.对象的状态是由对象当前的行动和条件决定的.状态图statechart diagram显示出了对象可能的状态以及由状态改变而导致的转移.我们的模型例图建立了一个银行的在线登录系统.登录过程包括输入合法的密码和个人账号,再提交给系统验证信息.登录系统可以被划分为四种不重叠的状态:Getting SSN, Getting PIN, Validating, 以及Rejecting.每个状态都有一套完整的转移transitions来决定状态的顺序.状态是用圆角矩形来表示的.转移则是使用带箭头的连线表示.触发转移的事件或者条件写在箭头的旁边.我们的图上有两个自转移.一个是在Getting SSN,另一个则在上Getting PIN.初始状态(黑色圆圈)是开始动作的虚拟开始.结束状态也是动作的虚拟结束.事件或条件触发动作时用(/动作)表示.当进入Validating状态时,对象并不等外部事件触发转移.取而代之,它产生一个动作.动作的结果决定了下一步的状态.活动图活动图activity diagram是一个很特别的流程图.活动图和状态图之间是有关系的.状态图把焦点集中在过程中的对象身上,而活动图则集中在一个单独过程动作流程.活动图告诉了我们活动之间的依赖关系.对我们的例子来说,我们使用如下的过程.“通过ATM来取钱.”这个活动有三个类Customer, ATM和Bank.整个过程从黑色圆圈开始到黑白的同心圆结束.活动用圆角矩形表示.。
第三章静态建模3.1 静态建模简述静态视图包括类图、对象图和包图。
其中类图描述系统中的静态结构。
它不仅定义系统中的类,表示类之间的关系,如关联、依赖、聚合等, 还包括类的内部结构(类的属性和操作)。
类图描述的是一种静态关系,在系统的整个生命周期都是有效的。
通过分析用例和问题哉,就可以得到相关的类,然后再把逻辑上相关的类封装成包。
这样可以很好体现出系统的分层结构,使人们对系统层次关系一目了然。
对象图是类图的实例,几乎有与类图完全相同的标识。
它们的不同点在于对象图显示类图的多个对象实例,而不是实际的类。
一个对象是类图的一个实例。
由于对象存在生命周期,因此对象图只能在系统某一时间存在。
包由包或类构成,表示包与包之间的关系。
包图用于描述系统的分层关系。
3.1.1 类图和对象图中的重要概念一个系统的类模型可以由多张类图描述:一个类可以出现在几张类图中。
类的图形符号表示分为长式和短式。
对象图是类图的一个实例,它描述了类图中类的特定实例以及某一时刻这些实例之间的特定连接。
类和对象都由名称、属性和方法(操作)组成。
区别如下:表 3.1 类与对象的比较类对象名称类名是一个有意义的标识符对象名加下划线,对象名后面可以接冒号和类名属性定义属性的类型和属性名与类的属性名相同,但是有具体值与类中的方法定义相同方法定义方法(操作)——返回类型、操作名、传递参数。
类图中除了能定义类自身的属性、方法等,更重要的是能表示类与类之间的关系。
包括关联、聚集、继承、依赖、细化等。
关联是类之间的语义联系,代表类的对象(实例)之间的一组连接(链)。
在UML中常常把关联定义成类,称为关联类。
关联的每个链都是这个关联类的实例。
关联类也有属性、操作并与其它的类关联。
聚集是一种特殊的二元关联,它指出类间的“整体-部分”关系。
聚集是关联的特例,它可以有重数、角色、限制符号等。
对于几种关联的比较,见下表。
表3.2 类图中的几种关联关系的比较特征正常关联共享聚集组合聚集UML标记实线加空心菱形加黑色菱形拥有关系无弱强多重性任意任意必为1传递性无有有传递方向无整体到部分整体到部分设计样式在软件开发项目的系统设计中,总有一些只包含少数几个对象的设计模块在设计图中反复出现在各种更大更复杂的系统设计中,我们把这些模块称为“设计样式”。
三、UML的十种视图1.用例图(use case diagram)从系统的外部用户的观点看系统应具有的功能。
它只说明系统实现什么功能,而不必说明如何实现。
用例图主要用于对系统,子系统或类的行为进行建模。
2.类图(class diagram)描述系统的静态结构,类图的节点表示系统中的类及其属性和操作,边表示类之间的联系(包括继承(泛化)、关联、聚集)。
3.对象图(object diagram)类图的一种变形,所使用的符号与类图基本相同。
在对象名下面要加下划线。
(图略)4.包图(packet diagram)包是基于模型元素的含义或作用将模型元素分组的一种机制。
通过分组,可提高模型的维持性。
包之间的关系包括继承、构成与依赖。
5.顺序(时序)图(sequence diagram)交互图之一。
描述了在时间上对象交互的安排,展现了多个交互对象以及信息交流的序列。
时序图包含对象、对象的生命线、按顺序对象间的信息交流、控制焦点(可选的)。
6.合作(协作)图(collaboration diagram)交互图之二,强调发送和接收消息的对象间的结构组织,它与顺序图是等价的。
在图形上,协作图是顶点和弧的结合。
协作图包含对象、链、消息。
(图片来自《软件工程(第二版)》齐治昌、谭庆平、宁洪)7.状态图(statechart diagram)状态图描述类的对象的动态行为。
它包含对象所有可能的状态、活动图描述系统为完成某项功能而执行的操作序列,这些在每个状态下能够响应的事件以及事件发生时的状态迁移与响应动作。
操作序列可以并发和同步。
8.活动图(activity diagram)活动图中包含控制流和信息流。
控制流表示一个操作完成后对其后续操作的触发,信息流则刻画操作之间的信息交换。
提供了对工作流进行建模的途径,活动图中的活动,表示执行工作流中一组的动作。
一旦结束,控制流将自动转移到下一个活动,或通过转换进入下一个状态。
9.构件图(component diagram)提供当前模型的物理视图,对系统的静态实现视图进行建模。
UML的九种模型图本⽂转⾃,仅供学习交流!⼀、作为⼀种建模语⾔,UML的定义包括UML语义和UML表⽰法两个部分。
UML语义:描述基于UML的精确元模型定义。
UML表⽰法:定义UML符号的表⽰法,为开发者或开发⼯具使⽤这些图形符号和⽂本语法为系统建模提供了标准。
这些图形符号和⽂字所表达的是应⽤级的模型,在语义上它是UML元模型的实例。
⼆、标准建模语⾔UML可以由下列5类图来定义。
⽤例图:从⽤户⾓度描述系统功能,并指出各功能的操作者。
静态图:包括类图和对象图。
类图描述系统中类的静态结构,不仅定义系统中的类,表⽰类之间的联系,如关联、依赖、聚合等,也包括类的属性和操作,类图描述的是⼀种静态关系,在系统的整个⽣命周期都是有效的。
对象图是类图的实例,⼏乎使⽤与类图完全相同的标识。
⼀个对象图是类图的⼀个实例。
由于对象存在⽣命周期,因此对象图只能在系统某⼀时间段存在。
⾏为图:描述系统的动态模型和组成对象间的交互关系,包括状态图和活动图。
状态图描述类的对象所有可能的状态以及事件发⽣时状态的转移条件,状态图是对类图的补充,活动图描述满⾜⽤例要求所要进⾏的活动以及活动间的约束关系,有利于识别并进⾏活动。
交互图:描述对象间的交互关系,包括时序图和协作图。
时序图显⽰对象之间的动态合作关系,它强调对象之间消息发送的顺序,同时显⽰对象之间的交互;协作图描述对象间的协作关系,协作图跟时序图相似,显⽰对象间的动态合作关系。
除显⽰信息交换外,协作图还显⽰对象以及它们之间的关系。
如果强调时间和顺序,则使⽤时序图;如果强调上下级关系,则选择协作图。
实现图:包括组件图和部署图。
组件图描述代码部件的物理结构及各部件之间的依赖关系,组件图有助于分析和理解部件之间的相互影响程度;部署图定义系统中软硬件的物理体系结构。
采⽤UML来设计系统时,第⼀步是描述需求;第⼆步根据需求建⽴系统的静态模型,以构造系统的结构;第三步是描述系统的⾏为。
其中在第⼀步与第⼆步中所建⽴的模型都是静态的,包括⽤例图、类图、对象图、组件图和部署图等5种图形,是标准建模语⾔UML的静态建模机制。
UML各种图总结-精华UML(UnifiedModelingLanguage)是一种统一建模语言,为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言。
下面将对UML的九种图+包图的基本概念进行介绍以及各个图的使用场景。
一、基本概念如下图所示,UML图分为用例视图、设计视图、进程视图、实现视图和拓扑视图,又可以静动分为静态视图和动态视图。
静态图分为:用例图,类图,对象图,包图,构件图,部署图。
动态图分为:状态图,活动图,协作图,序列图。
1、用例图(UseCaseDiagrams):用例图主要回答了两个问题:1、是谁用软件。
2、软件的功能。
从用户的角度描述了系统的功能,并指出各个功能的执行者,强调用户的使用者,系统为执行者完成哪些功能。
2、类图(ClassDiagrams):用户根据用例图抽象成类,描述类的内部结构和类与类之间的关系,是一种静态结构图。
在UML类图中,常见的有以下几种关系:泛化(Generalization),实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)。
各种关系的强弱顺序:泛化=实现>组合>聚合>关联>依赖2.1.泛化【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何继承父类的所有特征和行为。
例如:老虎是动物的一种,即有老虎的特性也有动物的共性。
2.2.实现【实现关系】:是一种类与接口的关系,表示类是接口所有特征和行为的实现。
2.3.关联【关联关系】:是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学生,丈夫与妻子关联可以是双向的,也可以是单向的。
双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。
【代码体现】:成员变量2.4.聚合【聚合关系】:是整体与部分的关系,且部分可以离开整体而单独存在。
UML 2.0共有10种图,分别为表示系统静态结构的静态模型(包括类图、组合结构图、部署图),以及表示系统动态结构的动态模型(包括用例图、序列图、对象图、协作图、状态图、活动图、组件图),它们各用以表现不同的视图,如表1-1所示。
用例之间也可以存在包含、扩展和泛化等关系:
(1)包含关系:用例可以简单地包含其他用例具有的行为,并把它所包含的用例行为做为自身行为的一部分,这被称作包含关系。
(2)扩展关系:扩展关系是从扩展用例到基本用例的关系,它说明为扩展用例定义的行为如何插入到为基本用例定义的行为中。
它是以隐含形式插入的,也就是说,扩展用例并不在基本用例中显示。
在以下几种情况下,可使用扩展用例:
a.表明用例的某一部分是可选的系统行为(这样,您就可以将模型中的可选行为和必选行为分开);
b.表明只在特定条件(如例外条件)下才执行的分支流;
c.表明可能有一组行为段,其中的一个或多个段可以在基本用例中的扩展点处插入。
所插入的行为段和插入的顺序取决于在执行基本用例时与主角进行的交互。
(3)泛化关系:用例可以被特别列举为一个或多个子用例,这被称做用例泛化。
当父用例能够被使用时,任何子用例也可以被使用。
如在图2.4中,订票是电话订票和网上订票的抽象。