UML类图绘制实例-桑皮sangpi

UML类图绘制实例
下面将使用如属官的借阅管理系统做一个图书馆管理系统的UML类图。
最终的绘制结果大致如下:

前期建模
对于图书馆的借阅系统的建模,首先我们把所有需要定义的基础类定义出来,再把我们的网页游戏插入进去。分别是Book(书籍)、Library(图书馆)、Patron(顾客)、Librarian(图书管理员)四个基础的对象。

我们尝试将四个基础类进行关系连接,最后的到的关系图如下(注,就算没有图书,图书馆也不会消失,因此使用空心的关联关系:

业务扩展
增加用户账号管理
由于客户借还书籍过程中,图书馆里系统的后台会希望能够查看该顾客的曾借用书籍,已借阅待还书籍,以及当前客户是否有权限进行新书的借阅。

因此我们需要在图书馆管理系统中,引入Account(账户系统)作为代理,用于方便关联借阅的顾客和馆中的书籍。

该UML中,图书馆持有多个账号,这个不难理解;每个账号代理以前每一个借书者去依赖书,也不难理解;账号有指向Partron的关联关系我们也不难理解,毕竟账户作为代理方,肯定需要有被代理的人的信息;但是可能存在的困惑点在于Account和Patron之间的聚合关系,这里我理解是因为在本项目设计中,账号被设计成了可以回收利用的号码,因此如果该账号闲置的时候,是可以不关联任何用户的,直到账号被下一次利用重新分发给新人。

增加书籍借阅信息
管理好了借书的人,我们的图书馆管理系统还需要增加书籍管理系统,用来标记每本书籍自身的状态,比如该书籍的条码、RFID中的信息、是否允许借出图书馆、图书的类别、图书的借出时间、图书的借阅周期(时长)、图书的应归还时期等等信息。这些都是图书馆自身作图书管理所需要信息而非书籍本身的信息。

因此我们需要在原始图书的基础之上扩展一个图书馆的书目实体Book Item,里面除了书籍自身的信息之外,还包含了该书管理过程中的信息。

更新之后的UML如下:

增加检索和管理功能
随着图书馆书籍越来越多,图书馆管理员需要对这些书籍进行分类有序放置、对特定的书目进行查找,顾客需要根据条件检索自己需要的书目。因此我们需要继续扩展我们的Book Item类,给其更多的信息便于分类:比如定义其书籍语言、书籍名称、总页数、书目类别等等信息。

此外我们扩展了原始书籍的作者信息,虽然作者通常是在书籍分类时才会使用,但是其本身作为书籍的通识信息,因此在类设计时,将其关联Book而非Book Item。

同时我们需要对图书馆内所有的图书都进行完整的归档管理,所以需要新增一个Catalog类来统一管理。

这里,因为我们现在已经完成了Book Item的属性扩展,同时建立了Catalog用于专门的图书管理机制,Catalog本身虽然不受是否有书的影响,但是图书馆的管理和检索的规则,是一定建立在我们的Catalog之上的,因此这里使用组合关系。

由于赋予了顾客检索的功能,也赋予了图书馆管理员检索和管理图书的功能。这里我们不难发现两种不同的角色都有一个重复的操作——查找search。同时因为这个Search其实仅仅只和图书馆的目录Catalog相关,无论谁来这个图书馆,他们其实只关心能不能找到自己需要的书,至于怎么从Catalog中找到这本书,以及Catalog是怎么维护所有数目的,对于查找的人来说其实并不需要关心。

因此外部的调用方(比如Patron、Librarian)其实只需要调用这个系统提供的API(也即接口)即可,这个API是一个大家对齐过的统一的规范,比如search就是查找本座图书馆有没有某本书,manage就是管理这本书。外部只需要直到调用这个api可以达到这个目的,而至于怎么达到这个目的则由图书馆的Catalog自行决定和具体实现。

7 声望
1 粉丝
0 条评论
推荐阅读
网页游戏介绍
WebGame(网页游戏)[1]又称无端网游,中文也简称页游,是基于Web浏览器的网络在线多人互动游戏,无需下载客户端,打开网页只用浏览器就能玩的网络游戏。尤其适合上班一族,只要几分钟的设定,游戏内的自动成长功...

怪人叙谎言阅读 1.2k

Flutter三棵树系列之详解各种Key | 京东云技术团队
key是widget、element和semanticsNode的唯一标识,同一个parent下的所有element的key不能重复,但是在特定条件下可以在不同parent下使用相同的key,比如page1和page2都可以使用ValueKey(1) 。

京东云开发者阅读 721

封面图
支持低代码的UML画图工具,程序员的福音,千万不要错过哦!
简介对于软件开发而言,统一建模语言UML为软件开发的全生命周期过程提供模型化和可视化支持,因此对于软件开发而已这是非常重要的。UML工具很多是商用的,价格不菲;而免费的UML建模工具,功能完善的很少。作为PD...

PDDON阅读 531

封面图
UML 类图
UML 类图类图是面向对象编程的核心建模工具。它描述了对象的类型,以及它们之间存在的各种静态关系。类图的结构类图由三个区域组成:名称:类/接口的名称;当类是接口时,需要在名称的上一行添加<<interfac...

尽吾志者阅读 490

有没有一种支持对象建模、数据库建模和低代码能力的工具,用来解放程序员生产力呢?
作为一个程序员,很多时候在面对项目开发工期短、任务重、功能复杂、压力大,同时还得迎合领导或者甲方的要求提供研发设计文档时,往往很苦恼,因为随着软件项目的迭代,很难保持输出与代码一致的数据模型和架构...

PDDON阅读 468

封面图
软件设计之UML用例图大白话教程
对一个复杂问题或者现象的分析,好的方式方法往往能带来事半功倍的效果。比如在软件开发领域,参与的人员角色各种各样,比如软件开发工程师、产品经理、客户、运营人员、老板、用户、B端客户等等,而我们开发软件...

PDDON阅读 219

封面图
会流程图却不会UML活动图?活动图深度剖析,就怕你学不会!
也许很多人都不怎么了解活动图,但是却对流程图很熟悉,你暂且可以简单的把活动图理解为UML里的流程图,用来描述系统的行为特征。不过UML活动图对比于流程图来说也存在不少差异,本文将在第三章节讲解活动图与流...

PDDON阅读 62

封面图
7 声望
1 粉丝
宣传栏