uml第二次作业
一、PlantUML类图 语法学习小结
1.类之间的关系通过下面的符号定义 :
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。| 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
四、类图示例

