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

 
(38)是把对象的属性和服务结合成一个独立的系统单元,并尽可能隐藏对象的内部细节;(39)是指子类可以自动拥有父类的全部属性和服务:(40)是对象发出的服务请求,一般包含提供服务的对象标识、服务标识、输入信息和应答信息等。
 
 
  A.  继承
 
  B.  多态
 
  C.  消息
 
  D.  封装
 
 
 

 
  第40题    2018年下半年  
   21%
在某销售系统中,客户采用扫描二维码进行支付。若采用面向对象方法开发该销售系统,则客户类属于(39)类, 二维码类属于(40)类..
  第39题    2018年上半年  
   31%
在下列机制中,(39)是指过程调用和响应调用所需执行的代码在运行时加以结合;而(40)是过程调用和响应调用所需执行的代码在编..
  第45题    2010年上半年  
   27%
UML类图中类与类之间的关系有五种:依赖、关联、聚合、组合与继承。若类A需要使用标准数学函数类库中提供的功能,那么类A与标准类..
   知识点讲解    
   · 面向对象的基本概念    · 对象标识    · 细节
 
       面向对象的基本概念
               Peter Coad和Edward Yourdon提出用下面的等式识别面向对象方法,即
               面向对象=对象+分类+继承+通过消息的通信
               可以说,采用这4个概念开发的软件系统是面向对象的。
               对象
               在面向对象的系统中,对象是基本的运行时的实体,它既包括数据(属性),也包括作用于数据的操作(行为),所以一个对象把属性和行为封装为一个整体。封装是一种信息隐蔽技术,它的目的是使对象的使用者和生产者分离,使对象的定义和实现分开。从程序设计者来看,对象是一个程序模块;从用户来看,对象为他们提供了所希望的行为。在对象内的操作通常叫做方法。一个对象通常可由对象名、属性和操作三部分组成。
               消息
               对象之间进行通信的一种构造叫做消息。但一个消息发送给某个对象时,包含要求接收对象去执行某些活动的信息,接收到消息的对象经过解释,然后予以响应,这种通信机制叫做消息传递。发送消息的对象不需要知道接收消息的对象如何对请求予以响应。
               类
               一个类定义了一组大体上相似的对象,一个类所包含的方法和数据描述一组对象的共同行为和属性。类是在对象之上的抽象,对象是类的具体化、是类的实例。通常把一个类和这个类的所有对象称为"类及对象"或对象类。
               继承
               继承是父类和子类之间共享数据和方法的机制。这是类之间的一种关系,在定义和实现一个类的时候,可以在一个已经存在的类的基础上进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。
               一个父类可以有多个子类,这些子类都是父类的特例,父类描述了这些子类的公共属性和操作。一个子类可以继承它的父类(或祖先类)中的属性和操作,这些属性和操作在子类中不必定义,子类中还可以定义自己的属性和操作。
               如果一个子类只从一个父类得到继承,叫做"单重继承";如果一个子类有两个或更多个父类,则称为"多重继承"。
               多态
               不同的对象收到同一消息可以产生完全不同的结果,这一现象叫做多态。在使用多态的时候,用户可以发送一个通用的消息,而实现的细节则由接收对象自行决定,这样,把具有通用功能的消息存放在高层次,而把不同的实现这一功能的行为放在较低层次,在这些低层次上生成的对象能够给通用消息以不同的响应。
               多态有几种布控的形式,Cardelli和Wegner把它分为四类,即
               
               其中,参数多态和包含多态称为通用的多态,过载多态和强制多态称为特定的多态。包含多态在许多语言中都存在,最常见的例子就是子类型化,即一个类型是另一个类型的子类型。过载多态是同一个变量被用来表示不同功能而通过上下文以决定一个名字所代表的功能。
               动态绑定
               绑定是一个把过程调用和响应调用所需要执行的代码加以结合的过程。在一般程序设计语言中,绑定是在编译时进行的,叫做静态绑定。动态绑定则是在运行时进行的,因此,一个给定的过程调用和代码的结合是到调用发生时才进行的。
               动态绑定是和类的继承以及多态相联系的。在继承关系中,子类是父类的一个特例,所以父类对象可以出现的地方,子类对象也可以出现。因此在运行过程中,当一个对象发送消息请求服务时,要根据接收对象的具体情况将请求的操作与实现的方法进行连接,即动态绑定。
 
       对象标识
        每个对象有一个唯一的、由系统生成的对象标识(Object Identifier,OID)。OID的值对外部用户来说是不可见的,但是系统会在内部用这个值唯一地标识每个对象,并用这个值创建和管理内部对象引用。
        相对于非面向对象数据模型和程序设计语言来说,对象标识给出了一种更强的标识概念,几种常用的标识形式如下:
        (1)值:用于标识的一个数据值。这种形式的标识常在关系数据库中使用。如一个元组的主码标识了这个元组。
        (2)名称:用于标识的用户提供的一个名称。在程序设计语言中,用户赋予每个变量一个名字来标识它;在文件系统中,用户给每个文件赋予一个名称来唯一地标识这个文件。
        (3)内置名:以上两种标识是由用户给出的,而内置名则是一种由系统来提供的标识。这种形式的标识在数据模型或程序设计语言中使用。
        不同的标识符其持久性程度是不同的,主要有以下几种:
        (1)过程内持久性:标识只有在单个过程的执行期间才是持久的,如过程内的局部变量。
        (2)程序内持久性:标识只有在单个程序或查询执行期间才是持久的,如程序设计语言中的全局变量、内存指针,SQL语句中的元组标识符。
        (3)程序间持久性:标识在从一个程序的执行到另一个程序的执行期间都保持不变,如指向磁盘上的文件系统数据的指针提供了程序之间的标识,SQL语句中的关系名也具有程序间持久性。
        (4)永久持久性:标识的持久性不仅仅跨越了各个程序的执行,还跨越了数据结构的重新组织。这种持久性正是面向对象系统所要求的。
        对象标识符必须具有永久持久性,也就是说,特定对象一经产生,系统就赋予一个在全系统中唯一的对象标识符,应该是固定不变的,一直到它被删除。面向对象数据库系统必须具有生成对象标识并维护其永远不变性的机制。
        标识符通常是由系统自动生成的,不需要用户来完成这项工作。然而在使用这种功能时要注意:系统生成的标识符通常是特定于这个系统的,如果要将数据转移到另一个不同的数据库系统中,则标识符必须进行转化。而且,如果一个实体在建模时已经有一个系统之外的唯一标识符,则系统生成的标识符就可能是多余的。如身份证号码可以作为个人的唯一标识符。
        早期的面向对象数据模型要求把所有的一切表示为对象,无论是一个简单的值还是一个复杂的对象,导致这样的情况出现:两个整型数值10和20,需要创建两个具有不同OID的对象。这种模型需要生成很多的对象标识符,很不实用。因此,大多数的面向对象数据库系统允许有对象和值两种表示方法,即每个对象必须有一个永远不变的OID,但是值没有OID,值只是代表它自己。
 
       细节
        在具体细节方面,对于不同的风险,要采用不同的应对方法。在信息系统开发项目中,常见的风险项、产生原因及应对措施如下表所示。
        
        常见的风险及应对措施
        
   题号导航      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 /
 
第38题    在手机中做本题