uml类图关系怎么画

uml类图关系怎么画,第1张

类图画法

1、 类图的概念

A、显示出类、接口以及它们之间的静态结构和关系

B、用于描述系统的结构化设计

2、 类图的元素

类、接口、协作、关系,我们只简单介绍一下这四种元素。

同其他的图一样,类图也可以包含注解和限制。

类图中也可以包含包和子系统,这两者用来将元素分组。

有时候你也可以将类的实例放到类图中。

3、 类

A、 类是对一组具有相同属性、 *** 作、关系和语义的对象的抽象,它是面向对象系统组织结构的核心,包括名称部分(Name)、属性部分(Attribute)和 *** 作部分(Operation),见下图。

B、 类属性的语法为:

[可见性] 属性名 [:类型] [=初始值] [{属性字符串}]

可见性:公有(Public)“+”、私有(Private)“-”、受保护(Protected)“#”

类 *** 作的语法为:

[可见性] *** 作名 [(参数表)] [:返回类型] [{属性字符串}]

可见性:公有(Public)“+”、私有(Private)“-”、受保护(Protected)“#”、包内公有(Package)“~”

参数表:

定义方式:“名称:类型”;若存在多个参数,将各个参数用逗号隔开;参数可以具有默认值;

属性字符串:

在 *** 作的定义中加入一些除了预定义元素之外的信息。

4、 接口

在没有给出对象的实现和状态的情况下对对象行为的描述。

一个类可以实现一个或多个接口。

使用两层矩形框表示,与类图的区别主要是顶端有<>显示: 

 

也可以用一个空心圆表示: 

5、 协作

协作是指一些类、接口和其他的元素一起工作提供一些合作的行为,这些行为不是简单地将元素加能得到的。例如:当你为一个分布式的系统中的事务处理过程建模型时,你不可能只通过一个类来明白事务是怎样进行的,事实上这个过程的执行涉及到一系列的类的协同工作。使用类图来可视化这些类和他们的关系。

6、 关系

这篇文章的重点,详见第二部分。

二、类之间的几种关系

1、 泛化(Generalization)

A、 是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为,描述了一种“is a kind of” 的关系。例如:老虎是动物的一种,即有老虎的特性也有动物的共性。

B、 用带空心箭头的实线表示,箭头指向父类,如下图:

2、 实现(Realization)

A、 是一种类与接口的关系,表示类是接口所有特征和行为的实现。

B、 用带空心箭头的虚线表示,箭头指向接口,如下图:

3、 关联(Association)

A、 一般关联

a、 关联关系是类与类之间的联结,它使一个类知道另一个类的属性和方法,指明了事物的对象之间的联系,如:老师与学生、丈夫与妻子。关联可以是双向的,也可以是单向的,还有自身关联。

b、 用带普通箭头的实心线表示。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头,如下图:

B、 聚合(Aggregation)

a、 它是整体与部分(整体 has a 部分)的关系,且部分可以离开整体而单独存在,如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。聚合关系是关联关系的一种,是强的关联关系,关联和聚合在语法上无法区分,必须考察具体的逻辑关系。

b、 用带空心菱形的实线表示,菱形指向整体,如下图:

C、 组合(Composition)

a、 它是整体与部分的关系,但部分不能离开整体而单独存在。如公司和部门是整体和部分的关系,没有公司就不存在部门。组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。

b、 用带实心菱形的实线表示,菱形指向整体,如下图:

4、 依赖(Dependency)

A、 元素A的变化会影响元素B,那么B和A的关系是依赖关系,B依赖A。要避免双向依赖,一般来说,不应该存在双向依赖。关联、实现、泛化都是依赖关系。

B、 用带箭头的虚线表示,箭头指向被依赖元素。

5、 总结

各种关系的强弱顺序如下:

泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖

下面这张UML图,比较形象地展现了各种类图关系:

