软件构造21选择题小结

由于没有标准答案,加之本人实力有限,可能下面分析存在有误的地方,还请辩证地看待!

第1小题

在这里插入图片描述

内部质量属性是软件产品的质量,如代码可读性(行数、逻辑复杂度、耦合、内聚),影响软件本身和开发者。
外部质量属性是影响用户,可被用户感知的因素,有正确性(最重要)、健壮性、可扩展性、可复用性、兼容性、性能、可移植性、易用性、功能性、及时性。
我选择D选项。

第2小题

在这里插入图片描述

抛出异常肯定是需要运行的,为Run-time,异常属于逻辑部分,为Code-level。Exception在下面的Execution tracing有所体现,属于Period、code-level和run-time。

在这里插入图片描述
我选择C选项。

第3小题

在这里插入图片描述

git commit -m "msg"是提交至暂存区,-a选项是跳过暂存区至本地仓库。

git add* #开始对全部文件追踪
git diff #查询具体修改的放地方
git commit -a #跳过暂存区
git checkout -b [branch-name] #不存在则创建该分支,切换到该分支
git merge [branch-name] #当前分支与目标分支合并
git branch -d [branch-name] #删除目标分支
git branch [branch-name] #创建目标分支
git switch -c [branch-name] #创建并切换到目标分支

git fetch是从远程拉最新内容于本地,用户决定是否合并到本地分支;
git pull是从远程拉最新内容于本地,直接合并(可能有冲突,要手动解决)
我选择B选项。

第4小题

在这里插入图片描述

任何时候表示泄露都是有安全隐患的,都可能造成危害;
ADT的mutator方法只是一般返回类型为void,但是返回类型不是void不代表不是mutator方法;
两个ADT即使有相同的RI和rep,但是AF不同的话,那么client眼中就是不等价的。
我选择C选项。

第5小题

在这里插入图片描述

话不多说,直接看IDE中的结果
对于A是静态不通过,无法为final变量sb分配值。
在这里插入图片描述
对于B是在for循环的String s:str动态检查不通过。
在这里插入图片描述
对于C是add的操作动态检查不通过。
在这里插入图片描述
D是可以通过的,正常运行的(注释A,B,C后)
在这里插入图片描述
我选择D选项。

第6小题

在这里插入图片描述

List(两个list大小相同、每对符合的元素在两个list中等价)、Date(getTime返回值相同)是观察等价性,而String是行为等价性(指同一个空间)
直接看代码结果:
在这里插入图片描述
我选择A选项。

第7小题

在这里插入图片描述

重载是OOP中的特殊多态,泛型编程是参数化多态机制,而子类型多态是一个变量名字可代表多个类的实例;
重载没有硬性要求参数数目不同;
重载没有硬性要求返回值类型要协变原则;
父类型和子类型倒是可以有重载方法(例如在重写equals方法的时候,错误地将参数设为继承类,而不是Object,此时为重载)
我选择D选项。

第8小题

在这里插入图片描述

同一个规约下可以有不同实现,例如A和B,他们在client眼中是等价的;
C的表示范围在D的范围内且更小,spec上C更强;
由于A和C的spec无法比较,且都在D的范围内,因此是可以无区别使用A和C的(遵循D的spec时);
spec上E更弱,遵循D的spec的方法不适用与E上。
我选择D选项。

第9小题

在这里插入图片描述

在interface中public可以省略,默认是public的;
因为equals中的参数类型为B,被Java视为重载,因此去掉@Override是可以通过静态检查的;
A和E由关键字implements可推测为interface,支持多接口实现;
参数类型没有任何关系,即以Object为参数类型的List和以String为参数类型的List是没有关系的,不符合LSP原则。
我选择B选项。

第10小题

在这里插入图片描述

如果重写equals方法,那么也要需要重写hashCode方法,因为equals方法会先去判断hashCode是否相等;
等价要有相同的hashCode,但是不等价不代表hashCode不相等;
hashCode可以根据需要的属性生成,不需要rep中所有属性。
我选择C选项。

第11小题

在这里插入图片描述

继承和委托都是进行代码的复用;
A和B的大部分功能相同,B有自己特殊的小部分功能,通过继承机制可以实现;
委托机制中包括显示委托和隐式委托。显示委托,通过将发送对象传递给接收对象;隐式委托,根据语言的成员查找规则;
继承是类层次,而委托是对象层次。
我选择C选项。

第12小题

在这里插入图片描述

黑盒框架,框架将功能委托给了interface–Plugin,实现者相应的实现,其中b是委托,c是实现;
白盒框架,通过继承的方式实现的,e是继承;
我选择B选项。

第13小题

在这里插入图片描述

ADT中定义的某个有多种实现方法的方法抽取出来,单独放在接口及实现类中,灵活复用,描述的strategy模式。
我选择A选项。

第14小题

在这里插入图片描述

前置条件要尽快检查,出错抛出异常,以免错误扩散;
LSP原则,子类不能抛出更多的异常,可以不抛出异常、抛出更具体的异常;
throw的异常可能为unchecked异常,可以不在spec中体现;
ADT的测试用例不能依赖rep和方法的实现;
我选择C选项。

第15小题

在这里插入图片描述
对于error和unchecked异常,即使捕获了也无法处理,因此最好不捕获;
读磁盘文件操作,文件不存在的异常是checked异常,应该抛出异常并进行处理;
前置条件应该用异常处理,对外要宽容,后置条件应该用断言处理,对内要严格;
我选择B选项。

到此选择题小结就告一段落了。如果不是个人实力上的巨大差距,选择题还是挺能拉开差距的,要重视基础知识的巩固(有时间的话还是别考虑面向真题的复习了),一不留神就是3分,还是挺伤的。

祝愿大家能获得好的成绩!

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深海质粒ABCC9

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值