其他分享
首页 > 其他分享> > 软件构造期末考点复习

软件构造期末考点复习

作者:互联网

【考点 Equals】

  当我们当向集合中插入对象时,就可以使用hashcode,先调用这个对象的hashCode方法,得到对应的hashcode值,实际上在HashMap的具体实现中会用一个table保存已经存进去的对象的hashcode值,如果table中没有该hashcode值,它就可以直接存进去,不用再进行任何比较了;如果存在该hashcode值, 就调用它的equals方法与新元素进行比较,相同的话就不存了,不相同就散列其它的地址,所以这里存在一个冲突解决的问题,这样一来实际调用equals方法的次数就大大降低了。

【考点 函数规约】 requires与effects

声明式规约更有价值 ; 内部实现的细节不在规约里呈现,而放在代码实现体内部注释里呈现,例:

static String join(String delimiter, String[] elements)
effects: returns concatenation of elements in order, with delimiter inserted between each pair of adjacent elements // Declarative specs

更强的规约包括更轻松的前置条件和更严格的后置条件;

方法前的注释也是一种规约,但需人工判定其是否满足。

【考点 ADT的四种类型】

【考点 ADT的 AF与 RI】

在研究抽象类型的时候,先思考一下两个值域之间的关系:

R->A的映射特点:

在描述抽象函数和表示不变量的时候,注意要清晰明确:

【考点:黑盒、白盒框架】

【白盒框架】

 【黑盒框架】

【两者对比】

 【LSP】

Fruit[] apples=new Apple[size];  

【Throwable】

 

    

【GC的四种策略】                                          

 

【死锁】

【用注释形式撰写测试策略】

 

【测试覆盖度】

代码覆盖度:已有的测试用例有多大程度覆盖了被测程序

代码覆盖度越低,测试越不充分但要做到很高的代码覆盖度,需要更多的测试用例,测试代价高

分类:函数覆盖 + 语句覆盖 +分支覆盖 + 条件覆盖 + 路径覆盖

测试效果:路径覆盖>分支覆盖>语句覆盖

测试难度:路径覆盖>分支覆盖>语句覆盖

路径数量巨大,难以全覆盖

【snapshot】在Runtime,code level,moment

【SOLID】

设计模式前五个原则,恰恰是告诉我们用抽象构建框架,用实现扩展细节的注意事项而已:

  单一职责原则告诉我们实现类要职责单一;里氏替换原则告诉我们不要破坏继承体系;依赖倒置原则告诉我们要面向接口编程;接口隔离原则告诉我们在设计接口的时候要精简单一;迪米特法则告诉我们要降低耦合。而开闭原则是总纲(实现效果),它告诉我们要对扩展开放,对修改关闭。

标签:期末考,复习,框架,对象,equals,死锁,抽象,软件,方法
来源: https://blog.csdn.net/NemoFall/article/details/118556328