本文介绍UML模型图的构成,为了方便学习,将零散的知识做了简单的整理。以思维导图的形式跟大家分享,可以做思维导图的软件很多,这里我使用的是xmind 8

UML模型图的构成分为三个部分: 事物(Things)、关系(Relationships)、图(Diagrams)

事物(Things)又具体分为四种

关系(Relationships)也有四种,分别是:

主要的图分为下面9大类

原图已经提交到git仓库,欢迎访问!

GitHub地址: >

本文会包含几块内容:

流程= 流程+图。

流程:Flow, 是指特定主体为了满足特定需求而进行的有特定逻辑关系的一系列 *** 作过程,流程是自然而然就存在的。但是它可以不规范,可以不固定,可以充满问题。所以就会造成看似没有流程。

图:Chart 或者 Diagram , 是将基本固化有一定规律的流程进行显性化和书面化,从而有利于传播与沉淀、流程重组参考。

从定义可以看出,只要有事情和任务,流程就会有,但是并不是所有的流程都适合用流程图的方式去表现,适合用流程图去表现的流程是一定程度固定的有规律可循的,流程中的关键环节不会朝令夕改的。

参与者 :谁在这个流程中?可以是系统,可以是个打印机,更多的指什么角色——一般是有某种工种的人。比如客服同时有小A和小B两人,但是若他们的工作性质完全一样,那么在流程图里只需要写一个客服角色就可以了。

活动 :做了什么事,比如点餐,结帐等活动。

次序 :这些事情发生的前后顺序如何,哪个任务是其他任务的前置条件?比如客人不结帐,就不会产生送他优惠卡的活动。

输入 :每项活动开始取决于什么样的输入物或数据,比如做饭的师傅开始做菜时,需要拿到具体的点菜单。

输出 :每项活动结束后,会输入什么样的文档或数据传递给下一方,比如师傅做好菜后,如何让负责传菜的人知道菜已经做好?

标准化 :采用一套标准化的符号用以传递你的流程图,从而使受众更快明白。

常见的流程图有业务流程图(Transaction Flow), 页面流程图(Page Flow)。

在工作中,作为UED,你可能会发现PD经常谈的是业务流程,而作为交互设计师,我们更多产出的是页面流程图。页面流程图和业务流程图到底有什么关系呢? 先有谁,其次再有谁呢?

先讲个故事:假设你的梦想是开个中高档的全国连锁餐馆,那么首先你想到的应该不是如何去选址,而是将为何要开连锁餐馆这件事情,以及你的定位,核心竞争力想清楚。是快餐,还是点餐,是连锁还是加盟?定位于社区还是繁华商圈?是川菜还是江浙海鲜?是面向中老年还是年轻人?是家庭主题还是动漫主题?竞争对手是谁?需要什么样的投资?可能的风险是什么?这些都想清楚了,问题都有答案了,所谓战略层要清晰了吧。然后假设你现在分析来分析去,与主要投资方决定了一个方向:面向年轻人的时尚动漫茶餐厅,连锁,但是先在杭州开始第一家,选址定位于年轻人约会,扫街的地域,比如风景区,著名商圈,**院旁…………等等等等,那么接下来呢?

接下来就是想办法让这些实现吧?那么需要做什么事情呢?选址?拉投资?搞装修?选餐饮菜单?雇佣员工?每一步怎么去做,时间点是什么?等等的任务拆解以及计划,就需要到战术层了。

这些事情的执行,总是需要请人的吧?先是核心团队分工去部署各项建设任务,当餐厅开设起来后,就需要组织稳定的运营团队,如服务、卫生、厨房、采购、人事等等,厨房里面还得分工,白案,热菜,冷菜等等吧?每个部门需要设置管理层以及汇报关系吧?所以你的组织结构就诞生了。

