PlantUML+EA描述《分析模式》第6章存货和会计(8)

《GJJ-004 分析模式及实现》,umlchina.com/url/video.html


原图6.25

EA绘制

图6.29 对应账户。

PlantUML

@startuml

skinparam nodesep 120

skinparam ranksep 100

class 账户 {

--

<i>constraints</i>

{传递: 对应账户s = 对应账户s->closure(对应账户s)}

{对称: 对应账户s->forAll(a | a.对应账户s->includes(self))}

}

class 损益表账户

class 资产负债表账户

class 当事者

损益表账户 --|> 账户

资产负债表账户 --|> 账户

账户 "0..*" -- "0..*\n-对应账户s" 账户

账户 "0..*" -- "1\n-分类者" 当事者

资产负债表账户 "0..*" -- "1\n-所有者" 当事者

@enduml

原图6.30

EA绘制

图6.30 特化账户模型以支持存货。

要在特定领域使用会计模型,就应该做这种特化。

PlantUML

@startuml

class 地点

class 账户

class 持仓

class 条目类型

class 分录 {

  • 数额: 数量

}

class 会计事项 {

--

<i>constraints</i>

{分录s->sum(e | e.数额)=0}

}

class 存货分录 {

--

<i>constraints</i>

{条目类型 = 账户.条目类型}

}

class 转移 {

--

<i>constraints</i>

{分录s->forAll(e1, e2 | e1.条目类型 = e2.条目类型)}

}

持仓 --|> 账户

存货分录 --|> 分录

转移 --|> 会计事项

地点 "1" -- "0..*" 持仓

持仓 "0..*" -- "1" 条目类型

账户 "1" -- "0..*" 分录

分录 "2..*\n-分录s" -- "1" 会计事项

存货分录 "0..*" -- "1" 条目类型

@enduml

原图6.31

EA绘制

图6.31 典型的酬金/支出账户结构。

粗边框图标是明细账户,按箭头所示汇总。

PlantUML

@startuml

object "ACM: 汇总账户"

object "Megabank: 汇总账户"

object "ACM酬金: 明细账户"

object "ACM支出: 明细账户"

object "Megabank支出: 明细账户"

object "Megabank酬金: 明细账户"

object "支出: 汇总账户"

object "酬金: 汇总账户"

"ACM酬金: 明细账户" --> "ACM: 汇总账户"

"ACM支出: 明细账户" --> "ACM: 汇总账户"

"Megabank支出: 明细账户" --> "Megabank: 汇总账户"

"Megabank酬金: 明细账户" --> "Megabank: 汇总账户"

"ACM支出: 明细账户" --> "支出: 汇总账户"

"Megabank支出: 明细账户" --> "支出: 汇总账户"

"ACM酬金: 明细账户" --> "酬金: 汇总账户"

"Megabank酬金: 明细账户" --> "酬金: 汇总账户"

@enduml

原图6.32

EA绘制

图6.32 允许多个汇总账户。

这个图用有向无环图替换了图6.5的层级结构。

(译注:和图6.5相比,变化只是汇总账户关联端的多重性从1变为多,此时得到的结果为有向无环图。原图上标注的hierarchy(层级结构)、DAG(有向无环图)严格来说只是从某个视角希望(YiYin)看到的结果,不是用类的属性来描述的约束。)

PlantUML

@startuml

skinparam nodesep 120

skinparam ranksep 100

class 账户

class 汇总账户

class 明细账户

class 分录

class 会计事项

汇总账户 --|> 账户

明细账户 --|> 账户

汇总账户 "0..*" -- "0..*\n-组件s" 账户

账户 "1" --> "0..*<<abstract>>\n-分录s" 分录

明细账户 "1" -- "0..*\n-分录s" 分录

分录 "2..*" -- "1" 会计事项

note bottom of 汇总账户

Invariant

{ not 组件s->closure(c | c.组件s)->includes(self)}

end note

@enduml

相关推荐
小朱爱编程1231 小时前
AI点了两次发布,我多了两篇事故
数据库·人工智能·大模型·软件工程
CoderIsArt6 小时前
软件工程与软件架构的经典书籍与工具软件
软件工程
Dola_Zou1 天前
工商业储能系统核心策略
算法·自动化·软件工程
llilian_162 天前
脉冲时间间隔及计数如何精准测试?
功能测试·嵌入式硬件·51单片机·软件工程
gscsded2 天前
MFC 入门:从空窗口到一个能交互的小程序
mfc·软件工程
嘟哩DuliDuli3 天前
剧本节点输入归一化:文本来源、版本与下游引用
android·人工智能·安全·ai·软件工程
qiyongwork3 天前
泛金融IT 研发管理平台设计
金融·项目管理·软件工程·研发管理
Java爱好狂.4 天前
Java初学者如何一周速通SpringBoot!
java·spring boot·后端·spring·高并发·架构师·java面试
我命由我123454 天前
软件工程概念 - 可插拔性
java·后端·学习·java-ee·系统架构·软件工程·学习方法
信可维4 天前
AI 读 Word 表格总读错?先查合并单元格和表头这 3 处
开发语言·人工智能·c#·word·软件工程