UML作业第二次:类图中类的表示

一.PlantUML类图

1.关于类图

(1)通过类图可以在软件空间中建立问题空间抽象的结构映像,类图也是功能用例设计建模的核心和数据库结构建模的基础。

2.类图的内容

(1)对象与实例

(2)类元(类、接口、用例、参与者、关联)与类

(3)关联关系(组成关系、泛化关系、依赖关系)

3.语法小结及实例

(1)类之间的关系

表达类之间的关系有数种不同方法,如<|--、*--、..等,不同的表达方式将呈现出不同的效果。

例:

扫描二维码关注公众号,回复: 5685648 查看本文章
@startuml
c1 <|-- c2
c3 *-- c4
c5 o-- c6
c7 .. c8
c9 -- c0
@enduml

我们可通过在箭头内部使用关键字, 例如left, right, up 或者 down,来改变箭头方向。

(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)对于抽象方法与静态方法的定义

我们通过修饰符{static}或者{abstract}来定义静态和抽象的方法或属性。

例:

@startuml
class Dummy {
  {static} String id
  {abstract} void methods()
}
@enduml

(6)长注释与模板的使用

模板通过类关键字("<<"和">>")来定义。我们使用note left of , note right of , note top of , note bottom of这些关键字来添加备注。

同样的,也可以在类的声明末尾使用note left, note right,note top, note bottom来添加备注。

此外,如果想要单独用note也可以,.. 符号可以作出一条连接它与其它对象的虚线。

例:

@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

同样的,我们可以在类图的语法中使用一些HTML的标签。

(7)关于抽象类与接口

我们使用关键字abstractabstract class来定义抽象类,抽象类将会使用斜体显示。此外,interface, annotationenum等关键字同样有效。

例:

@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)隐藏类

我们可以使用 show/hide 命令来隐藏类。

@startuml
class Foo1
class Foo2

Foo2 *-- Foo1

hide Foo2
@enduml

(9)指定标记

系统已经内置了标记字符 (C, I, E or A) 用于标记类(classes),接口(interface),枚举(enum)和抽象类(abstract classes)。

但是如果想定义原型,可以增加对应的单个字符及颜色,来定义自己的标记。

例:

@startuml
class System << (S,#666666) Singleton >>
class Date << (D,orchid) >>
@enduml

(10)包

我们使用关键词 package 声明包,同时可选的来声明对应的背景色(HTML色彩代码或名称)。

例:

@startuml
package "Classic Collections" #666666 {
  Object <|-- ArrayList
}

package net.sourceforge.plantuml {
  Object <|-- Demo1
  Demo1 *- Demo2
}
@enduml

我们使用关键字skinparam packageStyle设置默认的包的样式,或者对包使用对应的模板。

(11)关系类

我们可以在定义了两个类之间的关系后定义一个关系类:association class。

例:

@startuml
class Student {
  Name
}
Student "0..*" - "1..*" Course
(Student, Course) .. Enrollment

class Enrollment {
  drop()
  cancel()
}
@enduml

二.班级学生管理系统——“学生”类

1.属性

基本信息:

学号:varcher

姓名:string

个人信息:

性别:string

年龄:int

专业:string

班级:string

出生日期:date

班级职务:string

私人信息:

籍贯:string

政治面貌:string

身份证号:string

手机号码:string

宿舍信息:

宿舍号:string

成绩信息:

成绩:string

平均绩点:string

成绩-课程通用信息:

课程号:string

课程名:string

课程信息:

任课教师:string

2.方法

学生基本信息

学生课程信息

学生住宿信息

学生成绩信息

学生个人信息

PlantUML的类图脚本程序

@startuml
class 学生基本信息{
 学号:varchar
 姓名:string
 性别:string
 年龄:int
 专业:string
 班级:string
 班级职务:string
__
+添加信息()
+修改信息()
+删除信息()
+课程信息()
+成绩查询()
+住宿查询()
+私人信息查询()
+保存()
}

class 学生课程信息{
 学号:varchar
 姓名:string
 课程号:string
 课程名:string
 任课教师:string
__
+添加课程()
+修改课程()
+删除选课()
+成绩查询()
+保存()
+返回()
}

class 学生住宿信息{
 学号:varchar
 姓名:string
 宿舍号:string
__
+添加信息()
+更换寝室()
+离校退住()
+保存()
+返回()
}

class 学生成绩信息{
 学号:varchar
 姓名:string
 成绩:string
 课程号:string
 课程名:string
 平均绩点:string
__
+成绩核对()
+错误审核()
+课程信息()
+返回()
}

class 学生个人信息{
 学号:varchar
 姓名:string
 出生日期:date
 籍贯:string
 政治面貌:string
 身份证号:string
 手机号码:string
__
+添加信息()
+修改信息()
+删除信息()
+保存()
+返回()
}

学生基本信息"1"<--right-->"1"学生课程信息
学生基本信息"1"<--left-->"1"学生住宿信息
学生基本信息"1"<-->"1"学生成绩信息
学生基本信息"1"<-->"1"学生个人信息
学生课程信息"1"<-->"1"学生成绩信息
@enduml

类图

猜你喜欢

转载自www.cnblogs.com/carala/p/10612054.html
今日推荐