BUAA-OO-最后单元总结
BUAA-OO-最后单元总结
经过一学期的魔鬼“折磨”后,OO课程终于要结束了!总体来说我对于作业的总体完成情况还是比较满意的,希望最后可以取得一个理想成绩。
一、第四单元架构设计
第一次作业是类图的解析,我的大致思路是将类图中的每个类都建一个对象,每个对象中存储本类的所有东西,包括属性,方法,关联,父类和接口等等。然后在UmlInteraction中存储类的id和name对应该对象的hashmap,通过id和name均可找到相应的类对象。
第二次作业在第一次作业的基础上新增了顺序图和状态图,还有3个规则的检查。顺序图和状态图的处理方式和类图一致,新建类,构造类对象,再把相关元素添加到该对象中即可。至于3条规则的检查,第1条直接遍历即可;2、3条用类似bfs的方法遍历所有的类即可。
二、四次单元架构设计及OO方法的演进
第一单元
由于首次接触java及面向对象思想,可以说我第一单元的架构十分差劲,完全是用面向过程的思想去解决问题。刚开始时对于java的诸多包和语法都不是十分熟悉,在写本 单元作业时举步维艰。每次只建一两个类,把每个类当一个函数去调用,导致代码的耦合度极高,也并没有什么可扩展性可言,所以我本单元的作业全部都是重构的,完全没有 沿用上次作业的架构。除此之外还有令人头痛的WF问题,这些对于我这样的新手来说不是十分友好......所幸的是仅仅在第二次作业因为一点失误错了2个点,对自己的屎山代码 没有出现大bug而欣慰,现在想想可能会分成表达式类,因子类等去解决问题。
第二单元
我认为第二单元最难理解和处理的地方就是多线程,因为它存在不确定性,经常会出现每次运行结果不一致,或者是评测机与本地运行不一致的情况。这次的架构相比第一 次有了些改观,分出了电梯类,控制器类等等。第三次作业也保留了第二次作业的部分代码,算是第一次对面向对象有了一点理解。
第三单元
第三单元我认为比较有趣,用JML描述规格,根据描述自己去实现方法,就像是分配给你一个大项目中的一部分去完成。架构方面虽然类比较少,但也基本实现了层次的分 离,三次作业都是在前一次的基础上完成,没有进行过重构。
第四单元
第四单元是关于UML相关知识,这次的作业最难的是UML相关知识的理解,涉及到的知识面比较广。在架构方面也是基本实现了分离,将不同的图分成了不同的类,第二次 作业也没有进行重构。整体来说这四单元作业架构逐渐清晰,也逐渐对面向对象思想有了一定理解。
三、测试理解与实践演进
第一单元
第一单元由于是刚刚接触java,仅仅只会简单的手动输入测试样例,测试样例也基本都是用的指导书上的已有样例。不过对于一些边界数据和压力数据有进行测试,包括\t \r,50个x+x这样的数据。
第二单元
第二单元最主要的就是一个样例测试多次,看看会不会出现不一致的结果。第二单元的样例输入比较复杂,何时输入ctrlD是一个比较难解决的问题。总之这次的测试就是一 组数据疯狂测,需要测很多次才能确保正确。
第三单元
第三单元由于数据规模比较大,开始使用一些文件输入输出,命令行等方法进行测试。也会将其其他同学的输出结果拿来进行对比。
第四单元
第四单元基本完全自动化测试,甚至还写了一些脚本去运行多次程序,然后将输出结果与其他同学进行对比。
四、课程收获
本学期的OO课程带给我的收获主要有两方面,一是在知识方面,我学会了java语法,可以用java语言编写大规模的程序;同时我也学习了一些OO思想,在解决问题时可以用面向对象思想考虑问题。此外,还学到了一些零碎小知识,比如github的使用、JML、UML、jprofiler、Junit等。这些都对我的日后写程序有着巨大帮助。二是这门课带给我的一些抗压能力,几乎每周完成一次代码量巨大的大作业,对我的编程能力和抗压能力都是巨大的提升,以后再遇到大作业时,不会感到无从下手,毕竟有过这样的经历。同时每次完成作业也是对我的信心有着巨大提高。
五、课程建议
1、希望可以给出1天的缓冲时间进行课上实验,上午讲完的知识下午直接实验真的十分困难。希望在下学期的OO课程中可以有所改善。
2、UML单元作业的指导书感觉还有些不清楚,在讨论区里也经常会有人提问某种情况对不对,正确结果应该是什么之类的问题,希望可以在课上讲得更清楚一些,指导书也可以更清楚一些。
3、第一单元的作业难度有些大,尤其是对于更上手的像我这样的小白来说,连java语法都搞不清楚,写大规模的作业更是难上加难。希望下学期开始的OO作业可以更加友好。
最后,我的本学期的OO课程就要结束了。感谢助教和老师一学期对我们的帮助和指导,也希望我一学期的辛苦付出可以再成绩上有所收获。
BUAA-OO-最后单元总结的更多相关文章
- 电梯模拟系统——BUAA OO第二单元作业总结
需求分析 官方需求 本次作业需要模拟一个多线程实时多电梯系统,从标准输入中输入请求信息,程序进行接收和处理,模拟电梯运行,将必要的运行信息通过输出接口进行输出. 本次作业电梯系统具有的功能为:上下行, ...
- 多项式与三角函数求导——BUAA OO 第一单元作业总结
第一次作业 需求简要说明 针对符合规定的多项式表达式输出其符合格式规定的导函数多项式,格式错误输出WRONG FORMAT! 带符号整数 支持前导0的带符号整数,符号可省略,如: +02.-16> ...
- 「BUAA OO Unit 2 HW8」第二单元总结
「BUAA OO Unit 2 HW8」第二单元总结 目录 「BUAA OO Unit 2 HW8」第二单元总结 Part 0 前言 Part 1 第五次作业 1.1 作业要求 1.2 架构设计 1. ...
- 「BUAA OO Unit 4 HW16」第四单元总结与课程回顾
「BUAA OO Unit 4 HW16」第四单元总结与课程回顾 目录 「BUAA OO Unit 4 HW16」第四单元总结与课程回顾 Part 0 第四单元作业架构设计 架构设计概要 AppRun ...
- OO第一单元作业总结
oo第一单元的作业是对多项式的求导.下面就是对三次作业分别进行分析. 第一次作业 分析 第一次作业相对来讲比较简单,甚至不用面向对象的思想都能十分轻松的完成(实际上自己就没有使用),包含的内容只有常数 ...
- OO第一单元总结
OO第一单元作业总结 一.前言 开学四周,不知不觉已经做了三次OO作业.事实上,每一次作业对我来说都是很大的挑战,需要花费大量的时间和精力来学习. 虽然学得很艰苦,但最后还是连滚带爬地完成了.(好惨一 ...
- oo第二单元作业总结
oo第二单元博客总结 在第一单元求导结束后,迎来了第二单元的多线程电梯的问题,在本单元前两次作业中个人主要应用两个线程,采用“生产者-消费者”模式和共享数据变量的方式解决问题.在第三次作业中加入多个电 ...
- OO第二单元优化博客
OO第二单元优化博客 第五次作业没有性能分,但是,我在这一单元的宗旨就是写一个日常生活中 最常见的那种电梯,所以第五次我没有写傻瓜电梯,而是直接写了个\(look\),和第六次基本相同. 总计一下lo ...
- OO第一单元优化博客
OO第一单元优化博客 第一次作业: 合并同类项+提正系数项+优化系数指数0/1=满分 第二次作业: 初始想法 一开始是想以\(sin(x)\)和\(cos(x)\)的指数作为坐标,在图上画出来就可 ...
- 【OO学习】OO第二单元作业总结
OO第二单元作业总结 在第二单元作业中,我们通过多线程的手段实现了电梯调度,前两次作业是单电梯调度,第三次作业是多电梯调度.这个单元中的性能分要求是完成所有请求的时间最短,因此在简单实现电梯调度的基础 ...
随机推荐
- Python习题集(十五)
每天一习题,提升Python不是问题!!有更简洁的写法请评论告知我! https://www.cnblogs.com/poloyy/category/1676599.html 题目 请写一个函数,该函 ...
- WEB漏洞——文件上传
有关文件上传的知识 为什么文件上传存在漏洞 上传文件时,如果服务端代码未对客户端上传的文件进行严格的验证和过滤就容易造成可以上传任意文件的情況,包括上传脚本文件(asp.aspx.php.jsp等格式 ...
- 了解mysql concat()函数
concat(arg1,arg2,....):将形参对应字段的值组合成一个字符串 假设:现在有一张学生表(test_user) 将这三个字段组合成一个字符串作为第四个字段 select test_us ...
- MySQL实战45讲(06--10)-笔记
目录 06 | 全局锁和表锁 :给表加个字段怎么有这么多阻碍? 全局锁 表级锁 小结 07 | 行锁功过:怎么减少行锁对性能的影响? 死锁和死锁检测 08 | 事务到底是隔离的还是不隔离的? &quo ...
- AI:用软件逻辑做硬件爆款
"我们的野心不止那么一点点." 百度集团副总裁.百度智能生活事业群组(SLG)总经理.小度CEO景鲲曾多次对外表达过这样的观点. 在2021年百度世界大会上,小度又一口气发布了四款 ...
- vue父组件中调用子组件的方法
Vue项目中如何在父组件中直接调用子组件的方法: 方案一:通过ref直接调用子组件的方法: //父组件中 <template> <div> <Button @click= ...
- servlet请求转发于重定向
请求的转发与重定向是Servlet控制页面跳转的主要方法,在Web应用中使用非常广泛. 一. 请求的转发 Servlet接收到浏览器端请求后,进行一定的处理,先不进行响应,而是在服务器端内部" ...
- C语言学习笔记---3.字符串格式化输入输出
1.C语言字符串 字符串(character string)是一个或多个字符的序列,例如:"Zing went the strings of my heart!" C语言没有专门用 ...
- 痞子衡嵌入式:嵌入式Cortex-M中断向量表对齐原则的深入研究
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是Cortex-M中断向量表对齐原则. 今天这篇文章的内容主要来自于五年前做 Kinetis K32W 系列双核启动时的发现,最近正好有同 ...
- javascript 无限分类
* 根据php无限分类实现js版本的 /** * 根节点 parentid=0, 每个节点都有id, parentid字段 * @param items * @returns {*} */ funct ...