UML作业第三次:分析《书店图书销售管理系统》,绘制类图
一. 类图语法学习小结(类间关系的表示方法)
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" # {
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作业第三次:分析《书店图书销售管理系统》,绘制类图的更多相关文章
- UML作业第三次:分析《书店图书销售管理系统,绘制类图
plantuml类图绘制方法的学习: 1.关于类图的学习: 类图显示了系统的静态结构. 类:类图中的主要元素,用矩形表示.矩形的上层表示类名.中层表示属性.下层表示方法. 类之间的关系:关联.依赖.聚 ...
- UML作业第三次:分析《书店图书销售管理系统》
分析图书销售管理系统 一.概览 PlantUML类图语法学习小结 <书店图书销售管理>的类图元素 绘制类图脚本程序 绘制的类图 二.PlantUML类图语法 1.类之间的关系绘制 示例: ...
- 【UML九种图系列】之如何利用三层来绘制类图、时序图?
UML并发视图:实体之间行为的交互,是动态.分为:时序图.协作图.状态图.活动图 一.时序图简述: 时序图(Sequence Diagram):描述对象之间的交互行为,按照时间顺序排列. 元素: 角色 ...
- UML作业第三次
一.学习小结 类之间的关系通过符号定义 : 使用.. 来代替 -- 可以得到点 线. 例如: @startuml Class01 <|-- Class02 Class03 *-- Class04 ...
- UML类图实例分析
登录模块 某基于C/S的即时聊天系统登录模块功能描述如下: 用户通过登录界面(LoginForm)输入账号和密码,系统将输入的账号和密码与存储在数据库(User)表中的用户信息进行比较,验证用户输入是 ...
- UML类图(三)-------实例
实例分析1——登录模块 某基于C/S的即时聊天系统登录模块功能描述如下: 用户通过登录界面(LoginForm)输入账号和密码,系统将输入的账号和密码与存储在数据库(User)表中的用户信息进行比较, ...
- 【UML 建模】UML建模语言入门 -- 静态图详解 类图 对象图 包图 静态图建模实战
发现个好东西思维导图, 最近开始用MindManager整理博客 . 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/deta ...
- UML建模语言入门 -- 静态图详解 类图 对象图 包图 静态图建模实战
发现个好东西思维导图, 最近开始用MindManager整理博客 . 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/deta ...
- 转:深入浅出UML类图(具体到代码层次)
深入浅出UML类图 作者:刘伟 ,发布于:2012-11-23,来源:CSDN 在UML 2.0的13种图形中,类图是使用频率最高的UML图之一.Martin Fowler在其著作<UML ...
随机推荐
- android -------- 沉浸式状态栏和沉浸式导航栏(ImmersionBar)
android 4.4以上沉浸式状态栏和沉浸式导航栏管理,包括状态栏字体颜色,适用于Activity.Fragment.DialogFragment.Dialog,并且适配刘海屏,适配软键盘弹出等问题 ...
- ELK快速部署及使用~
Elastic Stack 开发人员不能登陆线上服务器查看详细日志 各个系统都有日志,日志数据分散难以查找 日志数据量大,查询速度慢,或者数据不够实时 官网地址:https://www.elastic ...
- QT:QHash的使用
QHash<QPointF, QVector<float>> data; 此时会报错说没有声明QPointF的Key类型 需要我们手动实现一个函数 static uint qH ...
- mysql <=> null 问题
SELECT * FROM cms_user WHERE age=NULL; Empty set (0.03 sec) 查询表中记录age值为null mysql> SELECT * FROM ...
- springBoot 随笔(一)
服务化的世界,越来越多应用拆分为微服务,有些为了业务而拆,也有为了技术而拆,也有什么都不知道就瞎拆的,反正就是要微服务. 以下为一个认识springBoot的简单过程 1/eclipse 新建 mav ...
- MySQL查询性能优化(精)
MySQL查询性能优化 MySQL查询性能的优化涉及多个方面,其中包括库表结构.建立合理的索引.设计合理的查询.库表结构包括如何设计表之间的关联.表字段的数据类型等.这需要依据具体的场景进行设计.如下 ...
- SSM框架中如何简便上传文件表单
此种方式上传文件相对简单,以下均经测试成功,才提供到此. 以下为单个文件上传方式 分析:本次的工作目的是根据一级标题产生对应的二级标题,在每个二级标题下对应一个(file字段)新闻文件,当点击新闻文件 ...
- 简述 JVM 垃圾回收算法
经典垃圾回收 标记-清除(Mark-Sweep) 研发园开了家新餐厅,餐厅老板在考虑如何回收餐盘时首先使用了最简单的方式,那就是服务员在顾客用餐的过程中,不定时的观察餐厅,针对用完餐的顾客记录他们的位 ...
- react中的传参方式
react是一个SPA模式,即组件嵌套租,在一个单页面的应用中组件间的数值传递是必不可少的,主要的传参方式大致有一下几种: 1,在挂载的地方给组件传参 ReactDOM.rander(<a na ...
- WEEK1
#变量 var1: name = input('name:') age = input('age:) job = input('job:) salary = input('salary:) info ...