免费智能真题库 > 历年试卷 > 软件设计师 > 2009年下半年 软件设计师 上午试卷 综合知识
  第37题      
  知识点:   类和对象   面向对象的基本概念
  关键词:   对象        章/节:   面向对象基础知识       

 
以下关于类和对象的叙述中,错误的是(37)。
 
 
  A.  类是具有相同属性和服务的一组对象的集合
 
  B.  类是一个对象模板,用它仅可以产生一个对象
 
  C.  在客观世界中实际存在的是类的实例,即对象
 
  D.  类为属于该类的全部对象提供了统一的抽象描述
 
 
 

 
  第38题    2012年上半年  
   29%
以下关于封装在软件复用中所充当的角色的叙述,正确的是(38)。
  第38题    2014年下半年  
   53%
多态分为参数多态、包含多态、过载多态和强制多态四种不同形式,其中()多态在许多语言中都存在,最常见的例子就是子类泛型化。..
  第37题    2017年上半年  
   22%
在面向对象方法中,两个及以上的类作为一个类的父类时,称为(37),使用它可能造成子类中存在(38)的成员。
   知识点讲解    
   · 类和对象    · 面向对象的基本概念
 
       类和对象
        1)类的概念
        类是数据以及用于操纵该数据的方法(函数)的集合,是逻辑上相关函数与数据的封装。它是对所要处理问题的抽象描述,它把数据(事物的属性)和函数(事物的行为/操作)封装为一个整体。
        2)类的定义格式
        类的定义格式如下:
        
        其中,private、 public、 protected称为访问权限控制关键字,其作用是限制"可见性"。在类的定义中,以上3种关键字出现的次数和先后次序都没有限制,默认被认为是private。这3种关键字对应的访问可见性如下。
        .private:私有成员,只能在成员函数内访问。
        .public:公有成员,可以在对象的外部访问。
        .protected:保护成员,只能由对象内部或其派生类对象访问。
        面向对象的思想是对对象的属性(成员变量)进行操作,应该通过对象的方法(成员函数)来进行,对象的方法是对象和外部的接口。将类的成员变量声明为private,能保证对该成员的操作都是通过类的方法来进行的。这样可以避免出错(如对成员变量不恰当地赋值),也便于修改程序。在修改类的定义时,只要修改类的成员函数就可以了,不需要修改使用该类成员的代码。如果某些成员函数只被其他成员函数调用,不作为对象的界面,那么也可以将它声明为private。
        成员函数定义通常在类的说明之后进行,其格式如下:
        
        其中,运算符"::"称为作用域解析运算符,它指出该函数是属于哪一个类的成员函数。当然也可以在类的定义中直接定义函数。
        3)对象
        对象即类的实例(Instance)。
        创建类的对象可以有两种常用方法。
        (1)第一种是直接定义类的对象。如CGoodsCar这个定义创建了CGoods类的一个对象Car,同时为它分配了属于它自己的存储块,用来存放数据和对这些数据实施操作的成员函数(代码)。与变量定义一样,一个对象只在定义它的域中有效。第一种方法通过"对象名.成员名"方式访问对象成员。
        (2)第二种是采用动态创建类的对象的方法,当然变量也同样可动态创建。所谓动态,是指在程序运行时建立对象。而第一种方法是在编译时(程序运行前)建立。第二种方法通过对象指针访问对象成员。
 
       面向对象的基本概念
               Peter Coad和Edward Yourdon提出用下面的等式识别面向对象方法,即
               面向对象=对象+分类+继承+通过消息的通信
               可以说,采用这4个概念开发的软件系统是面向对象的。
               对象
               在面向对象的系统中,对象是基本的运行时的实体,它既包括数据(属性),也包括作用于数据的操作(行为),所以一个对象把属性和行为封装为一个整体。封装是一种信息隐蔽技术,它的目的是使对象的使用者和生产者分离,使对象的定义和实现分开。从程序设计者来看,对象是一个程序模块;从用户来看,对象为他们提供了所希望的行为。在对象内的操作通常叫做方法。一个对象通常可由对象名、属性和操作三部分组成。
               消息
               对象之间进行通信的一种构造叫做消息。但一个消息发送给某个对象时,包含要求接收对象去执行某些活动的信息,接收到消息的对象经过解释,然后予以响应,这种通信机制叫做消息传递。发送消息的对象不需要知道接收消息的对象如何对请求予以响应。
               类
               一个类定义了一组大体上相似的对象,一个类所包含的方法和数据描述一组对象的共同行为和属性。类是在对象之上的抽象,对象是类的具体化、是类的实例。通常把一个类和这个类的所有对象称为"类及对象"或对象类。
               继承
               继承是父类和子类之间共享数据和方法的机制。这是类之间的一种关系,在定义和实现一个类的时候,可以在一个已经存在的类的基础上进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。
               一个父类可以有多个子类,这些子类都是父类的特例,父类描述了这些子类的公共属性和操作。一个子类可以继承它的父类(或祖先类)中的属性和操作,这些属性和操作在子类中不必定义,子类中还可以定义自己的属性和操作。
               如果一个子类只从一个父类得到继承,叫做"单重继承";如果一个子类有两个或更多个父类,则称为"多重继承"。
               多态
               不同的对象收到同一消息可以产生完全不同的结果,这一现象叫做多态。在使用多态的时候,用户可以发送一个通用的消息,而实现的细节则由接收对象自行决定,这样,把具有通用功能的消息存放在高层次,而把不同的实现这一功能的行为放在较低层次,在这些低层次上生成的对象能够给通用消息以不同的响应。
               多态有几种布控的形式,Cardelli和Wegner把它分为四类,即
               
               其中,参数多态和包含多态称为通用的多态,过载多态和强制多态称为特定的多态。包含多态在许多语言中都存在,最常见的例子就是子类型化,即一个类型是另一个类型的子类型。过载多态是同一个变量被用来表示不同功能而通过上下文以决定一个名字所代表的功能。
               动态绑定
               绑定是一个把过程调用和响应调用所需要执行的代码加以结合的过程。在一般程序设计语言中,绑定是在编译时进行的,叫做静态绑定。动态绑定则是在运行时进行的,因此,一个给定的过程调用和代码的结合是到调用发生时才进行的。
               动态绑定是和类的继承以及多态相联系的。在继承关系中,子类是父类的一个特例,所以父类对象可以出现的地方,子类对象也可以出现。因此在运行过程中,当一个对象发送消息请求服务时,要根据接收对象的具体情况将请求的操作与实现的方法进行连接,即动态绑定。
   题号导航      2009年下半年 软件设计师 上午试卷 综合知识   本试卷我的完整做题情况  
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 /
 
第37题    在手机中做本题