热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

BUAAOO第四单元

OO第四单元总结本单元架构关于本单元本人的架构并不是特别理想,原因是本单元第一次作业时使用了大量的hashmap嵌套,导致代码冗余严重。整体思想就是利用hashmap存储各个信息,

OO第四单元总结

本单元架构

关于本单元本人的架构并不是特别理想,原因是本单元第一次作业时使用了大量的hashmap嵌套,导致代码冗余严重。

整体思想就是利用hashmap存储各个信息,尽量进行o(1)的查找。

其中,对于getStateIsCriticalPoint()函数,本人通过建立并查集判断联通的方式进行查找,因此复杂度大于o(1)。

 

在四个单元中架构设计思维及OO方法理解的演进

  在四个单元中,我的架构设计思维于面向对象方法理解逐步提升:

  第一单元时,我刚刚接触面向对象的概念,在设计架构时总是会不自觉地一main到底。同时在设计架构时总是会有冗余,代码风格不好。但是在应用分块思想处理表达式后,我的架构能力有了提升。

  第二单元开始接触电梯线程,一开始对于线程的概念我是非常不适应的,总是觉得其与正常的编程思维相悖。后来发现线程思想是十分重要的。在架构前拿起笔去写去画,将每一个类需要的资源想明白,自然迎刃而解。

  第三单元接触了JML,本单元我认为真正对我有帮助的是算法部分。因为为了满足强测需要,需要采用很多优化算法,例如堆优化的迪杰斯特拉算法等。本单元我也意识到了架构过程也要考虑程序的复杂度,做到设计简洁,算法简洁有效。

  第四单元学习了类图、顺序图、状态图。我认为本单元很好的让我提高了自己的基本功。就是利用怎样的架构可以最节省思维、最有效地解决问题。

自己在四个单元中测试理解与实践的演进

在大一学C语言时,基本都是测试完样例就交,然后面向评测机编程。

而这学期的OO,中弱测的一些较难过的点都不公开数据,而强测更是只有一次机会,这时本地测试就尤为重要了。而且几次强测结果出现的我没有预想到的BUG也让我更加重视对代码的自我测试。

这学期的互测,除了第一单元代码量较小,可以阅读代码寻找BUG外,其他单元的作业我基本都是构造易错数据来对屋内其他人的代码进行测试。另外在研讨课上,我也学到了不用python写对拍器,也可以用JAVA写出自动生成数据以及自动测试的方法。

总结自己的课程收获

 首先我学会了java,以前都是用C语言编程,现在多学会了一门编程语言。

 其次我理解了面向对象的含义,这其中包含代码的封装,合并以及分模块的思想,对我今后的学习有很大的帮助。

 我也学会了如何自己做代码测试,例如写对拍器,自动生成数据等。

 同时在研讨课上,跟同学们进行交流,上台展示也让我认识了很多大佬,也学会了如何高效地讨论问题。

课程提三个具体的改进建议

1、个人认为的单元难度变化有些大,例如第一单元到第二单元难度明显增大,二到三又明显降低,虽然可能考虑到了期中、期末的影响,但个人认为可以适当换下单元的顺序,例如四、一、二、三。先学了四可以对类图等Uml有更深刻的理解,做其他单元也会从不同角度去思考,写博客也会方便;三放到最后考虑到烤漆,个人觉得难度合适。

2、我们这学期有JML单元和UML单元,我觉得也可以给JUNIT或者其他代码测试的工具也开一个单元。

3、稍微提升一下中测点的难度。



推荐阅读
  • 第四单元和课程总结:简单的架构设计意识
    一、第四单元架构设计总结第一次作业由于需要按名查找类图模型,于是建立"Class"类进行管理由于方法具有参数导致类中存在二级结构 ... [详细]
  • Unit4博客&课程总结Unit4作业的架构设计本单元作业的设计我分为了三个模块处理:模型构建+预处理+任务函数,前两部分即为整个图的完整构建,第三部分即为实现题目要求的查询方法。 ... [详细]
  • 开发笔记:里氏替换原则
    本文由编程笔记#小编为大家整理,主要介绍了里氏替换原则相关的知识,希望对你有一定的参考价值。1.定义:如果对每一个类型为T1的对象o1,都有类型为T2的对象o2, ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 点击上方“新机器视觉”,选择加”星标”或“置顶”重磅干货,第一时间送达很早就想总结一下前段时间学习HALCON的心得,但由于其他的事情总是抽不出时间。去年有过一段时间的集中学习,做 ... [详细]
  • Java工程师书单(初级,中级,高级)
    简介怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序员也是工作一两年之后开始迷茫的程序 ... [详细]
  • 软件测试工程师,需要达到什么水平才能顺利拿到 20k+ 无压力?
    前言最近看到很多应届生晒offer,稍有名气点的公司给出的价格都是一年30多W或者月薪20几k,相比之下工作几年的自己薪资确实很寒酸.根据我自己找工作经历,二线城市一般小公司招聘 ... [详细]
  • 出现_史上最大漏洞出现,你的安卓iPhone电脑都不安全了!
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了史上最大漏洞出现,你的安卓iPhone电脑都不安全了!相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • Androidwifi对象属性及简易Demo本章介绍Android开发中WiFi热点和WiFi属性的获取,介绍WiFi的名称、状态等属性以及获取周围 ... [详细]
  • UML 包图
    什么是包包可直接理解为命名空间,文件夹,是用来组织图形的封装,包图可以用来表述功能组命名空间的组织层次。•在面向对象软件开发的视角中&#x ... [详细]
  • 显卡750ti价格(750ti显卡发行价格)
    |责编:林光楠在当前这个B2BB2C逐步取代传统卖场占据主导地位的时代,通过电商、淘宝平台直接购买电脑相信已经成了不少对DIY认识不太深入的主流用户首选的配机方案。相比线下购买,网 ... [详细]
author-avatar
琳琳小朋友m
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有