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第二单元作业总结 在第二单元作业中,我们通过多线程的手段实现了电梯调度,前两次作业是单电梯调度,第三次作业是多电梯调度.这个单元中的性能分要求是完成所有请求的时间最短,因此在简单实现电梯调度的基础 ...
随机推荐
- Gitlab(2)- centos7.x 下安装社区版 Gitlab 以及它的配置管理
前置准备:虚拟机安装以及配置相关 包含安装 centos7.8 虚拟机.设置静态 ip 等 https://www.cnblogs.com/poloyy/category/1703784.html 注 ...
- web安全性测试——XSS跨站攻击
1.跨站攻击含义 XSS:(Cross-site scripting)全称"跨站脚本",是注入攻击的一种.其特点是不对服务器端造成任何伤害,而是通过一些正常的站内交互途径,例如发布 ...
- 手把手教你 Docker Compose的安装和使用
一.Docker Compose是什么? Docker Compose是一个工具,用于定义和运行多容器应用程序的工具: Docker Compose通过yml文件定义多容器的docker应用: Doc ...
- XML基础——extensible markup language
一.xml概念 1.xml和html区别 其中,xml是纯文本文件,跨语言:浏览器有html解析器也有xml解析器: 2.和properties配置文件区别 二.xml语法 1.基本语法 三.xml组 ...
- Stream流思想和常用方法
一.IO流用于读写:Stream流用于处理数组和集合数据: 1.传统集合遍历: 2.使用Stream流的方式过滤: 其中,链式编程(返回值就是对象自己)中,filter使用的是Predicate函数式 ...
- 用Java写了一个程序,将一个Mysql库中的表,迁移到另外一个server上的Mysql库中
用Navicat做数据迁移,因为数据量比较大,迁移过过程中一个是进展不直观,另外就是cpu占用率高的时候,屏幕跟死机了一样点不动按钮,不好中断. 想了想,干脆自己写一个. 在网上找了一个sqllite ...
- git介绍-常用操作(一)
Table of Contents 1 系列文章 2 git说明 3 git常用命令 3.1 基本操作 3.2 远程操作 4 查看git的配置 4.1 查看已配置项 4.2 其他配置 ...
- PHP中的日期相关函数(一)
日期相关的操作函数是我们在日常的工作开发中最常接触到的功能.当然,大部分同学可能最多用到的就是 date() . time() 这两个函数,我们今天先不讲这两个函数,或许后面的文章也不太会讲它们,毕竟 ...
- centos7.0 能ping通ip 无法ping通域名处理方法
第一步: 检查 vi /etc/sysconfig/network-scripts/ifcfg-eth0 查看网卡配置里的dns是否与 vi /etc/resolv.conf 的 nameser ...
- LR虚拟用户已设置集合点,但controller无法设置集合点策略的解决方案
原文来自:https://blog.csdn.net/qq_34982914/article/details/90905030 学习loadrunner的过程中,肯定涉及集合点的添加,但是我们按照书上 ...