类一览
plantuml
@startuml
abstract "抽象"
abstract class "抽象类"
annotation "注解"
circle circle
() circle_short_form
class "类"
diamond diamond
<> diamond_short_form
entity entity
enum 枚举
interface interface
protocol protocol
struct struct
@enduml
@startuml
abstract "抽象"
abstract class "抽象类"
annotation "注解"
circle circle
() circle_short_form
class "类"
diamond diamond
<> diamond_short_form
entity entity
enum 枚举
interface interface
protocol protocol
struct struct
@enduml
类之间的关系
泛化关系<|--
组合关系*--
聚合关系o--
- 箭头方向任意
- 可以用
..
来代替--
,会显示为虚线。 - 可以用
:
来添加箭头说明
泛化关系 - IBM 文档
泛化关系: 在 UML 建模中,如果一个模型元素(子代)基于另一个模型元素(父代),那么这两个元素之间就存在泛化关系。
在类图、组件图、部署图和用例图中,泛化关系用来指示子代将接收父代中定义的所有属性、操作和关系。
plantuml
Super <|-- Child
interface XxxInterface
class XxxInterfaceImpl
XxxInterface <|-- XxxInterfaceImpl:继承
身体 *-- 四肢:组合
身体 *-- 头:组合
家庭 o-- 儿子: 聚合
家庭 o-- 父亲: 聚合
家庭 o-- 母亲: 聚合
Super <|-- Child
interface XxxInterface
class XxxInterfaceImpl
XxxInterface <|-- XxxInterfaceImpl:继承
身体 *-- 四肢:组合
身体 *-- 头:组合
家庭 o-- 儿子: 聚合
家庭 o-- 父亲: 聚合
家庭 o-- 母亲: 聚合
添加方法
写法举例:
class Family
Family : int age
Family : int size()
Family : boolean contains()
class Family
Family : int age
Family : int size()
Family : boolean contains()
编译器会自动根据有无括号来区分是属性还是方法。效果如下:
plantuml
class Family
Family : int age
Family : int size()
Family : boolean contains()
class Family
Family : int age
Family : int size()
Family : boolean contains()
- 可以使用花括号来简化写法
- 可以使用
{field}
和{method}
修饰符来覆盖编译器对属性和方法的默认识别 - 可以区分访问权限
-
私有的#
受保护的-
包内可见+
公有
- 通过修饰符
{static}
或者{abstract}
,可以定义静态或者抽象的方法或者属性 - 可使用
--
等符号进行顺序重排
plantuml
class Family {
int age
int size()
boolean contains()
{method} Some method...
- int private私有方法()
# int protected受保护的()
~ int 包内可见()
+ int public公有方法()
{field} A field (despite parentheses)
- int private私有属性
# int protected受保护私有属性
~ int 包内可见属性
+ int public属性
{static} String static属性
{abstract} void abstract抽象Methods()
}
class Family {
int age
int size()
boolean contains()
{method} Some method...
- int private私有方法()
# int protected受保护的()
~ int 包内可见()
+ int public公有方法()
{field} A field (despite parentheses)
- int private私有属性
# int protected受保护私有属性
~ int 包内可见属性
+ int public属性
{static} String static属性
{abstract} void abstract抽象Methods()
}