GB/T 28174.2-2011 统一建模语言(UML) 第2部分:上层结构
- 名 称:GB/T 28174.2-2011 统一建模语言(UML) 第2部分:上层结构 - 下载地址2
- 下载地址:[下载地址2]
- 提 取 码:
- 浏览次数:3
发表评论
加入收藏夹
错误报告
目录| 新闻评论(共有 0 条评论) |
资料介绍
ICS 35. 080 L 77
中 华 人 民 共 和 国 国 家 标 准
GB/T 28174.2—2011
统一建模语言 (UML)
第 2 部分 :上层结构
Unified modelinglanguage(UML) —
Part2:Superstructurespecification
2011-12-30发布 2012-06-01实施
中华人民共和国国家质量监督检验检疫总局中 国 国 家 标 准 化 管 理 委 员 会
发
布
GB/T 28174.2—2011
目 次
前言 Ⅲ
引言 Ⅳ
1 范围 1
2 规范性引用文件 1
3 类 1
3. 1 概述 1
3. 2 内核—根图 (Kernel—the RootDiagram ) 2
3. 3 内核—命名空间图 (Kernel—the Namespaces Diagram) 5
3. 4 内核—多重性图 (Kernel—the Multiplicities Diagram) 13
3. 5 内核—表达式图 (Kernel—the Expressions Diagram) 17
3. 6 内核—约束图 (Kernel—the Constraints Diagram) 23
3. 7 内核—实例图 (Kernel—the Instances Diagram) 25
3. 8 内核—类目图 (Kernel—the Classifiers Diagram) 28
3. 9 内核—特征图 (Kernel—the Features Diagram) 36
3. 10 内核—操作图 (Kernel—the Operations Diagram) 39
3. 11 内核—类图 (Kernel—the Classes Diagram) 42
3. 12 内核—数据类型图 (Kernel—the DataTypes Diagram) 54
3. 13 内核—包图 (Kernel—the Packages Diagram) 57
3. 14 依赖 (Dependencies) 62
3. 15 接 口 (Interface) 67
3. 16 关联类 (AssociationClasses) 71
3. 17 幂类型 (PowerType) 72
3. 18 图 (Diagram) 79
4 构件 81
4. 1 概述 81
4. 2 抽象语法 81
4. 3 类描述 83
4. 4 图 91
5 组合结构 92
5. 1 概述 92
5. 2 抽象语法 93
5. 3 类描述 96
5. 4 表示选项 96
5. 5 图 112
6 部署 113
6. 1 概述 113
Ⅰ
GB/T 28174.2—2011
6. 2 抽象语法 114
6. 3 类描述 116
6. 4 图 126
6. 5 图形路径 127
7 动作 127
7. 1 概述 127
7. 2 抽象语法 129
7. 3 类描述 137
7. 4 图 172
8 活动 172
8. 1 概述 172
8. 2 抽象语法 173
8. 3 类描述 184
9 通用行为 (Common Behaviors) 250
9. 1 概述 250
9. 2 抽象语法 253
9. 3 类描述 257
10 交互 (Interactions) 273
10. 1 概述 273
10. 2 抽象语法 273
10. 3 类描述 277
10. 4 图 296
11 状态机 308
11. 1 概要 308
11. 2 抽象语法 309
11. 3 类描述 312
11. 4 图 349
12 用况 (Use Cases) 352
12. 1 概述 352
12. 2 抽象语法 352
12. 3 类描述 353
12. 4 图 (Diagrams) 361
Ⅱ
GB/T 28174.2—2011
前 言
GB/T 28174《统一建模语言》分为 4个部分 :
— 第 1部分 :基础结构 ;
— 第 2部分 :上层结构 ;
— 第 3部分 :对象约束语言(OCL) ;
— 第 4部分 : 图交换 。
本部分为 GB/T 28174的第 2部分 。
本部分按照 GB/T 1. 1—2009给出的规则起草 。
本部分参考面向对象工作组(OMG)的《统一建模语言 :上层结构》2. 0 版 。
请注意本文件的某些内容可能涉及专利 。本文件的发布机构不承担识别这些专利的责任 。
本部分由全国信息技术标准化技术委员会(SAC/TC28)提出并归 口 。
本部分起草单位 : 中国电子技术标准化研究所 、北京大学 、广东省广业信息产业集团有限公司 、镇江金钛软件有限公司 、广东万维博通信息技术有限公司 。
本部分主要起草人 :高健 、江善东 、许立勇 、周伟强 、黄孝和 、丁力 、杨三宝 、吴炯祥 、邓海强 、胡红林 、唐泽欢 、麻志毅 。
Ⅲ
GB/T 28174.2—2011
引 言
统一建模语言(UML)是一种可视化规约语言 ,用于定义和构造计算机信息系统的制品,并将其文档化 。它是一种通用建模语言 ,可以和所有主流的面向对象和面向构件的方法一起使用 ,并适用于所有的应用领域和实现平台(如 ,CORBA、J2EE、. NET等) 。
0. 1 统一建模语言不同版本之间的关系
由于 UML 的技术较新 ,所以该国际标准历经多次的版本演化 ,下面是 UML在 OMG 的演化过程 :
1997 UML1. 1
1998 UML1. 2
1999 UML1. 3
2001 UML1. 4
2003 UML2. 0
GB/T 28174的本部分正文中的 UML均指 UML2. 0 统一建模语言和 GB/T 28174。
0. 2 关于对读者的建议
需要了解语言中的元模型构造物 ,利用这些构造物进行元模型扩展或者是构造新的建模语言的用户可阅读基础结构部分(GB/T 28174. 1) 。
应用系统建模用户和建模工具制造方都需阅读上层结构(GB/T 28174. 2) 。但要注意 ,该部分的内容是交叉引用的 ,可不按目次顺序阅读 。
对于要精确地对模型进行约束的应用系统建模用户或要支持对象约束语言的建模工具制造方 ,需阅读对象约束语言部分(GB/T 28174. 3) 。
支持在不同的软件工具间平滑且无缝地交换文档的建模工具制造方 ,需阅读图交互部分 。
Ⅳ
GB/T 28174.2—2011
统一建模语言(UML)第 2 部分 :上层结构
1 范围
GB/T 28174的本部分规定了用于对各类软件系统进行可视化 、详述 、构造和文档化的统一建模语言 。本语言也可用于对其他领域进行建模 。
本部分适用于用户使用的本标准的语言构造物 。在严格地遵循了 GB/T 28174. 1基础结构的基础上 ,本部分讲述了供用户使用的本标准的元模型 , 即本标准的语法和语义 。
2 规范性引用文件
下列文件对于本文件的应用是必不可少的 。凡是注 日期的引用文件 ,仅注 日期的版本适用于本文件 。凡是不注日期的引用文件 ,其最新版本(包括所有的修改单)适用于本文件 。
GB/T 28174. 1 统一建模语言(UML) 第 1部分 :基础结构
GB/T 28174. 3 统一建模语言(UML) 第 3部分 :对象约束语言(OCL)
3 类
3. 1 概述
类(Classe)包含有了与 UML基本建模概念相关联的子包 ,尤其是类以及它们之间的关系 。包的结构
图 1 描述了包 Classes的子包之间的依赖关系(比如包合并(merge))
图 1 Classes包的子包及它们之间的依赖关系
1
GB/T 28174.2—2011
考虑到 Kernel包大小的 ,本章按照图划分 ,此处每张 Kernel图都为单独的条 。
AssociationClasses包和 PowerTypes包虽然与 Kernel图关系紧密 ,但放在了单独的章条描述(分别见 AssociationClasses和 PowerTypes) 。Dependencies包和 Interfaces包也在不同的条描述(分别见Dependencies和 Interface) 。
在这样的情况下 ,如果后 4个包的任一个增加了对原定义在 Kernel包中的类的定义 ,新增部分的描述将写在原有类的下面 。
来自本标准的复用包
Kernel包描述了 UML 的核心建模概念 ,包括类 、关联和包 。这部分主要是从基础结构库复用的 ,因为大部分概念与 MOF(例如)中的是一样的 。Kernel包是 UML 的核心部分 ,主要重用了 Infrastruc- ture库的 Constructs(构造)包和 Abstractions(抽象)包 。
复用的方法就是合并 Construct和 Abstractions的相关子包 。在很多情况下 ,用附加的特征 、关联或超类在 Kernel中扩展所复用的类 。在后面表示抽象语法的图中 ,通常省略来自 Infrastructure库的元素的子类 , 因为该信息仅仅增加了复杂性而不有助于理解 。作为本章的部分 ,对每个元类都进行了完整的描述 ;在此处重复来自 Infrastructure library的文本 。
还要注意 ,尽管 Abstractions包括几个子包 ,Kernel是一个如 Constructs一样的平面结构 , 只包含元类 。这种差异的原因在于 ,Infrastructure库的有些部分是为灵活性和复用设计的 ,而 Kernel在复用Infrastructure库时 ,不得不将所复用的元类的不同方面结合起来 。 因此 , 为了组织本章 ,我们采用图而非包作为主要分组机制 。
显式地合并来自 InfrastructureLibrary: :Core的包列举如下 :
a) Abstractions: :Instances
b) Abstractions: :MultiplicityExpressions
c) Abstractions: :Literals
d) Abstractions: :Generalizations
e) Constructs
通过显 式 地 合 并 上 述 包 , InfrastructureLibrary: : Core中 的 所 有 其 他 包 也 被 隐 含 地 合 并 。 如 图 2所示 。
图 2 由 Kernel合并的 InfrastructureLibrary的包
图中的所有依赖关系都表示包合并 。
3. 2 内核—根图(Kernel—theRootDiagram )
Kernel包的根图如图 3所示 。
2
GB/T 28174.2—2011
图 3 Kernel包的根图
3. 2. 1 注释(来自内核)[Comment(from Kernel)]
注释是附属到一组元素的文本性注解 。
描述
注释能够把各种解释附加到元素上 ,其本身不携带语义 ,但是可以包含对建模者有用的信息 。
任何元素都可以有注释 。
属性
body:String— 指定作为注释内容的串 。
关联
annotatedElement:Element[ * ] — 引用被注释的元素 。
约束
无添加的约束 。
语义
注释对被注解的元素没有增加任何语义 ,只是为模型的读者提供一些有用信息 。
记法
注释用一个右上有折角的矩形表示 。该矩形中包含本注释的内容 。注释与每个被注释元素由虚线连接 。
表示选项
如果语境关系明显 ,或者在图中不重要的话 ,可以省略连接注释与被注释元素的虚线 。例子
如图 4所示 。
图 4 注释的记法
3
GB/T 28174.2—2011
3. 2. 2 有向关系(来自内核包)[DirectedRelationship (from Kernel)]
有向关系表示源模型元素集合与目标模型元素结合之间的关系 。
描述
指示性关系涉及一个或多个源元素以及一个或多个目标元素 。有向关系是一个抽象元类 。属性
无添加的属性 。
关联
a) /source:Element[1. . * ] — 说明有向关系的源 。Relationship: :relatedElement子集 。是 一个导出集合 。
b) /target:Element[1. . * ] — 说明有向关系的 目标 。Relationship: :relatedElement子集 。是一个导出集合 。
约束
无添加的约束 。
语义
有向关系没有特别的语义 ,它的各种子类将添加适用于它们表示的概念的语义 。
记法
有向关系没有一般的记法 ,它的子类将定义自己的记法 。在大多数情况下 ,是从源到目标的直线及其变体 。
3. 2. 3 元素(来自内核包)[Element(from Kernel)]
元素是构成模型的要素 ,它具有拥有其他元素的能力 。
描述
元素是没有父类的抽象元类 。在 Infrastructure库中是所有元类的共同父类 。元素跟自己本身有派生组合关联 , 以支持元素拥有其他元素的一般能力 。
属性
无添加的属性 。
关联
a) ownedComment:Comment[ * ] — 该元素拥有的注释 。Element: :ownedElement子集 。
b) /ownedElement:Element[ * ] — 该元素拥有的元素 。是一个派生联合 。
c) /owner:Element[0. . 1] — 拥有该元素的元素 。是一个派生联合 。
约束
a) 一个元素不可以直接或间接拥有本身 ;
notself. allOwnedElements() >includes(self)
b) 一个被拥有的元素应有一个所有者 。
self. mustBeOwned()implies owner >notEmpty()附加操作
a) allOwnedElements()返回一个元素所有的直接或间接拥有的元素 ; Element: :allOwnedElements() :Set(Element) ;
b) m(a)llu(O)stBeOw(wnedE)lened(men)明(o)该(w)n类型(edE)l元素是(ement)u应(n)i有(on)(一o个所(wned)有(E)le者(m)e,n不要求(t >co)l所lec有(t)(|的(e). 元(a)ll素的子(Owned)e应(m)e重(nt)s载()这))
一操作 。
Element: :mustBeOwned() :Boolean;
4
GB/T 28174.2—2011
mustBeOwned = true语义
元素的子类提供了适用于它们表示的概念的语义 。元素的注释没有添加语义 ,但是可以表示给模型读者的信息 。
记法
元素没有一般的记法 。元素的子类定义了 自 己的记法 。
3. 2. 4 关系(来自内核包)[Relationship (from Kernel)]
关系是一种说明元素之间某些关系的抽象概念 。
描述
关系涉及一个或多个相关的元素 。关系是一个元类 。
属性
无添加的属性 。
关联
/relatedElement:Element[1. . * ] — 说明由该关系相联系的元素 。这是一个派生联合 。约束
无添加的约束 。
语义
关系没有特定的语义 。关系的各种子类会添加适用于它们所表示概念的语义 。
记法
关系没有一般的记法 ,关系的特定子类会定义它们自己的记法 。在大多数情况下 ,记法为相关元素之间的直线及其变体 。
3. 3 内核—命名空间图(Kernel—theNamespacesDiagram)
Kernel包的命名空间(Namespace)图如图 5所示 。
图 5 Kernel包的命名空间图
要找到图中引用的元类 :
a) 见 “方向性关系 ”;
b) 见 “元素 ”;
5
GB/T 28174.2—2011
c) 见 “包 ”。
3. 3. 1 元素引入(来自内核包)[ElementImport(from Kernel)]
元素引入用于标识另外一个包中的元素 ,并且允许不加限定符 、仅使用其名称来引用该元素 。描述
把元素引入定义为一种可打包元素和引入命名空间之间的有向关系 。可打包元素的名称或者它的别名被添加到所要引入它的命名空间中 。还可以控制一个被引入的元素是否可以被进一步引入 。
属性
a) visibility:VisibilityKind— 指定被引入的可打包元素在引入包中的可见性 。 缺省值同被引入元素的可见性属性 。如果被引入元素没有可见性属性 ,则可以为其增加该属性 。
b) alias:String[0. . 1] — 指定用来代替引入的可打包元素名称而添加到引入包的命名空间中的名称 。该别名不得同引入包中的成员名称相冲突 。缺省情况下 ,不使用别名 。
关联
a) importedElement:PackageableElement[1] — 名 称 被 加 入 到 命 名 空 间 中 的 可 打 包 元 素 的 名称 。DirectedRelationship: :target— 子集 。
b) importingNamespace:Namespace[1] — 从其他包中引入可打包元素的命名空间 。Directed- Relationship: :— source和 Element: :owner子集 。
约束
a) 元素引入的 visibility属性或为 public,或为 private;
b) 被(se)l引(f). 入(v)is元ibi素lit的(y)见(#)性要(pub)l么ic为(o)rp(s)ub(elf)l.ic(v)i,s要ib么ili没(ty)。#private
#public附加操作
self. importedElement. visibility. notEmpty( ) implies self. importedElement. visibility =
[1] getName()操作返回被引入的可打包元素在引入命名空间中的名称 。
ElementImport: :getName() :String;
ifself. alias >notEmpty()then
getName =
self. alias
else
self. importedElement. name
endif
语义
元素引入将可打包元素的名称从一个包中添加到引入命名空间里 。作为引用 ,意味着不能向元素引用本身增加特征 ,但可以在被引用的那个命名空间里修改所引用的元素 。元素引入用于选择性地引入单个元素而无须依靠整个包 。
如果在引入命名空间中发生外部名称(在封闭的命名空间里定义的元素可以在封闭的命名空间中不加限定的引用)命名冲突的情况 ,外部名称被引入元素隐藏 ,且用未限定的名称标识所引入元素的名称 ,可以通过限定名称访问外部名称 。
如果由于元素引入或包引入导致多个同名元素被引入到一个命名空间中 , 为了使用应该对引入的元素的名称加以限定 ,否则不可以把其添加到命名空间中 。如果引入元素跟引入命名空间本身拥有的元素同名 ,也应限定所引入元素的名称 。
被引入的元素 ,还可以进一步通过元素或成员引入被其他的命名空间引入 。
6
GB/T 28174.2—2011
元素引入的可见性可以与被引用元素的相同 ,或者更严格 。
记法
用带箭头的虚线表示元素引入 ,箭头从引入命名空间指向被引入元素 。如果可见性是 public,在虚线附近加上关键词《import》,否则是《 access》。
如果引入元素有别名 ,该别名写在关键词《import》后面或下面 。
表示选项
如果被引入元素是包 ,可以在元素之前加上关键字 ,如《 elementimport》。
如果不使用虚线箭头 ,则可以用花括号限定惟一标识所引入元素的文本 ,放在命名空间之下或之后 。文本表示如下 :
{elementimport}或{elementaccess}
类似的 ,别名表示如下 :
{elementimportas< alias>}或{elementaccessas< alias>}例子
在图 6 中 ,元素引用允许包 Program 中的元素不加限定地引用 Types中的类型 Time。然而 ,如果要引用 Types: :Integer类型仍需要加限定词 , 因为该元素没有被引入 。
图 6 元素引入的例子
图 7 中 ,引入元素使用了别名 ,意味着 Types: :Real类型在 Shapes包中称为 Double。
图 7 使用别名的元素引入的例子
3. 3. 2 命名元素(来自内核包 ,Dependencies包)[NamedElement(from Kernel,Dependencies)]
命名元素是指模型中拥有名称的一个元素 。
描述
命 名 元 素 表 示 的 是 可 拥 有 名 称 的 元 素 。 名 称 用 来 在 定 义 该 元 素 的 命 名 空 间 中 识 别 该 元 素 。命 名 元 素 还 有 一 个 限 定 的 名 称 , 用 于 在 嵌 套 的 命 名 空 间 层 次 中 惟 一 地 识 别 该 元 素 。 命 名 元 素 是 一个抽象元类 。
7
GB/T 28174.2—2011
属性
a) name:String[0. . 1] — 被命名元素的名称 。
b) /qualifiedName:String[0. . 1] — 用于在嵌套命名空间层次内识别命名元 素 的 名 称 。 它 由从嵌套的命名空间的根的名称开始一直到该命名元素本身的名称为止所有的名称构成 。是一个派生属性 。
c) visibility:VisibilityKind[0. . 1] — 决定了在整个模型中不同命名空间里该命名元素的可见性 。包依赖(见 “依赖 ”) 。
d) supplierDependency:Dependency[ * ] — 表明引用提供者的依赖 。
e) clientDependency:Dependency[ * ] — 表明引用客户的依赖 。
关联
/namespace:Namespace[0. . 1] — 详述拥有该命名元素的命名空间 。Element: :owner子集 。是一个派生联合 。
约束
a) 如果元素本身没有名称 ,或者包含命名空间之一没有名称 ,则没有限定名 ;
(self. name >isEmpty()or self. allNamespaces() > select(ns | ns. name >isEmpty()) > notEmpty())
implies self. qualifiedName >isEmpty()
b) 元素本身有名称 ,且每个命名空间都有名称 ,则限定名由所有命名空间的名称构成 ;
(self. name >notEmpty()and self. allNamespaces() > select(ns | ns. name >isEmpty()) >isEmpty())implies
name |
self. qualifiedName = self. allNamespaces() >iterate( ns:Namespace; result:String= self.
ns. name > union(self. separator()) > union(result))
c) 如果一个命名元素并不为任何一个命名空间所有 ,则它的可见性为空 。
namespace >isEmpty()implies visibility >isEmpty()附加操作
a) allNamespaces()返回命名元素所在的由内向外的命名空间序列 ;
NamedElement: :allNamespaces() :Sequence(Namespace) ;
ifself. namespace >isEmpty()
allNamespaces =
then Sequence{}
else self. name. allNamespaces() >prepend(self. namespace)
endif
b) isDistinguishableFrom()表 明 两 个 命 名 元 素 是 否 能 逻 辑 共 存 于 一 个 命 名 空 间 中 。 缺 省 情 况下 ,两个命名元素可被辨识 :
1) 它们是不相关的类型 ;
2) 它们是相关类型但是名称不同 。
NamedElement: :isDistinguishableFrom(n:NamedElement,ns:Namespace) :Boolean;
ifself. oclIsKindOf(n. oclType) or n. oclIsKindOf(self. oclType)
isDistinguishable =
then ns. getNamesOfMember( self) > intersection( ns. getNamesOfMember( n)) > isEmpty()
else true
8
GB/T 28174.2—2011
endif
c) separator()返回构造限定名时候使用的分隔符 。
NamedElement: :separator() :String;
语义
separator= ′: : ′
name属性用于在其名称是可访问的命名空间里标识命名元素 。 注意该属性有[0. . 1] 的多重性 ,以保证没有名称的可能性(这与名称为空不同) 。
可见性属性提供了这样的含义 :在模型的不同命名空间里 ,约束对命名元素的使用 。要把它与引入和泛化机制一起使用 。
记法
无 。
3. 3. 3 命名空间(来自内核包)[Namespace(from Kernel)]
命名空间是模型中的一个元素 ,它包含一组可用名称识别的命名元素 。
描述
命名空间是能够拥有其他命名元素的命名元素 。每个命名元素至多只能为一个命名空间所有 。命名空间提供了一种靠名称鉴别命名元素的手段 。命名空间里靠名称鉴别的命名元素可以是直接属于该命名空间的 ,也可以是通过其他方法(比如引入或者继承) ,加入到该命名空间里来的 。命名空间是一个抽象元类 。
命名空间可以包含约束 。约束不仅可以作用于命名空间本身 ,还可以作用于命名空间中的元素 。
命名空间可以引入一个包中的单个甚至所有成员 , 因此可以在引入命名空间中不加限定地引用命名元素 。在冲突的情况下 ,则应通过限定名或别名消除歧义 。
属性
无添加的属性 。
关联
a) elementImport: ElementImport[ * ]— 命 名 空 间 拥 有 的 引 入 元 素 。Element: : ownedElement子集 。
b) /importedMember:PackageableElement[ * ] — 引用为该命名空间的成员的可打包元素 ,作为包引入或成员引入 。Namespace: :member子集 。
c) /member:NamedElement[ * ] — 命名空间内可识别的命名元素集合 , 可以是空间本身包含的 ,也可以是通过引入或继承等加入的 。这是一个派生联合 。
d) /ownedMember: NamedElement [ * ] — 由 命 名 空 间 拥 有 的 命 名元 素 集 合 。 Element: : ownedElement和 Namespace: :member子集 。是一个派生联合 。
e) ownedRule:Constraint[ * ] — 指定命名空间拥有的一组约束 。Namespace: :ownedMember子集 。
f) packageImport: PackageImport [ * ] — 对 由 命 名空 间 拥 有 的 包 引入 的 引用 。 Element: : ownedElement子集 。
约束
a) 一个命名空间中的所有成员在其中都是可识别的 ; membersAreDistinguishable()
b) importedMember性质是由元素引入和包引入派生的 。
self. importedMember >includesAll( self. importedMembers( self. elementImport. import- edElement. asSet() > union(self. packageImport. importedPackage > collect(p | p. visible-
9
GB/T 28174.2—2011
Members()))))附加操作
a) getNamesOfMember()返回一个成员在命名空间中的所有名称 。 一般而言 ,如果一个成员用不同的别名被引入多次 ,那么它在命名空间中将有多个名称 。该操作考虑引入 ,返回元素在引入命名空间中的名称 ,这分三种情况 :
1) 属于该空间 ;
2) 不属于该空间而是被单独引用 ;
3) 所在的包被引入 。
Namespace: :getNamesOfMember(element:NamedElement) :Set(String) ;
ifself. ownedMember >includes(element)
getNamesOfMember =
then Set{} >include(element. name)
elseletelementImports:ElementImport= self. elementImport > select(ei | ei. import-
ifelementImports >notEmpty()
then elementImports > collect(el | el. getName())
edElement = element)in
else
self. packageImport > select(pi | pi. importedPackage. visibleMembers() >
includes(element)) >
collect(pi| pi. importedPackage. getNamesOfMember(element))
endif
endif
b) membersAreDistinguishable()表明是否某个命名空间中的所有成员在其中都是可识别的 ;
Namespace: :membersAreDistinguishable() :Boolean;
self. member >forAll( memb |
membersAreDistinguishable =
self. member > excluding(memb) >forAll(other |
memb. isDistinguishableFrom(other,self)))
c) importMembers()定义哪个可打包元素实际被引入到命名空间中 。该操作把隐藏元素排除在外 , 即那些与固有元素有名称冲突的 ,还排除了引入时同名的元素 。
Namespace: :importMembers(imps:Set(PackageableElement)) :Set(PackageableElement) ;
forAll(mem |
importMembers = self. excludeCollisions(imps) > select(imp | self. ownedMember >
mem. imp. isDistinguishableFrom(mem,self)))
d) excludeCollisions()排除了在命名空间中不可识别的可打包元素 。
Namespace: : excludeCollisions(imps: Set(PackageableElements)) : Set(PackageableEle- ments) ;
e(im(xc)lp2(ud)se(C)lf(ol)l)ii)ons= imps > reject(imp1|imps. exists(imp2|notimp1. isDistinguishableFrom
语义
命名空间提供 了 容 纳 命 名 元 素 的 一 个 容 器 , 提 供 了 名 称 冲 突 的 解 决 方 法 , 如 name1: : name2: : name3。用形如 N: :< x>的复合名称 ,member关联识别命名空间 N 中的所有命名元素 。 注意这与在N 中不用限定名的名称不同 , 因为该集合还包含封闭命名空间中的非隐藏成员 。
10
GB/T 28174.2—2011
一个命名空间中的命名元素根据不同规则与其他命名元素区别 。 默认的规则是 ,如果两个元素类型不相关 ,或者类型相关但不同名 ,则它们是不同的元素 。特定情况下可以覆盖该规则 , 比如根据签名识别的操作 。
命名空间的 ownedRule约束表示用于被约束元素的良构规则 。在判定模型元素是否是良构的时候 ,计算这些规则 。
记法
无添加的记法 。具体的子类定义自己特定的记法 。
3. 3. 4 可打包元素(来自内核)[PackageableElement(from Kernel)]
描述
可打包元素是指能够直接被包拥有的命名元素 。
属性
visibility:VisibilityKind [1] — 可打包元素应具有一定的可见性 ,也 就 是 说 , 可 见 性 并 不 是 可 选的 。重定义 NamedElement: :visibility。
关联
相关推荐
- GB/T 25334.1-2023 铁路机车车体 第1部分:内燃机车
- GB∕T 40389-2021 烧结金属材料(不包括硬质合金) 表面粗糙度的测定
- GB/T 15135-2018 燃气轮机 词汇
- GB/T 34560.4-2017 结构钢 第4部分:淬火加回火高屈服强度结构钢板交货技术条件
- GB/T 18570.5-2005 涂覆涂料前钢材表面处理 表面清洁度的评定试
- GB∕T 10123-2022 金属和合金的腐蚀 术语
- GB/T 5680-2023 奥氏体锰钢铸件
- GB/T 13681-1992 焊接 六角螺母
- GB/T 42994-2023 管理咨询服务指南 项目管理 正式版
- GB/T 34119-2017 轨道交通 机车车辆用电连接器