那具体每种角色是如何顺畅合作完成日常稳定的以及突发的各项任务呢?比如,当顾客上门时,谁去引导客人入座,谁去点菜,怎么将点菜的讯息迅速传递到厨房,并分发到酒水间、冷菜间、热菜间?并保证客人尽快能够吃到所点的菜?你必须要考虑各种人员的协作流程,优化效率,所以业务流程就出现了。

人肉运营了一段时间,没有借助任何点餐系统,你发现也还可以。客人点菜时,服务员手抄写下客人的要求,因为有复印纸,所以服务员能够将副本送入厨房,同时写下餐桌号码。厨房规模较小,负责分配任务的员工看下菜单,分别往冷菜处的黑板上写下需要他们处理的,以及跑到热菜区的黑板上写下待处理的菜品,以及去酒水间报下品名即可。可是随着经营的扩大,以上的人肉方式出现了很多问题,首先,手抄效率太低,顾客频繁换菜,响应来不及,手抄出错,导致经常报错菜。厨房很混乱,不得不多招了几个人专门跑堂。而一旦顾客要加菜,撤菜就更麻烦了,需要找出他们当时点的菜,再进行人工的批注和修改,同时要修改厨房后端的各个黑板……

所以你们想要开发一套智能系统,取代很多人肉工作,你们请了系统开发团队,他们经过评估,判断从点菜开始,一直到传菜都可以用系统解决。手持终端,能够快速传递顾客点菜需求到打印机,打印系统能够根据顾客点菜的类型进行自动的分单打印,所以热菜间看到自己的热菜菜单,冷菜间看到自己的冷菜菜单,而酒水间看到酒店菜单。当他们准备完毕后,送出,传菜员可以根据菜名与打印出来的单据进行传菜并根据顾客的点菜小票进行核对。这套系统同时必须配备结算系统,将最终确认掉的菜单及消费价格传递到结算前台,收银员能够快速进行 *** 作。

这套系统最终是需要展现出来的,那么手持终端的界面如何设计?服务员能够用更少的点击完成一个菜的点餐吗?结算中心的界面如何设计?

通过以上的故事,是不是更明白从战略、战术、业务流程图到页面流程图的关系了?总结下:

●先是有一个业务需求和业务目标,也即我们的愿景是什么?(战略)

●然后就诞生了我们需要分解出什么样的任务,如何执行战术?(战术)

●然后就诞生了需要架构什么部门,岗位去分工协作?(组织架构)

●然后就诞生了不同的部门在协作完成某件任务时的业务流程?(业务流程)

●业务流程基本稳定后,往往会考虑优化效率,所以会诞生出系统来支持流程,减少人肉环节,促进数据采集(系统愿景)

●为了设计这个系统,PD需要思考什么功能能够取代某个环节的人肉工作(功能需求,系统流程)

●不管是怎么样的功能最终都会以界面的方式呈现,设计师们会关注用户在系统里的任务流,行为路径,让用户完成任务更加高效愉悦。(页面流程)

当然,除了业务流程,系统流程,页面流程,还有数据流程被人关注。

我们平时工作中,还会经常听人谈到泳道图啊,任务流程图啊等等概念,究竟是神马关系呢?

在工作中,我们经常能够看到两种业务流程图,从表现形式来看,一种很好区分,俗称为“泳道图”的它,在样子上也确实像个泳道,可以有横向的泳道,也会有纵向的泳道。泳道图在某些文档里会被称为“以活动为单位的流程图”,浮在泳道中的都是一个个活动。

泳道图有几个关键点:两大维度,活动流转,流程要素。

另外一种类型是以部门和岗位为单位的流程图,下图中的圆形就代表一个个部门或岗位。矩形代表活动。这种流程图关注事情如何完成的逻辑,但是在体现各个部门的责任上比较弱。如果是某个岗位的人来看,很难像泳道图那样一眼就能看到自己部门的职责和任务。所以现在用得比较少。

流程图可以提供一种简单扼要的“缩略俯瞰图”,帮助观众快速了解业务如何运转。它包含了几个关键词: 谁,什么时候,在什么条件下,做了什么事情,输入什么,输出什么,输出给谁……

