面向对象第四单元总结
一、面向对象第四单元总结
1.1 第一次作业总结
1.1.1设计思路
在本次的作业中,主体是类和接口,只要要处理的是类和接口自身的实现以及他们之间的继承和实现关系,而反应在输入标签上,主要是要理解各种类图元素的意义和关系。类图中的标签主要有:
标签 |
意义 |
UMLClass |
类标签 |
UMLOperation |
方法中的操作 |
UMLParameter |
操作中的变量 |
UMLAssociation |
互关联 |
UMLAssociationEnd |
关联一端 |
UMLInterface |
接口标签 |
UMLInterfaceRealization |
类实现接口 |
UMLGeneralization |
继承标签 |
UMLAttribute |
属性标签 |
每个标签内部有许多元素,就是这些元素和标签展现了整个UML类图的架构。在完成“类实现的全部接口”等操作时,需要采用递归查询的方法查询其父类实现的接口和他自身实现的接口,总的来说也不是很复杂。
1.1.2 类图
1.2 第14次作业总结
1.2.1 设计思路
此次作业新加的标签主要有:
标签 |
意义 |
UmlStateMachine |
状态机名称 |
UmlRegion |
画布 |
UmlPseudostate |
起始状态 |
UmlState |
中间状态 |
UmlFinalState |
终止状态 |
UmlEvent |
响应事件 |
UmlOPaqueBehavior |
状态转移结果 |
UmlTransition |
状态机的状态转换 |
UmlInteraction |
顺序图名称 |
UmlLifeline |
生命线 |
UmlMessage |
交互消息 |
UmlEndPoint |
顺序图终结点 |
UML002规则实现时,需要正确理解规则的含义,找到需要检查是否重名的元素集,即类图中的类(UMLClass)的名字,其成员属性(UMLAttribute)的名字和关联对端所连接的UMLAssociationEnd的名字不能有重名。 在上次UML作业的基础上,本次加入了类图模型有效性检查,这部分是实现的难点。此外还有状态图和顺序图的一些查询操作。状态图和顺序图的一些查询操作和第一次作业很相似,采用直接遍历或者递归查询的方法就可以解决问题。关于有效性检查则比较麻烦。
UML008规则实现时,看似简单的需求,实现起来却十分不容易,这里我上网查了算法,最后用Tarjan算法实现了对UML008规则的检查。
UML009规则的实现比较容易,我将目标所有的父类和实现接口都递归遍历一遍,如果发现重名,则可认为违反了规则。
1.2.2 类图
二、总结自己在四个单元中架构设计及OO方法理解的演进
第一单元的三次作业都是实现多项式的求导运算,由简到难,处理的难度越来越大,由于我是第一次写面向对象的程序,面对难度递进的任务,我三次都重写了代码,但是每一次重写我的代码,我都使用了新的方法,使得能够处理更复杂的问题。经过这三周的练习,我能深深的感受到我的进步,也理解到代码可扩展性的重要性
第二单元是多线程练习,我是第一次写多线程程序,本来第一次应该会比较难上手,但是傻瓜电梯是真的很好上手,我在网上找了找生产者消费者程序的例子,并且结合ppt上的例题,照着照着就写出来了,第一次体会到了多线程程序的结构是多么的清晰。紧接着第二次作业让我熟悉了调度器的作用,第三次作业则是更贴近现实的情景,在仅有的三次训练中,多线程该踩的坑我踩过了,多线程的各种方法早已铭记于心。
第三单元要是规格的处理,在这次作业中,也让我深刻理解了仔细读规格的重要性,第一次和第二次作业的bug都是因为没有好好的读规格,写程序都按照自己想当然的想法,没有深挖规格体现的意思,才导致了bug的产生。因为为自己也参与写过一些比较复杂规格比较大的程序,能深刻理解到规格的重要性。规格能让合作伙伴知道你写代码的功能,规格能让自己在很久之后也能明白自己写的程序的功能,规格还能让客户更好的理解自己写的程序的功能。特别是函数具体代码没开源的一些程序,有一个好的规格,才能让客户明白这个函数的作用。这次作业更加加深了我对规格的理解
第四单元是对UML类图的理解,通过这个单元的学习,一方面学习到了UML类图的知识,另外一方面也加深了我对Java接口,类,继承,实现等之间关系的理解,让我更加的了解了Java代码的结构。
三、总结自己在四个单元中测试理解与实践的演进
经过这几个单元的学习,我对于自己代码的测试也有了非常大的提升。第一单元学习时,我仅仅只是随便想几个表达式,输进去对了,就提交程序,然后再通过弱测时出现的错误更改自己的程序,一旦弱测通过,就觉得自己代码没问题了,最后强测结果就十分惨烈。第二单元开始多线程的学习,电梯楼层有限,出现的情况并不太多,于是我第一次开始自己罗列所有情况的测试集。最后弱测中测很容易过了,但是强测时却出现了超时情况,我意识到自己的测试集能检测正确性,却不能提供压力测试。第三单元时,对自己代码的执行速度有很大的要求,一旦时间复杂度过高,就可能导致cpu超时,这时我主要的测试手段是向各位大佬寻求输入集合很大,能够提供压力测试的测试数据。最后一次作业,主要测试手段是自己画图检测类图模型有效性。
四、总结自己的课程收获
通过这门课程的学习,我从对java一窍不通,到能够一个人两三天写出两千行Java代码,我都对自己的进步感到震惊。当然学习到一门语言很重要,但同时,这也是我学到的第一门面向对象的语言,这门课教给我的对面向对象语言的理解,我认为是更重要的。另外多线程的实现和安全,代码架构设计的的可扩展性,代码风格的规范性,这些同样已经深深刻在了我的心中。
五、立足于自己的体会给课程提三个具体改进建议
1、更加注重强测后bug的修复,特别是每个单元最后一次任务结束之后,部分同学可能没有改bug的动力。建议强测结束后开一个补测窗口。
2、希望老师和助教们能在每次作业强测之后,给出设计思路,方便没有完成的同学及时解决问题,不耽搁下一次的测试。强测通过的同学也能优化自己的代码。
3、课上上机测试的内容最好能在学生消化一周之后再测试。本学期出现很多次周四讲的新类容,周五马上就要测试,根本来不及练手理解。
转载于:https://www.cnblogs.com/CC1090348107/p/11073267.html
面向对象第四单元总结相关推荐
- 面向对象第四单元小结
面向对象第四单元:UML类图.顺序图.状态图 一.架构设计 第一次作业 第四单元第一次作业,需要完成的任务为实现一个UML类图解析器UmlInteraction,学习目标为UML入门级的理解 ...
- 面向对象第四单元(UML)总结体会课程总结
1.第四单元两次作业的框架设计 两次作业的框架设计是一脉相承的,第14次作业完全继承了第13次作业类中的方法. 通过对UmlElement类的分析,直接将前一次作业中涉及到的9个类在构造方法中便分开并 ...
- 面向对象第四单元总结和期末总结
一.本单元两次作业架构设计 (1)第一次作业 1.设计思路 这是UML的第一次作业,核心是理清UML的class.attribute这些元素之间的关系.这次作业的难度其实不是很大,但是代码量很多. 结 ...
- 面向对象课程第四单元作业总结
面向对象第四单元作业总结 一.第四单元架构设计 1.1 思考过程 本单元涉及到UML图的解析和查询,那么架构设计的核心便在于存储结构的设计.由于原本.mdj文件中元素的存储是使用树形结构来组织的,那么 ...
- 【面向对象】第四单元总结——UML
本单元构架设计 统一建模语言(英语:Unified Modeling Language,缩写 UML)是非专利的第三代建模和规约语言.UML是一种开放的方法,用于说明.可视化.构建和编写一个正在开发的 ...
- 面向对象程序设计第四单元总结(UML系列)
2019面向对象程序设计第四单元总结 前言 本单元是面向对象程序设计课程的最后一个单元了,本单元是和UML模型相关,也就是说,我们需要正确理解UML模型的基础上,对构建出的UML模型进行解析,但是 ...
- 【面向对象】第四单元UML总结及面向对象课程学期总结
目录 一.第四单元的架构设计 第一次UML作业 第二次UML作业 二.四个单元中架构设计及OO方法理解的演进 三.四个单元中测试理解与实践的演进 四.总结自己的课程收获 五.对面向对象课程的建议 一. ...
- 面向对象课程第二单元作业总结
面向对象课程第二单元作业总结 前言 电梯系列作业分为三个阶段,逐步深入实现越来越复杂的电梯运行状态模拟. 第一阶段实现单部多线程傻瓜调度(FAFS)电梯的模拟: 第二阶段实现单部多线程可捎带调度(AL ...
- 2019年北航OO第四单元(UML任务)及学期总结
第四单元两次作业总结 第十三次作业 需求分析 本次作业需要完成一个UML类图解析器,所需要解析的只有符合UML标准和能够在Java 8中复现的UML类图.查询指令存在两种:仅与所查对象有关的指令,以及 ...
最新文章
- 【网络安全】2022年第一次靶场渗透实战学习
- Tensorflow运行程序报错 FailedPreconditionError
- intellij2018使用2019的主题
- servlet获取相对路径 绝对路径
- StevenBoyd--Convex optimization--0. Contents
- 四位数码管秒表 c语言编程,4位共阴极数码管秒表设计仿真与程序
- 统计方形++(洛谷P2241题题解,Java语言描述)
- 关于aspx.designer.cs
- dijkstra 最短路算法
- iOS关键代码遭泄露;Google正式抛弃HTTP;微博网页版出故障 | 一周业界事
- C# 中 动态获得或设置一个对象的值
- Extjs中EditorGridPanel修改并获取数据的两种方式
- 【Get深一度】信号处理(三)——3db带宽
- 计算机二级MS office高级应用考试笔记攻略(完整-知识点)
- 工业相机测量仪毛管测量直径与长度值
- [内附完整源码和文档] 基于Java的个人通讯录管理系统
- android中的尺寸单位是什么,Android中各种长度尺寸单位(dp,dip,px,sp,pt)的区别
- Linux中cat、more、less、head、tail的区别
- 两个免费的文献翻译网站,支持多种专业翻译,多种语言!
- BZOJ 1502 NOI2005 月下柠檬树 Simpson自适应公式
热门文章
- Cocoon的sitemap详解
- python怎么读文件里的指定几行-Python从文件中读取指定的行以及在文件指定位置写入...
- 开课吧python小课值得么-好消息!今天,审计、会计、税务、财务主管彻底沸腾了……...
- python.freelycode.com-每一个人都需要的Python类库
- 开课吧python小课值得么-材料学硕博士建议掌握的高效论文工具
- python爬虫详细步骤-Python爬虫入门,详细讲解爬虫过程
- python使用input函数时、必须添加提示文字-浅谈python3中input输入的使用
- python爬虫吧-Python爬虫如何爬取贴吧内容
- 计算机二级python用什么书-计算机二级python考什么?
- python语言教程-Python 基础教程