北京软件外包公司面向对象方法在软件开发的分析、设计以及编码中作用越来越重要,它在适应系统需求变化、提高软件可重用性和开发效率方面有着其它开发方法无法比拟的优点。面向对象思想将应用域中的概念描述成对象,应用系统由一系列对象构成,对象之间可以传递消息,系统的运作可说就是对象间的协同工作。有过开发经验人都知道,应用系统中有些是对象是要持久存在的,需要将它们存入磁盘,以便在重启系统时能够调入系统。这些对象在面向对象方法中主要指实体对象,为了一致,本文中以实体对象代表所有需要存储的对象。
目前,对象存储方式有两种:一种是存入文件,另一种是存入数据库。将对象存入文件中,容易实现,操作简便,有很多类库已实现了此功能,但是文件存储方式难以表示对象之间的关系,性能上也有所不足,难以满足大型系统的要求。将对象存入数据库,理想的选择是面向对象数据库,但面向对象数据库虽有所发展,仍不成熟,还不能满足需要。关系型数据库系统经过多年的发展,技术已经相当成熟,应用十分广泛,大部分信息系统都以其作为后台数据管理。如今成熟的数据库产品有很多,为了降低在数据库编程方面的难度,各种数据库访问模型相继问世,如ADO、ODBC、BDE、ADO.Net和JDBC等,虽然如此,关系型数据库并非为适应面向对象技术而存在和发展,面向对象语言和关系数据库之间不能实现直接对象存取,需要经过转换,为了提高开发效率,降低应用系统与数据库之间的耦合度,在二者之间开发对象存储模块十分必要。
二、实现策略
数据库特点。数据库由数据表构成,在面向对象编程中,数据表一般代表实体对象,表中的字段代表实体对象的属性。由于数据表一种特殊的数据结构,每个表的字段数、字段类型与长度和其他约束均不相同,因此建立能统一表示各数据表结构的类是很难的。数据表虽在结构上有所不同,但各数据表也有相同之处:它们都有一个名字,表上都有共同的操作,就是如查询、增加、删除、修改等存取操作。
实体对象与数据表之间的映射。针对数据库结构的特点,我们为所有实体对象建立一个抽象基类,类中有实体对象名,有数据库存取操作的接口,每个接口以数据库连接对象为参数。实体对象可从抽象基类继承,增加相关属性和属性的赋值与读取方法,实现从抽象基类中继承而来的数据库存取接口。数据库存取接口的实现策略是:读取实体对象名作为数据表名,用数据访问模型建立记录集,用记录集中的字段值为实体对象的属性赋值或将属性值存入数据表中。这样就为实体对象与数据表建立了对应关系。
命令模式。实体对象与数据表的建立对应关系后,不能孤立存在,不能由其自身创建和存储,必须采用某种机制将它们组织起来,向应用系统提供一致服务,与其他对象交互。借鉴设计模式中的命令模式可以完成此项功能。命令模式结构如图1所示。
图1:命令(Command)设计模式
⑴.命令模式解决方案描述。
命令抽象类说明所有具体命令(ConcreteCommand)支持的接口,具体命令(ConcreteCommand)封装了接收者(Receiver)使用的服务。客户创建具体命令(ConcreteCommand),并将这些具体命令(ConcreteCommand)绑定在指定的接收者(Receiver)上,调用者(Invoker)实际执行一条命令或取消一条命令的执行。
⑵.命令模式结论:
①命令对象和命令算法被分离;
②调用者(Invoker)从指定的命令中分离出来并得到保护;
③具体命令(ConcreteCommand)是对象,它们可以进行创建和存储;
④在无须修改代码的前提下,新的具体命令(ConcreteCommand)可以被增加进来。
三、编程实现
现以图书管理系统的存储部分为例,选择ACCESS数据库,ADO数据访问模型,C++语言根据上述理论来实现对象存储。
对象存储由三个核心类来协同完成,分别为CEntitySet(实体集)、CEntity(实体对象)和CStorage(存储管理)。CEntity类是所有实体对象的抽象基类。CStorage类调用数据访问模块(ADO),管理与数据库连接,并向应用系统提供对象存储服务。CEntitySet类是参数模板类,它根据查询条件和对象类型,调用ADO访问数据库并生成需要的实体对象集合,并向应用系统提供对象集合访问服务。
北京宜天信达软件公司是国内领先的软件定制开发公司。自成立以来,秉承"诚信、协作、奉献、超越"的精神,着力打造集战略咨询、平台技术和专业服务为一体的国际化软件企业。在金融、保险、银行、医疗、物流、制造、教育、核能、汽车等行业拥有丰富的软件开发经验。
北京软件外包公司宜天信达涵盖多种应用与技术平台,拥有成熟的信息系统和软件开发外包解决方案,我们的专业团队将作为您的IT部门来开展长期紧密的合作,立足于您的业务和信息化目标,开发符合您业务目标和商业价值的软件。
我们将抓住机遇,坚持以人为本,加大自主产品创新,提升重大工程实施能力,加快规范化进程,实现规模经济和跨越式发展,打造“中国软件行业一流企业”。