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

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. OO-第一单元总结

    经过了前三次作业和两次实验的引导,我的编程思路在逐步从面向过程转向面向对象.也对面向对象有了初步的理解.虽然第一次实验由于自己没有及时完成导致没有提交过有些遗憾,但是第二次实验还是提交了几次的(虽然由 ...

  2. jquery tab切换

    首先引入jquery.js <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...

  3. SmartGit 常见错误提示代码

    1.Failed to connect to newgit.op.ksyun.com port 80: Timed out. Could not update branch states (green ...

  4. php获取id

    private static function getClientIp() { if (getenv('HTTP_X_FORWARDED_FOR')) { $tmp = explode(',', ge ...

  5. rsyslog及loganalyzer

    日志:历史日志 历史事件: 时间记录,事件的关键性程度,loglevel 系统日志服务: syslogd,守护进程 syslogd:system klogd:kernel   rsyslog: sys ...

  6. Could not autowire. No beans of 'xxxx' type found的错误

    在Idea的spring工程里,经常会遇到Could not autowire. No beans of 'xxxx' type found的错误提示.但程序的编译和运行都是没有问题的,这个错误提示并 ...

  7. Firebug: 已拦截跨源请求:同源策略禁止读取位于XXX的远程资源。(原因:CORS 头缺少 'Access-Control-Allow-

    第一种,就是在被请求的程序中添加HTTP头,即CORS跨域(跨域资源共享,Cross-Origin Resource Sharing) 如: Response.Headers.Add("Ac ...

  8. web前端学习python之第一章_基础语法(一)

    web前端学习python之第一章_基础语法(一) 前言:最近新做了一个管理系统,前端已经基本完成, 但是后端人手不足没人给我写接口,自力更生丰衣足食, 所以决定自学python自己给自己写接口哈哈哈 ...

  9. Win10系列:C#应用控件进阶10

    EllipseGeometry EllipseGeometry控件可以用于绘制椭圆,通过定义EllipseGeometry控件的Center属性确定椭圆的圆心坐标,使用此控件的RadiusX 和Rad ...

  10. node遍历文件夹并读取文件内容

    var fs = require('fs'); var path = require('path');//解析需要遍历的文件夹 var filePath = path.resolve('./dist' ...