(1)本单元是撰写UML数据分析器,架构大致如下,在指导书要求的函数外,对于UmlClass类,Umlinterface类,以及状态机,顺序图这四个类重现构造一个类,这个类里有他们所需要的全部信息,另外还有三个check类和操作类,一遍提高代码的可读性。

(2)第一个单元,我根本不知道何为架构,我每次代码都用的一个poly类(行数不够就分一个类出去,分担一下好引用的函数),第二次作业是电梯,电梯作业其实还是架构很清晰的,但是我在那个时候不是很会哟用继承,导致出现了一些bug,因此从第三次作业开始我开始使用继承这一功能,同时每次写之前会仔细思考需要用到哪些类,然后他们之间的关系是什么样的,我应该怎样关联他们都会仔细思考,也就导致虽然比第一个单元难,但是代码更好写,更好读,更方便debug,同时一个类不会很长,但是类的数量大大增加。

(3)测试这东西在oo之前我真的没怎么进行过,偶尔会对几十行的c语言代码进行调试,想oo这种大作业大代码量的调试从未进行过,所以一开始其实是很懵的。后来在第二单元学会了写评测机去进行对拍测试,第三单元后学会了用专用的JUnit配合JML规格进行测试,这种方法效率很高。同时对代码进项架构化设计和,debug可以按照区域去de,也比直接看500行好受多了。

(4)收获真的比我想象中的多,早有听闻oo的“恶名“,但是这学期改进了太多,让我感觉真的学到了东西。Java的使用变得无比熟练,从一开始的不会debug变成后来的debug小能手,从开始的毫无架构,变成现在的写代码先想架构,还有学会了JML的使用,学会了去看UML图,学会了多线程撰写,学会了永不放弃,只要努力,一定能写出好的代码等等!

(5)三个具体建议

一:不要把多项式求导放在第一单元,其实仔细思考下来,多项式求导的第三次作业才是整个oo作业难度峰值,应该放在第二单元或者第三单元去,那个时候大家的水平有了提高,同时那个时间段不会特别忙,更容易写出高质量的代码,起到锻炼效果。

二:最后一次作业其实蛮有趣的,建议把这种作业的标准再明确,不要让指导书里出现太多的非议,或者老师可以在课上对这一部分进行说明,解决大家的由于语文导致的问题。

三:第三单元作业对于算法的要求太高了,希望能降低一点难度,更偏向于读JML规格化,可以考虑在指导书中不明确每一个函数的用处,主要让学生通过读JML去理解(这就要求JML必须是对的),这样可能更有意义一些。

其实上学期很多学长们都说oo非常魔鬼,但是目前开来不是那么魔鬼,课程组和助教都对这门课尽心尽力,使它现在变的很优秀。感谢老师和助教一直以来的努力,辛苦了。如果让我评价这门课,我会说我很喜欢,学到了很多东西!最后祝oo越来越好!

