• oo第四次总结作业


    一.测试与正确性论证

      测试就是针对某一程序,去模拟该程序的输入与输出,通过期望输出与实际输出的比较进行论证的方法

      而正确性论证是从程序的本质出发,从程序本身的逻辑出发,去论证程序正确与否,是否完成了要求的功能

      二者的区别显而易见,测试显然是一种较为简单,较为直接与直观,且比较简便的方法。通过编写测试数据就可以对于程序进行黑盒测试,不需要花大量时间在理解程序本身上。相比之下正确性论证就需要测试者对于程序本身就很细致的了解,对于要求功能有很细致的了解,每一部分的测试都会显得十分麻烦,尤其是在面对一些逻辑较为复杂的代码,正确性论证的工作量呈指数型增长。但另一方面,测试对于程序的覆盖量显然没有正确性论正来的可靠,很多时候大量的测试数据也无法有效覆盖程序的许多分支,这就使得测试变得不是那么牢靠,对于鲁棒性要求较高的程序还是选择正确性论证会更加有效与可靠。

    二.OCL语言和JSF

      OCL语言全拼为objective constraint language,中文叫做对象约束语言,是用来约束定义的,形式化无二义的语言

      课堂上使用的JSF和OCL语言有很大的相似处,也是对于程序进行定义与约束。不同之处在于OCL语言使用较为简便,不需要太强的数学基础也可以使用,而JSF中前置后置条件都需要以布尔表达式的形式进行表示,对于使用者有一定的数学要求

    三.第14次作业

      1.UML图

      

      2.顺序图

      

      3.状态图

      

      程序开始运行时,输入指令,判断格式后进入请求队列。调度器不断扫描电梯状态与请求队列。如果电梯可以接受指令且队列中有需要执行的指令,就把指令送给电梯。如果队列为空且电梯停止运行,则说明所有指令被执行完毕,调度器发出停止请求,程序停止

     

    四.学期总结

      1.四个单元

      本学期所学习到的内容大概可分为四个单元。第一个单元学习到了什么叫做面向对象编程,面向对象和面向过程的区别在哪里。第二个单元学到了多线程编程,体会到了编程的魅力所在,知道了多线程编程的运行特点及调试方法。第三个单元在之前的基础上加入了规格设计,学到了如何在宏观上对于程序进行设计与调试。第四个单元则重点学习了正确性论证,知道如何从科学理论的角度去评价一个程序的好坏

      2.个人进步

      先不说别的,单从编程角度来讲,oo这门课真的大幅度提升了我的编程水平。在看一些一年前的代码的时候甚至感到有些惊讶。以前在编程前从来不会进行良好的设计,就是想到什么就写什么,也不会进行什么论证,测试也是马马虎虎,最后整个程序下来就像是东拼西凑出来的一摊浆糊。oo这门课大幅度提高了我的编程熟练度和编程思路,也让我对于面向对象这个概念有了很深的了解。同时我也明白了合理设计代码的重要性。尤其是oo的系列性作业,如果一开始的设计有问题,之后只会变成拆东墙补西墙,越写bug越多,越补越忙的地步

      3.工程化的理解

      个人认为工程化相对于代码而言就是,规模巨大,且抽象程度较高。一个大工程可能需要许多个人一同编写。那么这就对于程序员有了很高的要求。首先要对于工程的需求有很深的理解,对于每一个部分有很深的理解,做到“什么代码就做什么事”,避免“上帝”的出现。同时对于个人代码的鲁棒性有较高的要求,整个工程息息相关,一个人的不留意可能会带来整个团队很大的困扰。同时个人代码的可扩展性,可阅读性也是我们需要注意的地方。

      4.关于课程

      吐槽的话不多说了,oo这门课是一个很伟大的尝试,但从同学们的反馈,助教组的反馈来看,还是存在一些问题。还是希望oo这门课能越办越好,让同学们以提升自我实力为目的。如果说每次作业都会让系里一片人骂的昏天黑地,至少这是我个人不太愿意看到的。在竞争中合作,在合作中竞争,共同前进,共同进步,让真正想学到知识的人努力得到回报,这才应该是课程的初衷,而不是花费大量时间在网页上和一个不认识的人互骂

  • 相关阅读:
    hdu 3268 09 宁波 现场 I
    hdu 3697 10 福州 现场 H
    CodeForces Round #521 (Div.3) D. Cutting Out
    #Leetcode# 226. Invert Binary Tree
    zufe 蓝桥选拔
    #Leetcode# 100. Same Tree
    #Leetcode# 6. ZigZag Conversion
    PAT 1084 外观数列
    #Leetcode# 38. Count and Say
    #Leetcode# 22. Generate Parentheses
  • 原文地址:https://www.cnblogs.com/kazr97/p/9224860.html
Copyright © 2020-2023  润新知