一. 类图语法学习小结(类间关系的表示方法)

1.抽象类和接口

我们用关键字abstractabstract class来定义抽象类(抽象类用斜体显示).也可以使用interface,annotationenum关键字.

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" # {
Object <|-- ArrayList
} package net.sourceforge.plantuml {
Object <|-- Demo1
Demo1 *- Demo2
}
@enduml

3.命名空间

在包中,类的名称是该类的唯一标识符,这意味着在不同的包中不能有两个同名的类.

在这种情况下,应该使用名称空间而不是包。

@startuml
class BaseClass
namespace net.dummy # {
.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
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
} 会员卡"" -- ""会员
图书"" <-left- "n"售卖信息
售卖信息"n" -right-> ""会员卡
售卖信息"n" --> ""工作人员
@enduml

五.类图

UML作业第三次:分析《书店图书销售管理系统》,绘制类图的更多相关文章

  1. UML作业第三次:分析《书店图书销售管理系统,绘制类图

    plantuml类图绘制方法的学习: 1.关于类图的学习: 类图显示了系统的静态结构. 类:类图中的主要元素,用矩形表示.矩形的上层表示类名.中层表示属性.下层表示方法. 类之间的关系:关联.依赖.聚 ...

  2. UML作业第三次:分析《书店图书销售管理系统》

    分析图书销售管理系统 一.概览 PlantUML类图语法学习小结 <书店图书销售管理>的类图元素 绘制类图脚本程序 绘制的类图 二.PlantUML类图语法 1.类之间的关系绘制 示例: ...

  3. 【UML九种图系列】之如何利用三层来绘制类图、时序图?

    UML并发视图:实体之间行为的交互,是动态.分为:时序图.协作图.状态图.活动图 一.时序图简述: 时序图(Sequence Diagram):描述对象之间的交互行为,按照时间顺序排列. 元素: 角色 ...

  4. UML作业第三次

    一.学习小结 类之间的关系通过符号定义 : 使用.. 来代替 -- 可以得到点 线. 例如: @startuml Class01 <|-- Class02 Class03 *-- Class04 ...

  5. UML类图实例分析

    登录模块 某基于C/S的即时聊天系统登录模块功能描述如下: 用户通过登录界面(LoginForm)输入账号和密码,系统将输入的账号和密码与存储在数据库(User)表中的用户信息进行比较,验证用户输入是 ...

  6. UML类图(三)-------实例

    实例分析1——登录模块 某基于C/S的即时聊天系统登录模块功能描述如下: 用户通过登录界面(LoginForm)输入账号和密码,系统将输入的账号和密码与存储在数据库(User)表中的用户信息进行比较, ...

  7. 【UML 建模】UML建模语言入门 -- 静态图详解 类图 对象图 包图 静态图建模实战

    发现个好东西思维导图, 最近开始用MindManager整理博客 . 作者 :万境绝尘  转载请注明出处 : http://blog.csdn.net/shulianghan/article/deta ...

  8. UML建模语言入门 -- 静态图详解 类图 对象图 包图 静态图建模实战

    发现个好东西思维导图, 最近开始用MindManager整理博客 . 作者 :万境绝尘  转载请注明出处 : http://blog.csdn.net/shulianghan/article/deta ...

  9. 转:深入浅出UML类图(具体到代码层次)

    深入浅出UML类图 作者:刘伟 ,发布于:2012-11-23,来源:CSDN   在UML 2.0的13种图形中,类图是使用频率最高的UML图之一.Martin Fowler在其著作<UML ...

随机推荐

  1. android -------- 沉浸式状态栏和沉浸式导航栏(ImmersionBar)

    android 4.4以上沉浸式状态栏和沉浸式导航栏管理,包括状态栏字体颜色,适用于Activity.Fragment.DialogFragment.Dialog,并且适配刘海屏,适配软键盘弹出等问题 ...

  2. ELK快速部署及使用~

    Elastic Stack 开发人员不能登陆线上服务器查看详细日志 各个系统都有日志,日志数据分散难以查找 日志数据量大,查询速度慢,或者数据不够实时 官网地址:https://www.elastic ...

  3. QT:QHash的使用

    QHash<QPointF, QVector<float>> data; 此时会报错说没有声明QPointF的Key类型 需要我们手动实现一个函数 static uint qH ...

  4. mysql <=> null 问题

    SELECT * FROM cms_user WHERE age=NULL; Empty set (0.03 sec) 查询表中记录age值为null mysql> SELECT * FROM  ...

  5. springBoot 随笔(一)

    服务化的世界,越来越多应用拆分为微服务,有些为了业务而拆,也有为了技术而拆,也有什么都不知道就瞎拆的,反正就是要微服务. 以下为一个认识springBoot的简单过程 1/eclipse 新建 mav ...

  6. MySQL查询性能优化(精)

    MySQL查询性能优化 MySQL查询性能的优化涉及多个方面,其中包括库表结构.建立合理的索引.设计合理的查询.库表结构包括如何设计表之间的关联.表字段的数据类型等.这需要依据具体的场景进行设计.如下 ...

  7. SSM框架中如何简便上传文件表单

    此种方式上传文件相对简单,以下均经测试成功,才提供到此. 以下为单个文件上传方式 分析:本次的工作目的是根据一级标题产生对应的二级标题,在每个二级标题下对应一个(file字段)新闻文件,当点击新闻文件 ...

  8. 简述 JVM 垃圾回收算法

    经典垃圾回收 标记-清除(Mark-Sweep) 研发园开了家新餐厅,餐厅老板在考虑如何回收餐盘时首先使用了最简单的方式,那就是服务员在顾客用餐的过程中,不定时的观察餐厅,针对用完餐的顾客记录他们的位 ...

  9. react中的传参方式

    react是一个SPA模式,即组件嵌套租,在一个单页面的应用中组件间的数值传递是必不可少的,主要的传参方式大致有一下几种: 1,在挂载的地方给组件传参 ReactDOM.rander(<a na ...

  10. WEEK1

    #变量 var1: name = input('name:') age = input('age:) job = input('job:) salary = input('salary:) info ...