博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ohmr的UML作业
阅读量:4983 次
发布时间:2019-06-12

本文共 1943 字,大约阅读时间需要 6 分钟。

一、第四次作业架构设计


第四次作业整体来说未出现较为严重的问题,虽然一波三折,但也算稳稳收尾。

第四次作业以UML图为核心,借助官方解析库,将UML图中的信息提取出来反馈给评测机,整体架构与第三次作业(JML)大同小异。

 

1.1、第一次作业

要求实现MyUmlInteraction与Main类,其中MyUmlInteraction的构造方法带有参数UMLElement数组,该数组包含了所有Uml类图的信息。

在提交的版本中,由于设置了充分多的缓存,未像第三次作业一样,出现大规模的CTLE错误,稳稳的通过强测。

代码架构上,我选用树形结构,借助UMLElement中包含的信息,重建Uml类图中包含的类信息。构建MyClass、MyInterface、MyOperation、MyAssosiation等类,便于存储的同时也方便查询,接口中的函数实现起来更为简便。

 

1.2、第二次作业

要求实现MyUmlGeneralInteraction与Main类,其中MyUmlGeneralInteraction的构造方法带有参数UMLElement数组,该数组包含了所有Uml类图、顺序图、状态图的信息。

在提交的版本中,依然设置了充分多的缓存,未出现CTLE错误。

第二次作业与第一次作业相比,多出了状态图和顺序图的分析,同时还增加了全局检查的机制,若Uml图中存在规定的几种错误情况,则报错并直接退出程序。

个人认为UML第二次作业的查询指令并不困难,主要工作量在全局预检查上。由于笔者错误的处理Interface成环检查的广度优先搜索,导致强测中最后一个点漏报了一个错误。将循环体中的return修改为continue便通过了所有的评测。

 

二、四次作业OO方法理解演进


2.1、表达式求导

初步接触面向对象,本人整个作业的关注点更多的放在熟悉java语法、数据结构及正则表达式上,对OO的方法和技巧并未有太多的深刻研究。

2.2、多线程电梯

个人认为第二次作业是四次作业中,最纯粹的面向对象作业。电梯问题,三次作业中需求层层递进,每一次都是面向对象的一次升华。在一个需求逐步完整、任务逐渐繁复的工程中,利用OO解决问题、简化问题。将电梯和用户都看成对象,每个对象都管理着若干个属性,同时还拥有若干个方法,这些都是在先前其他课程中未曾有过的大胆尝试。并且在第二次作业的实现过程中,能够真真切切面向对象思想带来的便利。所以我认为,第二次作业是四次面向对象作业的巅峰。

2.3、JML作业

第三次作业与第二次作业相比,显得有些不知所云,课程组似乎将重心从面向对象的学习转移到了Java的进阶。这次作业的最大收获是HashSet与HashMap两个数据结构的熟练使用,相比于ArrayList,两者有性能上的明显提升。不知是课程组有意为之还是实在力不从心,第三次作业着实让笔者感觉更像是数据结构课程的要求,在没有点明的情况下对性能进行较为严苛的测试,让笔者有些摸不着头脑。

2.4、UML作业

第四次作业的重点放到了UML上,UML是一个很有必要掌握的知识,笔者在第四次作业中学习了解了Uml类图、状态图、顺序图这三个常见常用的图。

总的来看,前两次作业合情合理,也确实学到了很多面向对象的技巧和知识,但是后两次作业似乎偏离了面向对象的思想,从学习面向对象变成了科普Java进阶操作。

 

三、四次作业测试理解与实践演进


  • 第一次作业未接触测试方法,采用最传统的编写脚本自动生成多项式进行测试
  • 第二次电梯作业,由于需要模拟不同时间阶段到达的乘客,因此使用“按键精灵”写脚本进行模拟测试
  • 第三单元JML作业,讨论区提供了JMLUnit和OpenJml等一系列工具进行使用,但实际使用过程中,用户体验并不理想,存在许多语法不支持、不兼容的现象
  • 第四单元的测试用例基于UML图,不便于自动生成,故笔者选择自己绘制UML图,并借助控制台指令生成测试样例。

四、课程收获


  • 从0基础到学会了Java语言的基本使用
  • 面向对象的诸多特性和独特的架构方式
  • 尝试编写脚本以自动生成测试样例
  • 从传统单线程的程序到多线程电梯实验,感受到不一样的画风
  • 利用工具链简化编程过程并降低调试难度

五、课程建议


  • 整体实验设计不尽合理,前两次作业几乎占据了全部的学习内容,后两次作业似乎只是在练习Java语言的使用。
  • 理论课与实验课没有直接的联系,笔者水平有限,自认为脱离理论课并不会影响实验课的进度。
  • 不反对评测机对代码性能提要求,但是建议给学生一个测试自己代码性能的途径,本地运行结果和评测机运行时间有较大的差异,不具有参考价值。

转载于:https://www.cnblogs.com/Ohmr/p/11074329.html

你可能感兴趣的文章
ORM框架与mysql数据库的无缝对接
查看>>
在centos上使用yum安装rabbitmq-server
查看>>
SpringBoot项目如何打War包
查看>>
Managing Dynamic Objects in C++
查看>>
计算excel列的名字
查看>>
自助Linux之问题诊断工具strace
查看>>
JDBC为什么要使用PreparedStatement而不是Statement
查看>>
delphi调用LUA函数来处理一些逻辑
查看>>
MySQL下分页查询数据
查看>>
解题报告 幸福的道路
查看>>
Windows Service
查看>>
数据结构小练习
查看>>
jQuery的选择器
查看>>
python time模块
查看>>
省市区联动
查看>>
省选专练POI2015Logistyka
查看>>
CCPC2016合肥现场赛
查看>>
layui 框架之秒传文件 (前端分段 MD5 型成秒传)
查看>>
Asp.net 在刷新或提交页面后保持滚动条的位置
查看>>
JVM类加载原理学习笔记
查看>>