UML作业第二次:类图中类的表示
一、PlantUML类图 语法学习小结
1.类之间的关系通过下面的符号定义 :
Type | Symbol | Drawing |
Extension | <|-- | |
Composition | *-- | |
Aggregation | o-- |
@startuml Class01 <|-- Class02 Class03 *-- Class04 Class05 o-- Class06 Class07 .. Class08 Class09 -- Class10 @enduml
@startuml Class11 <|.. Class12 Class13 --> Class14 Class15 ..> Class16 Class17 ..|> Class18 Class19 <--* Class20 @enduml
@startuml Class21 #-- Class22 Class23 x-- Class24 Class25 }-- Class26 Class27 +-- Class28 Class29 ^-- Class30 @enduml
2.关系上的标识 :
在关系之间使用标签来说明时, 使用 :
后接 标签文字。对元素的说明,你可以在每一边使用 ""
来说明.
@startuml Class01 "1" *-- "many" Class02 : contains Class03 o-- Class04 : aggregation Class05 --> "1" Class06 @enduml
在标签的开始或结束位置添加<
或 >
以表明是哪个对象作用到哪个对象上。
@startuml class Car Driver - Car : drives > Car *- Wheel : have 4 > Car -- Person : < owns @enduml
3.添加方法 :
为了声明域或者方法,你可以使用 后接域名或方法名。
系统检查是否有括号来判断是方法还是域。
@startuml Object <|-- ArrayList Object : equals() ArrayList : Object[] elementData ArrayList : size() @enduml
也可以使用{}
把域或者方法括起来
@startuml class Dummy { String data void methods() } class Flight { flightNumber : Integer departureTime : Date } @enduml
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
4.抽象与静态 :
通过修饰符{static}
或者{abstract}
,可以定义静态或者抽象的方法或者属性。
这些修饰符可以写在行的开始或者结束。也可以使用{classifier}
这个修饰符来代替{static}
.
@startuml class Dummy { {static} String id {abstract} void methods() } @enduml
5.备注和模板 :
模板通过类关键字("<<"和">>")来定义
你可以使用note left of
, note right of
, note top of
, note bottom of
这些关键字来添加备注。
你还可以在类的声明末尾使用note left
, note right
,note top
, note 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
6.抽象类和接口 :
用关键字abstract
或abstract class
来定义抽象类。抽象类用斜体显示。 也可以使用interface
, annotation
和 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
7.隐藏类 :
你也可以使用 show/hide
命令来隐藏类
如果你定义了一个大的!included 文件,且想在文件包含之后隐藏部分类,该功能会很有帮助。
@startuml class Foo1 class Foo2 Foo2 *-- Foo1 hide Foo2 @enduml
8.泛型 :
你可以用 <
和 >
来定义类的泛型。
@startuml class Foo<? extends Element> { int size() } Foo *- Element @enduml
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
二、以“学生”类为例,分析属性和方法
属性: 学生本人信息(班级,学号,姓名,性别,职务,联系方式)
学生课程信息(课程号,课程名,教室,教师)
学生成绩信息(学号,姓名,成绩)
三、plant uml 脚本程序
@startuml
class 学生个人信息 {
-班级:string
-学号:varchar
-姓名:string
-性别:string
-职务:string
-联系方式:varchar
__
+登录
+修改个人信息
+退出登录
}
class 学生课程信息{
-课程号:varchar
-课程名:string
-教室:string
-教师:string
__
+登陆
+选课
+退出
+查看课程
+课程成绩
}
class 学生成绩 {
-学号:varchar
-姓名:string
-成绩:varchar
__
+登陆
+查看成绩
+退出
}
学生课程信息 --> 学生个人信息
学生成绩-left-> 学生个人信息
@enduml
四、类图示例