BUAA OO 第四单元

第四单元架构、正向建模与开发

在这里插入图片描述
在这里插入图片描述
考虑到题目中说明:

  • 在架正式书籍仅可以存在于如下四个位置:书架、预约处、借还处、和用户。
  • 图书漂流角内的非正式书籍仅可以存在于如下三个位置:借还处、图书漂流角和用户
    因此,我在Library类里管理Bookshelf,AppointmentOffice,BorrowAndReturnOffice,BookDriftCorner等实例化对象,并增加属性哈希表nameList进行前往图书馆做各项操作的人员记录。如果来图书馆的是未记录在nameList里的新成员,则初始化一个User对象并加入到其中。

对于开馆前和闭馆后的操作,我一律在开馆前进行图书的移动。移动的时候先做扣除用户信誉分的移动,然后再做其他移动。
根据以上思路可以先大致画出UML类图,,但是具体的容器选择和方法需要在代码中不断改进,最后再形成真正正确的类图,状态图和顺序图等。

四个单元中架构设计思维的演进

第一、二单元的整体思路都是根据实验课给出的范例代码作为大框架,在这个框架中进行修改和类与方法的增加实现题目的具体要求和细节。迭代过程中根据要求的变化增加实现具体功能的方法。尽量避免在一个类里实现太多的功能和方法,对于题目要求进行分类,各自的功能在各自的类里实现。
第二单元中由单轿厢电梯变成了双轿厢电梯,但是整体结构不变,仅将1-6号电梯改进成12个电梯,在电梯DcReset后启动后6个电梯即可。因此我在代码中实现的synchronized块从第五次至第七次作业基本无变化,仅在Reset和调度以及电梯运行策略的细节上进行了一定的调整。
第三单元根据JML注释写代码,主要费功夫的地方在于容器的选择和算法的优化,仅仅使用多重循环会导致时间性能爆炸。因此在代码中多加运用动态维护的方法以及有限次数的多重循环相当重要。
第四单元实现图书馆系统相对简单且开放对于不同的书籍信息可以使用多个容器管理,注意根据要求做出更新操作和使用容器中数据操作即可。

在四个单元中测试思维的演进

当我们将整个项目写完后,需要对其进行完整、系统的测试,以确定我们的设计是否符合要求,输出是否合法。
首先是测评机随机生成的数据点。测评机能够生成大量的一定强度的数据进行测试,有助于发现代码中的明显错误(如对题目要求理解有问题的部分),有助于保证整体代码逻辑性正确(即大概满足题意要求)。
其次是手搓数据点,主要分为两种。第一种是手动输入的数据结构复杂,用于测试输入解析和输出结构的正确性,如第一单元中输入多层嵌套函数和多个加减号构成的表达式以此来检查是否解析合理;另一种是边界压力测试,主要测试空间压力性能和时间压力性能,如第一单元中8888888^8,以及第二单元电梯在同一时间内收到海量请求和reset的情况。
以上两种测试结合可以得到强度良好的代码。

OO课程收获

  • 理解面向对象的思维方式: 通过学习OO,会理解如何将问题分解成对象,并建立对象之间的关系。这种思维方式能帮助学生更好地组织和解决问题。

  • 封装和抽象: 将了解封装和抽象的概念,并学会如何设计类和对象,使其封装内部实现,同时提供抽象的接口,以便其他代码可以轻松使用。

  • 继承和多态: 学习OO能使我们领悟继承和多态的概念。学会如何在设计类时使用继承,以及如何通过多态来提高代码的灵活性和可维护性。

  • 模块化和代码重用: 通过OO能更好地理解如何将代码分解成模块,以及如何利用继承和组合来实现代码的重用。

  • 代码可维护性和可扩展性: OO的学习有助于理解如何编写易于维护和扩展的代码。我们可能学会设计灵活的类和接口,从而使得未来对代码的改动更加容易。

  • 设计模式: 我们可能学会一些常见的设计模式,这些模式是在实践中为解决特定问题积累的经验。这些设计模式能帮助学生更好地设计和组织他们的代码。

  • 建立团队合作和理解代码库: OO的学习有助于更好地理解其他人编写的代码,以及如何与其他开发者协作。

  • 19
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值