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第二单元作业总结 在第二单元作业中,我们通过多线程的手段实现了电梯调度,前两次作业是单电梯调度,第三次作业是多电梯调度.这个单元中的性能分要求是完成所有请求的时间最短,因此在简单实现电梯调度的基础 ...
随机推荐
- PreparedStatement预编译的sql执行对象
一.预编译,防sql注入 其中,设置参数值占位符索引从1开始:在由sql 连接对象创建 sql执行对象时候传入参数sql语句,在执行对象在执行方法时候就不用再传入sql语句: 数据库索引一般是从1开始 ...
- windows下配置VSCode免密SSH连接Linux机器
先决条件 Windows下安装openssh软件(win10自带,可以不用搞) 从官网下载最新版本默认安装即可 VSCode安装插件 VSCode官方市场获取两个插件:"Remote - S ...
- Catch That Cow----BFS
Catch That Cow Description 农夫知道一头牛的位置,想要抓住它.农夫和牛都位于数轴上 ,农夫起始位于点 N(0<=N<=100000) ,牛位于点 K(0<= ...
- 洛谷P1582——倒水(进制,数学)
https://www.luogu.org/problem/show?pid=1582 题目描述 一天,CC买了N个容量可以认为是无限大的瓶子,开始时每个瓶子里有1升水.接着~~CC发现瓶子实在太多了 ...
- Java实现导入Excel文件
一.配置文件名称.路径.内容: <bean id="multipartResolver" class="org.springframework.web.multip ...
- 合并区间 leetcode
描述: 给出一组区间,请合并所有重叠的区间. 请保证合并后的区间按区间起点升序排列. 输入: [[10,30],[20,60],[80,100],[150,180]] 输出: [[10,60],[80 ...
- Shell系列(2)- 脚本执行方式
创建shell脚本 [root@localhost sh]# vim hello.sh shell脚本必须用.sh,同时方便文件管理 #!/bin/bash:shell文件第一行必须是这个,声明这个 ...
- python学习笔记(五)-文件操作2
一.文件修改 现有文件file.txt,内容如下:二十四节气歌春雨惊春清谷天,夏满芒夏暑相连.秋处露秋寒霜降,冬雪雪冬小大寒.上半年逢六廿一,下半年逢八廿三.每月两节日期定,最多相差一二天.要求:将文 ...
- Tidb使用
一.为什么使用Tidb 最近发现tidb在互联网圈大火,新生代的一个NewSql数据库 具体链接可以访问pincap的官网 https://www.pingcap.com/docs-cn/v3.0/ ...
- Ubuntu安装Oracleclient远程连接数据库
平时Oracle数据库都安装在本地或者WindowsServer上进行使用,但因为工作需要,领导要求在虚拟机中安装Ubuntu来连接Windows本地安装的数据库,先将操作过程和遇到的问题进行梳理总结 ...