小林 2022-7-13 11:16
我想把聚合关系画成下面这样可以吗,好像边界更清晰了。
UMLChina潘加宇
这里面涉及到一些知识点,要理清楚才行。
首先,如果是在对象级别,那可以,不会有歧义,像图1下部的对象关系。
图1
如果是类图,会存在歧义,根源是《软件方法》第8章所说“人有男有女”、“人有手有脚”的集合个体问题。
如果用套框来表示的话,就可能有两种意思,如图2:
图2
所以,干脆就不套框了,用不同连线来表达:
图3
如果坚持要套框,可以强制规定套框表示的是哪一种。
UML从2.0开始提供的“结构化类”表示,相当于规定套框表达的是组合关联(个体关系)。图4和图5摘自《UML参考手册(第二版)》。
图4相当于类图的变体:
图4 摘自《UML参考手册(第二版)》
图5则是图4中所表达的TicketOrder类的一个对象:
图5 摘自《UML参考手册(第二版)》
不过,我认为这样的表示容易模糊类和对象的区别,如果一定要在类图上使用套框,把套框的含义规定为泛化关系更合适,就像David C. Hay所用的,图6摘自David C. Hay的书“Data Model Patterns: Conventions of Thought”。
图6 摘自Data Model Patterns: Conventions of Thought
[新增EA028高压注射器]24套UML+EA和StarUML的建模示范视频-全程字幕(2022.7.4更新)
《软件方法》书中自测题-题目全文+分卷自测(1-8章)16套111题
CTO也糊涂的常用术语:功能模块、业务架构、用户需求……[20210217更新]
扫码加作者微信: