面向对象数据库研究

2024-10-02

面向对象数据库研究(精选12篇)

面向对象数据库研究 篇1

1 关系型数数库与面向对象数据库比较

1.1 传统数据库技术的缺陷

随着应用领域的不断拓展, 传统的关系数据库 (RDB, Relational Database) 系统所能处理事务的范围显得愈发狭窄, 仅能够处理正文、数字型的数据, 同时还表现出其他诸多不足:应用不灵活, 数据类型有限, 可扩充性差, 难以保证复杂应用建模和数据的一致性, 缺乏对层次数据结构的支持, 缺乏导航式查询和关联查询访问等。

1.2 面向对象数据库的优势

与传统的数据库相比, 面向对象数据库系统 (OODB, Object-Oriented Database) 有如下优势: (1) 支持复杂的数据结构; (2) 实体都表示为对象; (3) 将对象的数据和操作封装在对象的类型中; (4) 特殊的继承功能, 是具有面向对象特色的建模手段, 它允许一种类型从另一种类型中获取数据和方法; (5) 多态、重载、滞后联编 (滞后联编是指在系统运行时, 而不是在编译时把操作的名字转换成函数地址) ; (6) 对持久性和易失性存储提供了统一的类型, 保证了计算完整性; (7) 系统为每一个对象生成内部唯一的标识符; (8) 支持复杂的数据类型; (9) 具有许多新的事务处理模型, 如开放嵌套事务模型、工程设计数据库模型、多重提交点模型等。

2 面向对象数据库简介

2.1 面向对象的概念及特性

面向对象的方法就是以接近人类思维方式的思想, 将客观世界的一切实体模型化为对象。在面向对象的方法中, 对象、类、方法和消息是基本的概念。

面向对象方法具有抽象性、封装性、多态性等特性。面向对象方法可以将对象抽象成对象类, 实现抽象的数据类型, 允许用户定义数据类型。封装是指将方法与数据放于某一对象中, 以使对数据的操作只可通过该对象本身的方法来进行。对象是一个封装好的独立模块。多态是指同一消息被不同对象接收时, 可解释为不同的含义。把实现的细节都留给接收消息的对象, 相同的操作可作用于多种类型的对象, 并能获得不同的结果。

2.2 面向对象数据库系统的特征

面向对象数据库系统应该具备的主要性质和特征分为三组:必备的、可选的和开放的 (设计人员可以选择的特性) 。其中必备的特征有:对象标识、封装性、类型和类、类/类型的层次结构、重载/过载/滞后联编、计算完备性、可扩充性、持久性、辅存管理、并发性、恢复。

可选的特性有:多重继承性、类型检查和类型推理、分布、设计事务处理和版本等五个方面。

2.3 面向对象数据模型的四种核心技术

分类:把一组具有相同属性结构和操作方法的对象归纳或映射为一个公共类的过程。对象和类的关系是“实例” (instance-of) 的关系。

概括:把几个类中某些具有部分公共特征的属性和操作方法抽象出来, 形成一个更高层次、更具一般性的超类的过程。子类和超类用来表示概括的特征, 表明它们之间的关系是“即是” (is-a) 关系, 子类是超类的一个特例。

聚集:聚集是将几个不同的类对象组合成一个更高级的复合对象的过程。术语“复合对象”用来描述更高层次的对象, “部分”或“成分”是复合对象的组成部分, “成分”与“复合对象”的关系是“部分” (parts-of) 的关系, 反之“复合对象”与“成分”的关系是“组成”的关系。

联合:将同一类对象中的几个具有部分相同属性值的对象组合起来, 形成一个更高水平集合对象的过程。术语“集合对象”描述由联合而构成的更高水平的对象, 有联合关系的对象称为成员, “成员”与“集合对象”的关系是“成员” (member-of) 的关系。

3 面向对象数据库使用及实例

下面利用实例来说明面向对象数据库的使用。本文采用利用FastObjects提供的API函数展示了在永久性数据库对象上的基本操作及事务操作。Versant公司提供的FastObjects是一个可视化的数据库管理系统。

3.1 采用Publication类演示数据库操作

本部分实例展示了对多态性数据类型的操作。此类型层次包括一个基类:Publication, 它有两个继承类:Book和CD。用Rational Rose建模工具得到的Publication类模型图如图1所示。

(1) 创建数据库步骤如下:

PtBase::POET () ->GetBase (server, existing Base, p Base) ;

PtBase::POET () ->GetDictionary (server, dictionary, pClassDictionary) ;

pClassDictionary->Create Database (newBase) ;

PtBase::POET () ->Unget Dictionary (pClassDictionary) ;

(2) 打开数据库操作:调用InitPOET进行FastObjects数据库的初始化工作 (使用数据库操作之前必须进行初始化) 。使用PtRoot::GetBase, 指定数据库和服务器名字来打开数据库。在本例中, 服务器使用“LOCAL”代表本机。同时注册一个事务, 以便对对象读写操作时使用。

InitPOET (PtTransaction ByThread, "library") ;

int err=PtBase::POET () ->Get Base (server, base, p Base) ;

if (err>=0)

{pTransaction=new Pt Transaction () ;

if (pTransaction)

{

pTransaction->SetUseShadow Indexes (PtFALSE) ;

PtBase::POET () ->Set Current Transaction (pTransaction) ;

err=p Transaction->Register Resource (p Base) ;}

}

(3) 关闭数据库:当你完成对数据库地所有操作后, 关闭数据库。

pTransaction->Deregister Resource (pBase) ;

delete pTransaction;

Pt Base::POET () ->Unget Base (p Base) ;

Deinit POET () ;

调用Deregister Resource注销事务, 调用PtRoot::UngetBase关闭数据库。恢复初始化之前的FastObjects环境, DeinitPOET释放数据库操作申请的系统资源。

(4) 存储:存储一个新对象到数据库的过程。

pTransaction->Begin () ;

Book*pBook=newBook (author, title) ;

pBook->Assign (pBase) ;

pBook->Store () ;

pTransaction->Commit ()

pBook->Forget () ;

调用PtTransaction::Begin开始事务, 并指定数据库, 调用Commit提交事务, 把对象存到数据库, 当对象不再需要时, 通过Forget方法将其移除。

(5) 删除对象时, 首先调用Pt Transaction::Begin开始一个事务, 使用Delete方法从数据库中移除对象, Commit提交事务。

(6) 排序:对所有集合进行排序。此部分例子展示了如何使用索引技术对指定所有集合进行排序的方法。如果为一个类的特殊的属性定义了一个索引, 那么All Sets可以用此成员排序。

UngetAllPublications () ;

GetAllPublications (nItem) ;

Publication*pPublication=0;

Publication SortingOrderSort Order=GetSortOrder () ;

pPublications=newPublication AllSet (pBase) ;

idxName=“Publication TitleIndex”;

err=pPublications->SortByIndex (idx Name) ;

(7) 查询:使用query查找满足特定条件的对象。

query (pBase, queryString) ;//创建查询对象

query<

oql_execute (query, (PtOnDemand Set*&) pPublications) ;//执行查询, 创建并把给结果集赋值

3.2 Person类和Address实例分析

创建数据库, 以此来说明面向对象数据库的思想。该数据库的Person类对象的结构示意如图2所示。

建立Person类, 包括属性:name, age, address, comment。其中address是另一个类CAddress, 通过类之间的指针联系从Person类对象中可以操作address, 这样实现了真正的面相对象数据管理。通过继承Person类, 建立了Family Person类, 它继承了Person类的属性和方法, 然后添加了自己的属性和方法, 真正实现了类重用机制。建立Person类对象的主要代码所下:

persistent class CPerson//类定义

{

public://构造函数和析构函数

CPerson () ;

CPerson (const PtString&name, int age, const PtString&comment) ;

virtual void print () ;

public://服务函数

public://存取函数

const PtString&Name (void) const;

void Set Name (const PtString&name) ;

//age, address, comment同上述SetNameprivate://属性

PtString m_name;

int m_age;

CAddress*m_pAddress;

PtString m_comment;

};//函数实现

CPerson::CPerson () :m_age (0) , m_name ("") , m_pAddress ( (CAddress*) 0) , m_com-ment ("")

{}

CPerson::CPerson (const PtString&name, int age, const PtString&comment)

:m_age (age) , m_name (name) , m_p Address ( (CAddress*) 0) , m_comment (comment)

{}

CAddress*CPerson::Address (void) const

{

return m_pAddress;

}

void CPerson::SetAddress (const CAddress*address)

{

if (m_pAddress!= (CAddress*) 0) m_pAddress->Forget

() ;

m_pAddress= (CAddress*) address;

if (m_pAddress!= (CAddress*) 0) m_pAddress->Remember () ;

member () ;

}

const CAddress*CPerson::GetAddress () const

{

return m_pAddress;

}

4 面向对象数据库技术的发展趋势

面向对象数据库技术是包括面向对象特性的、与关系数据库系统兼容的、成熟的数据库管理系统。尽管目前已有大量的针对OODBS的研究开发工作, 但面向对象数据库技术的成熟仍有赖于许多关键问题的解决: (1) 标准化和形式化; (2) 改善和加强OODBS的性能; (3) 加强建模能力; (4) 加强面向对象数据库的应用开发工具的研制和推广; (5) 视图、演绎能力、语义建模和长事务功能。

参考文献

[1]丁宝康, 董健全.数据库实用教程[M].北京:清华大学出版社, 2001.

[2]叶小平, 汤庸, 汤娜, 等.数据库系统基础教程[M].北京:清华大学出版社, 2007.

[3]季维岩.面向对象数据库及其实现方法研究[J].科学技术与工程, 2004 (11) .

[4]邓正宏, 薛静, 郑玉山.面向对象技术[M].北京:国防工业出版社, 2004.

[5]FastObjects.Versant Corp[OL].http://www.fastobjects.com, 2007-12.

[6]柳松青.面向对象在数据库设计中的应用[J].计算机工程与设计, 2002 (8) .

面向对象数据库研究 篇2

基于数据库和面向对象的运载火箭地面测发控软件复用

随着运载火箭地面测发控软件的规模越来越大,测发控软件的复用成为当前运载火箭地面软件的.发展趋势.本文介绍了一种新颖的运载火箭地面测发控软件复用技术,该技术将面向对象技术和数据库技术相结合,实现了运载火箭地面软件的复用,在加快试验进度的同时,也提高了程序的可靠性.目前,该技术已被成功应用在某新型运载火箭的地面测发控软件中.

作 者:孙海峰 陈迪 解月江 邹军 安占新 SUN Haifeng CHEN Di XIE Yuejiang ZOU Jun AN Zhanxin  作者单位:孙海峰,解月江,邹军,安占新,SUN Haifeng,XIE Yuejiang,ZOU Jun,AN Zhanxin(北京航天自动控制研究所,北京,100854)

陈迪,CHEN Di(哈尔滨工程大学,哈尔滨,150001)

刊 名:航天控制  ISTIC PKU英文刊名:AEROSPACE CONTROL 年,卷(期):2010 28(2) 分类号:V554 TP31 关键词:运载火箭   测发控系统   软件复用   面向对象  

面向对象数据库研究 篇3

关键词:面向对象;关系型数据库;映射;类;属性

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)20-0012-02

1 引言

面向对象(Object Oriented,OO)是把面向对象的思想应用于计算机软件开发中,以对象为内核,以类、继承、封装、多态等概念构造系统,进行客观事物的软件开发设计的一种方法。面向对象,对象其实就是一个封装体,包含数据和控制命令。随着计算机技术和开发软件的不断升级,面向对象的方法和应用已经不仅仅局限于软件开发和程序设计,已经逐渐扩展到数据库系统、分布式系统、网络管理、人机交互等计算机领域,甚至对人工智能、计算机辅助工具、信息系统等產生深远影响。计算机和网络都离不开数据库,面向对象的广泛应用,也给数据库技术增添了新鲜血液。面向对象方法与数据库技术,尤其是关系型数据库如何有效结合,更好的支持数据库的应用,是一个非常值得研究的课题。

2 面向对象的关系型数据库

2.1 关系型数据库

电子商务、云存储、云计算等计算机信息系统,已经是当今信息技术的重要手段,而数据库技术是计算机系统的重要组成部分和核心内容。数据库类型有网状、层次和关系几类,其中关系型数据库以其集合的操作方式得到了最为广泛的应用。关系型数据库是一种建立在关系数据库模型基础上的数据库,用集合代数方法对数据库单元中数据进行处理,是一组相互之间有关联关系的表,表的关系通过相关字段进行关联,表中的数据可以根据需求情况进行存取且不用重新组织数据库表格。新建一个关系型数据库时,每一行包含一个数据实体,是被列定义的种类。目前应用较多的数据库有oracle、sqlserver、mysql等。

2.2面向对象分析法

面向对象分析法(Object-Oriented Analysis,OOA),是指一个软件开发项目在开发过程中,首先要对业务情况进行调研,然后用面向对象的思想对该项目业务进行归纳、分类、分析。OOA强调的是业务对象之间的关系以及对象的属性和行为。面向对象分析法使用户和设计者之间的沟通更容易,设计者能够更好地理解用户的需求,设计者了解了用户的需求,才能更好地设计出用户与数据库之间的映射方式,从而设计出用户满意的数据库。

OOA方法的程序设计,从结构框架来说,一个是针对开发者的外部层,外部层是应用程序的整体设计;内部层针对物理存储,称为物化视图,是基于远程表格的,也可以称之为快照;概念层介于外部层和内部层之间,是内外部的映射,用DDL表示,概念层是关系型数据库的真正表现形式。对象与关系型数据库通过映射发生关系,映射方法就是将关系型数据库进行概念层的设计。从对象到关系型数据库的映射内容包括:属性与列的映射,关系型数据库中的继承,类与表的映射,映射的关联,聚合和组合以及实现关系等。

将对象建模和映射的过程就是将对象转换成概念层的数据库模型,对象模型转换为关系型数据库的映射有如下关系:

1)每个对象是唯一的,有唯一的标识符,具有唯一性。对象的标识一般用主键或者是系统自动生成的伪标识符来标识,而不是通过描述对象的属性来标识。

2)类与关系型数据库中的表的转换,可以通过直接调用表的名称,或者可以通过在类的名称前加前缀的方式修改成表的名称来实现。

3 基于面向对象技术的关系数据库的设计方法

3.1 整体思路

基于面向对象技术的关系型数据库的设计方法,首先要确定应用程序中的领域类,领域类中将数据信息和对数据的操作、调用方法进行了封装。领域类实例化,就得到对象,因此,需要提前把对象的存储、地址、检索方法、调用方法等问题设计好,做好准备工作。

在面向对象的关系型数据库中,数据通过对象形式存储到数据库中,并且对象之间的关联关系是自动存储的。关系型数据库本身不存在集合和分解的问题,可以由与对象相关的状态图像构成。面向对象的关系型数据库是通过对对象进行查询、检索、调用的,不存在对某个表的一行或一列进行某些操作。因此需要提前定义对对象的各种操作方法。比如:writeObject()是一个写入并存储一个对象及所有对象相关;read Object()是读取一个对象及所有对象相关。每个对象有唯一的标识ID,在写入和读取时通过唯一的标识ID进行。

以消费者对电子账户的写入、读取操作为例子,来说明面向对象数据库数据存储模式,如图1所示。将消费者对电子账户的操作对象的属性描绘成字段,指向其他对象需要映射到相应的外部关键字上,此处的操作动作不能封装。数据库中的每一个表对应一个类,对数据库中的表的操作设定为函数。

3.2 对象映射成关系数据库

RDBMS的表都是二维表,一个二维表是一个管理单元,二维表及表与表之间的关联关系用来描述对象模型的属性,即对象模型与关系型数据库的映射关系。将每个对象的类存储到数据库的表中,一个类对应一个对象实例,并进行存储。不仅对象实例映射到关系型数据库中,对象之间的关联关系也要映射到关系型数据库中,这样才能进行后续的操作。

对象之间的关系有四种:关联、继承、聚合、组成。关联是关系型数据库中对象之间的关联关系,聚合不仅需要对关系型数据库的整体进行操作,还需要对部分进行操作,即读取时需要整体读取的同时也需要在部分数据中进行读取。关联是不需要的,在关联中存储和读取的执行操作不明显。关联和聚合的区别在于对象之间的联系程度不同。

对关系型数据库中的数据不但有存储、调用等动作,还有删除的动作,那么将数据库对对象的存储和删除也是一样,对象映射成关系型数据由一些规则,如下:

1)一个类与一个库表对应映射,也可以多个类与一个库表对应映射。

2)类中存在父子关系的类,映射关系时可以分别与父和子类分别映射,或者不对父类进行定义,让子类具有父类的属性;不对子类进行定义,让父类具有子类的属性。

3)映射关系定义为一个表,包含一对一、一对多、多对多等关联关系,也可在类表之间定义外键。

4)聚合的方式有两种:一种是用一张表将所有对象类的属性合并;一种是分别用两张表分别将对象类的整体和部分分别合并,利用外键关联整体与部分的关系。

5)有些类是没有属性的,没有属性则没有映射表。

6)映射后的关系型数据库表需要进行冗余操作,使其关系范式合理。

4 结论

面向对象的关系型数据库系统以其模型简单、数据独立的优势,成为数据库技术发展的主流方向,本文针对面向对象的技术和关系型数据库的特点,将两者相结合,研究了将面向对象技术方式应用于关系型数据库,进行系统设计方法的研究,重点描述了对象映射成关系数据库的方法。

参考文献:

[1] 杨玉芬,李明明.高晓旸对象管理在面向对象数据库中的应用研究[J].吉林大学学报(信息科学版),2013,9(5):548-553.

[2] 肖刚.面向对象数据库在教学信息管理系统中的应用[J].硅谷,2012(6):79.

[3] 陆登,李善平,郑春昭. 基于对象数据库的扩展Java集合框架[J].计算机应用与软件,2011(1):133-136.

[3] 陈文宇.面向对象的关系数据库设计[J].电子科技大学学报,2002(1):53-56.

面向对象数据库模型研究 篇4

面向对象的数据库经过十几年的发展, 已经日趋成熟, 有关的国际标准相继出台。ODMG (OMG所属的对象数据库管理组) 分别于1993, 1997, 2000年提出了对象数据库标准O D M G 1.0, O D M G 2.0, O D M G 3.0, 制定ODMG标准的目的是为了让ODBMS的用户编写的可移植的应用, 能运行在多个OODBMS的产品上。本课题的接口实现部分就是参照ODMG标准来实现。

