葡京在线开户UML–类详解

是因为类别需要,需支付同一套汽车、火车、皮带采样机的上位机软件。

http://www.ibm.com/developerworks/cn/rational/rationaledge/content/feb05/bell/

看过以前的上位机软件,老版本都是DelPhi、VB开发,稍微新语言开发的是行使winform开发。要不就是利用组态软件。

基础

Delphi语言我事先没有接触过,所以自然用持续。VB6.0也是2006-07用过两年也忘得差不多了;组态软件不便宜扩张,特别是前几日上位机不仅仅是个单机版,需和任何连串配套。

如先前所波及的,类图的目标是显得建模系统的花色。在大部的 UML
模型中这多少个品种包括:

从二零零六年起来到明日一向选用wpf,所以采用此技能。

  • 接口

  • 数据类型

  • 组件

1、界面可以自定义用户控件,做成类似组态效果。

UML
为那个项目起了一个特意的名字:“分类器”。平常地,你可以把分类器当做类,但在技术上,分类器是更加宽泛的术语,它仍旧引用下边的此外三系列型为好。

2、集成视频头。

类名

3、集成LED、道闸、红外、语言播放、煤质在线检测仪、超声波等等设施。

类的 UML 表示是一个长方形,垂直地分为三个区,如图 1
所示。顶部区域呈现类的名字。中间的区域列出类的性质。底部的区域列出类的操作。当在一个类图上画一个类元素时,你必须要有上边的区域,下面的二个区域是可采用的(当图描述仅仅用于体现分类器间关系的高层细节时,下边的六个区域是不必要的)。图
1 显得一个航路班机如何作为 UML
类建模。正如我辈所能见到的,名字是 Flight,大家得以在中游区域看到Flight类的3个特性:flightNumber,departure提姆e

flightDuration。在底层区域中我们得以观望Flight类有六个操作:delayFlight
和 getArrival提姆(Tim)e。

组态效果的界面用wpf技术也可以很好的实现。至于性能,现在的工控机配置不再是10年的布局了,装win7跑wpf完全没有问题。

葡京在线开户 1

采样机的上位机核心不是界面,界面一天就可以搞完。主旨是和下位机通信。

图 1: Flight类的类图

上边说说各样不同PLC型号选拔不同协商通信:

类属性列表

西门子S7-200PLC:串口通信,S7-200 PC Access OPC服务上下位机通信。

类的属性节(中部区域)在分隔线上列出每一个类的性质。属性节是可挑选的,倘使一用它,就带有类的列表彰显的各类属性。该线用如下格式:

西门子smartPLC:网口通信,TCP/IP OPC服务上下位机通信。

name : attribute type
flightNumber : Integer

AB的PLC:串口、网口都得以用OPC通信。

延续我们的Flight类的例证,我们得以采取性能类型音讯来叙述类的性能,如表 1
所示。

施耐德的PLC:串口、网口都足以用modbus协议通信。

表 1:具有关联类型的Flight类的性能名字

欧姆龙的PLC:串口、网口可以用hostlink协议通信。

属性名称 属性类型
flightNumber Integer
departureTime Date
flightDuration Minutes

在业务类图中,属性类型一般与单位符合,那对于图的也许读者是有意义的(例如,分钟,先令,等等)。不过,用于转移代码的类图,要求类的属性类型必须界定在由程序语言提供的序列之中,或含有于在系统中落实的、模型的类型之中。

在类图上呈现所有默认值的特定属性,有时是行之有效的(例如,在银行账户应用程序中,一个新的银行账户会以零为伊始值)。UML
规范允许在属性列表节中,通过行使如下的记号作为默认值的标识:

name : attribute type = default value

举例来说来说:

balance : Dollars = 0

显示属性默认值是可挑选的;图 2
显示一个银行账户类具有一个名为 balance的档次,它的默认值为0。

葡京在线开户 2

图 2:显示默认为0美金的balance属性值的银行账户类图。

类操作列表

类操作记录在类图长方形的第五个(最低的)区域中,它也是可挑选的。和总体性一样,类的操作以列表格式展现,每个操作在它和谐线上。操作使用下列记号表现:

    name(parameter list) : type of value returned

上边的表 2 中Flight类操作的映照。

表 2:从图 2 辉映的Flight类的操作