与系统流程不同,业务流程更关注于业务本身如何运作,讲的是业务故事,包含的是业务规则。而系统流程则是满足业务流程,实现部分流程或全部流程的信息化和系统化。

所以业务流程是所有环节的前置条件——软件需求分析,信息系统建设也会先进行业务流程的梳理。

下面表现了业务流程图是如何在三个主要场景中发挥作用的:

1、培训

在此场景中:流程图能够提供一种快速了解业务如何运作的视图,通过业务流程图,新员工能够快速明白业务的最终目标是什么,中有哪些角色在参与以及他们的职责,以及彼此之间的联接。

除了培训新员工,在员工轮岗、调职场景中,员工也需要业务流程图参考,明白新的工作内容如何开展,以及自己所处的位置,自己的上游是谁,下游是谁,自己需要交付的工作内容是什么。

2、流程优化与重组

业务流程重组(Business Process Reengineering)的存在可以明确反驳:存在即合理。事实上,存在的业务流程并未是合理的,有可能是参与的多个角色习惯了某种做法,有可能是变革尚未影响到末端的 *** 作,也有可能缺乏对于运行中的业务流程问题的洞察以及强有力的变革推动——因为要推动业务流程变革,不是某个部门的事情,而是需要流程中各个部门的通力配合。

更多时候,业务流程优化是自上而下的,但是老板们未必对实际运作的业务流程那么心知肚明,业务流程图能够很好去表现这个“运作模型”。通过看业务流程图,找关键节点的人访问,能够直接切入:为什么要这么做,为什么不这么做?从而探索出更深层次的问题,而不是问:你们现在怎么做?

通过调研,分析业务流程图,引入更多角色,能够分析出目前业务流程的问题:缺失,重复,风险,效率等等。从而制定相应的优化方案。

3、信息化的基础

正如上文所述的餐馆梦想的案例,信息系统的一项任务就是解放员工的手脚,取代一些重复的人力劳动工作。系统上了之后,不是说业务流程不需要而是经过了一些调整,其中某个参与者变成了系统,或手持设备,或打印机而已。

那么在做系统的功能设计和系统流程设计时,是不是必须先要了解目前业务是如何运作的呢?从而更好分析分析,更好说明系统在什么环节取代了什么类型的人肉工作?

所以我们看到的PRD往往也会先以业务流程图开始说明,而叙述一个系统建设的好处时,也可以用以前的业务流程与系统上了之后的业务流程进行对比。根据分析,将愿景中的新的业务流程图背后需要系统的功能点撰写清楚。

首先绘制业务流程图本身有没有流程?一定是有的。在软件工程学里听说一句话叫:万物皆对象。那么在流程学里,万事皆流程。吃饭难道没流程吗?就吃饭的动作而言,就有流程:拿筷子——夹菜——入口——咀嚼——吞咽。

那么,绘制业务流程图有没有可遵循的流程呢?我建议可以从下面4步着手。

1、调研

如何快速了解业务运作真相?有没有调研的技巧放送?

2、梳理与呈现

能否快速将调研得到的文字和问题,快速转化为业务流程图?

业务流程图的标准图示是什么?

怎么评价一个业务流程图的好与坏?

3、评审与确认——能否真正让业务流程图反映现实中的业务?

4、归档维护——流程不断变更,业务流程图如何快速响应?

在绘制业务流程图前,思考如何精美、如何交互以及使用什么工具,都不应该是重点。

真正重点的是将业务流程图的关键要素给搜集一番。请试图回答清楚以下几个问题,否则不要开始绘制流程图:

除了在本部分开始的那几个问题要顾及到, 其实调研过程解决的仍然是who,what,why,how,以及where的问题:谁,在什么情况下,做了什么事情,这个事情需要什么前置条件,又输出了什么,这个事情在哪里完成的? 搞明白这几个问题,我们的调研就可以圆满完成了。