ODMG对象模型主要包括以下基本概念。

(1) 数据建模的基本原语是对象 (Object) 和文字 (Literal) , 每个对象有一个唯一的标识符, 文字没有标识符。

(2) 对象和文字都可以划分为类型 (Type) , 同一类型的对象或文字具有相同的行为和状态, 对象可以称为类型的实例。

(3) 通过一组性质 (Property) 来定义对象的状态, 性质可以分为两种:对象的属性 (Attribute) 和对象之间的关系 (Relationship) 。

1 对象与对象标识

1.1 对象结构

对象是由一组数据结构和在这组数据结构上的操作的程序代码封装起来的基本单位。对象之间的界面由一组消息定义。一个对象包括以下几个部分。

(1) 属性集合:所有属性合起来构成了对象数据的数据结构。属性描述对象的状态、组成合特性。对象的某一属性可以是单值的或值的集合, 进一步地, 一个对象的属性也可以是一个对象, 即对象可以嵌套, 从而组成各种复杂对象。

(2) 方法集合:方法描述了对象的行为特征。方法的定义包括两部分, 一是方法的接口, 二是方法的实现。方法的接口用以说明方法的名称、参数和结果返回值的类型, 也称之为调用说明。方法的实现是一段程序代码, 用以实现方法的功能。

(3) 消息集合:消息是对象向外提供的界面, 消息由对象接收和响应。面向对象数据模型中的“消息”与计算机网络中传输的消息含义不同。它是指对象之间操作请求的传递, 而不考虑操作实现细节。

1.2 对象标识

面向对象数据库中的每个对象都有一个唯一的不变的标识称为对象标识 (OID) 。对象通常与实际领域的实体对应。现实世界中, 实体的属性值可能随着时间的推移会发生改变, 但是每个实体的标识始终保持不变。相应的, 对象的部分 (或全部) 属性、对象的方法会随着时间的推移发生变化, 但对象标识不会改变。

1.3 封装

OO模型的一个关键概念就是封装。每一个对象是其状态与行为的封装。

封装的意义在于将对象的实现与对象的应用互相隔离, 从而允许对操作的实现算法和数据结构进行修改, 而不影响接口, 不必修改使用它们的应用, 这有利于提高数据独立性。

2 类和类层次

在OO数据库中相似对象的集合称为类。每个对象称为它所在类的一个实例。一个类中所有对象共享一个定义, 它们的区别仅在于属性取值不同。可以看到, 类的概念类似关系模式, 类的属性类似关系模式中的属性:对象类似元组的概念, 类的一个实例对象类似关系中的一个元组。可以把类本身也看作一个对象, 称为类对象 (Class Object) 。

3 面向对象数据库的模式演进

面向对象数据库模式是类的集合。模式为适应需求的变化而随时间变化称为模式演进。模式演进包括创建新的类、删除旧的类、修改类的属性和操作等。在关系数据库系统中, 模式的修改比较简单, 主要有如下的模式修改操作。

(1) 创建或删除一个关系。

(2) 在关系模式中增加或删除一个属性。

(3) 在关系模式中修改完整性约束条件。

OODB应用环境对OODB模式演进提出了许多新的要求, 使得面向对象数据库模式的修改要比关系模式的修改复杂得多, 其主要原因有以下几点。

(1) 模式改变频繁。

使用O O D B系统的应用通常需要频繁地改变O O D B数据库模式。例如O O D B经常运用于工程设计环境中, 设计环境特征之一就是不断变化.设计自身在不断变化, 以纠正错误或修改设计使之更完美、更适合于实际:而当设计者对问题及其解决有更深刻理解时也会修改模式。

(2) 模式修改复杂。

从上面讲解的OO模型特征可以看到OO模型具有很强的建模能力和丰富的语义, 包括类本身的语义、类属性之间和类之间丰富的语义联系, 这使得模式修改操作的类型复杂多样。此外, OODB中模式演进往往是动态的, 动态模式演进的实现技术更加复杂。

3.1 模式的一致性

模式的演进必须要保持模式的一致性。模式的一致性是指模式自身内部不能出现矛盾和错误, 它由模式一致性约束来刻画。模式一致性约束可分为唯一性约束、存在性约束和子类型约束等, 满足所有这些一致性约束的模式则称为是一致的。

(1) 唯一性约束, 这一类约束条件要求名字的唯一性。

(2) 存在性约束, 存在性约束是指显式引用的某些成分必须存在。

(3) 子类型约束。

3.2 模式演进操作

下面给出一些主要的模式演进操作, OODBMS应该支持这些模式演进。

(1) 类集的改变; (2) 己有类的成分的改变; (3) 子势超类联系的改变。

3.3 模式演进的实现

模式演进主要的困难是模式演进操作可能影响模式一致性。面向对象数据库中类集的改变比关系数据库中关系模式的改变要复杂得多。因为类的修改操作可能会影响到其它类的定义。例如, 改变了一个类的属性名, 这需要所有使用该属性的地方都要改名。

因此, 在OODB模式演进的实现中必须具有模式一致性验证功能, 这部分的功能类似编译器的语义分析。进一步, 任何面向对象数据库模式修改操作不仅要改变有关类的定义, 而且要修改相关类的所有对象, 使之与修改后的类定义一致。所谓转换的方法是指在OODB中, 己有的对象将根据新的模式结构进行转换以适应新的模式。例如, 在某类中增加一属性时, 所有的实例都将增加该属性。这时还要处理新属性的初值, 例如给定一缺省初值, 或提供一算法来自动计算新属性初值, 还可以让用户设定初值。删除某类中一属性时只需要从该类的所有实例中删除相应属性值即可。

参考文献

[1]数据库系统基础Ramez Elmasri[M].人民邮电出版社.

面向对象数据库研究 篇5

