• 博客园logo
  • 会员
  • 周边
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

计庭瑜

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

OO第三次博客作业

一、规格化设计的发展历史

20世纪60年代,软件作为计算机的刚需,覆盖的范围越来越广泛,与此同时的是软件的维护成本越来越高,由软件错误而引起的信息对视、系统报废事件屡有发生。在此时,Dijkstra提出了goto语句的危害,由此引发了软件界长达数年的论战,并产生了结构化的程序设计方法。在20世纪70年代末,随着计算机技术的发展,结构设计化语言和结构化分析已经无法满足用户的需求,OOP由此应运而生,即面向对象的程序设计。面向对象程序设计的诞生是程序设计方法学的一场革命,大大提高了开发效率,减少了软件开发的复杂度,提高了软件的可维护性,可扩展性。1990年以来,面向对象分析、测试、度量和管理研究都得到长足的发展。规格化设计随其而生,为了提高程序的规范性,对类。方法等进行规范化设计,有利于模块化的划分。

二、规格化设计得到重视的原因

在现今的程序中,代码行数越来越多,规格化设计能很好地概括这一段方法中的核心思想,能有效地提高代码的可读性与可改性,此外对类和方法进行规范化设计,能很好地对程序的美观性进行操作,是的数据更加安全可控,能很好地检测程序中所存在的bug,并进行及时的修改,因而规格化设计得到重视。

三、bug分析

作业   功能bug  规格bug
9 无 无
10

流量的更新存在一些误差,导致每隔一段时间无法选择流量最短路径

对light类的repOK的初始值不为true

 

从文件读取的车的状态不为2时未进行规定

对taxi类的初始repOK返回值不为0

11 无 无

对自身的程序repOk()方法未能很好地定义其初值,导致出现问题。

四、规格的不规范写法及其改进

/**
	* @REQUIRES:mi.map!=NULL&&p!=NULL
	* @MODIFIES:index,state,p,mi,gui,credit
	* @EFFECTS:this.index = index&this.state = state&this.p = p&this.mi = mi&this.credit = credit&time = 0&this.gui = gui;
	*/

 这是对taxi类的构造方法,在EFFECTS中应换行用换行和分号进行间隔。

/**
*@Requires:无
*@ Modifies:无
*@Effects:返回long类型的以毫秒计的系统时间
*/

这是一种用自然语言的写法且前置条件为定义,前置条件应改为 @Requires:list.get(i).exist()!==true; 且将规格改成表达式较好

/**
    * @REQUIRES:f!=NULL
    * @MODIFIES:list,read,list.get(i),req;
    * @EFFECTS:read.start(),taxi.start();req.start();
    */

这是main()函数的规格,由于 main函数写的过长,导致其中改变的中间变量无法很好地用规格表示,应该将main函数中的功能分格开来写规格。

 

五、基本思路和体会:

由于撰写规格是在第二次作业才产生的,这就导致了方法是先写的,之后再写的规格,这就导致了完全是根据方法再写规格,规格自然就写的很烂,对程序的编写没有一点帮助。在写规格的过程中,若代码行数过长,就会使撰写规格变得很吃力,就要将长方法进行打碎分成多个方法再进行撰写,这样才能使规格写的有用。在这几次作业中,自身写的类的方法代码行数过长,未能将代码规格写好,方法也不美观,希望能在之后的代码学习中好好改善自己。

 

posted on 2018-05-29 14:33  计庭瑜  阅读(129)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3