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. Puppeteer: 鼠标移动

    文档 mouse.click 是 mouse.move,mouse.down 和 mouse.up 的快捷方式 main.js const pptr = require('puppeteer'); c ...

  2. NGK是公链吗?NGK为何会这么火?

    NGK号称区块链3.0的经典代表之作,公链底层技术开源发布,支撑百万级应用场景,集合了其他公链的优点,不仅拥有超高的TPS,军业级DPOSS共识机制,还有极高的网络确认速度和转账速度.更重要的是无需矿 ...

  3. JUnit5学习之一:基本操作

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  4. std::unordered_map与std::map

    前者查找更快.后者自动排序,并可指定排序方式. 资料参考: https://blog.csdn.net/photon222/article/details/102947597

  5. 微信小程序:post请求参数放在请求体中还是拼接到URL中需要看后台是如何接收的

    前端发送post请求时,请求参数可以放在请求中,代码如下: function post(url, data, callback) { wx.request({ method: 'POST', url: ...

  6. MarkDown简单语法回顾

    写在前面: 本文是我的第一篇博客文章,希望与大家共同交流.分享我们热爱的技术,努力成为一名优秀的软件工程师! 进入正文 使用MarkDown记笔记已经有些时候了,编辑器是使用的sublime text ...

  7. Linux ctrl+z挂起的进程恢复与杀死

    Linux系统下,不小心按了ctrl+z命令后,退出了当前进程的执行界面,程序没有结束,只是被挂起了.通过ps命令可以查看进程信息,这里不做详细介绍,可通过jobs命令查看被挂起的进程号 #jobs ...

  8. 微信小程序弹出框滚动穿透问题

    1.在你的遮罩层最外层加 catchtouchmove="noneEnoughPeople" 里面是你的方法名2.noneEnoughPeople: function () { c ...

  9. LG gram 双系统全指南

    LG gram 双系统全指南 为了和同学联机玩帝国时代2,以及为了下学期的编程课,五年没用过 Windows 的我决定装 Ubuntu20.04 LTS / WIndows 10 双系统了. 我的 L ...

  10. Kubernetes 实战 —— 02. 开始使用 Kubernetes 和 Docker

    创建.运行及共享容器镜像 P23 运行容器 P24 运行 P24 可以运行 Docker 客户端可执行文件来执行各种 Docker 命令.例如:可以试着从 Docker Hub 的公共镜像仓库拉取.运 ...