第四次oo博客作业的更多相关文章

  1. OO博客作业-《JML之卷》

    OO第三单元小结 一.JML语言理论基础以及应用工具链情况梳理 一句话来说,JML就是用于对JAVA程序设计逻辑的预先约定的一种语言,以便正确严格高效地完成程序以及展开测试,这在不能容忍细微错误的工程 ...

  2. OO博客作业1:第1-3周作业总结

    (1)基于度量来分析自己的程序结构 注:UML图中每个划分了的圆角矩形代表一个类或接口,箭头可代表创建.访问数据等行为.类的图形内部分为3个部分,从上到下依次是类的名称.类包含的实例变量(属性).类实 ...

  3. BUAA_OO第四单元总结性博客作业——UML(Floyd实现规则检查?)

    一.架构设计 1.UML第一次作业——类图 第一次作业基于不同element在UML规格中的从属关系来设计架构.继承了UmlInteraction接口的MyUmlInteraction类是主要的交互层 ...

  4. OO博客作业3:第9-11周作业总结

    一.总结介绍规格化设计的大致发展历史和为什么得到了人们的重视 1.规格化设计的大致发展历史 规格化设计,又称契约式设计,最早由Bertrand Meyer于1986年提出,出自于<面向对象软件构 ...

  5. OO博客作业4:第13-14周作业总结

    一.论述测试与正确性论证的效果差异,比较其优缺点 测试是设计若干组测试用例,运行程序并检验其是否完成预期功能.测试是一种直接发现BUG的方法,可以准确断定什么样的BUG会发生,并通过辅助调试进一步确定 ...

  6. 第一次oo博客作业--表达式求导

    (1)说实话我这部分真的不知道写些什么,因为我只有第三次作业写了两个类,前两次都是一个类,一个类的好处可能也就是写起来比较方便(不用抽象什么共性了,直接c语言莽过去),缺点很多,架构不清晰,可读性不高 ...

  7. 第四次oo博客

    论述测试与正确性论证的效果差异 单元测试利用测试者构造的测试用例来检查类或方法的正确性,一般来说所需要测试的用例是无穷多的,通过人为构造代表性的测试用例来尽量测试所有代码.测试的优点在于不易出错,只要 ...

  8. OO博客作业2:第5-7周作业总结

    (1)从多线程的协同和同步控制方面,分析和总结自己三次作业来的设计策略及其变化. 第5次作业:多线程电梯 基本照搬了课件上“生产者-消费者”模型的设计策略,将InputHandler设计为生产者线程, ...

  9. 第二次oo博客作业--多线程电梯

    这次的系列作业是写一个电梯调度,主要目的是让我们熟悉多线程. 第一次作业是一个傻瓜电梯的调度问题,要求也很简单,即每次接一个人就行了.我只用了两个线程,一个是输入线程,一个是电梯线程,输入线程负责从标 ...

随机推荐

  1. 使用整体模型模板辅助器 Using Whole-Model Templated Helpers 模板辅助器方法 精通ASP.NET MVC 5

    怎么会

  2. SIR模型预测新冠病毒肺炎发病数据

    大家还好吗? 背景就不用多说了吧?本来我是初四上班的,现在延长到2月10日了.这是我工作以来时间最长的一个假期了.可惜哪也去不了.待在家里,没啥事,就用python模拟预测一下新冠病毒肺炎的数据吧.要 ...

  3. mysql安装教程linux

    https://www.cnblogs.com/YangshengQuan/p/8431520.html 设置sql远程访问

  4. Kafka系列1:Kafka概况

    Kafka系列1:Kafka概况 Kafka是当前分布式系统中最流行的消息中间件之一,凭借着其高吞吐量的设计,在日志收集系统和消息系统的应用场景中深得开发者喜爱.本篇就聊聊Kafka相关的一些知识点. ...

  5. 深入并发锁,解析Synchronized锁升级

    这篇文章分为六个部分,不同特性的锁分类,并发锁的不同设计,Synchronized中的锁升级,ReentrantLock和ReadWriteLock的应用,帮助你梳理 Java 并发锁及相关的操作. ...

  6. 七、django学习之聚合函数

    七.django学习之聚合函数 如何使用 from django.db.models import Avg,Max,Min,Sum models.Book.objects.all().aggregat ...

  7. Spring(五)核心容器 - 注册 Bean、BeanDefinitionRegistry 简介

    目录 前言 正文 1.BeanDefinitionRegistry 简介 2.registerBeanDefinition 方法注册 Bean 最后 前言 上篇文章我们对 BeanDefinition ...

  8. codeforces 540D Bad Luck Island (概率DP)

    题意:会出石头.剪刀.布的人分别有r,s,p个,他们相互碰到的概率相同,输的人死掉,问最终活下去的人是三种类型的概率 设状态dp(i,j,k)为还有i个石头,j个剪刀,k个布时的概率,dp(r,s,p ...

  9. 使用 TF-IDF 加权的空间向量模型实现句子相似度计算

    使用 TF-IDF 加权的空间向量模型实现句子相似度计算 字符匹配层次计算句子相似度 计算两个句子相似度的算法有很多种,但是对于从未了解过这方面算法的人来说,可能最容易想到的就是使用字符串匹配相关的算 ...

  10. 用EFCore的 FluentAPI 方式生成MySql 带注释的数据库表结构

    采用的是net Core 3.1框架下的 的WebAPI项目. 1.  创建ASP.NET Core Web项目  2. 添加NuGet引用包,包如下 Microsoft.EntityFramewor ...