OO第四次博客

1. 论述测试与正确性论证的效果差异,比较其优缺点

测试与正确性论证的区别跟那些化学实验性质是一样的。总会现有正确论证,就是按道理按逻辑应该得来的结果。可事实证明这些论证全都需要证明的因为不一定正确,毕竟论证也是人做的,总会有bug(错误)。于是需要再进行测试来证明那些可能漏的test case。并不能说论证没用,要是没有那些规格性的知识我们要开始测试也难,因为范围太广,也可以说是互相弥补吧。最后得来的结果可以对比一下推断最后的论断。

2. 调研OCL语言,并比较其与课程所介绍的JSF规格之间的相似和不同之处

OCL和JSF的相同之处在于它们两个都是写规格的一种语言。

对象约束语言(OCL)是一种声明性语言,描述适用于IBM开发的统一建模语言(UML)模型的规则,现在是UML标准的一部分。

而JSF是用于为Web应用程序构建基于组件的用户界面的Java规范,并通过作为Java平台企业版一部分的Java社区过程作为标准形式化。 它也是一个MVC Web框架,它通过在页面中使用可重用的UI组件简化了基于服务器的应用程序的用户界面(UI)的构建。JSF一般都是以注释形式写在Java代码里:

/**

 * @REQUIRES:

 * @MODIFIES:

 * @EFFECTS:

 */

这三者分别为:Requires(就是这功能需要些什么条件),Modifies(将会改变的东西),和Effects

3. 根据第十四次作业的单电梯系统,针对调度器、电梯、请求队列和 请求,至少整理出 一幅UML类图、一幅顺序图和一幅状态图,并使用图(graph)来表示出模型

 

4. 整理总结一个学期所学所练

  4.1阐述四个单元模块知识点之间的关系

  • 第一单元:初识面向对象

  这第一个单元主要是知识对面向对象的初步了解,3次实验中做的东西也并不是很复杂,主要在于让学生能了解面向对象的概念。

  • 第二单元 多线程设计与面向对象设计

  多线程设计也就是第一单元的更深入的知识了。他就是把第一单元做过的东西优化,加一些跟多线程有关的事,毕竟到了真正做程序的时候不可能知识做单线程,因为大多程序本质上都是复杂的,虽然我作业也没能写得很完美(主要是因为语言障碍很多时候有不了解题目要求等等)不过我做过其他程序,比如说游戏中的仓库和店之间的关系,这完全是多线程,有游戏中人的buff与其他事情的关联,很多东西都是多线程,哪怕是最简单的程序大多时候都有那么几个多线程的东西,怎么样才能设计的很安全。这安全并不是说怕黑客什么的而是加入有预料不到的东西程序也还能正常工作,加入有什么需要改的地方不需要一个一个浪费时间地去改(SOLID)。

  • 第三单元 规格化设计

  规格化设计也就是些JSF的那些实验了。些规格其实并不难,只要你设计的好,你明白每个功能的逻辑和思想跟些design document没什么区别。对我来说难的就一个,国际网(google上等等)虽然有JSF但与要求中的JSF规格语法上有些不一样,而要求中虽然有解释可我也没太看懂,只能看得越多越明白。

  • 第四单元 测试与正确性论证

  测试也就是测之前的作业,找找BUG也同时跟正确性论证证明/对比/核对。

  4.2梳理自己所设计实现的程序,分析自己在设计、测试和质量上的进步

  Java其实我是第一次用的。课程开始之前我其实早知道用的语言一定是人们常用的OOPL,而我知道的是C#和Java。我虽然没怎么用过Java但我又几次写过一段简单的Java代码,可能是因为写的只是简单的代码所以以为跟C#没多大区别。可是原来实现更深入更复杂的功能时发现还真的是不一样。自我开始上这门课以后其实我脑子里已经没有对语言的依赖的概念了。语言只是一个工具而真正用到的是逻辑和思想,跟语言没什么大的关系。但是,也确实不能完全不懂那些语言,而我对Java就连最简单的引用(比如List,input中的各个东西)都太懂,又怎能会顺利的实现一个复杂的程序。直到最近我越没有对语言的依赖才后悔没早点明白,因为当时我只懂得设计,而不知道具体要怎么实现,功能里需要写什么代码。不过,确实对我的编程能力和逻辑思维有大大的帮助。

  4.3阐述自己对工程化开发的理解

  (首先我对这题目也不确定是否是我下面些的内容)

  开发一个软件或者任何跟程序有关的东西,并不是小事。当你真正做一个完整的程序时就会发现,程序中需要好多功能,不仅仅是一两个。作业中虽然看起来难,但来来回回其实就那几个功能,问题就是如果你前面没做好后面就完了。而真正的程序,我做个例子:

  我现在正在开发一个电脑游戏。这游戏是一个RPG,不用想太远,一个RPG定有的东西是什么?就是,inventory,vendor,quests,player stats,battle。

  首先看,inventory和vendor是相关联的。他们是继承是肯定的,因为本质是一样只是功能不一样。

  第二,player stats和battle也肯定相关联的。因为每次打怪对玩家的比如说血啊什么的都有影响。

  而quests基本上跟啥都可以有关系。

  那如果你们玩一个只有这些基本功能的游戏是不是没意思啊?但如果真的要做起来其实很多很复杂。一个不小心,SOLID没考虑到,那改一个东西需要很长时间了,更别说还会有bug。所以多线程和线程安全的知识肯定都用上了,肯定,没有不需要那些知识的程序。我刚开始开发的时候也不懂这些道理和知识,改个东西改半天还有bug。所以如果说面向对象只是一个加项,那你大可试试开发游戏不用考虑SOLID和线程安全。

  4.4对课程的任何期望或建议

  其实我觉得这门课的老师和课程的设计都没毛病。因为我之前用C#学过一段时间的面向对象,就是一样的道理和知识,作业也其实并不难。可我的问题主要有两个:

  - 我以为Java和C#很像但我下手些Java的时候却发现自己懵了

  - 每次有作业我很难明白作业要求,一开始的几次作业也没来得及参加而后面的作业是基于前面的作业。除了这些问题我个人真的觉得没任何问题。课程很好,老师们也都很好。可能是让每次作业都不要相关联,因为如果关联自然有好处,就是不用每次新作业又设计一个新的程序,可是考虑到的是如果前面还没能跟上的人,那越到后面就越难跟上了。

posted @ 2018-06-25 19:47  JadenRuneIris  阅读(186)  评论(0编辑  收藏  举报