OO总结
Posted jyqin1117
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OO总结相关的知识,希望对你有一定的参考价值。
一、测试与正确性论证
测试:从需求出发,构造测试集,给出期望输出,可以证明程序存在bug,但是无法证明程序是正确的
正确性论证:从程序最终实现出发,基于程序逻辑,通过假设、推理、论证,证明程序的正确性。
两相比较下,正确性论证具有更高的严谨性,但是也需要投入更大的时间精力。故两种方法难分高下,有不同的应用场景,需要针对性使用。
二、OCL & JSF
OCL(Object Constraint Language),即对象约束语言,是一种用于施加在指定的模型(UML)元素上约束的语言。
其特点为:
1. OCL是一种精确的,无二义性的语言。
2. OCL是一种规范说明性语言,所有有关实现的问题都不能用OCL来表达。
3. OCL是一种纯表达式语言,它是具有没有任何副作用的申明性语言。
4. OCL是一种类型化语言,即OCL中的每一个表达式都是具有类的。
5. OCL不是一种程序设计语言,不能用OCL编写程序逻辑和控制流程。
OCL表达对模型元素性质的约束时,常使用如下三种形式:不变量、前置与后置条件、let表达式。
与我们在课程中使用的JSF相比,OCL更多将重点放在对象内的数据项,而JSF是围绕方法与类展开的。
同时OCL的约束能力功能强,但是JSF实现起来更为轻便快捷。
两者的关系有些像上面论述的测试与正确性论证,使用的时候需要视情况而定。
三、单电梯系统的相关图
UML类图
顺序图
状态图
四、课程总结
4.1 四个模块知识点之间的关系
第一单元:java与对象
课程:对象与对象化设计(1)、对象与对象化设计(2)、继承多态与抽象
作业:多项式加减、单线程傻瓜电梯、单线程可捎带电梯
第二单元:并发与安全
课程: java对象运行机制与多线程、线程的安全设计、面向对象的需求设计与设计原则
作业:多线程电梯、IFTTT、出租车
第三单元:抽象与规格
课程:过程抽象与异常处理、数据抽象、类型层次规格与迭代
作业:出租车+流量、出租车+红绿灯、出租车+特殊出租车
第四单元:测试与论证
课程:面向对象测试、基于规格的程序正确性论证、如何更好地进行设计
作业:覆盖率测试、正确性论证报告、UML模型
四个单元知识循序渐进,但是又相互关联。
4.2 自己的进步
从第一次作业的“java从入门到放弃”,到现在轻松写出1k+行代码,拥有了一套电梯系统,随手召唤百辆出租车。OO一路走来,现在的自身的能力和做出的成果是三个月前,想都不敢想的。
开始两次作业对java的不熟练消耗了大量的时间,不知如何抽象出对象,艰难地从面向过程向面向对象迈进,那个时候,一份在现在看来小case的作业,需要花上我几天的时间,全身心投入地攻克,并且写出来的代码在现在看来,真的有些不忍直视。
接着进入多线程单元,犹记得自己和同学讨论了两天,脑海中仍旧一片混沌,设计框架理了一遍又一遍,又一次次推翻否决。不得不说,空想是最浪费时间的方法,把思路写出来、理清可以更好地帮助我们思考与解决问题。
进入了被最多吐槽的规格设计单元,坦白地讲,我是质疑的、不满的,甚至在不知道自己熬夜到底在写着什么的时候,是有些愤懑的。但是渐渐地,我觉得jsf没有我想象中的那么鸡肋,我们写的小程序与大的工程开发就是小巫见大巫,也许jsf在我们的代码里看起来是一种作业的负累,但是在大的工程开发中是团队成员间的桥梁。
一个学期的课程结束后,自己的进步是巨大的:
盲目测试>>>从代码中找bug
代码行数50+>>>封装、类层次划分
乱用try catch>>>尽量从设计保证程序鲁棒性
当然抗压能力和处事交流能力也得到了锻炼:从一开始看到被报bug就会暴跳如雷,到理智面对。
4.3 对工程化开发的理解
说道工程化就想起了学习计组的时候,高老板的工程化设计表格。不得不说,那个表格拯救了我混沌的大脑。
这个学期的OO课程学习又是一次工程化设计之旅。每次作业,接到指导书,分析需求;进行整个程序的框架层次设计;然后进行细化,完善每个类的属性功能细节;完成了这些准备工作就可以着手码代码了。之后,对编写的代码进行测试;交作业,进行互测。
从这个作业完成流程中,可以简单地抽象出工程化开发的流程:
接到项目 --> 需求分析 --> 框架设计 --> 细化设计 --> 代码编写 --> 项目测试 --> 交付使用
感觉工程化开发的核心就是将一些方法流程抽象成一个模板,进行严谨的、统一的规约,虽然不是十分灵活,但是在大的工程开发中可以保证规范性,有助于团队统一开发。
4.4 对课程的期望与建议
首先在课程体系上,希望在同学们具备了java基础后,先讲授规格设计单元,让同学们养成根据需求撰写代码的好习惯,而不像我们先写代码,然后根据代码实现编写JSF。
对于互测,希望进行更加严格的审查,避免恶意扣bug,这种行为是非常过分的,应该进行严肃处理的。
另外,历次作业的指导书也需要完善。在这学期,很多次作业的指导书都出现了漏洞和巨大的问题,然后助教组和老师进行商讨后,又多次改动,对同学们做作业造成了很大的困扰。同时,也需要一个统一的、明确地信息发布平台,很多问题最后助教给出的答复可能在不同的群,issue上的答复也可能有改动,但是这些不是所有的同学都能知道,因为这些问题,很多的同学都在互测中被报了bug,然而并不是没有能力实现的问题,而是给出的需求不统一、不明确的问题。希望课程组能重视这个问题,并在下一届有相应的举措解决问题。
记录一下自己OO之路~
一个学期的课程就这样结束啦,撒花庆祝,感谢课程组老师和助教们的辛苦付出~
以上是关于OO总结的主要内容,如果未能解决你的问题,请参考以下文章