uml第2次作业
类之间的关系通过下面的符号定义
(1)类之间的关系
@startuml
c1 <|-- c2
c3 *-- c4
c5 o-- c6
c7 .. c8
c9 -- c0
@enduml
(2)关系上的标签注释
@startuml
c1 "1" *-- "many" c2 : contains
c3 o-- c4 : aggregation
c5 --> "1" c6
@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
(4)对于可访问性的定义
@startuml
class Dummy {
-f1
#f2
~m1()
+m2()
}
@enduml
(5)对于抽象方法与静态方法的定义
@startuml
class Dummy {
{static} String id
{abstract} void methods()
}
@enduml
(6)长注释与模板的使用
@startuml
class Object << g >>
Object <|--- A
note top of Object : aaaaaaaaaaa\bbbbbbbbbb
note "ccccccccc" as N1
note "ddddddddddddddddddd" as N2
Object .. N2
N2 .. A
class Foo
note left: eeeeeeeeeeeee
@enduml
(7)关于抽象类与接口
@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
(8)隐藏类
@startuml
class Foo1
class Foo2
Foo2 *-- Foo1
hide Foo2
@enduml
(9)指定标记
@startuml
class System << (S,#666666) Singleton >>
class Date << (D,orchid) >>
@enduml
(10)包
@startuml
package "Classic Collections" #666666 {
Object <|-- ArrayList
}
package net.sourceforge.plantuml {
Object <|-- Demo1
Demo1 *- Demo2
}
@enduml
(11)关系类
@startuml
class Student {
Name
}
Student "0..*" - "1..*" Course
(Student, Course) .. Enrollment
class Enrollment {
drop()
cancel()
}
@enduml
班级学生管理系统中的 —— “学生” 类
@startuml
class 课程 {
-课程号:int
-课程名:string
-主课教师:string
__
+课程信息
+选择课程
}
class 学生{
-学号:int
-姓名:string
-班级:string
-专业:string
__
+登陆
+修改信息
+退出
+已选课程
+课程信息
}
class 宿舍 {
-宿舍号:int
-楼号:int
-所住人员:string
__
+登陆
+修改信息
+退出
}
class 成绩 {
-课程号:int
-课程名:string
-考试成绩:int
__
+课程信息
+查看成绩
}
课程 -right-> 学生
宿舍 -left-> 学生
学生 -down-> 成绩
@enduml