OO结课了,狂喜

  • 哈哈哈哈哈
  • 哈哈哈
  • 哈哈

第十三次作业

  • UML类图

  • 简要分析:
    • 本次作业是对UML类图进行解析,给到的接口里面已经有了很多类了,但是自带的类肯定是没有反应这些类的结构的.所以就自己写了MyClass和MyInterface和MyOperation类.
    • MyClass类内部包括了属性和方法,以及父类,以及实现的接口,以及关联对端,以及各种查询方法
    • MyInterfaces类内部包括了属性和方法,以及实现的接口,以及关联对端,以及各种查询方法
    • MyOperation类内部包括了参数和返回值,以及各种查询方法
    • MyUmlInteraction则负责管理所有的类和接口,以及输入的解析
    • 整体来说这样搞得搞得架构是富有层次性的,实现起来也不难,很多题目要求的查询方法都可以用递归的思想来实现
    • 强测: 被卡了一个t的点,是因为图遍历的时候没有做好标记,算是对算法的复杂度的理解有深刻了.

第十四次作业

  • UML类图

  • 简要分析:

    • 本次作业是对状态图和顺序图进行解析,整体难度不大,基本遍历就能实现.
    • 基于上次作业,由新增加了MyInteraction,MyStateMachine,Mystate类
    • MyInteraction存有所有的顺序图相关的信息
    • MyStateMachine存有状态图的相关信息.
    • MyState存有其可达的状态,可看作状态图中的一个节点.

第十五次作业

  • 不放类图了,和上次的一样
  • 本次作业新增了对UML类图的检验,上次作业除了存储信息上的一些容器选的不合理以外,其他方面都是可以直接使用往MyClass类中新增方法来实现检验规则的.

四个单元的总结

第一单元

第一单元是对表达式的解析,前两次作业是可以用一个公式就可以完成表达式,因子的抽象的,但是第三次作业加了括号以后,就比较难办了,于是看了课件上通过对不同运算的抽象来实现,于是进行了重构.课件上的方法果然好使,代码少了很多,重构起来也很轻松.这个架构对于性能的优化也是有很好的支持,只需要优化每种运算的结构即可.但是wf的检测还是出了大问题.

第二单元

第二单元是电梯多线程,没有了傻瓜电梯,一上来还是有点难搞的.吸取了上一单元的教训,第一次作业便开始好好的设计架构,改了好几个版本,才最后选了一个我觉得设计比较合理的东西交上去了.第二三次作业就稍微轻松一些了,加东西也都比较容易,但是还是出现了线程安全错误.这个单元以后对多线程的安全有了深刻的认识.

第三单元

第三单元是根据已有的助教的JML去实现代码,这一单元的代码体验还是比较容易的,但是第一次还是爆炸了.这单元讲的是契约式编程,但是要自己去写JML,还真是不知道怎么去下手.

第四单元

第四单元是对UML的解析,从架构的层次入手,来读系统进行设计,能够在写代码前就对考虑到其系统的可复用性,可拓展性等且UML独立于语言,在现在用到的也比较多.只可惜我的水平只能够画画图玩一玩了.

对测试的理解与实践的演进

在本学期的学习,除了oo课程的学习以外,也增强了自己做测试的能力.

  • 第一单元采用的测试方法是随机生成数据与python的求导结果进行对比
  • 第二单元采用的测试方法是随机生成数据并对结果的合理性进行检验
  • 第三四单元采用的测试是随机生成数据并与同学对拍

但是强测还是出现了一些问题.互测也发现了不少bug

其次在第三单元了解到了单元测试,虽然在实际中没有用到,但是在架构合理的情况下,单元测试也是保证正确性的很好的方法.

课程收获

  • 对于代码的审美发生了改变.从以前的一坨,到现在能够抽象出类来进行管理,好的设计写出来的代码都是简明的.
  • 除此之外便是提升的敲代码的能力,我一天居然能写一千行代码.
  • 还有就是测试的能力了,以前写过的代码都是直接上评测机,现在不行了,要自己测试了

课程建议

  • 实验课可以不可以不对你写的代码进行纠错[吐血].
  • 没了没了,希望oo助教身体健康,少掉点头发.

线上学习oo

  • 理论课视频看着很容易走神,很难跟的上老师的步伐.虽然可以暂停,但是懒得按下暂停键.
  • 研讨课的话能够学到一些别的同学比较厉害的技术和经验,听到大佬的分享,对我来说很有帮助.
  • 线上做实验惊心动魄,一脸懵*

