免费智能真题库 > 历年试卷 > 软件设计师 > 2014年下半年 软件设计师 上午试卷 综合知识
  第40题      
  知识点:   面向对象程序设计
  章/节:   面向对象基础知识       

 
面向对象程序设计语言中,对象之间通过(39)方式进行通信。以下关于好的面向对象程序设计语言的叙述中,不正确的是(40)。
 
 
  A.  应该支持被封装的对象
 
  B.  应该支持类与实例的概念
 
  C.  应该支持通过指针进行引用
 
  D.  应该支持继承和多态
 
 
 

 
  第50题    2014年上半年  
   42%
在某C/C++程序中,整型变量a的值为0且应用在表达式“c=b/a”中,则最可能发生的情形是(50)。
  第21题    2019年上半年  
   29%
以编译方式翻译C/C++源程序的过程中,( )阶段的主要任务是对各条语句的结构进行合法性分析。
  第39题    2015年下半年  
   50%
如下所示的UML类图中,Car和Boat类中的move()方法(39)了Transport类中的move()方法。
   知识点讲解    
   · 面向对象程序设计
 
       面向对象程序设计
               面向对象程序设计(Object Oriented Programming,OOP)的实质是选用一种面向对象程序设计语言(OOPL),采用对象、类及其相关概念所进行的程序设计。
               好的OOPL必须至少支持被封装的对象、类和实例概念、类间的继承性和多态。
               面向对象的好处
               面向对象的好处总结如下。
               (1)面向对象技术解决了产品质量和生产率之间的权衡问题。
               (2)面向对象程序设计,特别是继承机制,使得系统具有很高的灵活性和易扩充性。
               (3)面向对象是一个能管理复杂性并增强伸缩性的工具。
               (4)根据面向对象的观点,以现实世界对应物为基础,把某一领域分割成各种对象进行分析与设计,常常比自顶向下进行功能分解的分析及设计更自然合理。
               (5)从概念模型化到分析、设计、编码可以实现无缝传递。
               (6)通过封装进行的信息隐蔽有助于建立安全的系统。
               面向对象程序设计语言
                      Smalltalk
                      Smalltalk并不是一种单纯的程序设计语言,而是反映面向对象程序设计思想的程序设计环境。这个系统在其本身的设计中强调了对象概念的归一性,引入了类、方法、实例等概念和术语,应用了单重继承和动态绑定,成为OOPLs发展过程中的一个引人注目的里程碑。
                      在Smalltalk-80中,除了对象之外没有其他形式的数据,对一个对象的唯一操作就是向它发消息。在这种语言中,连类也被看成是对象——类是元类的实例。因此,定义一个类就是向元类发一条消息,请求元类执行它的new来生成一个实例,也就是生成这个类,而消息中的参数就是关于这个类的说明。Smalltalk全面支持面向对象的概念。
                      Eiffel
                      Eiffel的主要特点是全面的静态类型化、有大量的开发工具、支持多继承。Eiffel也全面支持面向对象的概念。
                      C++
                      C++语言是一种面向对象的强类型语言,由AT&T的Bell实验室于1980年推出。
                      C++语言是C语言的一个向上兼容的扩充,而不是一种新语言。C++是一种支持多范型的程序设计语言,它既支持面向对象的程序设计,也支持面向过程的程序设计。
                      C++支持基本的面向对象概念,包括对象、类、方法、消息、子类和继承。C++完全支持多继承,并且通过使用try/throw/catch模式提供了一个完整的异常处理机制。它同时支持静态类型和动态类型,也完全支持多继承,不提供自动的无用存储单元收集,这必须通过程序员来实现,或者通过编程环境提供合适的代码库来予以支持。
                      Java
                      Java语言起源于Oak语言,Oak语言被设计成能运行在设备的嵌入式芯片上。
                      Java编译成伪代码,这需要一个虚拟机来对其进行解释,Java的虚拟机在几乎每一种平台上都可以运行。这实质上使得开发是与机器独立无关的,并且提供了通用的可移植性。
                      Java把类的概念和接口的概念区分开来,并试图通过只允许接口的多继承来克服多继承的危险。
                      Java的异常处理机制与C++的try/throw/catch相类似,但更加严密。在Java中,通过声明轻型线程来处理并发性,这些线程通过副作用和同步协议进行通信。
                      Java Beans是组件,即类及其所需资源的集合,它们主要被设计用来提供定制的GUI小配件。
                      Java中关于面向对象概念的术语有对象、类、方法、实例变量、消息、子类和继承。
               面向对象程序设计语言中的OOP机制
                      类
                      类具有实例化功能,包括实例生成和实例消除完成。类的实例化决定了类及其实例具有下面的特征。
                      (1)同一个类的不同实例具有相同的数据结构,承受的是同一方法集合所定义的操作,因而具有规律相同的行为。
                      (2)同一个类的不同实例可以持有不同的值,因而可以具有不同的状态。
                      (3)实例的初始状态(初值)可以在实例化时确定。
                      继承和类层次结构
                      孤立的类只能描述实体集合的特征同一性,而客观世界中实体集合的划分还通常要考虑与实体特征方法有关联的相似性。在OOP中使用继承机制解决这一问题。
                      当执行一个子类的实例生成方法时,首先在类层次结构中从该子类沿继承路径上溯至它的一个基类,然后自顶向下地执行该子类的所有父类的实例生产方法,最后执行该子类实例生产方法的函数体。当执行一个子类的实例消除方法时,顺序正好与之相反:先执行该子类的实例消除方法,再沿继承路径自底向上地执行该子类所有父类的实例消除方法。
                      类的实例化过程是一种实例的合成过程,而不仅仅是根据单个类型进行的空间分配、初始化和联编。指导编译程序进行这种合成的,就是类层次结构。
                      对象、消息传递和方法
                      对象是类的实例。尽管对象的表示在形式上与一般数据结构十分相似,但是它们之间存在本质区别:对象之间通过消息传递方式进行通信。
                      消息传递原是一种与通信有关的概念,OOP使得对象具有交互能力的主要模型就是消息传递模型。对象被看成用传递消息的方式互相联系的通信实体,它们既可以接收,也可以拒绝外界发来的消息。一般情况下,对象接收它能够识别的消息,拒绝不能识别的消息。
                      发送一条消息至少应给出一个对象的名字和要发送给这个对象的那条消息的名字。通常,消息的名字就是这个对象中外界可知的某个方法的名字。在消息中,还经常有一组参数,将外界的有关信息传递给这个对象。
                      对于一个类来说,它关于方法界面的定义规定了实例的消息传递协议,而它本身则决定了消息传递到合法范围。
                      对象自身引用
                      对象自身引用是OOPLs中的一种特有结构。这种结构在不同的OOPLs中有不同的名称,在C++和Java中称为this,在Smalltalk-80、Object-C和其他一些OOPLs中则称为self。
                      对象自身引用的值和类型分别扮演了两种意义的角色:对象自身引用的值使得方法体中引用的成员名与特定的对象相关,对象自身引用的类型则决定了方法体被实际共享的范围。
                      对象自身引用机制使得在进行方法的设计和实现时并不需要考虑与对象联系的细节,而是从更高一级的抽象层次,也就是类的角度来设计同类型对象的行为特征,从而使得方法在一个类及其子类的范围内具有共性。
                      重置
                      重置的基本思想是:通过一种动态绑定机制的支持,使得子类在继承父类界面定义的前提下,用适合于自己要求的实现去置换父类中的相应实现。
                      在OOPLs中,重置机制有相应的语法供开发人员选择使用。在C++语言中,通过虚拟函数(Virtual Function)的定义来进行重置的声明,通过虚拟函数跳转表(Virtual Functions Jump Tables,VTBL)结构来实现重置方法体的动态绑定。在Java语言中,通过抽象方法(Abstract Method)来进行重置的声明,通过方法查找(Method Lookup)实现重置方法体的动态绑定。
                      类属类
                      类属是程序设计语言中普遍注重的一种参数多态机制。类属类可以看作类的模板。一个类属类是关于一组类的一个特性抽象,它强调的是这些类的成员特征中与具体类型无关的那些部分,而与具体类型相关的部分则用变元来表示。这就使得对类的集合也可以按照特性的相似性再次进行划分。类属类的一个重要作用,就是对类库的建设提供强有力的支持。
                      无实例的类
                      要创建无实例的类需要语言的支持。在C++和Java语言中,抽象类就是这样的类。在C++中通过在类中定义纯虚拟函数来创建一个抽象类,在Java中通过在类中定义抽象方法来创建一个抽象类,或者直接将一个类声明为抽象类。
               面向对象的程序
               类库是一种预先定义的程序库,可以由开发人员自己扩充。
               类库以程序模块的形式,按照类层次结构把一组类的定义和实现组织在一起。通常,这一组类预先提供的是一些低层功能,这些功能覆盖了传统例程库所提供的功能。
               开发人员可以利用类库中的类,其方式与使用语言中的基本类型完全相同。
   题号导航      2014年下半年 软件设计师 上午试卷 综合知识   本试卷我的完整做题情况  
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 /
 
第40题    在手机中做本题