首页 考试吧论坛 Exam8视线 考试商城 网络课程 模拟考试 考友录 实用文档 求职招聘 论文下载
2011中考 | 2011高考 | 2012考研 | 考研培训 | 在职研 | 自学考试 | 成人高考 | 法律硕士 | MBA考试
MPA考试 | 中科院
四六级 | 职称英语 | 商务英语 | 公共英语 | 托福 | 雅思 | 专四专八 | 口译笔译 | 博思 | GRE GMAT
新概念英语 | 成人英语三级 | 申硕英语 | 攻硕英语 | 职称日语 | 日语学习 | 法语 | 德语 | 韩语
计算机等级考试 | 软件水平考试 | 职称计算机 | 微软认证 | 思科认证 | Oracle认证 | Linux认证
华为认证 | Java认证
公务员 | 报关员 | 银行从业资格 | 证券从业资格 | 期货从业资格 | 司法考试 | 法律顾问 | 导游资格
报检员 | 教师资格 | 社会工作者 | 外销员 | 国际商务师 | 跟单员 | 单证员 | 物流师 | 价格鉴证师
人力资源 | 管理咨询师考试 | 秘书资格 | 心理咨询师考试 | 出版专业资格 | 广告师职业水平
驾驶员 | 网络编辑
卫生资格 | 执业医师 | 执业药师 | 执业护士
会计从业资格考试会计证) | 经济师 | 会计职称 | 注册会计师 | 审计师 | 注册税务师
注册资产评估师 | 高级会计师 | ACCA | 统计师 | 精算师 | 理财规划师 | 国际内审师
一级建造师 | 二级建造师 | 造价工程师 | 造价员 | 咨询工程师 | 监理工程师 | 安全工程师
质量工程师 | 物业管理师 | 招标师 | 结构工程师 | 建筑师 | 房地产估价师 | 土地估价师 | 岩土师
设备监理师 | 房地产经纪人 | 投资项目管理师 | 土地登记代理人 | 环境影响评价师 | 环保工程师
城市规划师 | 公路监理师 | 公路造价师 | 安全评价师 | 电气工程师 | 注册测绘师 | 注册计量师
缤纷校园 | 实用文档 | 英语学习 | 作文大全 | 求职招聘 | 论文下载 | 访谈 | 游戏

2011年计算机等考四级数据库工程师复习资料(13)

