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方法理解 四个单元测试理解与实践演进 课程收获 一点建议 第四单元作业架构设计 ### 第十 ...
随机推荐
- Excel模板导出之动态导出
说明 目前Magicodes.IE已支持Excel模板导出时使用JObject.Dictionary和ExpandoObject来进行动态导出,具体使用请看本篇教程. 本功能的想法.部分实现初步源于a ...
- 学习笔记-vue.js快捷登录 enter
一般监听在输入密码的input监听keyup事件,加enter修饰符.如果input是组件,加上.native修饰符.<div id="app"> <input ...
- java面试一日一题:mysql事务是如何实现的
问题:请讲下mysql的事务是如何实现的 分析:该问题主要考察对事务的理解及实现方式: 回答要点: 主要从以下几点去考虑, 1.对事务的概念的理解? 2.事务的实现方式? 讲到mysql的事务,很快可 ...
- PBRT阅读笔记——COLOR AND RADIOMETRY
四个关键概念 Energy(Q) 每一个光子都有特定的波长并携带特定的能量: 其中c为光速,h为普朗克常量. Flux(Φ) 辐射通量,可以直观理解为功率.是能量对时间微分得到的 ...
- Where is the Marble UVA - 10474
Raju and Meena love to play with Marbles. They have got a lot of marbles with numbers written on th ...
- 12- APP接口测试以及接口文档的分析
什么是接口? 为什么要做接口测试? 接口测试流程 需求评审 需求分析 接口用例设计 执行测试用例 bug的定位于追踪 接口文档分析 接口文档分析:开发 内容: 1.接口名称 2.接口地址 3.支持方式 ...
- 【接口参数解析BUG】SpringMVC接口参数解析
今天遇到一个BUG,前端传递数字数组时,后端使用字符串类型去接收,结果无法接收到,代码如下 问题: GET请求: 前端: configJsonArray:[1,2] 后端: private Strin ...
- MD5算法C/C++的实现
博客链接:http://blog.csdn.net/qq1084283172/article/details/52334027 在逆向程序的时候,经常会碰到加密的算法的问题,前面分析UC的逆向工程师的 ...
- IDAPython类库---idc.py的源码
#!/usr/bin/env python #--------------------------------------------------------------------- # IDAPy ...
- hdu4768 非常规的二分
题意: n个社团给同学发传单,同学一共有1--2^31这么多,每个社团有三个数A ,B ,C ,只有 满足 A ,A + C ,A + C + C ...A + KC <= B 的学 ...