原图4.1

EA绘制

图4.1 关注对象及其子类型。
第3章的患者是可以被观察的一种关注对象。
PlantUML
@startuml
skinparam nodesep 90
skinparam ranksep 70
top to bottom direction
class 关注对象
class 观察
class 患者
class 群体
class 企业片段
关注对象 "1" -right- "0..*" 观察
患者 -up-|> 关注对象
群体 -up-|> 关注对象
企业片段 -up-|> 关注对象
患者 -[hidden]right- 群体
群体 -[hidden]right- 企业片段
关注对象 -[hidden]right- 观察
@enduml

原图4.3

EA绘制

图4.3 用维度元素定义企业片段。
使用此模型,每当添加一个维度时都需要添加一个新的子类型。
PlantUML
@startuml
skinparam classAttributeIconSize 0
skinparam shadowing false
skinparam linetype ortho
skinparam nodesep 110
skinparam ranksep 85
top to bottom direction
class 维度元素
class 地理维度元素
class 行业维度元素
class 产品维度元素
class 企业片段
note left of 维度元素
约束:
(父->isEmpty() or 父.oclIsTypeOf(self.oclType()))
and (not 父.closure(父)->includes(self))
end note
维度元素 "父 0..1" -up- "0..*" 维度元素
地理维度元素 -up-|> 维度元素
行业维度元素 -up-|> 维度元素
产品维度元素 -up-|> 维度元素
地理维度元素 "1" -- "0..*" 企业片段
行业维度元素 "1" -- "0..*" 企业片段
产品维度元素 "1" -- "0..*" 企业片段
地理维度元素 -[hidden]right- 行业维度元素
行业维度元素 -[hidden]right- 产品维度元素
行业维度元素 -[hidden]down- 企业片段
@enduml

原图4.4

EA绘制

图4.4 通过使用维度和维度元素来定义企业片段。
这个模型允许我们在不改变模型的情况下添加新维度。它也更加紧凑。
PlantUML
@startuml
skinparam classAttributeIconSize 0
skinparam shadowing false
skinparam linetype ortho
skinparam nodesep 150
skinparam ranksep 80
left to right direction
class 企业片段
class 维度元素
class "维度" as 维度类
企业片段 [维度] "0..*" -right- "1" 维度元素
维度元素 "0..*" -right- "1" 维度类 : {层次结构}
@enduml
