一、PlantUML类图 语法学习小结

1.类之间的关系通过下面的符号定义 :

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
Type Symbol Drawing
Extension <|-- uml第二次作业 随笔 第1张
Composition *-- uml第二次作业 随笔 第2张
Aggregation o-- uml第二次作业 随笔 第3张

 

 

   
@startuml
Class01 <|-- Class02
Class03 *-- Class04
Class05 o-- Class06
Class07 .. Class08
Class09 -- Class10
@enduml
uml第二次作业 随笔 第4张
@startuml
Class11 <|.. Class12
Class13 --> Class14
Class15 ..> Class16
Class17 ..|> Class18
Class19 <--* Class20
@enduml
uml第二次作业 随笔 第5张
@startuml
Class21 #-- Class22
Class23 x-- Class24
Class25 }-- Class26
Class27 +-- Class28
Class29 ^-- Class30
@enduml
uml第二次作业 随笔 第6张  

2.关系上的标识 :

在关系之间使用标签来说明时, 使用 :后接 标签文字。对元素的说明,你可以在每一边使用 "" 来说明.

@startuml
Class01 "1" *-- "many" Class02 : contains
Class03 o-- Class04 : aggregation
Class05 --> "1" Class06
@enduml
uml第二次作业 随笔 第7张

在标签的开始或结束位置添加< 或 >以表明是哪个对象作用到哪个对象上。

@startuml
class Car

Driver - Car : drives >
Car *- Wheel : have 4 >
Car -- Person : < owns

@enduml
uml第二次作业 随笔 第8张

3.添加方法 :

为了声明域或者方法,你可以使用 后接域名或方法名。

系统检查是否有括号来判断是方法还是域。

@startuml
Object <|-- ArrayList

Object : equals()
ArrayList : Object[] elementData
ArrayList : size()

@enduml
uml第二次作业 随笔 第9张

也可以使用{} 把域或者方法括起来

@startuml
class Dummy {
  String data
  void methods()
}

class Flight {
   flightNumber : Integer
   departureTime : Date
}
@enduml
uml第二次作业 随笔 第10张

You can use {field} and {method} modifiers to override default behaviour of the parser about fields and methods.

@startuml
class Dummy {
  {field} A field (despite parentheses)
  {method} Some method
}

@enduml
uml第二次作业 随笔 第11张

4.抽象与静态 :

通过修饰符{static}或者{abstract},可以定义静态或者抽象的方法或者属性。

这些修饰符可以写在行的开始或者结束。也可以使用{classifier}这个修饰符来代替{static}.

@startuml
class Dummy {
  {static} String id
  {abstract} void methods()
}
@enduml
uml第二次作业 随笔 第12张

5.备注和模板 :

模板通过类关键字("<<"和">>")来定义

你可以使用note left of , note right of , note top of , note bottom of这些关键字来添加备注。

你还可以在类的声明末尾使用note leftnote right,note topnote bottom来添加备注。

此外,单独用note这个关键字也是可以的,使用 .. 符号可以作出一条连接它与其它对象的虚线。

更多注释可以在注释中使用部分html标签。

@startuml
class Object << general >>
Object <|--- ArrayList

note top of Object : In java, every class\nextends this one.

note "This is a floating note" as N1
note "This note is connected\nto several objects." as N2
Object .. N2
N2 .. ArrayList

class Foo
note left: On last defined class

@enduml
uml第二次作业 随笔 第13张

6.抽象类和接口 :

用关键字abstractabstract class来定义抽象类。抽象类用斜体显示。 也可以使用interfaceannotation 和 enum关键字。

@startuml

abstract class AbstractList
abstract AbstractCollection
interface List
interface Collection

List <|-- AbstractList
Collection <|-- AbstractCollection

Collection <|- List
AbstractCollection <|- AbstractList
AbstractList <|-- ArrayList

class ArrayList {
  Object[] elementData
  size()
}

enum TimeUnit {
  DAYS
  HOURS
  MINUTES
}

annotation SuppressWarnings

@enduml
uml第二次作业 随笔 第14张

7.隐藏类 :

你也可以使用 show/hide 命令来隐藏类

如果你定义了一个大的!included 文件,且想在文件包含之后隐藏部分类,该功能会很有帮助。

@startuml
class Foo1
class Foo2
Foo2 *-- Foo1
hide Foo2
@enduml
uml第二次作业 随笔 第15张

8.泛型 :

你可以用 < 和 > 来定义类的泛型。

@startuml
class Foo<? extends Element> {
  int size()
}
Foo *- Element
@enduml
uml第二次作业 随笔 第16张

It is possible to disable this drawing using skinparam genericDisplay old command.

9.指定标记 :

通常标记字符 (C, I, E or A) 用于标记 类, 接口, 枚举和 抽象类.

但是当你想定义原型时,可以增加对应的单个字符及颜色,来定义自己的标记,就像下面一样:

@startuml
class System << (S,#FF7700) Singleton >>
class Date << (D,orchid) >>
@enduml
uml第二次作业 随笔 第17张

、以“学生”类为例,分析属性和方法

属性:    学生本人信息(班级,学号,姓名,性别,职务,联系方式)

    学生课程信息(课程号,课程名,教室,教师)

    学生成绩信息(学号,姓名,成绩)

三、plant uml 脚本程序

@startuml
class 学生个人信息 {
-班级:string
-学号:varchar
  -姓名:string
  -性别:string
  -职务:string
-联系方式:varchar
  __
  +登录
  +修改个人信息
  +退出登录
}
class 学生课程信息{
-课程号:varchar
  -课程名:string
  -教室:string
  -教师:string
  __
  +登陆
  +选课
  +退出
  +查看课程
  +课程成绩
}
class 学生成绩 {
  -学号:varchar
  -姓名:string
  -成绩:varchar
  __
  +登陆
  +查看成绩
  +退出
}
学生课程信息 --> 学生个人信息
学生成绩-left-> 学生个人信息
@enduml 
四、类图示例
uml第二次作业 随笔 第18张

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