操作名称 返回参数 值类型
delayFlight
Name Type
numberOfMinutes Minutes
N/A
getArrivalTime N/A Date

图3显示,delayFlight 操作有一个Minutes类型的输入参数 —
numberOfMinutes。但是,delayFlight
操作没有重临值。 1 当一个操作有参数时,参数被放在操作的括号内;每个参数都使用这样的格式:“参数名:参数类型”。

葡京在线开户 3

图 3:Flight类操作参数,包括可挑选的“in”标识。

当文档化操作参数时,你也许行使一个可选择的提醒器,以体现参数到操作的输入参数、或输出参数。这么些可接纳的提醒器以“in”或“out”出现,如图3中的操作区域所示。一般的话,除非将动用一种早期的顺序编程语言,如Fortran
,那多少个提示器可能会具有辅助,否则它们是不必要的。然则,在
C++和Java中,所有的参数是“in”参数,而且遵照UML规范,既然“in”是参数的默认类型,大多数人将会遗漏输入/输出指示器。

继承

在面向对象的计划性中一个要命重大的定义,继承,指的是一个类(子类)继承另外的一个类(超类)的同样效率,并扩大它和谐的新功效(一个非技术性的比喻,想象我连续了自我二姨的相似的音乐力量,可是在我的家里,我是唯一一个玩电吉他的人)的力量。为了在一个类图上建模继承,从子类(要连续行为的类)拉出一条闭合的,单键头(或三角形)的实线指向超类。考虑银行账户的花色:图
4 显示 CheckingAccount 和 SavingsAccount 类如何从 BankAccount
类继承而来。

葡京在线开户 4

图 4: 继承通过指向超类的一条闭合的,单箭头的实线表示。

在图 4 中,继承关系由各类超类的单独的线画出,这是在IBM Rational
罗丝(Rose)和IBM Rational
XDE中拔取的法门。可是,有一种叫做 树标记的准备形式可以画出继承关系。当存在多少个或更多子类时,如图
4 中所示,除了延续线象树枝一样混在联合外,你可以运用树形记号。图 5
是重绘的与图 4 一样的继续,可是本次使用了树形记号。

葡京在线开户 5

图 5: 一个选用树形记号的接续实例

抽象类及操作 
精心的读者会注意到,在图 4 和 图5
中的图中,类名BankAccount和withdrawal操作使用斜体。这意味着,BankAccount
类是一个抽象类,而withdrawal方法是架空的操作。换句话说,BankAccount
类使用withdrawal规定抽象操作,并且CheckingAccount 和 SavingsAccount
六个子类都分别地履行它们分别版本的操作。

不过,超类(父类)不肯定假诺抽象类。标准类作为超类是健康的。

关联 
当你系统建模时,特定的目的间将会互相关系,而且那么些关系本身需要被清晰地建模。有五种关系。在这一局部中,我将会谈论它们中的五个– 双向的涉及和单向的涉及,而且自己将会在Beyond the
basics
局部啄磨剩下的二种关系类型。请小心,关于啥时候该使用每连串型涉及的详实研商,不属于本文的限量。相反的,我将会把重点集中在每种关系的用途,并表达怎样在类图上画出涉及。

葡京在线开户,双向(标准)的关联 
事关是五个类间的接入。关联总是被假定是双向的;那意味着,六个类互相明白它们间的关联,除非您限定一些其余品类的关联。回顾一下Flight
的例证,图 6 展现了在Flight类和Plane类之间的一个标准项目的涉及。

葡京在线开户 6

图 6:在一个Flight类和Plane类之间的双向关联的实例

一个双向关联用六个类间的实线表示。在线的任一端,你放置一个角色名和多重值。图
6
展现Flight与一个一定的Plane相关联,而且Flight类知道这些涉及。因为角色名以Plane类表示,所以Plane承担关联中的“assignedPlane”角色。紧接于Plane类前面的多重值描述0…1意味着,当一个Flight实体存在时,可以有一个或尚未Plane与之提到(也就是,Plane可能还并未被分配)。图
6
也体现Plane知道它与Flight类的涉嫌。在那么些关系中,Flight承担“assignedFlights”角色;图
6
的图告诉我们,Plane实体可以不与flight关联(例如,它是一架全新的飞机)或与没有上限的flight(例如,一架已经服役5年的飞机)关联。

是因为对这几个在关系尾部可能出现的多重值描述感到疑惑,下面的表3列出了一部分多重值及它们含义的例子。

