oo第四阶段总结

oo第四阶段总结

一、关于测试与正确性论证

  测试是根据代码功能构造相应的数据,通过结果的正确性来判断代码中是否有bug。

  正确性论证是根据代码的规格,以自然语言的形式对代码是否能够实现相应功能、是否能够对相应异常进行处理进行论证。

  总的来看,正确性论证更为宏观,适合于大型系统的宏观正确性控制,即对大型系统进行错误的检查,由于其使用的是自然语言,因此也更加直观,便于检查过程中的交流理解,但正确性论证难以保证规格内代码是否能够准确实现规格所说明的功能,即无法从实际论证代码的正确性。而通过数据进行测试则更加微观,尤其在课程后期,引入了运用junit进行检查的方法后,如果数据构造足够充分,能够实现分支和代码的百分之一百的覆盖,从而验证代码功能的正确性,但是,随着代码量的增加,要想做到百分之一百的代码覆盖率和分支覆盖率,构造的数据量将会十分庞大,同时构造难度也会提升,因而数据测试更适合局部代码的正确性检查。

  在实际的应用中,两种方法可以实现局部与宏观的互补,同时运用两种方法,有利于增强测试的准确性,同时提高测试的效率。

二、关于OCL和JSF

  OCL语言全名为对象约束语言(Object Constraint Language),是一种用于施加在指定的模型元素上约束的语言。OCL的基础是数学中的集合论和谓词逻辑,并且它有一个形式化的数学语义,但是它并没有使用某种数学符号。因为虽然数学符号能够清晰的、无歧义的表达事物,但是只有极少的专家可以看懂。所以数学符号并不适合用于一个广泛应用的标准语言。

 

  自然语言是最易懂的,但是它是含混不清晰的。OCL取了自然语言和数学符号的折中方案,使用普通的ASCII字符来表达数学中同样的概念。如果你不喜欢当前的OCL表达方法,OCL规范还允许你定义自己的OCL符号集,这点是可以理解的,因为OCL有一个清晰的数学语义。

  两种语言的相同点:两者都是预先对程序设计的约束,是对程序设计预期功能和效果的标准化定义,两者都不具有二义性,且都有前置条件,后置条件和不变式。

  两种语言的不通点:首先OCL每个表达式都是具有类型的,融入了一定的自然语言的特性,且具有许多的基本数据类型等,而JSF只是单纯的数学逻辑表达式。其次JSF围绕类和方法进行约束,而OCL则对对象及对象内、对象间所包含的数据进行约束。

三、关于第十四次作业

UML类图:

 

UML状态图:

 

 

UML时序图:

  

 

 

四、学期总结  

  1.四个单元模块中,第一单元主要是熟悉面向对象的编程方法,了解面向对象的对象、类、方法、接口、继承等基本概念。第二单元主要知识集中在多线程以及多线程的数据保护,整体上是逐步熟练掌握多线程  编程方法的过程。第三单元引入了规格化设计方法,让我们了解了一些工程上编程的解决方案。第四单元是测试和正确性论证,让我们能够通过两种方法对自己写的代码进行更好的检查,确保代码的正确性,

  2.本学期的课程中,我依次完成了多项式处理、单个傻瓜电梯、单个可捎带电梯、多线程可捎带电梯、IEEE处理器以及出租车调度这六大程序。在多项式处理的作业中,我了解了对输入进行约束的设计思想;在三次电梯作业中,我逐步理解了面向对象的设计思想,学会了将实际问题模拟成程序中的相应类,从而实现作业要求,而不是之前简单的数据抽象处理的编程思想;在IEEE作业中,我进一步熟练了多线程的使用,成功实现了多线程的数据保护;之后的四次出租车,则是对之前学到的设计、编程方法的综合运用,进一步提高编程能力;最后两次作业,提供了测试和正确性论证的方法,让我学会了除了自己构造数据进行测试以外的新的程序检测方法。减少代码中的bug。

  3.工程化开发更加强调格式的标准化与统一,这样虽然会导致一些繁琐要求的产生,但是从整体上看,这样的要求更利于大型系统的开发。同时工程化开发削弱了一些算法和数据抽象的运用,其更注重代码的可读性,这也对提高多人合作开发的效率具有积极的意义。最后,工程化开发的错误处理很重要,错误处理也是影响这个系统稳定性的关键。

  4.虽然本课程有一些存在争议的地方,但相比于其带给我的收获,也就无伤大雅了,也希望课程能越办越好。

  

 

转载于:https://www.cnblogs.com/lvubyr/p/9224322.html

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值