面向对象程序设计技术概述

原创 2004年03月30日 19:25:00
 

4.4.1  对象复用<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

对象复用是最基本的复用方式,由于对象的封闭性,使得对象易于成为可复用的单元,当然,并不是所有对象在并发环境下均可自动地作为可复用的单元。为此,有些学者如Papathomas[19]等开始研究易于对象复用的并发面向对象程序设计准则。一般说来,易复用性来源于对象的独立性,即对象的设计对外界的并发环境应作尽可能少的假设和依赖。

4.4.2  方法与同步约束的复用

继承与同步分别是面向对象程序设计和并发程序设计的主要特征。通常,在面向对象的框架下,同步约束和方法的定义是相互关联的,因此其复用性的讨论往往放在一起进行,当然同步约束代码的复用仍然是讨论的重点。主要问题包括通过继承机制是否能够复用同步约束代码以及如何在并发面向对象程序设计语言中提供相应的支持。

(1)  继承异常

在并发环境中,由于可以同时有多个消息访问一个对象,并且对象之间的消息传递具有不确定性,所以为了保证对象的完整性和对象中数据的一致性,必须在对象中引入同步约束部分。在子类中有新方法引入时,可能会改变从父类中继承过来的方法的同步约束条件,因而必须对同步约束代码加以重新定义,当同步约束条件与方法定义融合在一起时,就可能对父类中原本可以继承的方法进行重定义,从而产生一系列的问题,即出现所谓的继承异常[20]

(2)  解决途径

在并发面向对象的系统中,每个对象对接收到的消息通常依执行条件检查、执行相应方法以及相应的状态转换3个步骤处理,其中前、后两条是与同步约束紧密相关的两个部分,如果这两部分定义在类的方法体中,那么当子类中加入了新方法或对父类方法进行修改从而破坏了这些同步约束条件时就可能导致在子类中重新对包含此同步约束的方法进行定义,产生继承异常。

从根本上解决继承异常,从而对同步代码的复用提供全方位的支持,必须解决好以下3方面的问题:

同步代码的分离问题:它是解决继承异常,方法复用的最基本的条件。

同步代码的分解问题:分解问题是考虑如何合适地对同步代码进行模块化,使得子类能复用父类中部分同步代码,它是在分离的基础上试图达到同步代码的复用。

同步代码的独立问题:同步代码的独立是对同步约束的抽象,使其独立于具体的方法,从而达到对同步约束框架的复用,如读-写同步约束框架。

上述3个问题分别是针对方法体、部分同步代码和整个同步代码3种不同程度的复用。或者说,前两个问题是从继承的角度来考虑代码复用,第3个问题则是对同步代码加以直接复用。到目前为止,尚未见一种方法能同时很好地满足这3方面的要求。

另外,值得提及的是,形式化并发面向对象语言如VDM++,Z++也是当前研究的热点,特别是在欧洲,现在形式化方法已不限于关键性和安全性软件的开发,开始用于工业性和商业性软件[21,22]。随着支撑工具的完善和坚定性的提高,形式化的并发面向对象程序设计方法将在大型软件系统开发中扮演越来越重要的角色。

5 面向对象程序设计当前面临的问题

面向对象程序设计技术确实提供了真实世界较为自然的模型,为提高软件开发生产率提供了诱人的前景,然而OOP技术不是万能的,作为一新兴的技术在实现上还存在着某些缺欠,归纳起来主要有以下几方面的问题:

(1)  运行效率问题

OOP技术是针对当前的软件开发危机而产生的,它在提高编程效率方面所起的作用是勿庸置疑的,但是用OOP开发的程序通常较SP方法开发的程序在运行时的效率要低,虽然随着CPU速度的提高、内存容量的增加,对一般规模的OOP系统其运行速度用户是可以接受的,但当系统规模较大时,这一问题是不容忽视的。

(2)  类库的化简问题

OOP语言通常都提供了一个具有丰富功能的类库,用户可以有选择的使用它们进行程序开发,从而缩短软件开发生命周期。要成为一名高效的OOP程序员必须能熟练地运用类库,掌握类库中各个类提供的功能,但由于类库都过于庞大,程序员对它们的掌握要有一个时间过程,从普及、推广的角度,类库应在保证其功能完备的基础上进行相应的缩减。

