OO_第四单元总结

第四单元作业的架构设计

以下是我的自定义类(uml开头的除外)。

processor 负责将 umlElements 分类并根据它们的 parentId 建立如上图的层次化结构。建立好了之后,指令的实现也较为容易了。同时可以以HashMap<String, MyClass> myClassesHashMap<String, ArrayList<String>> name2ClassId的方式存储数据,方便查找。

此外,类图中的指令 6:类的属性的耦合度指令 7:类实现的全部接口指令 8:类的继承深度都与类的继承有关,因此可以在输入查询指令之前自顶向下先处理这些指令,之后查询时就只需要\(O(1)\)

总结

架构设计思维及OO方法理解的演进

一开始写代码并不会往架构这个方向去思考,后来渐渐地体会到了架构设计的重要性以及迭代开发是建立在架构设计基础之上的。

  • 学习了一些设计模式,对架构设计会有较大的帮助。
  • 开始分析架构上的一些优缺点并选择一个更好的架构去实现。
  • 模块化的重要性,把同个功能的都放在同一个模块上,有助于使架构清晰(并且不超500行)。
  • 合理的使用依赖、关联、聚合、组合、实现以及泛化关系,有助于使架构清晰。
测试理解与实践的演进

我最终还是没好好学写评测机,总觉得写完作业没剩多少时间了,而且对一些编程语言和评测机的概念并不熟悉,觉得得花上好几天的时间弄一弄,所以就干脆手写数据顶一会儿吧,结果一顶就是一整个学期(可能也有懒的成分吧🤪)。但是不得不说评测机还是得学,所以计划着假期再去研究研究评测机。

下面说一下我手写数据的经历与想法。

心理变化过程:写几条测试数据然后摆->我要战胜bug!->我要写出覆盖性强的测试数据!!

其实觉得要写出覆盖性强的测试数据,得对题目有深入的了解,我的方法是边看着指导书,仔细地了解每个要点,尽可能地考虑所有的可能性,边构造数据,当然还是避免不了偶尔的疏忽(比如第二单元的可达),这时使用科技去构造随机数据可能会更容易发现这些疏忽点。也可以对着自己的代码构造一些数据,比如第二单元的qlc指令,我弄了个标记表示要更新,那么我可以针对其值是否已更新来构造数据,以确保输出的都是已更新的值。

与人对拍的好处:节省时间即肉眼一条一条看输出正确与否的时间,验证对题目的理解是否有偏差。

课程收获
  • 学习了递归下降、多线程、jml规格以及uml图。
  • 体会到了架构设计的重要性。
  • 对于并发和锁有了更进一步的了解。
  • 在第三单元中,学到了一些降低时间复杂度的方法,也将它应用在了第四单元上。
  • 看指导书看的越来越快了。🤪

总的来说,收获很多,对编程有了更深的了解,写起代码来更加得心应手了。

改进建议

  • 在预习时可以增加写评测机的训练或者介绍一些测试方法。

能够想到的建议似乎都能以问题不大而撤销。😅

posted @ 2022-06-29 13:07  日常写bug的路人甲  阅读(22)  评论(1编辑  收藏  举报