流程图的表现,要回答这几个问题:

1、Who——谁?部门,角色,岗位

2、What——什么事情?

3、Where——在哪里做的?在我梳理的业务流程图上,where更多表示是文档还是各种系统,用来表示信息化的程度。比如当我们梳理中发现,有一项登记,是用excel而不是业务系统来进行的,那么在这里的where就可以表示为:excel文档。

4、Document——那产生的这份文档叫什么名字?也写出来,代表有文件的传递,而以后要进行信息化的话,此份人肉文档也是需要被消除而被系统取代的。(相反,如果这项工作是在某个系统里 *** 作的,where就可以写成“人事系统”,文档可以继续存在,即该系统中的表单名称:“员工登记表单”)

5、Condition——条件。在这种条件下,下一个活动还能够继续,即用逻辑链接线的方式来表示一项活动的输入和输出,指向某个活动的箭头就表示此活动的前置输入条件。

6、Dicision——决策。有些活动会产生一个条件判断,根据不同的判断结果从而走不同的分支流程。比如输入员工信息的时候,可以根据员工之前是否就职过,选择不同的流程,对于已经就职过的,选用之前的工号而不用生成新的工号。

举个案例(如果不太恰当,请意会)。假设你受命要调研两家餐饮店的业务流程,目的是给他们提供性价比最高的点餐系统。

在调研中:

你首先可以要求精通业务流程的人给你系统讲解一遍。

调研具体 *** 作的人,来验证他给你讲解的是否全面和偏差。

实地观察和记录(花点时间走遍业务流程)

三种方式相互结合使用。第一种方法可以让你首先建立一个系统观,了解大体枝干,但是很难切入到可能会出现问题的细节。第二种方法太依赖于问题的质量以及问问题的场景。有很多结论的不正确其实是因为问错了人或者问问题的方法不对。那么就需要借助第三种,在观察中再进行验证。

在这些问题中,就涉及到了“分单”,“切菜”,“择菜”,”烹饪”,“传菜”,“上菜”几个活动,也涉及到了“服务员”,“厨师”,“助理”,“刀工”,“传菜员”几个角色。几个活动的次序也比较清楚了。

下面的问题,可能厨师就不了解了,要问点菜员了。

你的调研和观察使你拥有了“烹饪”所需的原材料。

接下来的任务是不是很简单,对,就像填空题一样简单。将活动/事件按照一定的规则填到由部门和时间两条维度决定的框框里。

这个阶段是paper work,你需要将调研阶段收集到的原材料用更直观明了的方式呈现出来。从而能够更好进行评审和确认。也为以后的流程评审和优化做准备。

不可能将所有的活动都放到一张图里呈现。

“业务流程是有层次性的,这种层次体现在由上至下、由整体到部分、由宏观到微观、由抽象到具体的逻辑关系。这样一个层次关系符合人们的思维习惯,有利于企业业务模型的建立 企业部门之间的层次关系表。一般来说,我们可以先建立主要业务流程的总体运行过程(其中包括了整个企业的大的战略),然后对其中的每项活动进行细化,落实到各个部门的业务过程,建立相对独立的子业务流程以及为其服务的辅助业务流程。”

——引自《百度百科》 业务流程词条

对于很多新人来讲, 业务最难的在于划分业务流程图的层次上。

首先,明确你要梳理的业务流程的范围 ——用大的粗略的关键节点,讲清楚这个业务流程范围中的故事,就是顶层业务流程图。你的顶层业务流程图是业务全局故事的简单表达,但是请注意这里的业务全局不见得是公司整体的业务全局,而是你界定好的业务范围。比如,下图是餐厅的日常运作流程图,若你界定的业务范围是面向顾客的点餐和结帐流程,那么这就是顶层业务流程图。但是若你界定的是整个餐厅的运作业务流程,那这显然还是一个子集——并没有包含餐厅的采购、供应商管理、一级库存管理等工作。

