PlantUML类图教程:从基础到高级用法详解
PlantUML类图常规用法详解:从基础到高级实践
一、基础类图绘制
类图是面向对象系统建模的核心工具,PlantUML提供了简洁直观的语法来定义类和它们之间的关系。
1.1 基本类定义
class Animal {
+name: String
+eat()
}
class Dog {
+bark()
}
Animal <|-- Dog
这个例子展示了:
Animal
类包含一个公有字段name
和公有方法eat()
Dog
类继承自Animal
(使用<|--
符号)- 可见性符号:
+
表示公有,-
表示私有,#
表示保护,~
表示包内可见
实践建议:在定义类时,建议先列出字段后方法,保持一致的排序规则(如字母顺序)提高可读性。
二、组织结构管理
随着系统复杂度增加,合理的分组管理变得尤为重要。
2.1 包与命名空间
package "com.example" {
namespace Service {
class OrderService
}
namespace Model {
class Order
}
}
Service::OrderService --> Model::Order
关键点:
package
定义Java包或代码模块namespace
用于逻辑分组,可嵌套使用- 跨命名空间的引用使用
::
分隔符
实践建议:对于大型项目,建议包结构与实际代码的包名保持一致,便于维护和同步。
三、关系表达进阶
类之间的关系是类图的核心价值所在,PlantUML支持丰富的关系表达方式。
3.1 关系标签与多重性
class Customer {
+name: String
}
class Order {
+orderDate: Date
}
Customer "1" --> "0..*" Order : places >
Order "1" --> "1..*" Product : contains <
说明:
places >
和contains <
是关系标签,说明关联语义1
、0..*
等表示多重性(一个客户对应0到多个订单)- 箭头方向表示导航性
实践建议:为重要关联添加明确的标签和多重性说明,避免二义性。
四、样式定制技巧
良好的可视化效果能显著提升图表可读性。
4.1 颜色与样式调整
class Controller #FFAAAA {
+handleRequest()
}
class Service #LightBlue {
+process()
}
class Repository #LightGreen {
+save()
}
Controller -> Service
Service -> Repository
可用样式选项:
- 预定义颜色:
LightBlue
,Pink
,Gold
等 - RGB值:
#RRGGBB
格式 - 隐藏元素:
hide empty members
或show static fields
实践建议:使用颜色区分不同层次的组件(如Controller-Service-Repository),但避免过度使用。
五、高级建模特性
5.1 嵌套类与关联类
class Outer {
class Inner {
+doSomething()
}
}
class Order {
+id: Long
}
class Product {
+sku: String
}
class OrderItem {
+quantity: int
}
Order -- OrderItem
Product -- OrderItem
特殊结构:
- 嵌套类直接在外部类中定义
- 关联类(如
OrderItem
)解决多对多关系的属性问题
实践建议:谨慎使用嵌套类,只有当内部类确实没有独立存在意义时才使用。
六、实用技巧与最佳实践
- 布局优化:添加
left to right direction
使布局从左到右排列 注释添加:
note top of Order : "订单状态必须遵循\n生命周期规则" Order .. note
- 模板复用:使用
!include
指令复用通用定义 - 生成与同步:通过构建工具(如Maven/Gradle插件)实现代码与类图同步
left to right direction
interface Repository<T> {
+save(entity: T): void
+findById(id: Long): T
}
class UserRepository {
+findByEmail(email: String): User
}
Repository <|.. UserRepository
通过掌握这些常规用法,您已经能够使用PlantUML创建专业级的类图。建议从简单图表开始,逐步应用更高级的特性,最终形成完整的系统模型视图。
评论已关闭