传统的基于像素的遥感影像处理方法都是基于遥感影像光谱信息极其丰富,地物间光谱差异较为明显的基础上进行的.对于只含有较少波段的高分辨率遥感影像,传统的分类方法,就会造成分类精度降低,空间数据的大量冗余,并且其分类结果常常是椒盐图像,不利于进行空间分析.本文采用面向时象的`影像分类方法,考虑了对象的不同特征值,例如光谱值,形状和纹理,结合上下文关系和语义的信息,这种分类技术不仅能够使用影像属性,而且能够利用不同影像对象之间的空间关系.在时诸多对象进行分类后,再进行精度分析.在此研究提出了一种面向对象的方法结合模糊理论把许多的对象块分成不同的类别.这一过程主要有两个步骤:第一个步骤是分割.图像分割将整个图像分割成若干个对象,在这个过程中,分割尺度的选择会影响到后续的分类结果和精度.第二个步骤是分类.在这个步骤中,特征值的选择和隶属度函数的选择都对分类结果有着至关重要的影响.

作 者:郑文娟 ZHENG Wen-juan  作者单位:宝鸡市市政工程管理处,陕西宝鸡,721001 刊 名:北京测绘 英文刊名:BEIJING SURVEYING AND MAPPING 年,卷(期): “”(3) 分类号:P237 关键词:面向时象   多尺度分割   模糊分类  

面向对象软件测试方法研究 篇6

关键词:软件测试;面向对象;类测试

中图分类号:TP311 文献标识码:A 文章编号:1674-7712 (2013) 24-0000-01

面向对象软件测试技术是针对使用面向对象技术开发的软件而提出的一种测试技术。面向对象开发技术和传统开发技术相比有新的特点,使用面向对象技术开发的程序具有高质量、高效率、易扩展、易维护等优点,这也给它的测试技术带来新的挑战。面向对象软件测试与传统的软件测试相比,由于面向对象技术开发的软件会出现传统软件技术中不存在或者不突出的错误,使得传统的软件测试中次要方面成为了现在的主要问题,影响了软件测试的方法和内容,增加了软件测试的难度。

一、软件测试

(一)软件测试

软件测试是使用人工操作或者利用测试工具按照测试方案和流程对软件产品进行功能和性能方面的评估,检验软件产品是否满足规定的需求或弄清预期结果与实际结果之间的差别的过程。

(二)面向对象对软件测试的影响

面向对象软件具有抽象性、封装性、继承性和多态性等特点,这些特点对软件测试产生了不同的影响。面向对象程序中子类可以继承父类的功能,父类进行了充分测试后,子类也要设计相应的测试用例进行充分测试,对子类进行测试时不仅要测试子类中的方法,还要重新测试与子类中重定义方法相关的类。面向对象软件测试时,对象的状态通常是信息隐蔽的,测试人员需要在测试类中添加适当的信息来表明对象的实现方法及其内部状态。对于面向对象软件的多态性形成的动态绑定的测试使用传统的静态分析策略是不合适的,需要使用动态的测试标准来解决这个问题。

二、面向对象软件测试方法

面向对象软件测试方法是从传统的软件测试方法中演化而来的,有与传统的软件测试相类似之处,但由于面向对象的软件开发具有继承性和多态性等特点,为了支持和加强数据隐藏的特性,面向对象的软件测试必须向一个类的接口添加操作,所以说面向对象的软件测试方法更复杂一些。

(一)面向对象软件单元测试

面向对象软件单元测试主要是类测试,包括方法测试和对象测试。类是面向对象程序设计的基本单位,对象是类的具体实例,类测试是来验证类的实现和类的说明是否完全一致,如果类的实现是正确的,那么类的每一个具体实例的行为也将是正确的。

面向对象的类测试首先要确定测试方法,通常可以通过代码检查和执行测试用例两种方法来测试类的代码。代码检查方法容易受人为错误的影响,在代码量很大的情况下也会加大它的工作量,而编写一个好的测试用例需要很丰富的经验和较高的技巧。通过类实现的功能来分析所要编写的测试用例,然后根据类的边界值来扩充测试用例。构建测试用例一般是基于前置条件或后置条件,为所有可能出现的情况及情况的组合确定测试用例的需求,在这些可能出现的情况组合下,根据这些需求来构建测试用例,而且还要针对实际情况创建特定输入值的测试用例,并确定它们的正确输出。

测试驱动程序是一个运行测试用例并能够收集运行结果的程序。在面向对象的软件测试中,设计核心类的测试驱动程序十分重要,要求该程序必须思路严谨、结构简单清晰并易于维护。当确定了类的可执行测试用例,测试驱动程序就要创建类的实例来运行该测试用例,并给出测试用例运行的测试结果。

(二)面向对象软件集成测试

面向对象软件集成测试主要是类簇测试。面向对象软件是由若干对象组成的,这些对象互相协调合作来实现软件的功能,在面向对象的软件开发中,对象间的相互协调即对象的交互对于程序的正确性来说是非常重要的,对象的交互方式决定了程序能做什么,从而也就决定了程序是否正确。对象的交互测试是在对类的单独测试的基础上实现的,它来确保对象之间相互传递消息的正确性,它一般执行测试的是嵌入到应用程序中的交互对象。

在面向对象的软件测试当中,除了要考虑对象交互特征面之外,还需要具体的测试技术去实现测试的要求,目前常用的面向对象软件集成测试的方法有抽样测试和正交阵列测试。抽样测试提供了一种运算法则,不需要首先明确测试用例的总体,从一组可能的测试用例中选择测试序列;正交阵列测试是一种特殊的抽样方法,它通过定义一组交互对象的配对方式组合来进行测试,同时要尽量限制测试组合的配置数目,正交阵列测试系统就是挑选某个样本的特定测试技术。

(三)面向对象软件系统测试

在对面向对象软件进行系统测试时,要保证被测系统的完整性,搭建与真实用户实际使用环境相同的测试平台,并且需要参考面向对象分析的结果,对软件的架构进行验证,确保软件可以完全再现问题空间以及完整实现用户需求。系统测试不仅是要检测软件的整体功能行为表现,也是对软件设计开发的再确认,它针对的是非功能需求的测试,包括功能需求以外的所有需求以及注意事项等。系统测试是针对完整软件产品的测试,包括软件、软件运行所依赖的硬件、外设、数据、支撑软件及接口等,确保开发的软件与其依赖的各种资源能够协调运行,形成完整的软件产品。系统测试是软件测试过程中非常重要的阶段,它对测试技术的要求也是最高的。在进行面向对象软件的系统测试时,测试技术人员需要与软件的用户进行交流,根据用户提出的需求给出系统的修改建议,结合用户需求对被测试软件进行测试分析,根据分析结果建立测试用例。

三、结束语

面向对象的软件测试技术是面向对象软件开发中的重要组成部分,本文从面向对象软件的特点出发,分析了面向对象软件测试对传统软件测试的影响,介绍了面向对象软件测试的方法。

参考文献:

[1]王艳丽.面向对象软件簇级测试用例自动生成方法研究与实现[D].长春工业大学,2011.

面向对象数据库研究 篇7

通用的关系数据库系统一般都提供存储过程和除法器的功能,每当数据发生Update操作时,就会触发一段存储过程的执行。与关系数据库不同的是,在面向对象实时数据库中嵌入脚本既可以描述对象类一级的行为,也可以描述对象一级的行为。前者用于复用,用户可以通过数据库的类编辑器工具定义新的类,运用脚本实现类的行为,以后无论实例化出多少个对象,都具有相同的功能。后者则类似于某些DCS系统中计算库功能,可以在数据库中多个实例对象上施加连锁逻辑。

面向对象的数据库本身的跨平台性要求脚本也应是可跨平台使用的。考虑到开发这样一种脚本语言难度大,所以决定采用嵌入成熟脚本语言的方法来实现。参考了国外跨平台软件使用的脚本语言,采用Tcl语言作为嵌入面向对象数据库的脚本语言。

Tcl(ToolCommandLanguage)的全称“工具命令语言”,它是一种很有特色的脚本语言,可以从两个角度理解它:语言和库。首先Tcl是一种通用的脚本语言,它有简单的语法。其次,Tcl是一个库,可以嵌入到应用程序,它包含一个解释器,执行Tcl指令,并允许扩充指令集合,即定义专用的指令集。应用程序中可以使用Tcl基本指令,也可以使用扩展指令[2]。同时,它还可以跨平台使用,具有很好的嵌入性和扩展性。Tcl语言的嵌入只是嵌入了Tcl语言的解释器,需要在此基础上扩展Tcl的功能以实现面向对象数据库的脚本要求。

1 面向对象实时数据库脚本

1.1 面向对象实时数据库脚本的分类

与面向对象的概念相似,面向对象的数据库也有类的概念,类是对某一类具有相似属性和行为的对象的抽象。这些对象称为类的实例。实例对象是在程序执行过程中由类动态生成的,一个类可以生成许多有着相同性质的实例对象。所谓继承也就是说子类可以完全获得父类的所有属性和方法[3]。利用继承性概念,类可以被组织为类树层次结构。继承性不仅可以减少子类和父类间定义的冗余属性和方法,而且也可以反映子类和父类之间一般性和特殊性关系的语义,数据库只支持单继承,不支持多重继承。

完全依靠在应用设计通过类的继承和组合来扩展特定的功能有时代价过大,容易造成类的泛滥。比如在实际工程中,可能会出现一些特例,即大部分实例具有公共的行为特征,但少数实例需要具有特殊的特征,而这些特殊特征有时在设计类是考虑不到的。如果要把这些很少的但有特殊特征的实例都用新的类来描述,则系统要管理的类太多,不利于维护,因此允许对象能够重定义类的行为。

数据库中对象的行为可以由脚本来定义,因此这种类和实例的关系也体现在脚本中。面向对象实时数据库脚本既可以在类一级运用,也可以在实例一级运用,前者称为类脚本,后者称为实例(对象)脚本。

定义在类一级的脚本行为是基于“模型”的,这类脚本可以作用于所有该类的实例和该类的子类的实例,类的所有实例化对象都将复用类脚本定义的行为。

定义在实例一级的脚本行为只是作用于特定实例的行为,描述对象特定的行为。与面向对象的一般概念类似,实例脚本可以重定义类中的相同时间的脚本,子类的脚本可以重定义基类中同一事件的脚本,相应优先级为“实例>子类>基类”。类脚本和实例脚本的架构很好地体现了面向对象的复用性。

1.2 对象行为的分类

对象行为体现应用功能,如果没有实现对象行为,则只是层次性数据库而非面向对象数据库。对象行为包括以下4类。

(1)公共行为:指无论离线配置还是在线运行都可能执行的行为,典型的是一般数据访问,如属性编辑等。

(2)操作行为:指对象行为的执行是由客户触发的,典型的是操作员发出操作命令,如电梯的启/停、开关的分/合操作。

(3)串激行为:指由采集数据状态变化导致的行为,通常驱动源是对象层次中低层某个变量的值变化。具有关联关系的对象之间的行为调用也是串激方式。

(4)定时行为:指某些需要执行周期计算的行为。

按照对象行为的不同,脚本也相应地分为几类:用于实现操作行为的脚本称为命令脚本;用于实现对象事件触发的串激行为的脚本称为事件触发脚本;用于实现定时行为的脚本称为定时器脚本。

事件触发脚本关联于对象的某个事件,脚本既可以定义在事件源端,在事件产生时执行,称为事件输出脚本;也可以定义在事件接收端,在接收到外部事件时执行,称为事件输入脚本。

2 脚本的编辑与保护

2.1 类脚本

类脚本在类编辑器中编辑,类编辑器是类的定义工具,定义类的属性和行为。类脚本存储为XML文件。所有的类脚本保存在同一个文件中,文件名为ClassTcl.xml。以类名区分,每一个类为一项,每一项包括类名、类版本号、该类的输出时间脚本列表和输入事件脚本列表。

2.2 实例脚本

实例脚本在实例编辑器中编辑,实例编辑器用于编辑一些特殊行为的实例。实例脚本也保存为XML文件,按实例区分存储。每个实例对应一项,每一项内容包括实例的全局唯一点名、输出时间脚本列表和输入事件脚本列表。

每一个数据库节点中可能包含多个数据库单元,每个数据库单元包含某一类应用的对象,如电力和环控等,数据库单元的个数是组态时配置的,为避免运行时加载不必要的实例脚本内容,每个数据库单元保存为一个实例脚本文件,文件名为xxx ObjectTcl.xml,其中xxx为数据库单元名。文件下装时根据组态的数据库单元种类选择下装的实例脚本文件。

2.3 命令脚本

命令脚本用于操作员与设备对象等的交互,例如利用一个按钮来控制电梯的起/停等。因此命令脚本在HMI的图形对象的交互特性中编辑,绑定于对象的特定的交互特性,脚本内容作为属性保存在图形对象内部。

2.4 专用字符的替换

类脚本、示例脚本的编辑中允许出现专用字符,方便定位本对象或父对象。目前提供的专用字符有:

(1)MYMTHIS—指向本对象、提交执行前替换为本对象的全局点名;

(2)%—指向一个对象的父对象,后跟一个对象的全局点名,也可是MYMTHIS,可以递归使用。

3 脚本的加载和触发

3.1 事件脚本的触发

类脚本和实例脚本都属于事件脚本,事件脚本的触发分为事件输出脚本触发和事件输入脚本触发,由现有的对象间回调关系触发事件响应。对象内部保存有自己的事件输出脚本列表和事件输入脚本列表,当产生事件或接收到外部的事件,先从自己的事件脚本列表中查找是否有对应的脚本项,如果没有则从实例脚本或类脚本中按优先级查找到对应的脚本项,查找成功后执行脚本。事件脚本的查询处理流程如图1所示。

为提高在线时查找脚本的速度,在程序启动时从文件中加载类脚本和实例脚本至内存供对象查询,已经查询过的事件将结果记录在对象内部,包括查找失败的情况,对象内部保存的脚本内容是已经经过专用字符替换后的结果,为节约存储空间,如脚本内容中没有专用字符则直接引用原内容。对象同样的事件再次触发时直接从对象内部查询脚本执行。

3.2 命令脚本的触发

命令脚本绑定于对象的交互特性,当操作员触发对象的交互特性时触发命令脚本的执行。例如一个按钮对象的按下事件编辑了一个启动电梯的命令脚本,当操作员按下按钮时将执行启动电梯的动作。

3.3 定时器脚本的触发

定时器脚本的触发由一个全局定时管理器触发,全局定时管理器管理程序中所有的定时管理,定时器脚本只需将脚本项注册到定时管理器中,由定时管理器按时分发。

在线程序启动时,从定时器脚本文件中读取定时器脚本项,注册到定时管理器。

定时器脚本相关类图如图2所示。

3.4 脚本的执行

Tcl脚本的执行方式为同步和异步两种方式:同步方式时应用程序同步等待脚本执行完毕后才继续后面的内容;异步执行时应用程序提交脚本后直接返回继续执行,不必等待脚本执行完毕。

同步方式执行时,脚本中不能有耗时长或延时的操作,以免影响后面的执行,一些对事件响应要求严格的事件脚本宜采用同步方式执行。

事件触发脚本根据时间的具体情况可以选择同步或异步执行;命令脚本一般用于下发命令操作某一设备,采用同步执行方式;定时器脚本一般用于执行一些耗时长的操作,采用异步方式执行。

为提高脚本的执行效率,采用多线程模式处理Tcl脚本的异步请求执行队列。

3.5 脚本对公共资源的访问

对象数据库脚本中可以访问数据库点属性和对象数据库中提供的函数。脚本对数据库点属性的访问通过C函数扩展实现,将数据库点的读写函数注册到Tcl引擎。Tcl引擎平台阶段只提供一些基本的函数,但是提供函数的扩展机制,留待应用开发阶段完成。

4 结论

面向对象的数据库中的脚本嵌入,增加了组态时的灵活性,体现了实时数据库的开放性要求,并且Tcl脚本的选择支持了数据库的跨平台运行。

摘要:实时数据库是组态软件数据处理层的核心,在采用面向对象设计思想设计的实时数据库中嵌入脚本,增加了组态时的灵活性,主要研究了Tcl脚本在跨平台的面向对象实时数据库中的嵌入式及其应用。

关键词:实时数据库,Tcl脚本语言,面向对象

参考文献

[1]王荃.工控组态软件实时数据库系统的设计与实现.计算机应用,2000;27(3):40—43

[2]崔鸿.基于Tcl语言的外壳语言实现方法.计算机工程,2005;31(增刊):133—134

面向对象数据库研究 篇8

第一个局限性主要是由于地理实体在矢量系统中被构造为数学上的点、线、面, 而在栅格系统中则构造为网格单元。因为公路不是数学上的线, 城市也不是数学上的点, 而且网格单元结构是对应于不确定地理实体的任意的空间分割, 因而这两个模型在地理现实中均不存在。第二个限制要求开发新的模型来充分支持空间分析。如果我们给一个观众提供一个地理场景并询问他看到了什么, 就会很容易地发现基于特征模式的必要性。回答不会是点、线、面和网格单元, 而是诸如河流、湖泊、公路和森林等地理实体。

1 特征概念

基于特征的方法模拟的是地理特征, 而基于图层的方法模拟的是一张地图或一组专题地图。在一个FBGIS环境中, 地理特征的表示以地理位置以及地理实体的自然属性和相互关系为基础。地理特征的确定是涉及人类洞察力和认知力的一个复杂过程。

基于特征方法在计算机化的地理数据库框架中的实现方式之一, 是开发运用面向对象技术的数据模型。由此产生的特征模型包括对地理现实的人为概念化、几何对象之间的空间关系以及非空间对象之间的特征一特征关系。

对现实地理系统的观察使我们认识到, 我们生活的地球表面, 是由公路、河流、建筑物、植被、土地等物质实体组成的。我们将这种具体的事物称为地理实体。进一步的观察得出, 以某种属性集作为分类标准, 可以将地理实体分类为具有该种属性集的实体集合, 那么这一类地理实体就够成了地理特征。在基于特征GIS中, 特征是地理现象的基本表示。美国地质调查局开发的DLG-E数据模型对实体和特征的定义如下。

实体:是真实世界的现象, 它不能再被进一步细分为同一类现象。如:桥梁、湖等。

特征 (类型) :具有相同属性及关系的一类实体, 特征的概念既包含实体集, 也包含对实体集的数字描述。如:河流、道路、泉和桥梁等。

特征实例:是特征类型的具体化。如东湖是湖的一个实例, 长江大桥是桥梁的一个实例等。

特征对象:是特征实例的表现。河流是一个实体, 在地图上一般符号化为兰线, 兰线为特征对象。

2 特征模型

在面向对象的基于特征的GIS系统中, 用户谈到的是对象而不是一个关系的记录和字段。

与传统的基于图层的地理关系模型相比, 面向对象的特征GIS建模方法是一种在较高抽象层次上的建模方法, 具有较好的地理信息认知观, 同时亦很好地解决了利用面向对象的原理与方法来定义和建立空间关系与非空间关系。特征GIS空间数据模型对地理现象的数字表示和空间描述更完备、更具有整体性, 除了表达空间几何目标之间的拓扑关系, 还表达了特征之间的非拓扑和属性语义关系, 而这些关系在传统的基于图层的GIS模型中被遗漏掉。同时, 面向对象方法及其抽象机制的应用, 使特征GIS模型的语义更加丰富, 从而能够很好地表示复杂地理现象和实体。

3 特征空间数据模型的构成

数据模型是对现实的抽象。为了在数据模型中使地理现实概念化, 需要使定义组成成员和它们之间关系的规则形式化。在对数据模型的许多定义中, Codd提出, 一个数据模型包括三个部分:一个数据结构类型集合、一个用于处理这些数据结构类型的算子 (操作符) 集合和一个控制数据库性能的完整性规则集合。完整性规则包含一组完整性约束, 这些约束能够控制在不同应用中的数据结构和运算操作。一个空间数据模型经常需要完整性约束, 因为在该数据模型中所定义的组成成员通常是针对具体应用的。

空间目标的复杂性需要多种方法来定义和使用合适的数据类型和运算操作。大部分GIS软件均考虑到对点一线一面关系表中空间目标之间诸如邻接和包含等拓扑关系的编码。然而, 许多应用领域需要处理与非空间关系接合在一起的复杂目标。在寻求一个更丰富的数据模型对复杂的地理实体进行编码的研究方面, 许多研究者把焦点集中在面向对象方法上, 将其作为以整体的方式体现地理特征和关系的一种可采用的方法。在面向对象的基于特征的GIS系统中, 用户谈到的是对象而不是一个关系的记录和字段。

3.1 一个基于特征G I S目标的组成成员

在面向对象系统中, 一个特征的每一个元素可以被看作一个对象。要建立一个基于特征的GIS系统, 对象被嵌入在实例变量和方法中, 必须包含充足的信息、关系、功能函数以支持空间分析和查询。

依据特征对象的这些部件和上文特征表示法的概念, 可以给面向对象的GIS系统创建两种对象类型, 即特征对象和几何对象类型。不管表示的形式如何, 一个特征对象用来描述一个地理特征的非空间特性。一个几何对象存储有关地理特征空间位置的信息。例如:存储一口井 (X, Y) 坐标的点是一个几何对象。

3.2 特征对象和几何对象之间的关系

一个地理特征能被特征对象和几何对象数字化表示。在基于特征系统中, 特征对象是基本元素。特征对象封装几何对象, 因为几何对象存储特征对象的位置信息。几何对象包含一个标识符, 另外还有特征的位置和拓扑信息。

两个或两个以上对象之间的关系被定义为对象之间的联系。根据用户对现实的解释, 特征对象可以被分解为一个子对象的集合。例如:一个城市能被解释为一个由人口、建筑物和基础设施组成的对象。对象类实例之间的关系依赖于应用领域和比例尺。可以用一些关键短语可以用来描述基于特征GIS对象类之间的许多联系。它们不但能被用来描述几何对象之间的联系, 而且也能描述特征对象和几何对象之间的联系以及特征对象之间的联系。

例如:一个特征可以是由任何其它空间或非空间对象组成 (composedof) , 或是其一部分 (part-of) 。例如一个飞机场是由跑道和建筑物组成;跑道是飞机场的一部分。“垂直关联关系” (vertically related to) 用来显示两个特征之间的“在顶部”或“在底部”的关系。例如:一座桥与一条河在垂直方向上是相关联的。特征与特征之间、点与多边形之间以及线与多边形之间的联系也能用“以为界” (bounded by) , “作为的边界” (bounds) , “位于之内” (within) 和“包含”关系 (contains) 来描绘。

摘要:本文基于笔者从事GIS数据模型的相关研究心得, 以基于面向对象的特征GIS空间数据模型研究对象, 深度探讨了基于特征的空间数据模型构建构成的相关思路, 分析了特征对象与传统几何对象之间的关系, 相信对从事相关研究的同行能有所裨益。

关键词:特征,空间数据模型,概念,GIS

参考文献

[1]白玲.空间数据的拓扑关系及其自动生成[J].解放军测绘学院学报, 1993 (4) :57~63.

面向对象数据库系统构想 篇9

关键词:数据库,面向对象,数据库系统

随着应用的扩展, 特别是诸如人工智能等复杂应用的需要, 关系型数据库已经显得力不从心, 人们迫切希望建立一种新的数据库解决方案来适应这些复杂需求。面向对象方法是一种崭新的思维方法, 它是把程序看作是相互协作而又彼此独立的对象的集合。由于对象的独立封装, 模块的可构造性、可扩充性、可重用性也大大加强, 从而面向对象的软件工程能够胜任当今大规模复杂、易变软件系统开发应用的要求。

1 面向对象数据库模型

1.1 核心概念

1.1.1 对象与对象标识

对象, 是现实世界中实体的抽象, 是数据和操作的集合, 是持久化到数据库中的最小的存储单位。

这里的对象其实与一般的面向对象程序设计语言中的对象并没有很大不同。但是, 这里的对象是持久性的。数据库中的对象是数据记录的最小单位, 也就是说, 数据库中至少存在一个对象才有意义。当然, 对象中还可以有对象的属性, 方法等, 但一个对象必须是完整的。

对象标识, 指的是唯一标定一个对象的标志, 一个对象对应一个标识符。在现实世界中, 对象可能会随着时间的推移而发生改变, 但对象标识不应该改变, 因此, 对象标识自对象生成后就不应该再改变, 否则无法使用对象标识唯一确定一个对象。即使两个对象的属性和方法以及状态完全一致, 只要其对象标识不同, 则两者是不同的对象。

对象标识一般有以下3种实现方式:

1) 值标识, 使用对象的某一属性作为其对象标识。

2) 名标识, 使用一个名字来表示标识。

3) 内标识, 以上两种方式是由用户建立的, 而这种方式是由系统内部建立的, 不具有任何实际含义, 且只有系统才可以“观察”此类对象标识。

另外, 在对象数据库中, 标识是永久不变的, 即具有永久持久性, 这和面向对象程序中的对象标识不一样, 面向对象程序中的对象标识只具有对象内持久性。

1.1.2 封装

抽象是对象的外部界面与内部实现之间实行清晰隔离的一种抽象, 外部与对象的通信只能通过消息来实现。在对象数据库中, 表现为对象的私有和保护成员只能通过其方法来查询得到, 而公有成员可以直接查询。这种方式的优点是对象被封装成了自含的单元, 对象只接受已定义好的操作, 其他对象不能直接访问对象的非公有成员。缺点是丧失了传统关系数据库中进行即席的、按内容的查询, 这就不够方便灵活了, 因此, 需要做一些改进和妥协。

1.1.3 类

共享同一属性和方法集的所有对象构成的对象类, 一个对象是一个类的实例。在数据库中是一种抽象的数据类型, 相当于关系数据库中的一张表。

1.1.4 类层次

这里涉及到继承的概念, 即类可以继承类, 从而具有与父类的所有符合条件的属性和方法。这是关系数据库中所没有的。

1.1.5 消息

指的是对象的方法调用。通过对象的方法调用可以访问对象的属性数据和执行业务逻辑。这也是关系数据库中没有的。

1.2 对象与对象标识

1.2.1 对象结构

包括两部分, 一个是属性集合;另一个是方法集合。属性集合将用于存储数据, 方法集合将用于操作数据。属性集合即是对象的成员变量, 其中又可以分为公有类型的成员、私有类型的成员和保护类型的成员。公有类型的成员可以直接使用查询语句进行查询, 保护型成员可以在该类的子类的对象中直接访问, 私有类型的成员只能在本类的对象中访问, 外部对象只能通过实现定义好的方法进行访问。如果没有事先定义好的方法, 则外部将无法访问这些变量的值, 这就实现了对象的封装性。在OODB数据库中, 对象结构同样分成这两种集合。

1.2.2 对象标识

表示在一个数据库中一个对象仅有一个唯一不变的标识就是对象标识。这个标识用来精确定位一个对象。在OODB数据库中, 对象标识是唯一标定这一持久性存储单元的唯一依据。其他对象或方法访问本对象的属性和方法必须先找到该对象的对象标识, 否则无法访问。

1.2.3 封装

即将一个对象的属性和方法封装在对象内部, 外部只能通过对象提供的外部接口进行访问。这样就提高了数据的安全性和代码的重用性。

1.3 类与类层次

相似对象的集合称为类, 在数据库中表现为面向对象数据库模式的集合, 它规定了该类的对象的数据结构规则和操作规则。在面向对象数据库中, 一个类相当于关系数据库中的一张表。它同样有字段和属性, 甚至还有关系数据库表所没有的方法。这种思路可以在面向对象数据库中实现复杂的逻辑。

类层次表现在继承上, 即父类和子类的层级关系。这是为了多态和数据共享的目的。这种思路可以象Java中那样使用接口和基类来完成设计。

1.4 继承

就像类层次中所说的, 继承是为了多态和数据共享的目的, 也是面向对象代码重用的重要机制之一。

1.5 滞后联编

即实现了重载的效果, OODBMS不能在编译时把操作名联编到程序上, 必须在运行时根据需要进行抉择。

1.6 对象的嵌套

是一种设计模式组合。将多个类的对象加人到一个类的属性中, 使之实现复杂的功能。

2 面向对象数据库语言

OODB语言用于描述面向对象数据库模式, 说明并操作类定义和对象实例。OODB语言主要包括对象定义语言 (ODL) 和对象操作语言 (OML) , 其中对象操作语言又包括一个重要子集—对象查询语言 (OQL) 。OODB语言一般应该具备下列功能。

2.1 类的定义与操作

包括定义、生成、存取、修改和撤销类。其中类的定义包括定义类的属性, 操作特征、继承性与约束等。

2.2 操作/方法的定义

面向对象数据库语言可以用来定义操作/方法, 在操作实现中, 语言的命令可用于操作对象局部数据结构。

2.3 对象的查询

OODB语言可以用于操作 (包括生成、存取、修改与删除) 实例对象。对于对象的存取—查询部分, OODB语言可以直接查询对象公有成员而不必向每一个对象逐个发送消息。而对于非公有成员, 则只能通过发送消息来实现存取、修改与删除。通过发送消息的查询效率可能会很低, 因此, 对于一些经常要查询的数据应该尽量定义为公有类型。

3 面向对象数据库模式

3.1 模式的一致性

(1) 唯一性约束:

即同一模式中所有类的名字必须唯一、类中属性名和方法名必须唯一。

(2) 存在性约束:

每个被引用的类必须在模式中定义、某操作代码中调用的操作不需给出说明、每一个说明的操作必须存在一个现实程序。

(3) 子类型约束:

子类和父类不能有环、不能有多继承、单一父类必须加以说明。

3.2 模式演进操作

主要包括以下几个部分:

(1) 功类集的改变;

(2) 已有类的成分的改变;

(3) 子类/父类联系的改变。

面向对象数据库是数据库发展的方向。我国目前在操作系统和数据库系统方面是严重的依赖于他国的, 特别是在面向对象数据库领域几乎是一个空白。

参考文献

[1]布莱特, 皮瑞拉尼.面向对象的建模与设计在数据库中的应用[M].宋今, 赵丰年译.北京理工大学出版社, 2001.

[2]布奇.面向对象分析与设计[M].王海鹏, 潘加宇译.人民邮电出版社, 2009.

面向对象数据库研究 篇10

关键词:面向对象数据库技术,对象/关系映射技术,网络技术

通讯手段及通讯工具在实际应用过程中, 人们在互动交流过程中会受到范围及方式等方面的限制。但是伴随着互联网技术的发展及完善, 人们在互动交流过程中所具有的局限也被突破, 人们互动交流能够逐渐无线及普适, 网络技术的完善, 在其中起到关键作用, 能够有效推动互动交流的发展。

1 网络技术发展初期及其对互动交流的影响

1.1 网络技术的表现形式

网络技术在刚开始发展过程中, 最具有代表性的技术主要有两个, 分别是报文分组交换技术与WEB技术。报文分组交换技术主要表示的是将数据分解为到数据包内, 利用通讯阶段对于数据信息进行传输, 还能够有效保证数据信息的完整性, 其中主要特征就是在数据信息传输过程中, 容易出现数据包丢失的情况, 这就需要对于数据包进行重新传输, 能够有效降低节点在数据信息传输过程中的重要性, 网络系统内不同节点能够有效连接。WEB技术在实际应用中能够满足用具对于信息交流及搜索, 利用互联网技术提供真毒性服务, WEB技术产生最为显著标志就是图形浏览器的出现。

1.2 对互动交流的影响的表现

网络技术初期发展过程中, 网络互动交流形式主要特点就是延时通信的出现。网络技术在刚开始推出的之后, 主要目的就是满足军事在发展中的实际需求, 伴随着计算机技术不断完善, 已经逐渐成为人们实际生活中主要互动交流的方式。在这个时间段内, 网络互动交流最为主要的核心就是文字互动交流, 双方在实际共同交流过程中, 主要通过文本内容的方式进行沟通交流, 在这个过程中所出现的图形也是十分简单, 交流过程中并不需要受到时间及空间上面的限制, 能够根据自身实际情况传输电子邮件, 但是这个时间段内互动交流程度较低, 造成信息在沟通传输过程中容易出现延时性。

2 从面向数据库技术和对象/关系映射技术角度进行比较

2.1 面相数据库技术

面向对象数据库技术是数据库技术与面向对象技术发展到一定水平之下的成果, 在对于复杂对象进行描述的时候, 主要应用的方式是使用类的封装方式, 进而对于复杂对象的行为进行模拟。面向数据库技术在实际应有中最为显著特点就是代码及数据并不是独立存在的, 主要是通过函数关系对于数据进行计算。

2.2 对象/关系映射技术

面向对象软件在实际开发过程中, 根据有关软件开发方法, 进而形成了对象/关系映射技术。对象/关系映射技术是以关系模型数据库结构作为基础, 映射对象模型对于有关对象进行描述, 人们在实际操作过程中, 能够具体将所接触到的语句进行描述, 所应用的对象及操作方式十分简单便捷, 如图1所示, 为对象/关系映射技术结构示意图。

2.3 面向数据库技术与对象/关系映射技术的比较

面向数据库技术在实际应用中, 所应用的数据库类型是新类型, 并不是传统关系型数据库, 这种数据库类型能够有效解决传统数据库所具有的阻抗失谐问题进行解决。对象/关系映射技术在实际应用中, 能够有效将关系性数据库与对象数据进行连接, 承担着一个相互转化数据的责任, 但是在技术仅仅能够将数据库内的对象划分为表格, 并没有有效解决传统数据库类型所存在的阻抗失谐问题。

3 面向数据库技术和对象/关系映射技术的优点及缺点

3.1 面向数据库技术

面向数据库技术在实际应用中, 能够从本质上面解决传统数据库所存在的阻抗失谐问题, 维护性能显著提高。要是从维护角度进行分析, 面向数据库技术最为显著性能就是耦合性能十分突出, 能够在不同网络平台上面应用, 所应用的查询方式较为简单。虽然面向数据库技术在实际应用中拥有十分显著优势, 但是还存在一定缺点, 首先就是面向数据库技术无法兼容SQL标准, 无法对于现在关系数据库进行转换, 主要现在关系数据库所应用的接口都是SQL标准。

3.2 对象/关系映射技术

对象/关系映射技术在实际应用应用中拥有良好的数据库转换性能, 在对于数据操作过程中, 能够根据面向对象的形式, 提高数据库性能。在数据操作方面, 能够直接对于业务对象进行处理, 并不需要对于储存方式及语句进行分析, 同时在宽展及维护方面也具有重要作用。但是对象/关系映射技术在实际应用中却存在一定缺点, 最为主要的就是对象/关系映射技术并没有解决传统关系数据库所存在的阻抗失谐问题, 其次就是在数据缓存方面存在一定缺陷。

4 结论

简而言之, 在对于对象/关系映射技术与面向对象数据库技术比较分析之后, 能够发现对象/关系映射技术与面向对象数据库技术在实际应用中所存在的优势及缺点, 应用效果也存在一定差异, 能够有效推动对象/关系映射技术及面向对象数据库技术的共同发展, 对象/关系映射技术与面向对象数据库技术在数据库内共同应用, 对于数据库系统发展具有重要意义。

参考文献

[1]赖朝新, 瞿晓静.面向对象数据库技术的两种发展途径[J].现代情报, 2014 (11) .

[2]汪琛, 胡浩民.面向对象数据库技术的发展与前景[J].福建电脑, 2015 (05) .

[3]王意洁.面向对象的数据库技术[M].电子工业出版社, 2013 (03) .

[4]何治成.面向对象的电力系统异构应用信息共享研究[D].重庆:重庆大学, 2015 (06) .

面向对象数据库研究 篇11

关键词:面向对象;白盒测试;用例

1 引言

如何提高软件质量是软件工程致力解决的关键问题之一。软件测试和验证是保证软件正确性和提高软件可靠性的最基本和最重要的手段。自20世纪80年代以来,面向对象方法和技术的研究已遍及计算机软件、硬件和应用各领域,在软件工程领域更是得到了广泛的重视,但研究的重点和成果主要集中于面向对象分析与技术方法学领域(即软件开发的前期),而面向对象软件测试技术的研究还比较薄弱。近年来,国内外对面向对象软件测试进行了大量的研究,但目前该领域还处于百家争鸣的阶段,还未形成一套较为成熟与完善的软件测试理论与方法。本文从软件测试的层次划分出发,对面向对象的测试方法和解决方案做一探讨,并结合具体项目给出了实例设计。

2 面向对象理论

运用面向对象的方法和技术,首先必须明确什么是“面向对象”。曾经有很多年,“面向对象”被认为是使用一系列面向对象程序设计语言(如Ada95,C++,Smalltalk等)的软件开发方法。现在“面向对象”己包含完整的软件工程观点,Peter Coad和Edward Yourdon给出了“面向对象”的如下定义:面向对象(Object-Oriented)=对象(Objects)+分类(Classification)+继承(Inheritance)+通信(Communication)。

面向对象软件的封装性、继承性、多态性和动态绑定等特性提高了软件的可重用性,使软件开发更快、质量更高,而且软件易于维护、易于修改。通过组装可利用子系统而产生更大的系统,然而另一方面,它却给软件测试带来了更多的困难。与之相对应的软件测试技术还相对滞后,如何探索出一套行之有效的方法,尤其是如何采用自动化的方法来测试这些软件,己成为软件测试者们所面临的挑战。

3 白盒测试的传统方法

白盒测试方法主要依据逻辑段盖准则,如语句覆盖和判定覆盖等。这些覆盖准则是白盒测试方法的重要理论基础,能够指导测试人员设计出有效的测试用例。

SQA Team Test是测试Power Builder软件的有用测试工具,它能够与Power Builder对象紧密地结合在一起,根据使用SQA Team Test测试软件的经验和对该软件的理解,认为设计出有效的测试用例仍是使用SQA Team Test测试软件的关健性工作。能否设计出一系列有效的测试用例,将直接影响到软件的测试效果,因为SQA Team Test测试软件的测试思想是回归测试,所以能否发现软件中存在的问题,仍依赖于测试用例的设计。

从前面的分析中可以看出,无论是使用白盒测试方法还是使用SQA Team Test测试软件,设计有效的测试用例是测试工作的重要环节。传统的白盒测试方法是按照软件模块内的逻辑控制结构、运行过程和模块间的组织结构与接口,逐个设计出针对每个模块、每个子系统和系统的测试用例,因此每个模块都会被测试到,或者说能够保证测试的模块被覆盖。因为白盒测试的基础是依据对程序结构的清楚描述,而模块内部的逻辑履盖由逻辑覆盖准则提供保证。但是在事件驱动面向对象的软件中,软件的设计思路和软件的结构与传统的面向过程的软件相比已经发生了相当大的改变,对象和事件概念在软件开发中占有非常重要的地位,而传统的白盒测试方法并不能适应这种变化。

4 面向对象白盒测试框架分析

测试设计是整个测试过程的关键部分,面向对象软件开发中的白盒测试设计优劣更是整个测试工作的成败所在。为此在本文中我们可以具体的实例来设计一个白盒测试的框架和方法。

面向对象的白盒测试通常不能独立地测试一个方法(操作),这个方法相当于传统的测试单元,而是将这个方法作为一个测试类的一部分。

如果一个基类中有一个方法,继承类也继承了这个方法,但是这个方法可能在继承类中被私有数据和方法使用,所以尽管基类中已经测试了这个方法,但是每个继承类也需要考虑对这个方法进行测试。一般从下面两个方面进行考虑。

(1)继承的成员函数是否都不需要测试。一般来说,对父类中已经测试过的成员函数,两种情况需要在子类中重新测试,即继承的成员函数在子类中作了改动,或成员函数调用了改动过的成员函数的部分。

(2)对父类的测试是否能照搬到子类。多态有几种不同的形势,如参数多态,包含多态,过载多态。包含多态和过载多态在面向对象语言中通常体现在子类与父类的继承关系上。对具有包含多态的成员函数测试时,只需要在原有的测试分析的基础上扩大测试用例中输入数据的类型。

从上面的分析可以看出,面向对象的软件的白盒测试主要是针对软件设计中的类和对象来进行测试的。因此链接被测试的软件的类结构,是进行白盒测试的关键。由于封装的原则,在面向对象软件的类一般设计为私有或受保护类型,即类的属性和方法是无法从外部直接访问的,必须通过类中的公有方法来实现。因此设计测试用例时必须要注意对这些公有成员的才做。白盒测试逻辑覆盖的方法主要包括语句覆盖、分支覆盖、条件覆盖、条件组合覆盖等。穷举测试要求对所有可能的输入和状态执行所有的路径,除非对一些小实例,穷举测试是不现实的,通常是通过从所有可能的测试用例中确定最有可能检测出最多错误的子集,进行有限的测试来发现尽可能多的错误。但是为了实现对类中所有方法的有效测试,必须设计足够多的测试用例。

下面我们就以一个自动售货机为例设计一个软件系统的白盒测试用例。一个软件系统是有很多的服务组成的,而每个服务时由很多的用例组成的,下面我们给出自动售货机的用例和服务,如表1所示,描述用例的用例图如图1所示。

对用例的用户描述往往采用系统序列图,它将系统看做一个整体,并从用户的角度描述用例的处理过程,以购买商品用例为例,给出其处理过程序列表如表2所示。

借助购买商品的流程可以对服务进行白盒测试。白盒测试主要进行基本路径测试,我们在这里主要设计语句覆盖测试和分支覆盖测试,来设计面向对象软件的白盒测试的测试用例,测试用例的设计原则是保证在测试中程序的每一个可执行语句至少执行一次,针对购买商品的流程得出的具体路径有两条,路径1:1-2-3-4-5;路径2:1-3a-2-3-5a-4-4a-5。

根据路径生成测试用例:根据判断节点给出的条件,选择适当的数据以保证每一条路径可以被测试到。只要设计出的测试用例能够保证控制流程图中的所有路径都能被执行到,就可以使得程序中的每一个可执行语句至少执行一次,则服务中每个条件的真假两种取值都可以得到测试,从而实现可以检查程序的主要执行路径,又可以覆盖程序的所有分支,而且可以满足语句覆盖的要求。

5 小结

由于面向对象软件自身的特点,使得面向对象的白盒测试有别于传统的白盒测试思想。到目前为止,现有的面向对象软件测试方法还存在许多问题,对面向对象软件的白盒测试技术还有待进一步的深入研究,以便做出对软件测试的理论和实践有指导意义、有影响的成果。

参考文献

[1]LARMAN C.UML和模式应用:面向对象分析与设计导论[M].姚淑珍,李虎,译.北京:机械工业出版社,2001.

[2]JACOBSON I, BOOCH G, RUMBAUGH J.统一软件开发过程[M].周伯生,冯学民,樊东平,译.北京:机械工业出版社,2001.

面向对象数据库系统的特点分析 篇12

一、面向对象数据模型

面向对象数据模型 (简称OO模型) 是用面向对象的观点来描述现实世界实体的逻辑组织、对象间限制、联系等关系的模型。一系列面向对象核心概念构成了面向对象数据模型的基础。面向对象数据模型的核心概念主要有以下几种。

1. 对象和对象标识。

现实世界中的任一实体都可被统一地模型化为一个对象, 每个对象都有一个唯一的标识, 称为对象标识 (OID) 。OID独立于值, 且在系统全局中是唯一的。对象通常与实际的表单始终保持不变。一个对象的部分属性、方法可能会发生变化, 但对象的标准是不会改变的。而OID是区分两个不同的对象的标准。常用OID有以下几种。

值标识:用值来表示标识, 如, 关系数据库忠实于组的码值区分元组;名标识:用一个名字来标识, 如在一个作用域内程序变量一般使用的就是名标识;内标识:是建立在数据模型或程序设计的标识, 如面向对象数据库系统使用的就是内标识。

2. 封装。

每一个对象是其状态与行为的封装, 其中状态是该对象一系列属性值的集合。行为是在对象状态上操作的集合。封装是面向对象模型的一个关键概念, 封装是实现对象的外部界面与内部之间实行隔离的抽象, 外部与对象的通信是通过“消息”来实现的。

封装将对象的实现与对象的应用相互隔离, 允许操作对实现算法和数据结构进行修改而不影响应用接口, 且不必修改使用接口的属性, 这有利于提高数据的独立性。封装还隐藏了数据结构与程序代码等细节, 增强了应用程序的可读性。

3. 类。

共享同样的属性和方法集的所有对象构成了一个对象类 (CLASS) , 一个对象是某一类的一个实例。类的概念在面向对象数据库中是一个基本概念, 我们把与属性、方法相似的对象集合称为类, 而把每一个对象称为所属类的一个实例。

类的概念类似于关系模式, 类的属性类似于关系模式中的属性, 类的一个实例对象类似于关系中的一个元组。类本身也可看作是一个对象, 称为类对象。

4. 类层次。

在一个面向对象数据库模式中, 可以定义一个类 (C1) 的子类 (C2) , 类C1称为类C2的超类, 子类还可以再定义子类 (C3) 。这样, 面向对象数据库模式的一组类构成一个有限的层次结构, 称为类层次。每个类的最顶部通常被称为基类。对一个类来说, 它可以有多个超类, 也可以继承类层次中其直接或间接超类的属性和方法。

5. 消息。

由于对象是封装的, 对象与外部的通信一般是通过显式的消息来传递的。即消息从外部传送给对象, 存取和调用对象中的属性和方法。在内部执行所要求的操作, 操作的结果仍以消息的形式返回。

6. 继承。

在面向对象模型中常用的有2种继承:单继承和多重继承。若一个子类只能继承一个超类的特性, 这种继承称为单继承;若一个子类能继承多个超类的特性, 这种继承称为多重继承。例如, “旅行用小汽车”既是小汽车又是旅行车, 它继承了小汽车和旅行车2个超类的所有属性、方法和消息, 因此它属于多重继承。

继承性是进行数据建模的一个有力的工具, 它同时提供了对现实世界简明而精确的描述和对信息的重用机制。子类可以继承超类的特性, 也可以避免许多重复定义, 还可以定义自己特殊的属性、方法和消息。如果在定义自己特殊的属性、方法和消息时与继承下来的超类的属性、方法和消息发生冲突, 通常由系统来解决, 在不同的系统中使用不同的冲突解决方法, 因此便产生了不同的继承语义。例如对于子类与超类之间的同名冲突, 一般是以子类的定义为准, 即子类的定义取代或由超类继承而来的定义;对于子类的多个直接超类之间的同名冲突, 有的系统是在子类中规定超类的优先次序, 首先继承优先级最高的超类的定义;有的系统则指定继承其中某一超类的定义。

二、持久性

不同对象标识的持久性程度是不同的。若标识能在程序或查询的执行期间保持不变, 则称该标识具有程序内持久性;若标识在从一个程序的执行到另一个程序的执行期间保持不变, 则称该标识具有程序间接持久性。若标识不仅在程序执行过程中而且在对数据的重组重构过程中一直保持不变, 则称该标识具有永久持久性。如面向对象数据库中的对象标识就具有永久持久性。

对象标识具有永久持久性的含义是:一个对象一经产生, 系统就给它赋予一个在全系统中唯一的对象标识符, 直到它被删除。对象标识是由系统统一分配的, 用户不能对对象标识符进行修改, 且对象标识是稳定的, 它不会因为对象中某个值的改变而改变。

三、面向对象数据库

面向对象数据库模式是类的集合。面向对象的数据模型提供了一种类层次结构。在面向对象数据库模式中, 一组类可以形成一个类层次, 一个面向对象数据库可有多个类层次。在一个类层次中, 一个类继承其所有超类的全部属性、方法和消息。

面向对象的数据库系统在逻辑上和物理上从面向记录上升为面向对象、面向可具有复杂结构的一个逻辑整体。允许使用自然的方法, 并结合数据抽象机制在结构和行为上对复杂对象建立模型, 从而大幅地提高了管理效率, 降低了用户使用的复杂性。

四、面向对象数据库的特性

1. 滞后联编。

在面向对象模型中, 当子类定义方法与继承下来的超类的方法产生同名冲突时, 即子类只继承了超类中操作的名称, 子类自己实现操作算法, 并有自己的数据结构和程序代码。这样, 同一个操作名就可与不同的实现方法和参数相联系。一般地, 在面向对象模型中对于同一操作, 可以按照类的不同重新定义操作来实现, 这称之为操作的重载。例如, 定义一个Tdate类, 同时为了满足不同的设置需要, 可以设定3个Set函数 () 。程序代码如下。

为了正确执行my Date的一个set方法, 面向对象数据库系统不能在编译时就把操作set联编到程序上, 而必须根据运行时的实际需求, 选择相应的对象类型的相应程序进行联编, 这个推迟的转换称为滞后联编。

2. 对象的嵌套。

上一篇:质量强市建设下一篇:多元化学生评价