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

相关推荐
嘟哩DuliDuli1 天前
AI 短剧生成为什么要有角色库、场景库和镜头卡
android·人工智能·安全·ai·软件工程
老郑聊AI业财智造1 天前
Qwen技术架构与源码深度剖析
人工智能·语言模型·架构·系统架构·软件工程
老郑聊AI业财智造2 天前
DeepSeek技术架构与源码分析
人工智能·语言模型·架构·系统架构·软件工程
梁辰兴2 天前
软件工程:面向对象分析的基本任务与分析过程
软件工程·分析工具·面向对象分析·分析方法·梁辰兴·基本任务·分析过程
@insist1232 天前
系统集成项目管理工程师-启动过程组概述与制定项目章程
软件工程·软考·系统集成项目管理工程师·软考中项·软件水平考试
梁辰兴2 天前
软件工程:面向对象技术
软件工程·设计原则·面向对象技术·基本概念·梁辰兴·三大特征·开发方法
东莞市永盛电气2 天前
美加墨电压转换,440V变380V变压器基础原理与应用场景
uml
千维百策6663 天前
AI 软件开发中的人与智能体:软件工程循环、人在环路中与框架工程
大数据·人工智能·软件工程
老郑聊AI业财智造3 天前
TOGAF、DDD与微服务:软件架构的多维透视
spring boot·spring cloud·微服务·金融·架构·软件工程·制造
m0_547486664 天前
《软件工程与实践》 全套PPT课件2026
软件工程