软考程序类答疑回顾(一)

2005-1-14 17:21:00   Count:

一、什么是OOD?
答:面向对象的设计(Object-Obriented Design——OOD)主要是利用面向对象的技术建立能够集成产品设计和制造信息的产品定义模型,即面向对象的产品定义模型,在该模型的基础上实现系统的设计。
从OOA到OOD 顾名思义,“面向对象的设计”说明要在“对象”和“设计”上作文章。
设计是对问题域外部可见行为的规格说明增添实际的计算机系统实现所需的细节,包括人机交互、任务管理和数据管理的细节。
在面向对象的设计中,对象有更明确的定义。
对象是问题域或者现实中一些东西的抽象,它反映系统为之保存信息和(或)与它交互的能力,它是一些属性及其专用服务的一个封装体类:一个或多个对象的描述,或用一组属性和服务的形式来描述,此外它可以描述如何创造该类的对象。
OOA是对现实世界中的问题空间建模,其分析侧重于总体,较为粗糙(粒度较大)的研究。而OOD则要求对特定的实现空间。建模。所以说,OOA的各层模型化了“问题空间”,而OOA各层扩充OOD,则模型化一个特定的“理论空间”。
OOA完全独立于编程语言,OOD保持较大部分独立于编程语言的特点。
  在理想的情况下,人们希望有一套从分析到设计到实现的连续表示:OOA到OOD到OO-DBMS(面向对象的数据库管理系统——是面向对象的程序设计语言与关系数据库系统的有机组合)。在这种情况下,OOA的结果被扩充为OOD的结果,然后,OOD的结果又直接映射OO-DBMS程序设计语言及数据库管理语法。
  从OOA到OOD是一个累进的模型扩充过程。这种扩充主要以增加属性和服务开始。这种扩充有别于从数据流图到结构图所发生的剧变。

二、请具体谈谈单重继承和多重继承。
答:继承性分为单重继承和多重继承两类。单重继承时,一个子类只有一个父类;多重继承时一个子类可以有多于一个的父类。下图表示了单重继承(a)和多重继承(b)时父类和子类之间的关系。

 


 
      单重继承构成的类之间的关系是一棵树,多重继承构成的类之间的关系是一个格(如果将所有无子类的类,如图(b)中的类E和F,都看成还有一个公共子类的话),两者都是典型的结构形式。
      继承关系是可传递的,如图(a)中的E继承C,而C继承A,因而E也继承了A,所以E也是A的子类,是间接的子类, C则是A的直接子类。
      继承性是面向对象程序设计语言不同于其他语言的最主要的特点。

三、面向对象与面向过程的区别是什么?
答:计算机没有思想,人必须明确地告诉它如何运算,每一步做什么。站在这种计算机的角度进行程序设计,就是面向过程的方法。如:用计算机模拟一只猫捉老鼠的过程,程序员必须告诉计算机每一步猫的具体的动作。如果用面向对象的程序设计方法来做,就可以把猫作为一个独立的对象,猫会奔跑,猫会捉老鼠,这些是它的固有属性,被封装在猫这个对象之中,所以,只需给出老鼠出现的信息,猫就会自动去捉。与面向过程相比,面向对象的方法更符合人的思维习惯。

四、请问什么是重载?
答:如果同一个方法名对应于多个方法体,我们就说此方法名被重载(overload)了。注意,重载是覆盖(override)的一个必要部分,但这两种方式是不相同的,重载能够在没有覆盖的情况下单独出现。
对于重载,只有方法名是多态的——它有多种形式。 我们也可以把重载和覆盖想像成另一种方式——只有一种抽象函数,它能接收各种不同类型的参数,而实际执行的代码要由所接收的参数来决定。编译器通常能在编译时确定所使用的方法,然后产生一组惟一的代码,这些代码都是经过优化的。

五、面向对象中的多态性指什么?
答:在收到消息时,对象要予以响应。不同的对象收到同一消息可产生完全不同的结果,这一现象叫做多态。在使用多态的时候,用户可以发送一个通用的消息,而实现的细节则由接收对象自行决定,这样,同一消息就可以调用不同的方法。
      多态的实现受到继承性的支持,利用类的继承的层次关系,把具有通用功能的消息存放在高层次,而不同的实现这一功能的行为放在较低层次,在这些低层次上生成的对象能够给通用消息以不同的响应。


浏览该文章的用户为您推荐了该信息: 
       
   
   
 
站内检索:
栏目导航
本月授课安排
阅读排行