OO结课了,狂喜的更多相关文章

  1. OO Unit4总结 & 结课总结

    OO Unit4总结 & 结课总结 OO课Unit4 UML解析应用技术回顾 BUAA.1823.邓新宇 2020/6/19 总结本单元三次作业的架构设计 本单元的架构设计主要是两方面. 一方 ...

  2. linux学习第十九天 (Linux就该这么学) 结课了

    今天最后一天课程了,结课了,还有点舍不得那,在些也祝 李老师 事业蒸蒸日上,超来超好, 今天内容是部署了 LNMP 部署动态网站环境(linux  +nginx+mysql+php) 安装文件挺别多, ...

  3. 南方IT学校期末PCB结课项目考试(实操)说明书

    南方IT学校期末结课项目考试(实操)说明书(一) 课程:<印制电路板设计技术>(二) 项目:笔记本电脑电源适配器的印制电路板设计(三) 背景说明:如今笔记本已经进入千家万户,作为给电脑充电 ...

  4. oo作业第四单元总结暨结课总结

    目录 一.第四单元作业架构设计 1.第一次UML作业架构设计 2.第二次UML作业架构设计 二.架构设计和OO方法理解演进 三.测试理解与实践的演进 四.课程收获总结 五.三个具体改进建议 一.第四单 ...

  5. 这是C语言结课前(期末考试之前)写给牛晓霞的一封信!

    致尊敬的牛晓霞老师: 这是黄领衫的感想,也是想告诉你的话! 在老师说要给班里写得好的人发黄领衫的时候,我当时的想法是我很有可能拿到这份奖品的,怎么说呢,算是一种自信吧,或是对自己的态度的认可.虽然我能 ...

  6. 大一C语言结课设计之《学生信息管理系统》

    第一次写这么长的程序,代码仅供參考,有问题请留言. /* ** 学生信息管理系统 ** IDE:Dev-Cpp 4.9.9.2 ** 2014-6-15 */ #include <stdio.h ...

  7. c# 结课小结

    C#总结知识点 模块一:知识点梳理 输入输出表达式---数据类型---变量与常量 ----运算符---语句-----数组与集合---函数--结构体: 模块二:输入与输出 输入:  console.re ...

  8. C#结课报告

    Revision History Date Issue Description Author 18/May/2015 v1.0 Initial creation 邓彪翼 模拟图书馆的查询系统 1.ob ...

  9. 大一C语言结课设计之《简单计算器》

    /*===============================================*\ ** 设计目的:简单计算器,计算形如10*(20.2-30.6)+5.0/2的表达式值 ** 简 ...

随机推荐

  1. 实用Macbook软件系列

    Macbook Software 实用Macbook软件系列 我的Mac都装了哪些软件 鉴于很多小伙伴刚刚由win系统转换到mac,一开始会有很多不适应的地方,所以本期文章准备给大家介绍下mac上一些 ...

  2. RabbitMq手动确认时的重试机制

    本文转载自RabbitMq手动确认时的重试机制 消息手动确认模式的几点说明 监听的方法内部必须使用channel进行消息确认,包括消费成功或消费失败 如果不手动确认,也不抛出异常,消息不会自动重新推送 ...

  3. Elasticsearch 及其套件的安装上手

    前言 本文主要讲解Elasticsearch及其套件Kibana.Logstash的安装及启动,还讲解如何导入数据用于后续的实验. 说明:Elasticsearch是基于Java开发的,所以如果是下载 ...

  4. 从微信小程序到鸿蒙js开发【12】——storage缓存&自动登录

    鸿蒙入门指南,小白速来!从萌新到高手,怎样快速掌握鸿蒙开发?[课程入口] 正文: 在应用开发时,我们常需要将一些数据缓存到本地,以提升用户体验.比如在一个电商的app中,如果希望用户登录成功后,下次打 ...

  5. [报错集]ubuntu中安装oracle java报错

    1.因为版本更新,JAVA15以前的版本都已经没办法下载了,所以要使用oracle java必须使用最近的java15 $ sudo apt-get install oracle-java15-ins ...

  6. 使用gitlab构建基于docker的持续集成(三)

    使用gitlab构建基于docker的持续集成(三) gitlab docker aspnetcore 持续集成 构建发布思路: aspnetcore 下的dockerfile编写 发布docker- ...

  7. 原生JS快速实现拖放

    原生 JS 快速实现拖放 拖放是很常见的一种交互效果,很多时候我们都会借助于第三方的控件来实现,其实用原生 js 实现起来也非常的方便.接下来我们就用原生 js 和 css 快速实现拖放效果 html ...

  8. 后端程序员之路 7、Zookeeper

    Zookeeper是hadoop的一个子项目,提供分布式应用程序协调服务. Apache ZooKeeper - Homehttps://zookeeper.apache.org/ zookeeper ...

  9. POJ-2349(kruskal算法+最小生成树中最大边的长度)

    Arctic POJ-2349 这题是最小生成树的变形题目.题目的意思是已经有s个卫星频道,这几个卫星频道可以构成一部分的网络,而且不用费用,剩下的需要靠d的卫星接收器.题目要求的就是最小生成树中,最 ...

  10. 测试工程师Docker基础

    一.docker概述 1.docker为什么会出现 本质:所有技术的出现都是因为出现了一些问题,我们需要去解决,才去研究和学习: 问题: ​ 开发环境.测试环境.仿真环境.正式环境等诸多环境都需要进行 ...