考试吧整理“2011年计算机等级四级数据库工程师复习资料(13)”,方便考生备考!

  十四、面向对象方法与面向对象数据库

  1.面向对象技术的形成与发展

  80年代以来,面向对象语言如雨后春笋搬出现,形成了面向对象语言的两大类:一类是纯面向对象的语言,如Smalltalk和Eiffel等;另一类是混合型面向对象语言,即在过程语言中增加面向对象的机制,如C++、Objective-C等等。现在,作为80年代最流行的C语言的扩充的面向对象C++,是目前应用最广泛的语言。C++编译产生的代码性能几乎与传统的C编译产生的代码性能相同。面向对象的Pascal和BASIC也已在DOS、Windows上OS/2中实现。现在,面向对象技术已成为一种广泛使用的成熟的技术和方法,有一系列成熟的商品软件工具支持OON。OON中涉及到下列一些基本概念:信息(Information)是指对事物的一种表示或描述。对象(Object)是一个由信息及其关于信息处理的描述组成的包。消息(Message)是对某种信息的处理的描述。类(Class)是对一个或几个相似对象的描述。实例(Instance)是被某一个特定的类所描述的一个对象。因此,每一个对象都是某个类的一个实例,而类是一些实例的全部相似特征的描述。方法(Method)是描述对象对消息的响应。对象是一个普遍适用的基本的逻辑概念,是一个有组织形式的、含有信息的实体或结构。它既可以表示一个抽象的概念,也可以表示一个具体的程序模块;既可以表示软件,也可以表示硬件。于是,OOM提供了同时在现实世界和机器世界进行系统分析、设计和实现的统一的方法。

  2.程序设计方法学

  随着软件系统规模的扩大和复杂性的增加,软件的开销也惊人地增加了,而软件的可靠性和可维护性却明显地下降了。为此,人们惊呼软件危机。产生软件危机的根本原因在于传统的冯•诺依曼机(Von Neumann Machine)的结构和人们求解问题的方法的不一致性。这种不一致性主要表现在以下几个方面:

  (1)语言的鸿沟;

  (2)程序设计的鸿沟;

  (3)Von Neumann机的鸿沟。语言的鸿沟是形成软件危机的主要原因之一。从目前看,面向对象的语言在缓解软件危机方面起到了很大的作用,取得了前所未有的积极效果。

  3.面向对象的程序设计方法

  经验告诉我们:在软件系统中,“过程”或“操作”是不稳定的、多变的,而“数据结构”或“对象”却是相对稳定多了。因此,传统的以过程为中心而设计的软件的可重用性差;而以数据结构或对象为中心而设计的软件的可重用性较好。面向对象的程序设计方法以数据结构或对象为中心,力求问题在现实世界和机器世界中的一致性。在使用OOM进行程序设计时,首先进行的是面向对象的分析(Object Oriented Analysis)。其任务是了解问题所涉及的对象、对象间的关系,然后在现实世界中构造该问题的对象模型,以反映所要解决的“实质问题”。然后,进行面向对象的设计(Object Oriented Design),即设计软件的对象模型。根据软件开发环境的功能,把问题的对象模型从现实世界过渡到机器世界。在软件系统内设计出各个对象、对象间的关系(如继承关系),对象间的通信方式(如消息模式)等等。总之,在该阶段应明确各个对象应做些什么及其关系。面向对象的实现(Object Oriented Implementation)是指软件功能的具体实现,即怎么做的实现其中包括对象内部功能的实现、确定系统的用户接口。在实际开发一个系统时,上述三个阶段必须有机地结合在一起。现在提倡面向对象的软件开发方法,并进一步规范化,还开发了一系列OOM的软件工具和软件环境,以支持软件自动生成。

  4.面向对象的方法的基本概念与特征

  实质上,软件是问题及其求解方法的一种表达形式。显然,如果软件能直接自然地表达求解方法,则软件不仅易于理解,而且也具有较高可靠性与可维护性。如果能按照人们通常的思维方式,在机器世界里建立问题的模型,则可以提高软件的模块化和重用的可能性。面向对象方法的基本原则是:按照人们在现实世界中的通常的思维方式建立问题在机器世界的模型,设计尽可能自然地表现求解方法的软件。在OOM中,对象(object)和消息传递(Message passing)分别作为表达事物及事物间相互联系的概念。类(class)和继承(inheritance)作为适合人们一般思维方式的描述机制。方法(method)允许各种操作作用于某类对象上。这种集对象、类、消息、继承和方法于一体的OOM的基本点在于对象的封装(encapsulation)和继承。通过封装能将对象的定义和其实现分开;通过继承能体现类与类间的关系,并由此带来了动态连接(dynamic binding)和实体的多态性(polymorphisim)从而构成了OOM的基本特征。

  (1)对象为了使用计算机求解问题,现实世界的对象必须表示成计算机内部的概念,即机器世界的对象(简称机器对象,或对象)。为此,“对象”有在两个不同世界的不同含义,可以从下文中区分开来。从存储角度来看,机器对象占有一块存储空间,其中有数据也有方法。从机器实现机制来看,机器对象中私有数据表示了对象的状态,该对象的状态只能由私有的方法来改变它。每当需要对象来完成一定处理工作时,只能由其它对象向该对象发送消息,本对象响应消息后按照消息模式找出匹配的方法,并执行该方法,方法定义了该对象上的操作。

  (2)消息和方法程序的执行是靠在对象间传递消息来完成的。7发送消息的对象称为发送者,接收消息的对象称为接收者。消息中仅包含发送者的要求,它只告诉接收者需要完成哪些处理,但并不指示接收者应如何完成这些处理。消息完全由接收者解释,并决定完成所需的处理的方式。一个对象可以接收不同形式、不同内容的多个消息;相同形式的消息可以发往不同的对象。不同的对象对形式相同的消息可以有不同的解释,因而可以作出不同的反应。这里,反应并不是必需的。这与子程序的调用/返回有明显的不同。把全部对象分成各种对象表,每个类都定义一组所谓“方法”。方法实际上是允许作用于该类对象上的各种操作。当一个面向对象的程序在运行期间,一般要做三件事:

  (1)根据需要创建对象;

  (2)从一个对象(或用户)向另一个对象传递消息;

  (3)若不再需要该对象时,应删除它,并回收它所占用的存储单元。

  (3)类和类的层次在面向对象的程序设计中,对象是程序的基本单位。相似的对象,可以像传统程序设计语言中的变量与类型关系一样,归并到一类(class)中去。程序员只需定义一个类对象,就可以得到若干实例(instance),作为可以使用的对象。具体地说,类由方法和数据组成,是关于一类对象的性质的描述。它包括外部特性和内部特性两个方面。通过描述消息模式及其相应的处理能力来定义对象的外部特性。通过描述内部状态的表现形式及固有的处理能力的实现来定义对象的内部实现特性。对象是在执行过程中,根据对象所属的类,动态地生成的。一个类可以生成多个不同的对象。同一类对象具有相同的特性。一个对象的内部状态只能由其自身来修改,任何别的地象都不可能修改它。因此,同一个类的对象,虽然在内部状态的表现形式上相同,但它们可以有不同的内部状态,故此这些对象并不完全一模一样。一个类的上层可以有超类(superclass),下层可以有子类(subclass),这样形成了一种类的层次结构。层次结构的一个重要特点是继承性,一个类可以直接或间接地继承其超类的全部描述。继承性具有传递性。一个类可以有多个子类,也可以有多个超类。抽象类(abstract class)是一种不能建立实例的类。抽象类将有关的类组合在一起,提供了一个公共的根,其它一些子类从这个根派生出来。通常一个抽象类只描述了这个类的 有关的操作接口。或者操作的部分实现;完整的实现则被留给一个或几个子类,抽象类一般用于定义一种协议或概念。

  (4)继承性继承性(inherintance)是自动地共享子类、超类和对象中的方法和数据的一种机制。如果没有继承性,不同类中的对象中的数据和方法就可能出现大量的重复。继承性比较自然地体现了对象间的联系。

  (5)封装性封装是一种信息隐蔽技术,用户只能看到对象封装界面上的信息,对象内部的信息对用户是隐蔽的。封装的目的是使对象的使用者和对象的设计者分开,使用者不必知道实现的具体细节,只须按设计者的要求来访问对象,这样方便于系统的集成。封装是一种强有力的系统集成手段。封装和类说明有关。一个类的每一个实例都是一个单独的封装(或组件)。显式地把对象的规格说明(specification)和对象的实现分开是面向对象的一大特色。封装本身即是一个模块,把对象的定义模块和实现模块分开,从而使得维护和修改变得方便。

  (6)多态性所谓多态(polymorphic),即一个名字可以具有多种语义。多态与动态类型和静态类型有关。动态类型是指在执行期间可以改变的类型。静态类型是在程序文本中声明时确定下来的类型。在面向对象的系统中,利用重名这样多义性不会带来混乱,并且为需求分析和设计带来了好处。

  5.动态聚束

  聚束(binding)其实并不是一个新概念。一个程序经编译到连接成为可运行的目标代码,就是将可执行代码聚束在一起。用传统语言写的程序在运行之前即可聚束,故此称之为静态聚束(static binding)。而面向对象语言则在程序运行时可发生聚束,故称之为动态聚束(dynamic binding)。动态聚束增加了程序的简单性和可扩充性,使程序增删自如,不易出错,但效率略低。应该指出,静态聚束运行效率高,但修改维护时工作量大。

  6.面向对象的系统分析方法

  系统分析过程就是提取一个系统的需求过程,即是指为了满足用户的需求,系统必须做什么,而不是指系统如何实现。系统分析通常是一个需求文档开始点,同用户进行一系列的讨论为开端。一般来说,参加制定文档的人应包括系统的最终用户、问题域专家、系统的开发者以及其它感兴趣的人。在过去的10年中,已经在系统分析中使用了功能分解法、数据流法、信息模拟法。最近研究了面向对象分析(OOA)方法。下面将综述这4种主要的需求分析方法。

  (1)功能分解法 它可表示为功能=子功能+子功能接口

  (2)数据流法 数据流法,即通常所说的结构分析法,它可表示为数据流=数据存储+数据变换+过程说明+数据字典

  (3)信息模拟法 信息模拟的主要建模工具是实体-关系图,现已发展成为语义数据模型。信息模拟法可以表示为信息模拟法=对象+属性+关系+超类+子类+对象

  (4)面向对象法 面向对象的含义很广,因为“对象”一词可以在不同领域有不同的解释,面向对象的可以表示为面向对象法=对象+类+继承+消息通信面向对象分析是建立在信息模拟和面向对象程序设计语言的概念基础之上的。作为一个比较全面的方法,面向对象分析由5个步骤组成:①确定类和对象;②识别结构;③识别主题;④定义属性;⑤定义方法。现在已有了一些面向对象分析的CASE工具支持OOA,以加速OOA的自动化和标准化。

  7.面向对象设计和面向对象实现

  从面向对象分析到面向对象设计是一个逐步扩充的细分过程,同传统的实体关系模型为基础的系统分析和设计类似,面向对象的设计使用的是面向对象的概念模型。在面向对象的概念模型中以面向对象方法中的基本概念为基础。最后,使用面向对象的语言,对设计的概念模型加以实现。限于篇幅不再详细讨论。

文章责编:fengjiangtao  
看了本文的网友还看了
文章搜索
版权声明:如果计算机等级考试网所转载内容不慎侵犯了您的权益,请与我们联系800@exam8.com,我们将会及时处理。如转载本计算机等级考试网内容,请注明出处。