UML类图中父子作用域关联关系的命名与表示方法问询
UML类图中该类作用域关联的命名与表示方案
关联命名
这种符合你描述访问规则的关联,标准命名为单向受限导航关联,在作用域场景下也可直接称为嵌套作用域引用关联:
- 不属于组合/聚合关系:组合、聚合都要求父对象可以访问子对象,和你描述的父作用域完全不能访问子作用域的规则冲突,不要用这两类关联表示
- 区别于普通依赖:普通依赖是临时使用关系,而子作用域对父作用域的引用是长期持有、固定规则的结构级关联,用普通关联而非依赖表示更准确
表示方法
你现有的关联结构已经符合UML基础规范,只需要补充必要的约束和标注即可:
- 导航性表示:你当前画的箭头从子作用域指向父作用域,父指向子的一端用
x标记不可导航,完全符合UML单向关联的表示规则,无需调整 - 访问规则标注:在关联线靠近父作用域的一侧添加UML约束,用大括号包裹:
{restricted: only lookup undefined identifiers, no full access},明确标注子作用域对父作用域的访问限制 - 多重度与角色名标注:
- 父作用域端的多重度标注为
1(单个子作用域仅归属一个父作用域,有根作用域场景可调整为0..1),角色名标注为enclosingScope - 子作用域端的多重度标注为
0..*(单个父作用域可包含0到多个子作用域),因为父作用域不可导航到子作用域,该端角色名可以省略
- 父作用域端的多重度标注为
嵌套作用域场景下这种关联是行业通用表示,比如编译原理里的符号表作用域结构、编程语言的块级作用域关系,都采用该表示方法实现UML建模。
内容的提问来源于stack exchange,提问作者Slev7n
相关产品推荐
相关产品推荐

