oo第四单元作业总结
一、本单元两次作业的架构:
本单元两次作业的架构基本是一致的,所以两次作业的架构就一起说了。
为了避免查询时出现同一个结果反复计算的情况(连续两次查询一个类的顶级父类,如果我们在查询的指令中来计算其父类,那么就需要进行两次重复的计算。)然而如果我们在实现Umlniterface接口的时候,就根据已经解析好的elements信息来把可能会被查询的所有数据都提前算出来存好,查询的时候就把他提取出来就可以了。
基于这种考虑,这两次作业我采用了这样的结构:首先,用一个类来实现官方给出的接口,这个类只有接口给出的查询功能。至于具体要查询的内容,需要另外创建一个类,这个专门用来存放和构建各类查询会用到的hashmap。
二、我对面向对象概念理解的演进:
面向对象课程的第一单元,是和我们以前学的c语言这样面向过程的基本无差别的内容,这一单元中,主要还是在熟悉c语言的语法结构,但同时,在第一单元三次作业的不断重构和优化的过程中,我也慢慢体会到面向对象的封装性的好处,这个好处有两个方面,首先,一个具有良好封装行的代码,比较容易修改,因为不同类之间很多内容彼此之间是不可见的,这带来的好处就是,你在修改一个类时,不用考虑另外一个类的太多牵扯;其次,两外一个好处就是,良好的封装性一般也就意味着一个优秀的架构,一个优秀的架构能让你在写代码时思路更清楚,同时写出来的代码也更具可读性,具有更良好的可修改行。第二单元的作业,专注于多线程,这是我之前从未接触的一种编码思路。第三单元是jml语言的学习,通过这一单元的学习,我体会到了在编写一个工作量比较大的代码时,如何与人协作,当然,在这一单元的代码性能要求也是我之前没接触过的,在写这一单元的作业时,我学习了很多优化性能的算法。第四单元是uml的学习,这一单元感觉上作业的内容,重点和难点都不在uml上,而是统计uml的算法,本质上和第三单元没太大差别。
三、课程收获
面向对象课程给我最大的收获有两个方面。首先,面向对象是一种不同于我以往所学习的编程思想,他是针对的不是事件执行的过程,而是参与事件执行的对象。比如电梯从1楼到5楼的过程,以面向过程的思路来看待这件事儿,就是单纯的电梯前往乘客所在的楼层——>电梯开门——>乘客进入电梯——>电梯关门——>电梯运行到目的楼层——>电梯开门——>乘客出电梯,这样一个事件的完整执行过程,然而如果从面向对象的角度来思考这一过程,就要分为两部分来思考——乘客和电梯,乘客有名字,出发楼层和目标楼层等属性,以及进出电梯的方法,电梯有停靠楼层的属性,以及向上下运行,开关门的方法。然后用电梯对象和乘客对象的这些属性和方法来组成整个事件。
面向对象给我的另外一个收获,是对于多线程的理解。多线程对于我来说是一个全新的概念,线程之间同步异步,交互以及死锁,是一种全新的写代码需要考虑的因素。
四、对课程提出的几点建议
(1)首先是对于互测环节的一点吐槽(针对第三单元),由于第三单元互测的数据量都很大,所以从数据从数据上很难找到自己程序中在强测之前就没找到的问题。而且,更为重要的一点是,很多bug是性能上的问题,这个优化要满足大佬们数据的要求真的很难,就出现了被狼人狂刀而无法自救,心态炸裂的问题。
(2)然后是关于强测数据点给分的问题,由于很多时候强测数据都会不可避免地对一个问题进行反复测试,这样就会出现由于一个bug而倒是全盘崩溃的局面,建议debug阶段,对于强测部分的debug,如果是合并修复,能够返回多一点儿的分数。
oo第四单元作业总结的更多相关文章
- 【OO学习】OO第四单元作业总结及OO课程总结
[OO学习]OO第四单元作业总结及OO课程总结 第四单元作业架构设计 第十三次作业 第十四次作业 总结 这两次作业架构思路上是一样的. 通过将需要使用的UmlElement,封装成Element的子类 ...
- oo第四单元作业总结暨课程总结
oo第四单元作业总结暨课程总结 一.本单元作业架构设计 本单元需要构建一个UML解析器,通过对输入的UML类图/顺序图/状态图的相关信息进行解析以供查询,其中课程组已提供输入整体架构及输入解析部分,仅 ...
- OO第四单元作业总结以及课程总结
第四单元总结--UML 第四单元作业架构分析 第一次作业其实是本单元三次作业中最难的一次.由于第一次是第一次作业,要考虑到搭建框架和设计架构,这次作业的思维性很强.在了解了各个类型元素(Element ...
- OO第四单元作业小结
一.本单元两次作业的架构设计 1.第一次作业 整体思路:以class为核心,建立MyInterface.MyAttribute.MyOperation.MyAssociation四个类分别储存每个类的 ...
- 北航OO第四单元作业总结(4.1~4.3)及课程总结
前言 在学习过JML规格描述语言之后,本单元进行了UML(Unified Modeling Language)的学习.和JML单纯用语言描述的形式不同,UML通过可视化的图形形式,对一系列有关类的元素 ...
- OO第四单元作业总结及课程总结
一.本单元作业架构设计 1.第一次作业 本单元首次接触到UML以及相关概念,在面对第一次作业时首先花了很大功夫去阅读官方接口中各种UmlElement的代码,才理解了输入的模型元素中各属性的含义.总的 ...
- UML结构与解析——BUAA OO第四单元作业总结
UML与解析架构 UML是什么 统一建模语言(英语:Unified Modeling Language,缩写 UML)是非专利的第三代建模和规约语言.UML是一种开放的方法,用于说明.可视化.构建和编 ...
- BUAA OO 2019 第四单元作业总结
目录 第四单元总结 总 UML UML 类图 UML 时序图 UML 状态图 架构设计 第十三次作业 第十四次作业 课程总结 历次作业总结 架构设计 面向对象方法理解 测试方法理解与实践 改进建议 尽 ...
- OO第四单元博客作业
OO第四单元博客作业 BUAA_1706_HugeGun 目录 第四单元作业架构设计 四个单元架构设计及OO方法理解 四个单元测试理解与实践演进 课程收获 一点建议 第四单元作业架构设计 ### 第十 ...
随机推荐
- ch1_5_2求无序序列中第k小的元素
import java.util.Arrays; import java.util.PriorityQueue; public class ch1_5_2求无序序列中第k小的元素 { public s ...
- 一本关于HTTP的恋爱日记
1991年 8月 我叫客户端,英文名字 client. 她叫服务端,英文名字 server. 这一年,我们出生了. 是的,我们都是90后. 我爱她,可是她却远在天边. 为了和她可以互诉衷肠,我同时发明 ...
- NumPy之:NumPy简介教程
目录 简介 安装NumPy Array和List 创建Array Array操作 sort concatenate 统计信息 reshape 增加维度 index和切片 从现有数据中创建Array 算 ...
- Day07_36_Iterator迭代器
Iterator Iterator Iterator iterator(); 获取集合所依赖的迭代对象 通过迭代器iterator()中的方法完成集合的迭代(遍历),这种方式是所有集合通用的遍历方法. ...
- Kubernetes 降本增效标准指南 | 基于K8s 扩展机制构建云上成本控制系统
作者 王玉君,腾讯云后台高级开发工程师,负责腾讯云原生系统开发及建设. 晏子怡,腾讯云容器产品经理,在K8s弹性伸缩.资源管理领域有丰富的实战经验. 导语 Kubernetes 作为 IaaS 和 P ...
- 通过ECK部署elasticsearch集群(k8s+elasticsearch+kibana)
参考 https://blog.51cto.com/14783669/2558785
- EhCache缓存使用教程
文章发表在我的博客上:https://blog.ysboke.cn/archives/124.html 什么是ehcache 纯Java的进程内缓存,直接在JVM虚拟机中缓存,速度非常快.缓存有两级, ...
- IDEA关于-javaagent中文路径导致无法debug的初步解决方案
IDEA明明是装在D盘的纯英文路径,而且java的相关环境变量全部是在英文路径,结果还是因为中文路径的问题导致无法debug.仔细观察,发现这个中文路径是作为java的-javaagent的参数输入的 ...
- Laravel artisan 命令
获取命令列表 php artisan Laravel Framework 7.26.0 Usage: command [options] [arguments] Options: -h, --help ...
- Docker怎么实现容器之间的通信?
//TODO 参考资料: https://developer.aliyun.com/article/55912 https://blog.csdn.net/u011541946/article/det ...