表 3: 多重值和它们的意味

或是的多重值描述

表示

含义

0..1

0个或1个

1

只能1个

0..*

0个或多少个

*

0个或两个

1..*

1个或本人个

3

只能3个

0..5

0到5个

5..15

5到15个

单向关系 
在一个单向关系中,多少个类是不无关系的,可是唯有一个类知道这种关联的留存。图 7
展现单向关系的透支财务报告的一个实例。

葡京在线开户 7

图 7: 单向关系一个实例:OverdrawnAccountsReport 类 BankAccount 类,而
BankAccount 类则对关联一无所知。

一个一方面的涉嫌,表示为一条带有指向已知类的开放箭头(不倒闭的箭头或三角形,用于标志继承)的实线。如同标准提到,单向关系包括一个角色名和一个多重值描述,不过与标准的双向关联不同的时,单向关系只包含已知类的角色名和多重值描述。在图
7 中的例子中,OverdrawnAccountsReport 知道 BankAccount 类,而且知道
BankAccount
类扮演“overdrawnAccounts”的角色。不过,和标准提到不同,BankAccount
类并不知道它与 OverdrawnAccountsReport
相关联。 2

软件包 
不可制止,假设你正在为一个大的体系或大的工作领域建模,在您的模子校官会有为数不少两样的分类器。管理所有的类将是一件令人生畏的任务;所以,UML
提供一个誉为 软件包的团社团元素。软件包使建模者可以社团模型分类器到名字空间中,那有些象文件系统中的文件夹。把一个系统分为三个软件包使系统成为容易了解,尤其是在每个软件包都表现系统的一个特定部分时。 3

在图中留存二种办法表示软件包。并从未规则要求利用哪一类标志,除了用你个人的判断:哪一种更有利于阅读你画的类图。二种方法都是由一个较小的长方形(用于固定)嵌套在一个大的长方形中初叶的,如图
8 所示。但是建模者必须控制包的积极分子怎么样表示,如下:

  • 一旦建模者决定在大长方形中展示软件包的积极分子,则兼具的这么些成员 4 亟待被停放在长方形里面。其它,所有软件包的名字需要放在软件包的较小长方形之内(如图
    8 的呈现)。

  • 如若建模者决定在大的长方形之外呈现软件包成员,则具有将会在图上显示的分子都急需被停放长方形之外。为了显示属于软件包的分类器属于,从各种分类器画一条线到其中有加号的圆圆,这一个圆周粘附在软件包之上(图9)。

葡京在线开户 8

图 8:在软件包的长方形内显示软件包成员的软件包元素例子

葡京在线开户 9

图 9:一个通过连接线表现软件包成员的软件包例子

领会基础重要性

在 UML 2
中,通晓类图的功底更为重要。这是因为类图为所有的此外社团图提供基本的构建块。如组件或对象图(仅仅是举了些例子)。


回页首

超越基础

到此截止,我一度介绍了类图的底子,不过请继续往下读!在下面的有的中,我将会指导您到你会拔取的类图的更紧要的下面。这个概括UML
2 正式中的接口,此外的两种关系类型,可见性和其他补偿。

接口 
在本文的面前,我提出您以类来设想分类器。事实上,分类器是一个进一步相似的定义,它概括数据类型和接口。

至于什么时候、以及哪些急速地在系统结构图中采取数据类型和接口的完好探究,不在本文的研商范围以内。既然这样,我怎么要在此处提及数据类型和接口呢?你可能想在结构图上效仿这么些分类器类型,在这多少个时候,使用正确的号子来表示,或者至少知道这个分类器类型是主要的。不正确地绘制那些分类器,很有可能将使您的布局图读者觉得混乱,未来的系统将不可能适应需求。

一个类和一个接口不同:一个类可以有它造型的真人真事实例,可是一个接口必须至少有一个类来促成它。在
UML 2
中,一个接口被认为是类建模元素的特殊化。由此,接口就象类这样绘制,可是长方形的顶部区域也有文件“interface”,如图
10
所示。 5

葡京在线开户 10

图 10:Professor类和Student类实现Person接口的类图实例

