软件工程——第12章面向对象实现知识点整理

本专栏是博主个人笔记,主要目的是利用碎片化的时间来记忆软工知识点,特此声明!

文章目录

1. 面向对象语言技术的特点?

2.选择面向对象程序设计语言时主要应该考虑哪些因素?

3.面向对象设计结果只能用面向对象语言实现吗?

4.面向对象实现应该选用哪种程序设计语言?为什么?

5.面向对象程序中特有的封装、继承和多态等机制给面向对象测试带来了哪些新特点?

6.良好的面向对象程序设计风格主要有哪些准则?

7.提高可重用性的准则有哪些?

8.提高可扩充性的准则有哪些?

9.提高健壮性的准则有哪些?

10.面向对象的单元测试最小的可测试单元是?

11.面向对象的集成测试主要有哪两种不同的策略?

12.面向对象的确认测试主要根据什么来确认测试用例?

13.面向对象测试关注于哪两点?

14.主要有哪些设计单元测试用例的方法?(即测试类的方法)

 15.主要有哪些设计集成测试用例的方法?

16.主要有哪些设计确认测试用例的方法?

章末小结


1. 面向对象语言技术的特点?

  1. 支持类与对象概念的机制
  2. 实现聚集(整体-部分)结构的机制
  3. 实现泛化(一般-特殊)结构的机制
  4. 实现属性和服务的机制
  5. 提供实用的类库
  6. 利用类库,实现高效率
  7. 持久保存对象

2.选择面向对象程序设计语言时主要应该考虑哪些因素?

  1. 将来能否占主导地位:为了使自己的产品在若干年后仍然具有很强的生命力
  2. 可重用性:采用面向对象方法开发软件的基本目的和主要优点是通过重用来提高软件的生产率
  3. 类库和开发环境:决定可重用性的因素,不仅仅是面向对象程序语言本身,开发环境和类库也是非常重要的因素
  4. 其他因素:对用户学习面向对象分析、设计和编码技术所能提供的培训服务;在使用这个面向对象语言期间能提供的技术支持;能提供给开发人员使用的开发工具、开发平台、发行平台;对机器性能和内存的需求;集成已有软件的容易程度等。

3.面向对象设计结果只能用面向对象语言实现吗?

不是。面向对象设计结果既可以用面向对象语言实现,也可以用非面向对象语言实现

4.面向对象实现应该选用哪种程序设计语言?为什么?

应该选择能够更完整、更正确地表达问题域语义的面向对象语言。

因为面向对象语言相对于非面向对象的语言,其突出的优点是:

  1. 一致的表示方法
  2. 可重用性
  3. 可维护性

5.面向对象程序中特有的封装、继承和多态等机制给面向对象测试带来了哪些新特点?

增加了面向对象测试和调试的难度

6.良好的面向对象程序设计风格主要有哪些准则?

  1. 提高可重用性
  2. 提高可扩充性
  3. 提高健壮性

7.提高可重用性的准则有哪些?

  1. 提高方法的内聚
  2. 减小方法的规模
  3. 保持方法的一致性
  4. 把策略与实现分开
  5. 方法应全面覆盖所有可能的结果
  6. 尽量不使用全局信息
  7. 利用继承机制

8.提高可扩充性的准则有哪些?

  1. 封装实现策略
  2. 不要用一个方法遍历多条关联链
  3. 避免使用多分支语句
  4. 精心确定公有方法

9.提高健壮性的准则有哪些?

  1. 预防用户的操作错误
  2. 检查参数的合法性
  3. 不要预先确定限制条件
  4. 先测试后优化

10.面向对象的单元测试最小的可测试单元是?

面向对象的单元测试最小的可测试单元是封装起来的类和对象

测试面向对象软件时,不能孤立地测试单个操作,而应该把操作作为类的一部分来测试

11.面向对象的集成测试主要有哪两种不同的策略?

  1. 基于线程的测试
  2. 基于使用的测试

12.面向对象的确认测试主要根据什么来确认测试用例?

面向对象的确认测试主要根据动态模型和描述系统行为的脚本来设计确认测试用例

13.面向对象测试关注于哪两点?

  1. 适当的操作序列
  2. 检查类的状态

14.主要有哪些设计单元测试用例的方法?(即测试类的方法)

  1. 随机测试
  2. 划分测试
  3. 基于故障的测试

 15.主要有哪些设计集成测试用例的方法?

        集成测试方法必须对类间协作进行测试,可用随机测试方法和划分测试方法,以及基于情景的测试和行为测试来完成

16.主要有哪些设计确认测试用例的方法?

可以采用传统的黑盒方法,也可以采用基于情景的方法

章末小结

        面向对象方法学把分析、设计和实现很自然地联系在一起了。虽然面向对象设计原则上不依赖于特定的实现环境但是实现结果和实现成本却在很大程度上取决于实现环境。因此,支持面向对象设计范式的面向对象程序语言、开发环境、及类库,对于面向实现来说是非常重要的。

        为了把面向对象设计结果顺利地转变成面向对象程序,首先应该选择一种适当的程序设计语言。面向对象的程序设计语言非常适合用来实现面向对象设计结果。具有方便的开发环境和丰富的类库的面向对象程序设计语言,是实现面向对象设计的最佳选择

        良好的程序设计风格对于面向对象实现来说格外重要。它既包括传统的程序设计风格准则,也包括与面向对象方法的特点相适应的一些新准则

        面向对象方法学使用独特的概念和技术完成软件开发工作,因此,在测试面向对象程序的时候,除了继承传统的测试技术之外,还必须研究与面向对象程序特点相适应的新的测试技术。

