301
社区成员
发帖
与我相关
我的任务
分享统一建模语言(Unified Modeling Language,简称UML)是一种标准化的建模语言,用于规范化描述软件系统的结构和行为。它提供了一套图形化的符号和规则,用于描述系统的各种元素及其相互关系,常用于软件开发的需求分析、设计和文档编制阶段。本单元的主要任务其实是用UML来进行设计,然后根据设计用Java做具体的实现
本单元用到了三种UML图标
本单元使用StarUML进行建模(不好用,浪费提交次数)

本单元的架构主要分为以下几个部分
这部分其实没什么太多的好说的,最好用的是实现了一个统一的BookSelf类来管理不同的书,并且做了统一的接口,这个类被用于每一个需要用数据结构来管理书籍的部分,非常方便
单纯是因为先写没有考虑到官方包输入输出接口做的类,由于要适配官方包,里面有大量在官方枚举和自己枚举的转换代码
public Book(LibraryBookId.Type type, String bookId) {
switch (type) {
case A:
this.type = BookType.A;
break;
case B:
this.type = BookType.B;
break;
case C:
this.type = BookType.C;
break;
case AU:
this.type = BookType.AU;
break;
case BU:
this.type = BookType.BU;
break;
case CU:
this.type = BookType.CU;
break;
default:
this.type = null;
}
this.bookId = bookId;
this.uuid = UUID.randomUUID();
this.donateUser = null;
}
此外,每本书的唯一标识被设定为一个字符串BookType+BookId,这个唯一标识被称为BSBN(BUAA Standard Book Number),提供了很多相互转换的静态函数
public static String bsbn2BookId(String bsbn) {
BookType type = bsbn2BookType(bsbn);
switch (Objects.requireNonNull(type)) {
case A:
case B:
case C:
return bsbn.substring(1);
case AU:
case BU:
case CU:
return bsbn.substring(2);
default:
}
return null;
}
对用户信息做了比较简单的管理,这部分其实应该跟Reservation联系起来,把跟每个用户相关的预约信息存储到用户节点里面去的(但是一开始脑抽了没这样做),最后导致预约信息一部分保存在借还处,一部分保存在用户节点里面,预约信息的流动变得很复杂,删增都不是很方便
保存了用户的请求(实际上只有预约)信息,包括时间等等。
其实我是先写了代码,再画的UML。
整体来说UML提供了一个很清晰的类与类之间的关系和类之间的信息流动关系,我整体上把UML当做一种比较好用的注释使用。
首先,三个单元(JML有什么用啊)
感谢社区OJ提供的便利
测试是很重要,但是一个人写真写不过来。
架构设计反而感觉在OO课程中没有那么重要(再怎么屎山坚持三次代码也就可以丢掉了,一般代码会在第三次或者第三次结束变得难以维护)。对我来说收获主要集中在两点吧