在图 10
中体现的图中,Professor和Student类都落实了Person的接口,但并不从它延续。我们领悟这点是由于下边六个原因:1)
Person对象作为接口被定义 —
它在对象的名字区域中有“interface”文本,而且大家看出由于Professor和Student对象依照画类对象的规则(在它们的名字区域中并未额外的分类器文本)标示,所以它们是 目标。
2) 我们清楚继承在此处没有被显示,因为与带箭头的线是点线而不是实线。如图
10
所示,一条带有闭合的单向箭头的 线意味着实现(或实施);正如大家在图
4 中所见到的,一条带有闭合单向箭头的线意味着继续。

更多的涉嫌 
在下边,我谈谈了双向关联和单向关系。现在,我将会介绍剩下的三体系型的涉及。

关联类 
在提到建模中,存在部分动静下,你需要包括另外类,因为它涵盖了有关关联的有价值的音讯。对于那种情况,你会使用 关联类 来绑定你的中坚关系。关联类和一般类一样表示。不同的是,主类和关联类之间用一条相交的点线连接。图
11 突显一个航空工业实例的关联类。

葡京在线开户 11

图 11:扩展关联类 MileageCredit

在图 11 中彰显的类图中,在Flight类和 FrequentFlyer
类之间的涉嫌,爆发了名为
MileageCredit的涉及类。这意味着当Flight类的一个实例关联到 FrequentFlyer
类的一个实例时,将会发生 MileageCredit 类的一个实例。

聚合 
集结是一种专门类型的关系,用于描述“总体到有的”的涉嫌。在主导的会聚关系中, 部分类 的生命周期独立于 整体类 的生命周期。

举例来说来说,我们可以想像, 是一个总体实体,而 车轮 轮胎是整辆车的一有的。轮胎可以在安排到车时的前多少个礼拜被打造,并放置于仓库中。在那么些实例中,Wheel类实例清楚地单独地Car类实例而存在。可是,有些情状下, 部分 类的生命周期并  独立于 整体 类的生命周期

这名叫合成聚合。举例来说,考虑集团与机构的关联。 供销社和单位 都建模成类,在合作社存在在此之前,部门不可能存在。这里Department类的实例依赖于Company类的实例而留存。

让大家更进一步探索基本聚合和烧结聚合。

骨干聚合 
有会聚关系的涉嫌指出,某个类是其它某个类的一局部。在一个聚众关系中,子类实例可以比父类存在更长的岁月。为了展现一个集合关系,你画一条从父类到一些类的实线,并在父类的涉及末端画一个未填充棱形。图
12 呈现车和轮胎间的聚合关系的事例。

葡京在线开户 12

图 12: 一个聚集关联的事例

整合聚合 
组合聚合关系是汇集关系的另一种格局,可是子类实例的生命周期倚重于父类实例的生命周期。在图13中,展现了Company类和Department类之间的构成关系,注意组合关系如聚合关系一致绘制,不过本次菱形是被填充的。

葡京在线开户 13

图 13: 一个构成关系的事例

在图 13
中的关系建模中,一个Company类实例至少总有一个Department类实例。因为涉嫌是组成关系,当Company实例被移除/销毁时,Department实例也将自动地被移除/销毁。组合聚合的另一个着重效率是局部类只可以与父类的实例相关(举例来说,我们例子中的Company类)。

反射关联 
前日大家早已研究了有着的涉嫌类型。就如您恐怕注意到的,大家的有所例子已经呈现了六个不同类之间的关联。不过,类也得以动用反射关联与它本身相关联。先河,这说不定没有意思,然则切记,类是空洞的。图
14 显示一个Employee类怎么样通过manager /
manages角色与它自身有关。当一个类关联到它本身时,这并不意味着类的实例与它自己有关,而是类的一个实例与类的另一个实例相关。

葡京在线开户 14

图 14:一个反光关联关系的实例

图 14
描绘的涉嫌表明一个Employee实例可能是此外一个Employee实例的经营。可是,因为“manages”的关联角色有
0..*的多重性描述;一个雇员可能不受任何其他雇员管理。

可见性 
在面向对象的统筹中,存在属性及操作可见性的号子。UML
识别四种档次的可见性:public,protected,private及package。

UML
规范并不要求性能及操作可见性必须出示在类图上,不过它要求为每个属性及操作定义可见性。为了在类图上的来得可见性,放置可见性标志于属性或操作的名字在此之前。尽管UML 指定四种可见性类型,但是其实的编程语言可能扩展额外的可见性,或不补助UML 定义的可见性。表4显示了 UML 协助的可见性类型的不等标志。