(3)  类库的可靠性问题

虽然类库中提供的类都是经过精心设计、测试过的,但如此庞大的系统谁也无法保证类库中的每个类在各种环境中百分之百的正确,如果应用程序中使用了类库中某个存在问题的类,当经过几层继承后错误才显现出来,这时程序员对此将束手无策,有可能要推翻原来的全部工作,虽然这种情况出现的概率很低,但国外确曾有过这方面的报道[11]

以上谈及的这些问题,不应该成为阻碍OOP技术发展的障碍,随着软、硬件技术的发展及OOP技术自身的完善,必将给软件开发技术、观念带来革命性的转变,使软件生产进入一个新的时代。

6.结束语

计算机硬、软件技术的发展日新月异,在很短的时间内即涌现出大量的各种各样的软件开发工具,并在迅速不断地更新换代,给编程人员进行程序设计带来了极大的方便。在不久的将来,相信面向对象程序设计技术必将应用到更多的程序设计方法中。

 

参考文献

 

[1] 鸿志创作组. Visual C++5.0编程指南[M]. 北京:科学出版社,1998

[2] 李长江等. C++使用手册[M]. 北京:电子工业出版社,1995

[3] 何立起. Borland C++ for Windows程序设计[M]. 北京:人民邮电出版社,1994

[4] 王松等. Borland C++使用技术入门精解[M]. 成都:电子科技大学出版社,1995

[5] []James Jaworshi,邱仲潘等译. Java ScriptJScript从入门到精通[M]. 北京电子工

业出版社,1999

[6] 沈一梁等. Visual C++程序设计[M]. 北京:科学出版社,1996.1

[7] []Davis Chapman,骆长乐译. 学用Visual C++6. 0[M].北京:清华大学出版社,

1999

[8] []高永强编著. C编程. 北京:清华大学出版社,2002.6  450—515

[9] 周之英编著. 现代软件工程(第二册). 北京:科学出版社,2003.1 268364

[10] 门槛创作室Visual J++6. 0实例教程[M]北京:电子工业出版社,1999

[11] Namir Clement Shammas, Teach Yourself Visual C++ 1.5 in 21 Days. USA: Sams

Publishing,1994 230420

[12] 杨大军、张鸣等. 并发面向对象程序设计语言研究与发展. 计算机研究与发展. Vol.35,No.9,Sep. 1998

 [13] 北京华中兴业科技发展有限公司. Windows98中文版使用大全[M]. 北京:人民邮电

出版社,1998

[14] 周予滨主编. 学习使用Windows98中文版[M ]. 北京:科学出版社,1998

[15] Lu J. Introducing data decomposition into VDM fox tractable development of programs. ACM SIG PLAN Notices,1995, 30(2):41- 50

[16] Lu J. Developing parallel object-oriented programs in the framework of VDM. In: M cG regor J D ed. Annals of Software Engineering一一Special Volume on Object-Oriented Software Engineering: Foundations and Techniques, Vo12. Netherlands: Science Publishers, 1996. 199-211

[17] Laffra C. PROCOL: A concurrent object language with protocols, delegation, persistence and constraints[ Ph D dissertation] .Erasmus University, Rotterdam1992

[18] Agha G, Callsen C J. ActorSpace: An open distributed programming paradigm. ACM SIGPLAN Notices, 1993, 28(7):23-32

[19] Papathomas M.Concurrency in object-oriented programming languages. In: Nierstrasz O, Tsichritzis Deds. Object-Oriented Software Composition. Upper Saddle River, New Jersey: Prentice Hall, 1995. 31- 68

[20] Matsuoka S, Yonezawa A. Analysis of inheritance anomaly in object-oriented concurrent languages. In: Agha G, Wegner P, Yonezawa A eds. Research Directions in Concurrent Object-Oriented Programming. Cambridge, Mass: MIT press,1993.107 -150

[21] Ram D J, Vivekananda N, Rao C S et al. Constraint meta-object: A new object model fox distributed collaborative designing. IEEE Transactions on Systems, Man, and Cybernetics一一Part A: Systems and Humans, 1997, 27(2): 208-221