面向对象测试的总目标与传统软件测试的目标相同,也是用最小的工作量发现最多的错误。但是,面向对象测试的策略和技术与传统测试有所不同,测试的焦点从过程构件(传统模块)移向了对象类。

        一旦完成了面向对象程序设计,就开始对每个类进行单元测试。测试类时使用的方法主要有随机测试、划分测试和基于故障的测试。每种方法都测试类中封装的操作。应该设计测试序列以保证相关的操作受到充分测试。检查对象的状态(由对象的属性值表示),以确定是否存在错误。

        可以采用基于线程基于使用的策略完成集成测试。基于线程的测试,集成一组相互协作以对某个输入或某个事件作出响应的类。基于使用的测试,从那些不使用服务器类的类开始,按层次构造系统。设计集成测试用例,也可以采用随机测试和划分测试方法。此外,从动态模型导出的测试用例,可以测试指定的类及其协作者。

        面向对象系统的确认测试也是面向黑盒的,并且可以应用传统的黑盒方法完成测试工作。但是基于情景的测试是面向对象系统确认测试的主要方法

下一章:软件工程——第13章软件项目管理知识点整理(完结)

反反复复,扎扎实实;念念不忘,必有回响!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/26290.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

verilog实现led闪烁

文章目录 verilog实现led闪烁一、介绍二、代码三、仿真代码四、仿真结果五、总结 verilog实现led闪烁 一、介绍 使用verilog实现代码,实现led闪烁,每间隔200ms进行切换led灯 二、代码 module led (input wire clk,input wire rstn,output wire[3:0] …

【Spring Boot】Spring Boot的系统配置 — 实战:实现系统多环境配置

实战:实现系统多环境配置 在实际项目开发的过程中,需要面对不同的运行环境,比如开发环境、测试环境、生产环境等,每个运行环境的数据库、Redis服务器等配置都不相同,每次发布测试、更新生产都需要手动修改相关系统配置…

北邮国院物联网 Microprocessor 微处理器笔记

Introduction-随便聊 嵌入式系统是什么?专用的计算机系统。为专门功能可能对计算机架构,外设等做出一些取舍。 通常的限制:Cost(比如大量部署传感器节点),Size and weight limits(特定应用场景…

第 3 章 Spark 通讯架构

3.1 Spark 通信架构概述 3.1 Spark 通信架构概述 Spark 中通信框架的发展: ➢ Spark 早期版本中采用 Akka 作为内部通信部件。 ➢ Spark1.3 中引入 Netty 通信框架,为了解决 Shuffle 的大数据传输问题使用 ➢ Spark1.6 中 Akka 和 Netty 可以配置使用。…

使用HummerRisk进行K8s安全合规检测

1.简介 HummerRisk 是开源的云原生安全平台,以非侵入的方式解决云原生的安全和治理问题。核心能力包括混合云的安全治理和云原生安全检测。 今天我们来通过 HummerRisk 云原生安全检测能力来对Kubernetes进行安全合规检测 2.检测步骤 ①首先创建一个Kubernetes账…

浅谈无线温度监控系统在低功耗开关柜中的应用

安科瑞 华楠 摘要:为了能够实现实时监测高压开关柜的温度状况,提出一种基于无线传感器网络的开关柜温度在线监测系统。设计的无线温度在线监测系统不仅解决了开关柜内高温、高压、强电磁感应等在恶劣环境下不易检测的问题,而且从硬件选择和软…

【Linux】生产者消费者模型 -- RingQueue

文章目录 1. 生产者消费者模型的理解1.1 生产者消费者模型的概念1.2 生产者消费者模型的特点1.3 生产者消费者模型的优点 2. 基于BlockQueue的生产者消费者模型 1. 生产者消费者模型的理解 1.1 生产者消费者模型的概念 生产者消费者模型就是通过一个容器来解决生产者和消费者的…

机器学习31:《推荐系统-IV》深度神经网络DNN

在《机器学习29:《推荐系统-II》协同过滤》一文中,笔者介绍了如何使用矩阵分解来学习嵌入。矩阵分解具有一些局限性: 基础矩阵分解只用了 UserID(QueryID) 和 ItemID 两个维度的信息,所有学到的知识都蕴含在…

包管理工具:npm、yarn、cnpm、npx、pnpm

yarn:  yarn是由Facebook(react)、Google、Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具;  yarn 是为了弥补早期npm 的一些缺陷而出现的;  早期的npm存在很多的缺陷,比如安装依赖速度很慢、版本依赖混乱等等一系列…

pytorch深度学习 之一 神经网络梯度下降和线性回归

张量和随机运行,exp函数 import torch a torch.tensor([[1,2],[3,4]]) print(a) a torch.randn(size(10,3)) print(a) b a-a[0] print(torch.exp(b)[0].numpy())输出: tensor([[1, 2],[3, 4]]) tensor([[-1.0165, 0.3531, -0.0852],[-0.1065, -0.5…

Go语言之流指针类型,new函数

计算机中所有的数据都必须放在内存中,不同类型的数据占用的字节数不一样,例如 int 占用 4 个字节。为了正确地访问这些数据,必须为每个字节都编上号码,就像门牌号、身份证号一样,每个字节的编号是唯一的,根…

MySQL-数据库读写分离(上)

♥️作者:小刘在C站 ♥️个人主页: 小刘主页 ♥️努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏&#xf…