PlantUML+EA描述《分析模式》第6章存货和会计(8)
《GJJ-004 分析模式及实现》umlchina.com/url/video.html原图6.25EA绘制图6.29 对应账户。PlantUMLstartumlskinparam nodesep 120skinparam ranksep 100class 账户 {--iconstraints/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.30EA绘制图6.30 特化账户模型以支持存货。要在特定领域使用会计模型就应该做这种特化。PlantUMLstartumlclass 地点class 账户class 持仓class 条目类型class 分录 {- 数额: 数量}class 会计事项 {--iconstraints/i{分录s-sum(e | e.数额)0}}class 存货分录 {--iconstraints/i{条目类型 账户.条目类型}}class 转移 {--iconstraints/i{分录s-forAll(e1, e2 | e1.条目类型 e2.条目类型)}}持仓 --| 账户存货分录 --| 分录转移 --| 会计事项地点 1 -- 0..* 持仓持仓 0..* -- 1 条目类型账户 1 -- 0..* 分录分录 2..*\n-分录s -- 1 会计事项存货分录 0..* -- 1 条目类型enduml原图6.31EA绘制图6.31 典型的酬金/支出账户结构。粗边框图标是明细账户按箭头所示汇总。PlantUMLstartumlobject 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.32EA绘制图6.32 允许多个汇总账户。这个图用有向无环图替换了图6.5的层级结构。译注和图6.5相比变化只是汇总账户关联端的多重性从1变为多此时得到的结果为有向无环图。原图上标注的hierarchy层级结构、DAG有向无环图严格来说只是从某个视角希望YiYin看到的结果不是用类的属性来描述的约束。PlantUMLstartumlskinparam nodesep 120skinparam ranksep 100class 账户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 noteenduml