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方法理解 四个单元测试理解与实践演进 课程收获 一点建议 第四单元作业架构设计 ### 第十 ...
随机推荐
- CodeForces - 1360C
C. Similar Pairs time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...
- 使用命令行编译Qt程序
code[class*="language-"], pre[class*="language-"] { color: rgba(51, 51, 51, 1); ...
- CrackMe_002
老规矩,先熟悉程序. 只有一个验证的功能,错误提示You Get ... 关闭没有nag窗口 第一种,暴力破解 查找字符串,很少,直接双击进入 可以看到错误提示的跳转来自: 表示这应该是个重要的跳转, ...
- Dapr | 云原生的抽象与实现
引言 Dapr 是微软主导的云原生开源项目,2019年10月首次发布,到今年2月正式发布 V1.0 版本.在不到一年半的时间内,github star 数达到了 1.2 万,超过同期的 kuberne ...
- 解决JDK9以上的非法反射访问警告
1 问题描述 JDK9以上很多库都有这种非法反射访问的警告,比如protostuff: 解决方法两个: JDK降级 添加JVM参数 2 原因 降到JDK8能解决以上问题. 但是这不是本文的重点. 先说 ...
- JAVAEE_Servlet_23_路径编写总结和url_pattern的编写方式
路径编写总结和url_pattern的编写方式 路径的编写 超链接 form表单的action属性 重定向 response.sendRedirect("/项目名/资源路径"): ...
- 痛!痛!痛!我们的好兄弟Git,一路走好!
文章是正经文章,标题不要在意,哈哈 Git作为现在主流的版本控制工具,但是如何在软件开发过程中进行合理的分支管理是一个见仁见智的问题. 接下来我会对比下现有的几种比较普遍的分支管理方式和之前在阿里时候 ...
- 【MQ中间件】RabbitMQ -- RabbitMQ死信队列及内存监控(4)
1.RabbitMQ TTL及死信队列 1.1.TTL概述 过期时间TTL表示可以对消息设置预期的时间,在这个时间内都可以被消费者接收获取:过了之后消息将自动被删除.RabbitMQ可以对消息和队列设 ...
- 基于MATLAB的手写公式识别(9)
基于MATLAB的手写公式识别(9) 1.2图像的二值化 close all; clear all; Img=imread('drink.jpg'); %灰度化 Img_Gray=rgb2gray(I ...
- RF-获取body
一个很简单的场景:GET方法获取某URL的body信息,直接读取即可,不做处理 *** Test Cases *** GetToken Create HTTP Context host=192.168 ...