免费智能真题库 > 历年试卷 > 嵌入式系统设计师 > 2012年下半年 嵌入式系统设计师 上午试卷 综合知识
  第20题      
  知识点:   对象   可扩展性   面向对象技术
  关键词:   面向对象   对象        章/节:   嵌入式系统程序设计       

 
面向对象技术中,对象具有以下特性:(20)。
①清晰的边界 ②良好定义的行为 ③确定的位置和数量 ④可扩展性
 
 
  A.  ②④
 
  B.  ①②③④
 
  C.  ①②④
 
  D.  ①②
 
 
 

 
  第35题    2014年下半年  
   45%
在嵌入式操作系统中,两个任务并发执行,一个任务要等待另外一个任务发来消息后再继续执行,这种制约性合作关系被称为任务的(35..
  第3题    2017年下半年  
   28%
在面向对象方法中, 将逻辑上相关的数据以及行为绑定在一起, 使信息对使用者隐蔽称为(3)。当类中的属性或方法被设计为private时,(..
  第8题    2012年下半年  
   45%
用户B收到用户A带数字签名的消息M,为了验证M的真实性,首先需要从CA获取用户A的数字证书,并利用(8)验证该证书的真伪,然后利..
   知识点讲解    
   · 对象    · 可扩展性    · 面向对象技术
 
       对象
        在面向对象的系统中,对象是基本的运行时实体,它既包括数据(属性),也包括作用于数据的操作(行为)。所以,一个对象把属性和行为封装为一个整体。封装是一种信息隐蔽技术,其目的是使对象的使用者和生产者分离,使对象的定义和实现分开。从程序设计者的角度看,对象是一个程序模块;从用户的角度看,对象为他们提供了所希望的行为。在对象内的操作通常叫做方法。一个对象通常可由对象名、属性和方法(操作)三部分组成。
        在现实世界中,每个实体都是对象,如学生、汽车、电视机和空调等都是现实世界中的对象。每个对象都有其属性和操作,如电视机有颜色、音量、亮度、灰度和频道等属性,可以有切换频道、增大/减低音量等操作。电视机的属性值表示了电视机所处的状态,而这些属性只能通过其提供的操作来改变。电视机的各组成部分,如显像管、电路板和开关等都封装在电视机机箱中,人们不知道也不必关心电视机内部是如何实现这些操作的。
 
       可扩展性
        该指标主要评价入侵检测系统是否易于配置修改和安装部署的能力,以适应新的攻击技术方法不断出现和系统环境的变迁需求。
 
       面向对象技术
        在介绍面向对象软件测试之前,有必要先对面向对象技术的基本概念做一下简单介绍。
               对象和类
               面向对象其实是现实世界模型的自然延伸。现实世界中任何实体都可以看作是对象。对象之间通过消息相互作用。另外,现实世界中任何实体都可归属于某类事物,任何对象都是某一类事物的实例。如果说传统的过程式编程语言是以过程为中心,以算法为驱动的话,那么面向对象的编程语言则是以对象为中心,以消息为驱动的。用公式表示,过程式编程语言为:程序=算法+数据;面向对象编程语言为:程序=对象+消息。
               在面向对象的程序设计中,类是其设计的核心,它实际是一种新的数据类型,也是实现抽象类型的工具,类是通过抽象数据类型的方法来实现的一种数据类型。类是对某一类对象的抽象;而对象是某一种类的实例,因此,类和对象是密切相关的。没有脱离对象的类,也没有不依赖于类的对象。
               封装、继承和多态性
               封装,把数据和操作结合成一体,使程序结构更加紧凑,同时避免了数据紊乱带来的调试与维护的困难;继承,增加了软件的可扩充性,并为代码重用提供了强有力的手段;多态性,使程序员在设计程序时可以对问题进行更好的抽象,易设计出重用性和维护性俱佳的程序。
               封装是将数据和操作数据的函数衔接在一起,构成的一个具有类类型的对象的描述。封装要求一个对象应具备明确的功能,并且有一个或几个接口以便和其他对象相互作用。同时,对象的内部实现(代码和数据)是受保护的,外界不能访问它们,只有对象中的代码才可以访问该对象的内部数据。对象的内部数据结构的不可访问性称为数据隐藏。封装简化了程序员对对象的使用,只需要知道输入什么和输出什么,而对类内部进行什么操作不必追究。
               例如,类Test(以C++为例):
               
               
               输出结果是16,对于main()里的操作,无法更改类Test中的Value值,这样保护了数据Value,实现了数据的隐藏。函数SetValue()和数据Value结合在一起操作,这就实现了封装。
               继承即可以从一个类派生另一个类。派生类(也称为子类)继承了其父类和祖先类的数据成员和成员函数。派生类可增加新的属性和新的操作,另外,派生类在继承的成员函数不合适时也可以放弃不用。
               例如,水果是基类,它具有好吃、营养等水果的基本特征;香蕉和苹果是水果的派生类,它们在继承水果类的一些特征的基础上,增加了各自的特征,如特殊的味道、形状等;红富士苹果和青苹果是苹果类的派生类,它们又增加了各自的新特征。如此继承设计,可以大大减少工作量。
               例如(C++程序),先设计水果类Friut。
               
               苹果类Apple需要与水果类Friut同样的成员函数void Eat和void Taste,另外增加了新的函数void Color和void Shape。在设计时,我们不需要重写void Eat和void Taste,只需要继承水果类即可,苹果类的实际代码如下。
               
               多态性就是多种表现形式,具体来说,可以用“一个对外接口,多个内在实现方法”表示。多态性的实现,一般通过在派生类中重定义基类的虚函数来实现。
               如下例(C++程序),如果A是基类,B和C是A的派生类,基类中多态函数Test的参数是A的指针。那么Test函数可以引用A、B、C的对象如下。
               
               
               正是面向对象软件所独有的这些多态、继承、封装等新特点,使OO程序设计比传统语言程序设计产生错误的可能性更大,使得传统软件测试中的重点不再显得那么突出,也使原来测试经验和实践证明的次要方面成为了主要问题。例如,在传统的面向过程程序中,对于函数y=Func(x);你只需要考虑一个函数“Func()”的行为特点,而在面向对象程序中,你不得不同时考虑基类函数“Base::Func()”的行为和继承类函数“Derived::Func()”的行为。
               面向对象程序的结构不再是传统的功能模块结构,作为一个整体,原有集成测试所要求的,逐步将开发的模块搭建在一起进行测试的方法已不可能。而且,面向对象软件抛弃了传统的开发模式,对每个开发阶段都有不同于以往的要求和结果,已经不可能用功能细化的观点来检测面向对象分析和设计的结果。因此,传统的测试模型对面向对象软件已经不再适用。针对面向对象软件的开发特点,一种新的面向对象测试模型应需而生。
   题号导航      2012年下半年 嵌入式系统设计师 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第20题    在手机中做本题