结对编程项目

结对编程小伙伴:李入云

下面是我们在新主楼一起编程的时候的场景,外面雾霾很重

  通过这次结对编程,让我对结对编程有了一个初步的认识。在此之前,我从来没有接触过结对编程。虽然自己编程的时间并不长,但是对编程还是有一定的认识。以前都是单打独斗,自己一个人编完整个程序。这些程序确实也不是很大,但是,有时候,面对即将到来的deadline和没有实现的功能,这些程序还是很大了。因此,这次结对编程的优势就很明显了:由两个人完成一个程序,那么每个人的任务就轻松许多了(开始的时候一直这么想)。后来,我才发现,其实并不是这样的,因为结对编程的小伙伴是一位女生,所以两个人要坐在一起编程,从时间和空间上就有很大的限制。在结对编程的过程中,有一个很大的好处就是少调试。当时我们编程序的时候就出现了一个很小的bug,基本上是一次过的节奏。这一点,我想也是结对编程的一个比较重要的优势吧。

  小伙伴的优缺点:码代码的能力很强、码代码的时候很仔细、思维发散,很喜欢想一些拓展的东西(也许这就是一个缺点吧,花了一些没必要的时间)、心平气和,在码代码的时候不会受其他事情打扰

  我的优缺点:和小伙伴不一样的就是我在码代码的时候容易受到干扰,有时候容易走神,还有就是自己码代码的能力较差,感觉自己没什么优点

 

关于Information Hiding

  在现在的面向对象的编程中,Information Hiding是一个很重要的设计方法。很多时候,软件开发人员并不希望自己做的软件的源代码被别人发现,因为这些源代码是他的人才财产,是他自己的脑力成果,所以Information Hiding就显得至关重要。面向对象的设计思想就是一个很好的手段,将自己的程序封装起来,只是向外界暴露自己的接口而不暴露我的程序内部是如何运行的,采用了何种算法。

关于interface design

  面向接口编程是软件工程领域常用的设计手段,特别是在大型团队项目中,接口的设计至关重要,往往接口的设计就决定了程序的很大一部分工作量。在团队编程的过程中,首先需要定义各个模块的接口,然后再开始团队编程;在个人项目中,自己也应该设计各个功能模块的接口,也许一开始的时候不能把接口完全定义好,但是至少在自己的心里会有一定的概念,这个东西到底该怎么写,这样一来,对自己的编程有很大的帮助。

关于loose coupling

  对于loose coupling,现在基本上所有的软件都必须支持。它在某种程度上代表了软件的未来。软件一旦更新,用户的想法是不需要做太大的改变就可以像以前一样使用这个软件,因此loose coupling是软件必须能够达到的。

Design by Contract, Code Contract 

   DbC中,使用者和被调用者地位平等,双方必须彼此履行义务,才可以行驶权利。调用者必须提供正确的参数,被调用者必
须保证正确的结果和调用者要求的不变性。双方都有必须履行的义务,也有使用的权利,这样就保证了双方代码的质量,提高了
软件工程的效率和质量。
  缺点是对于程序语言有一定的要求,契约式编程需要一种机制来验证契约的成立与否。而断言显然是最好的选择,但是并不
是所有的程序语言都有断言机制。那么强行使用语言进行模仿就势必造成代码的冗余和不可读性的提高。

算法介绍

生成器:1)设置操作数栈和运算符栈,其中操作数栈保存运算出现的全部操作数,包括中间数
    2)操作数两两入栈,遇到加法或者乘法,将较小的数先入栈
解析器:1)根据输入表达式生成逆波兰式,并进行计算
    2)将表达式的计算结果输出到string ,与用户输入的答案进行字符串匹配,相同即为right,不同即为wrong
针对用户的不同需求:
    1)用户如果选择运算过程中无负数,即将操作数栈中含有负数的表达式删掉
    2)表达式不含有括号,将含有括号的表达式删掉
    3)表达式中不允许有分数,将表达式和答案中含有‘/’的删掉
    4)表达式中不含有乘除法,在生成运算符个数op_num时,op_num = rand(0,1),其中0 = ADD,1 = SUB,2 = MUL,3 = DIV;   
程序的UML图
感觉UML程序图并没有什么好画的,两个类的关系也不过如此
 
测试用例
posted @ 2015-10-06 16:56  buaa小松  阅读(287)  评论(1编辑  收藏  举报