表 4:UML 匡助的可见性类型的讲明

标志 可见性类型
+ Public
# Protected
Private
~ Package

今昔,让我们看一个类,以验证属性及操作的可见性类型。在图 15
中,所有的性质及操作都是public,除了 updateBalance 操作。updateBalance
操作是protected。

葡京在线开户 15

图 15:一个 BankAccount 类表达它的性能及操作的可见性


回页首

UML
2 补充

既然如此我们早已覆盖了根基和高等要旨,我们将掩盖一些由UML 1.
x充实的类图的新标志。

实例 
当一个系统结构建模时,呈现例子类实例有时候是实用的。为了这种结构建模,UML
2
提供 实例规范 元素,它展现在系统中运用例子(或具体)实例的值得注意的音信。

实例的记号和类一样,但是代表顶端区域中仅有的类名,它的名字是经过拼接的:

Instance Name : Class Name

举例来说:

Donald : Person

因为显示实例的目的是显得值得注意的或相关的信息,没必要在您的模子中包含全体实体性质及操作。相反地,仅仅显示感兴趣的性质及其值是完全适用的。如图16所讲述。

葡京在线开户 16

图 16:Plane类的一个实例例子(只显示感兴趣的属性值)

可是,仅仅显示一些实例而没有它们的涉嫌不太实用;因而,UML 2
也允许在实体层的关联/关联建模。绘制关联与一般的类关系的条条框框一样,除了在建模关联时有一个增大的渴求。附加的界定是,关联关系必须与类图的涉及相平等,而且事关的角色名字也务必与类图相平等。它的一个事例显示于图
17 中。在这些事例中,实例是图 6 中类图的事例实例。

葡京在线开户 17

图 17:图 6 中用实例代替类的事例

图 17
有Flight类的二个实例,因为类图提议了在Plane类和Flight类之间的涉及是 0或多。由此,我们的事例给出了多个与NX0337
Plane实例相关的Flight实例。

角色 
建模类的实例有时比期望的愈益详细。有时,你恐怕仅仅想要在一个较多的相似层次做类关系的模子。在这种场馆下,你应有运用 角色 记号。角色记号类似于实例记号。为了建立类的角色模型,你画一个方格,并在里面放置类的角色名及类名,作为实体记号,不过在这境况你不可能加下划线。图
18 彰显一个由图 14 中图描述的雇员类扮演的角色实例。在图 18
中,大家得以认为,尽管雇员类与它自身有关,关系着实是有关雇员之间扮演老总及团队成员的角色。

葡京在线开户 18

图 18:一个类图突显图14中饰演不同角色的类

留神,你不可以在纯粹类图中做类角色的建模,即使图
18显得你可以如此做。为了拔取角色记号,你将会需要动用下边探究的内部结构记号。

里头的协会 
UML 2
结构图的更有效的机能之一是新的内部结构记号。它同意你显得一个类或此外的一个分类器如何在里头整合。这在
UML 1. x
中是不能够的,因为记号限制你只好展现一个类所兼有的集合关系。现在,在 UML
2 中,内部的结构记号让您更精晓地出示类的一一部分如何保持关系。

让我们看一个实例。在图 18
中我们有一个类图以展现一个Plane类怎样由四个引擎和多少个控制软件对象组成。从那一个图中省略的东西是突显关于飞机部件咋样被装配的部分音讯。从图
18
的图,你不可以表达,是每个控制软件对象说了算六个引擎,依旧一个控制软件对象说了算五个引擎,而另一个说了算一个发动机。

葡京在线开户 19

图 19: 只呈现对象之间关系的类图

绘制类的内在结构将会革新这种情景。先导时,你通过用二个区域画一个方格。最上端的区域包含类名字,而较低的区域包含类的内部结构,呈现在它们父类中肩负不同角色的一些类,角色中的每个部分类也涉及到其他类。图
19 显示了Plane类的内部结构;注意内部结构如何澄清混乱性。

葡京在线开户 20

图 20:Plane类的内部结构例子。

在图 20 中Plane有六个ControlSoftware 对象,而且每个控制二个引擎。在图左边上的
ControlSoftware(control1)控制引擎 1 和 2 。在图右侧的
ControlSoftware(control2)控制引擎 3 和 4 。