其次,先从顶层的业务流程分解开始,由粗至细。 顶层业务流程图的梳理原则:

1、界定范围内的业务全局故事。

2、包含该范围内的关键节点。并且,当被质疑说某某环节怎么不存在时,自己要清楚它在下一层分解中应该被包含在那个关键节点中。比如,赠送10周年优惠券,应该会在结帐节点分解中出现。而打印分单,会在点菜节点中分解。而准备儿童座椅应该是接待入座环节。

3、顶层流程图分解出来的关键节点未必都会细化分解下去,生成二级以及三级的流程图。这要看该节点涉及到的“活动”以及“角色”是否复杂。

再看一个案例,对传统生产型企业的进销存主业务流程进行分解。橙色的代表被分解点,已经可以分解为四层。当我们分解到第四层,发现再往下去涉及到的活动和角色都已经很少时,就不必再分解了,而是可以将第四层的关键节点直接作为第三层业务流程的“活动”,而不是子流程图。

当然,这是依赖于你梳理业务流程的目标。如果你偏偏是要对“打样”环节进行剖析优化,则还可以继续分解下去。

这一步的工作会帮你建立出清晰的流程目录结构,如下图所示是摘选于刚完成的一个流程梳理的项目中的目录结构部分。可以看到全图即是顶层关键节点,作为老大,可能只要看这一层就够了。下面则会对顶层做更多细化拆解。

“H3样品认证”在顶层业务流程图中,仅仅是一个“活动”,而在自己细化的这一个层次中,则会包含详细的子活动一级参与者。

我常用的就是前两行的“活动”,“判断”,“逻辑关系线”,“起始与终止”,以及第二行的“子流程”,和“文件/表单”。如果你不是符号控,我建议这几个就足够了。

其中,“子流程”此图示就是可以帮助你将流程分解得到的子流程能够串联起来,比如,当在”A流程”中涉及到进一步需要分解的”A11流程”时,就可以在”A流程”中用子流程符号代表“A11”。然后你的读者就会明白要想进一步了解”A11″应该参考另外一个流程图。

流程图的常用结构:

给大家看一些案例:

基本上包含大多数图示的流程图:

只用到少数几个图示画的简单流程图(台湾人的文档中称为程序图——不过这里的程序不是指计算机程序,而是process,仅仅是体现任务之间的处理流程,所以使用极简单的符号也不为怪了):

以上两个流程图案例,从符号的复杂程度上来讲,一个是完整流程图,一个是基本流程图,但是从表现形式来讲,都属于“泳道图”——Swimlane。这也是我们最常用的一种表现形式了。泳道图能够很好体现部门或者角色在流程中的职责以及上下游的协作关系。且流程图本身的标准容易掌握,达成共识也就更加容易。

验证你是否做到了以上的DO,以及规避了Donnot的做法是什么?

很好办,及时与各位进行评审。将各个涉众都叫到一起,给他们看你梳理出来的成果。

这会发现一些有意思的事情,除了评审你的流程图是否符合现实外,也会评审目前的业务流程是否符合理想。不同的部门和岗位的代表会在这个评审中,确认当前,也会相互提出意见,甚至吵起来,这不失于做流程优化的一个很好的契机。暂且不表了。

点击Window——Open Perspective,选择 MEclipse UML,如果没有就在Other里找 切换到MyEclipse UML界面后,右击工程,New——UML Model 填入uml文件名确定,就可以画UML图了

前者是程序开发的时候由需求分析者画的程序所需要的类的图给开发人员看的,有类名和属性和方法组成,

后者是数据库之间的一种关联图,用来表示表与表之间的关系,有关系型和网状和对象性和层状型。

以上就是关于uml类图关系怎么画全部的内容,包括:uml类图关系怎么画、UML图系列——UML模型图的构成、UML建模(二)--流程图等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9463239.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存