我们组成员:佘彦廷,周文祥
信息隐藏:指在设计和确定模块时,使得一个模块内包含的特定信息(过程或数据),对于不需要这些信息的其他模块来说,是不可访问的。
我们组本次作业这一方面体现在封装了第一次作业添加了一部分功能之后的代码,采用c++写底层,c#做界面的方式。c#里调用了c++生成的dll,总共只调用了一个方法,即通过点击运行按钮调用run方法进行计算,对于界面模块来说,计算的内部信息并不需要知道,而且也是不可访问的,界面模块看见的只有模块的入口,在该用的时候能从入口进去寻找,至于具体过程并不知道,得到的只有运行结果。
面向接口编程:一般实现功能的时候,通常是将定义与实现合为一体,不加分离的,这个思想认为最为理想的设计规范应是所有的定义与实现分离。
以我的理解来看,面向接口编程条理更清晰,虽然要把所有东西都规范起来是一件比较麻烦而且花时间的事,但是一旦统一起来许多规律会更加清晰。同时,一旦有了统一的规范,在实现的时候尽可能的往规范上靠拢对合作编程也会有巨大的帮助。本次作业在各种函数的实现上我们在各自算法上统一了一些规范,在互相读代码的时候顺畅了许多。
松耦合的基本概念是:允许改变或者当问题发生在“电线的一端时”来避免影响到其他的端点。也就是说,改变或者供应者或者服务的问题不能影响到用户----或者用户的问题不应影响到供应者或者服务。举例来说,如果服务的新版本被推出的话,服务的用户就不必非要去修改,不必非要去改变路线,甚至不必经历停滞期----因为它(服务的新版本被推出)能清楚地向他们显示出来。相对而言,如果服务的一个用户决定改变他们正在使用的供应者(可能有了一个更低价格的服务供选择),这不需要用户应用必须要被重新编码,甚至是中断来做这样的改变。作为提供松耦合的必备基本要素,Web服务管理代理经常使用在用户和供应者之间。
一旦你理解了松耦合的概念之后,将它带到相反的极端、在任何地方应用它都是很容易的。但是,松耦合有它自身的成本代价,所以它并不是总能被恰当的使用的。最好的方法就是决定什么时候你需要用到松耦合,什么时候你不将松耦合运用到你的应用中。哪些你的应用中的部分总是在一起配置(如果一个部分这样,其他的部分也做同样的----我将这称为“配置单元”)的?将以上的同那些需要被改变,升级的独立部分作比较。举例来说,不同的组别将会代表不同的推出时间表(并且将因此被不同的配置单元来管理)。当你认识到配置单元是为了你的应用时,然后你将会知道何时去使用松耦合(通过配置单元),何时不去使用它(在一个配置单元里面)。
代码的关键是:产生数不完全重复,产生模型较少。一部分空间不好控制的时候只能采取下策开大数组。这里不多说。我主要负责的部分是前端。
契约式设计:契约式设计的提出,主要基于软件可靠性方面的考虑。可靠性包括正确性和健壮性,正确性指软件按照需求规格执行的能力,健壮性指软件对需求规格中未声明状况的处理能力。健壮性主要与异常处理机制相关 。正确性一方面包括对象元素内部运行的正确性,另一个重要方面是与其它对象元素交互时的正确性。