当前位置: 首页 > news >正文

PlantUML描述《分析模式》第3章观察和测量(1)

PlantUML描述《分析模式》第2章“当责”(1)

PlantUML描述《分析模式》第2章“当责”(2)


原图3.1

图片

EA绘制

图片

图3.1 数值属性。

这个做法没有指定单位。

PlantUML

@startuml

class 人 {

  - 身高: 数值

  - 体重: 数值

  - 血糖水平: 数值

}

@enduml

图片

原图3.2

图片

EA绘制

图片

图3.2 使用数量作为属性的测量。

在需要单位的地方应该始终使用数量。

PlantUML

@startuml

left to right direction

class 数量 {

  - 数额: 数值

  - 单位: 单位

  ' 使用全角字符,避免与PlantUML语法冲突

  + +()

  + -()

  + *()

  + /()

  + =()

  + >()

  + <()

}

人 -- 数量

@enduml

图片

原图3.3

图片

EA绘制

图片

图3.3 给单位添加换算比率。

PlantUML

@startuml

left to right direction

skinparam ranksep 100

skinparam nodesep 100

class 单位 {

}

class 换算比率 {

  -数值: 数值

}

单位 "-从1" -- "0..*" 换算比率

单位 "-到1" -- "0..*" 换算比率 

@enduml

图片

原图3.4

图片

EA绘制

图片

图3.4 复合单位

这个模型可用于加速度和类似现象

PlantUML

@startuml

class 单位

class 复合单位

class 原子单位

class 单位引用 {

  -幂: Integer

}

单位 <|-- 原子单位

单位 <|-- 复合单位

复合单位 "1" -- "-单位引用s1..*" 单位引用

原子单位 "1" -- "0..*" 单位引用

note left of 复合单位

  约束:

  单位引用s->size() > 1 or (单位引用s->size() = 1 and 

  (单位引用s->first().幂 < 0 or 单位引用s->first().幂 > 1))

end note

@enduml

图片

原图3.5

图片

EA绘制

图片

图3.5 使用bag的复合单位。

这个模型比图3.4更紧凑。

PlantUML

@startuml

skinparam ranksep 120

skinparam nodesep 160

class 单位

class 原子单位

class 复合单位 {

  .. constraints ..

  逆s->size() >= 1 or 直接s->size() >= 2

}

单位 <|-- 原子单位

单位 <|-- 复合单位

复合单位 "0..* " -- "-直接s\n0..*{bag}" 原子单位 

复合单位 "0..* " -- "-逆s\n0..*{bag}" 原子单位

@enduml

图片

原图3.6

图片

EA绘制

图片

图3.6 引入测量和现象类型

PlantUML

@startuml

skinparam ranksep 80

skinparam nodesep 120

class 现象类型

class 人

class 测量

class 数量

现象类型 "1" -- "0..*" 测量

人 "1" -right- "0..*" 测量

测量 "0..*" -right- "1" 数量

@enduml

图片

原图3.7

图片

EA绘制

图片

图3.7观察和类别观察。

这个模型支持定性测量,例如“A型血”。

PlantUML

@startuml

skinparam ranksep 80

skinparam nodesep 140

class 现象类型

class 人

class 观察

class 类别观察

class 测量

class 类别

class 数量

观察 <|-- 类别观察

观察 <|-- 测量

现象类型 "1" -- "0..*" 观察

人 "1" -- "0..*" 观察

类别观察 "0..*" -- "1" 类别

测量 "0..*" -- "1" 数量

@enduml

图片

http://www.dtcms.com/a/353554.html

相关文章:

  • 基于PCIE的全国产化多通道AD数据采集卡
  • GIT压缩提交,将多个已经push的commit提交,合并成一个
  • C#实战:基于iTextSharp实现PDF加密小工具
  • spring-ai-alibaba使用
  • 工业机器人如何通过ModbusTCP转Profinet实现与西门子PLC通讯?
  • Node.js(4)—— http模块基础
  • 终极指南:批量自动化处理.gz压缩文件内的中文编码乱码问题
  • 使用人工智能写一个websocket聊天页面
  • 《websocketpp使用指北》
  • 媒体发布平台哪家好?软文营销专业服务商测评推荐
  • 教程:计算中国县级耕地 NDVI 均值并导出 CSV(MODIS)
  • MySQL 基础:DDL、DML、DQL、DCL 四大类 SQL 语句全解析
  • Windows系统Docker中Xinference 集群无法启动的解决方法
  • 深度剖析HTTP和HTTPS
  • LIO-SAM的后端
  • 【stm32简单外设篇】-4×4 薄膜键盘
  • 主流技术栈 NestJS、TypeScript、Node.js版本使用统计
  • 打印机共享修复,打印机无法共享,打印机修复工具下载及安装
  • ChatGPT 上线 “学习模式”:全版本开放,重构 AI 教育逻辑
  • 《电商库存系统超卖事故的技术复盘与数据防护体系重构》
  • 设计模式:桥接模式(Bridge Pattern)
  • C# 使用抽象工厂模式实现花园规划系统的设计与实现
  • electron离线开发核心环境变量npm_config_cache
  • python自学笔记14 NumPy 线性代数
  • 嵌入式linux相机(1)
  • Chrome插件开发【storage】
  • 重学JS-005 --- JavaScript算法与数据结构(五)回顾 DOM 操作
  • 实战Kaggle比赛:狗的品种识别(ImageNet Dogs)
  • SpringBoot整合RabbitMQ:从消息队列基础到高可用架构实战指南
  • 视频孪生技术在人工智能领域的应用价值:从虚实融合到智能决策