[22] H inchey M G, Bowen J P. Applications of Formal Methods. Upper Saddle River. New Jersey: Prentice-Hall, 1995

 [23] []Timothy C.Lethbridge ,Robert Laganiere, 张红光, 温遇华等译. 面向对象软件工程. 北京:机械工业出版社, 2003.4  1940

[24] 邵维忠, 杨芙清 .面向对象的系统设计. 北京:清华大学出版社, 2003.2  2636

[25] Meyer B. System atic concurrent object-oriented programming. Communications of the ACM1993, 36(9):56- 80

 

蓝牙技术概述

蓝牙(Bluetooth)是一种短距离的无线通讯技术,最初是研究在移动电话和其它配件间进行低功耗、低成本无线通信连接的方法。发明者希望为设备间的通讯创造一组统一的标准化协议,以解决用户间互不兼容的移动...
  • jimmy_huang_wh
  • jimmy_huang_wh
  • 2016年05月05日 21:42
  • 674

mySql数据库概述

一、数据管理技术与其发展阶段 1、人工管理阶段 • 数据不能长期保存 • 程序本身管理数据 • 数据不能共享  • 数据不具有独立性 2、文件系统阶段 • 数据可以长期保存 ...
  • limm33
  • limm33
  • 2016年08月31日 08:48
  • 579

WiFi技术概述

WLAN是无线局域网络的简称,全称为Wireless Local Area Networks,是一种利用无线技术进行数据传输的系统,该技术的出现能够弥补有线局域网络之不足,以达到网络延伸之目的。 Wi...
  • jimmy_huang_wh
  • jimmy_huang_wh
  • 2016年05月05日 21:39
  • 3676

无线局域网技术概述(Wireless LANs)——802.11协议

无线通信是目前通信领域中最快速发展的技术之一,对于不使用线缆来进行设备连接的需求在各个地方都在不断的增长,无线局域网在大学校园,办公楼和很多的公共区域都随处可见。以下部分主要关于两种无线局域网技术:I...
  • wuxiaoer717
  • wuxiaoer717
  • 2013年11月11日 00:23
  • 1804

低功耗蓝牙开发技术概述(一)——基本概念和体系结构

1、术语 在低功耗蓝牙方面工作的人们都使用他们自己的术语来描述一些技术特征和规范,下面介绍几个相关术语 自适应跳频(Adaptive Frequency Hopping, AFH):一种使用某个频率子...
  • tsy20100200
  • tsy20100200
  • 2015年08月17日 16:11
  • 1173

数据库技术概述——基本概念

数据库技术概述——基本概念 关劲松 一、数据(Data)        数据是描述现实世界事物的符号记录,是用物理符号记录的可以鉴别的信息。        数据库(Da...
  • guanking
  • guanking
  • 2013年05月31日 10:04
  • 1316

面向对象技术介绍

之前看UML之间也接触过面向对象这个概念,只是当时只是知道分面向对象和面向过程两个方面,但是不怎么知道究竟是什么区别,老师总是说VB是基于面向对象的,自己当时不是很理解,搞不清怎么回事,直至开始学UM...
  • u010955843
  • u010955843
  • 2014年02月17日 14:39
  • 913

项目框架技术点概述

做高效项目经历了两次迭代,每次都有不一样的收货,每一次也都会有更深的认识。项目中整体采用了MVC客户端调用WCF服务端的技术。     WCF     wcf是由微软开发的一系列支持数据通信的应用程序...
  • u010508826
  • u010508826
  • 2015年04月30日 22:11
  • 634

加密算法简单概述

基本概念:      基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密 文”,使其只能在输入相应的密钥之后才能显示出本来内容,通过这样的途径来达到保护数...
  • wj8023
  • wj8023
  • 2013年12月15日 21:36
  • 1186

关于网络爬虫技术的概述

自2012年7月份开始接触爬虫相关,不经意间对爬虫有了不少心得和总结,看到周围不少的同事和同学也在这块,发现很多共性的问题和很多的误区,今天特意总结出来,希望对后来者有所帮助。 一、综述     ...
  • erliang20088
  • erliang20088
  • 2015年05月17日 17:01
  • 2017
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:面向对象程序设计技术概述
举报原因:
原因补充:

(最多只允许输入30个字)