一. 类图语法学习小结(类间关系的表示方法)
1.抽象类和接口
我们用关键字abstract
或abstract class
来定义抽象类(抽象类用斜体显示).也可以使用interface
,annotation
和enum
关键字.
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
2.包
我们可以使用 package
声明包(包可以被定义为嵌套).
@startuml package "Classic Collections" #777777 { Object <|-- ArrayList } package net.sourceforge.plantuml { Object <|-- Demo1 Demo1 *- Demo2 } @enduml
3.命名空间
在包中,类的名称是该类的唯一标识符,这意味着在不同的包中不能有两个同名的类.
在这种情况下,应该使用名称空间而不是包。
@startuml class BaseClass namespace net.dummy #777777 { .BaseClass <|-- Person Meeting o-- Person .BaseClass <|- Meeting } namespace net.foo { net.dummy.Person <|- Person .BaseClass <|-- Person net.dummy.Meeting o-- Person } BaseClass <|-- net.unused.Person @enduml
4.关系类
我们可以在定义了两个类之间的关系后定义一个 关系类 association class.
@startuml class Student { Name } Student "0..*" - "1..*" Course (Student, Course) .. Enrollment class Enrollment { drop() cancel() } @enduml
5.帮助布局
有时,帮助布局并不完美.我们可以使用together关键字将一些类组合在一起:布局引擎将尝试将它们组合在一起(就像它们在同一个包中).
@startuml class Bar1 class Bar2 together { class Together1 class Together2 class Together3 } Together1 - Together2 Together2 - Together3 Together2 -[hidden]--> Bar1 Bar1 -[hidden]> Bar2 @enduml
二. 书店图书管理系统
类:
图书|会员|会员卡|工作人员|售卖信息
类的属性:
图书:
图书编号:string
ISDN号:string
书名:string
作者:string
出版社:string
定价:float
出版日期:date
会员:
会员编号:string
姓名:string
性别:string
出生日期:date
职业:string
电话:string
地址:string
邮编:int
邮箱:string
会员卡:
会员编号:string
办证日期:date
会员积分:string
会员等级:string
补办日期:date
工作人员:
工作人员编号:string
姓名:string
性别:string
出生日期:date
岗位:string
学历:string
职称:string
售卖信息:
图书编号:string
出售日期:date
书名:string
会员编号:string
工作人员编号:string
三. 上述类之间关系
会员(1)--(1)会员卡
会员卡
|
工作人员 -- 出售 -- 售卖信息
|
图书
图书(1)<--(n)售卖信息(n)-->(1)会员卡
(n)
|
\/
(1)
工作人员
四. 类图脚本程序
@startuml skinparam class { BackgroundColor F0F0F0 ArrowColor 919191 BorderColor B5B5B5 } skinparam stereotypeCBackgroundColor CDC5BF package "图书信息" #D6D6D6{ class 图书{ - 图书编号:string - ISDN号:string - 书名:string - 作者:string - 出版社:string - 定价:float - 出版日期:date } class 售卖信息{ - 图书编号:string - 出售日期:date - 书名:string - 会员编号:string - 工作人员编号:string } } package "会员信息" <<Frame>> #D6D6D6{ class 会员{ - 会员编号:string - 姓名:string - 性别:string - 出生日期:date - 职业:string - 电话:string - 地址:string - 邮编:int - 邮箱:string } class 会员卡{ - 会员编号:string - 办证日期:date - 会员积分:string - 会员等级:string - 补办日期:date } } class 工作人员{ - 工作人员编号:string - 姓名:string - 性别:string - 出生日期:date - 岗位:string - 学历:string - 职称:string } 会员卡"1" -- "1"会员 图书"1" <-left- "n"售卖信息 售卖信息"n" -right-> "1"会员卡 售卖信息"n" --> "1"工作人员 @enduml
五.类图