搜索
您的当前位置:首页正文

OOPOOD区别

来源:六九路网
第193期第卷第19卷第3期2011年6月

文章编号:1005-1228(2011)03-0049-03

电脑与信息技术Vol.19No.3Jun.2011

ComputerandInformationTechnology

面向过程、面向对象与泛型程序设计的对比分析

包得海,刘

(甘肃民族师范学院计算机科学系,甘肃合作747000)

要:编程语言在软件设计领域经历过三次重大的变革,它们分别是面向过程的编程,面向对象的编程和泛型编程。其

中的每一次变革不仅影响到编程语言本身,更影响到软件工程中的各个领域。文章介绍了这三种程序的设计方法,并且对其进行了比较和分析。

关键词:面向过程程序设计;面向对象程序设计;泛型程序设计;对比分析中图分类号:TP311

文献标识码:A

TheComparisonBetweenProcess-OrientedProgramming,

Object-OrientedProgrammingandGenericProgramming

BAODe-hai,LIUFang

(ComputerDepartmentofGansuNormalUniversityforNationalities,Hezuo747000,China)

Abstract:Programminglanguageinsoftwaredesignareahasgonethroughthreemajorchanges,theyareprocess-orientedprogramming,object-orientedprogrammingandgenericprogramming.Whichchangeseachtimeaffectnotonlytheprogramminglanguageitselfbutalsoeveryareainsoftwareengineering.Thisarticledescribesthethreeprogrammingmethods,andtheircomparisonandanalysis.

Keywords:process-orientedprogramming;object-orientedprogramming;genericprogramming;contrastfound

软件复用一直是软件开发领域每个软件工程师所关注的焦点,在程序设计方面,先后出现过三种程序设计方法,分别是面向过程的程序设计,面向对象的程序

设计和泛型程序设计。面向过程的设计方法在软件行业得到广泛的接受和使用,并由此而建立起来的结构化方法一度成为早期主导地位的软件构造和开发方法。面向对象的方法提出后,当代软件工程的发展逐渐从传统的结构化方法转向面向对象的方法。而泛型程序设计是最近几年新出现的一种方法,它相对面向对象而言,在更高层次上对数据进行抽象,它的出现,必将在将来的软件工程领域出现一种新的开发方法。

关系尽可能简单,在功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成;其模块化实现的具体方法是使用子程序。面向过程的程序流程在编码时已确定[1]。

“面向过程”所采用的是自顶向下、逐步求精的开发方法,先将一个复杂的大系统分解为若干个可独立设计的子模块,并明确各模块间的组装与交互机制,在各个子模块设计完成之后将这些子模块组合起来,形成最终的大系统。系统的模块化设计,目前还没有一个完全机械式的形式化的方法[1]。

“面向过程”中的模块设计坚持的是“高内聚,低耦合”的设计原则。其中“高内聚”是指每一个模块都执行一个完整的功能,具有一个完整功能的业务都组合在一个模块当中,而不会分散到两个或者多个模块当中。“低耦合”是指每一个模块之间的共用的信息应该尽量少,比如说参数,全局变量等,换句话说,就是每个模块之间的交集应该尽可能的小,应该尽量降低每个模块

1面向过程程序设计

“面向过程”是一种以模块为中心的编程思想。面向过程的软件,其程序结构是按功能划分为若干个基本模块,这些模块形成一个树状结构,这个树形结构表现的是各个模块之间相互调用的关系;各模块之间的

收稿日期:2011-01-25

资助课题:甘肃省高等学校研究生导师科研项目(编号:1012-06)作者简介:包得海(1972-),男,甘肃永登人,硕士,讲师,主要研究方向:智能算法及藏文数据库;刘向:计算机网络。

昉(1967-),男,甘肃天水人,副教授,主要研究方

·50·电脑与信息技术2011年6月

之间的耦合度。“模型”。如果概念C2拥有概念C1的所有功能,一个

并且加上其他功能,便说C2是C1的一个强化。它们三者之间的关系如图1所示:

󰀁󰀂󰀃󰀄󰀅󰀆󰀇󰀈󰀉󰀌󰀂󰀍󰀅󰀎󰀏󰀃󰀐󰀌󰀂󰀍󰀅󰀎󰀏󰀃󰀐󰀉󰀊󰀋󰀉󰀑󰀅󰀒󰀏󰀃󰀅󰀓󰀅󰀃󰀇󰀉󰀉󰀊󰀈2面向对象程序设计

“面向对象”的特色是程序围绕被操作的对象来设计,不是围绕操作本身。所以面向对象里有几个新的概

念,这就是对象、类、方法、事件、属性等。“面向对象”方法是一种把面向对象的思想应用于软件开发过程中,知道开发活动的系统开发方法,简称OO(Object-Oriented)方法,是建立在“对象”概念基础上的方法学。它的基本思想是把软件系统分解成一个个的对象,以对象为中心,以类和继承为构造机制来认识、理解、刻画客观世界和设计、构建相应的软件系统。“面向对象”是一种以事物为中心的编程思想。把数据及对数据的操作放在一起,作为一个相互依存的整体———对象。对同类对象抽象出其共性,形成类。类中的大多数数据,只能用本类的方法进行处理。类通过接口与外界发生关系,对象与对象之间通过消息进行通信。程序流程由用户在使用中决定[2]。

面向对象程序设计方法的中心是围绕着对象、类、消息、继承性和多态性等机制展开的。其中对象、类是面向对象程序设计方法的核心,消息是连接它们的纽带,继承性是面向对象程序设计方法得以最大限度地实现代码重用,而多态性则是使这一方法更加灵活和高效。

󰀉󰀊󰀈󰀁󰀂󰀃󰀄󰀅󰀆󰀇󰀈󰀈󰀉󰀊󰀈图1泛型程序设计三概念之间的关系示意图

4三种程序设计的比较

上述三种程序设计方法虽然在本质上有很大的区面向对象是面向过程发别,但它们之间仍然存在连系。

展到一定阶段的产物,而泛型程序设计又是面向对象发展到一定阶段的产物,比如面向对象中的类的成员函数离不开面向过程中的函数,而没有面向对象中对类型的抽象,也不会有泛型程序设计的发展。4.1抽象层次

面向过程的开发在解决问题的时候有点欠缺,抽象层次不够,因为面向过程主要是以数据流和时间的触发进行过程,以函数和模块为共享的单位,如果应用的需求经常变化,则面向过程建立起来的程序结构也会随着需求的改变而发生变化。面向对象的开发是从现实世界抽象出一个个的对象,再对具有共同特征的对象抽象出类,并通过继承来实现程序的共享和重用,通过消息来实现各个对象之间的通信。在类这一层次对软件系统进行抽象,而泛型程序设计比面向对象程序设计具有更高的抽象能力。由于面向对象程序设计是以共同的基类为共性抽象,而泛型程序设计是以共同的需求条件为共性抽象,因此,泛型程序设计比面向对象程序设计具有更高的抽象能力,并且泛型程序设计包含了面向对象程序设计的核心内容[4]。

4.2语言的复杂性

面向过程的设计是以函数和模块为共享单位,因此,面向过程的语言相对而言要简单一些,面向对象是以类和接口来对程序进行抽象和组装,比面向过程的语言抽象性更高,而类和接口的组织和建立要比函数的建立复杂得多,因此,面向对象的程序设计语言比面向过程的程序设计语言要复杂。而泛型程序设计是以共同的需求条件为共同的抽象,具有相同的需求条件,在泛型程序设计中就可以进行相同的抽象,而在需求层次上的抽象要比在类和对象上的抽象又要复杂得

3泛型程序设计

泛型程序设计是以类型需求为中心的程序设计方法。就是说要将程序写得尽可能通用,可以适合多种数据类型的操作,同时并不损失效率。泛型程序设计的抽象机制是直接建立在需求分析上,从而易于同需求分析阶段更好地衔接。泛型程序设计的过程就是发现类型需求、分析类型需求之间的关系,并运用这种类型需求关系实现系统结构和逻辑的过程[3]。

泛型设计的目标是将算法从对象的行为中分离出来,做到算法的设计与数据结构无关,从而实现算法软件的复用。泛型设计必须创新一种技术,将数据结构与算法之间的强祸合关系削弱为弱祸合关系,从而解决算法软件的复用问题。

泛型程序设计有三个非常重要的概念,也是泛型程序设计的基石,它们是概念(Concept)、模型(Modeling)、强化(Refinement)。概念是一组能支持相应的操作类型数据的定义,这些操作与具体的数据类当某个类型型无关,也可以认为它是一组类型的集合。满足某个“概念”的所有条件,称此模型为该“概念”的

第19卷第3期包得海等:面向过程、面向对象与泛型程序设计的对比分析

·51·

多。在泛型程序设计中,往往一个数据类型就可能要比面向过程和面向对象的一行代码还要长,因此,泛型程

序设计的程序语言要比面向过程和面向对象程序设计语言都要复杂得多。4.3通用性

面向过程采用数据结构来构造计算类型,用算法表示处理事物的方法,事物之间的联系是通过过程的

面向过程虽然强调数据结构和算法,但是调用来实现。

在构造上和形式上却是分离的,没有达到形式与内容的统一,通用性一般。面向对象用类来描述事物的抽

象,用消息和继承来表示事物的联系和层次关系,把数据和对数据的操作封装在类中,通过建立一个个对象来构件软件系统,以对象—消息为机制的系统在通用性方面比面向过程要优越很多。泛型程序设计比面向对象程序设计更具有通用性。面向对象程序设计的通用性是建立在类和类的继承机制上的,这导致了面向对象的算法只能被用在有限的类型上,而泛型程序设计的算法是建立在结构一致性上,因此泛型程序的算法不局限于某些具体的数据类型,而能够运用到的类型集是无限的、非绑定的[4]。

4.4对软件的建模

面向对象是以模块为软件的基础,因此,面向对象程序设计所采用的软件建模都是和模块有关的,比如

数据流图,状态转换图等。面向对象是以类和对象为基础来组织数据的,因此面向对象的建模是围绕着类和对象图、交互图、活动图等。对象来进行的,比如类图、泛型程序设计是以需求为基础的程序设计,因此泛型程序设计的建模是围绕着不同的需求来进行的。

5结束语

面向过程程序设计、面向对象程序设计与泛型程序设计方法各有千秋,当今软件开发领域的主流是面向对象的程序设计方法。在某些情况下,它们的设计原则可能各自对立,但如果能将这三种设计方法的优点巧妙结合,就能更好的解决软件开发领域的实际问题。参考文献:

[1]Sommerville,I.软件工程(第8版)[M].北京:机械工业出版社.2007.SR.面向对象软件工程[M].北京:机械工业出版社.2009.[2]SChach,

[3]StanleyB.LippmanBarbaraE.MooJoséeLaJoie.C++Primer(第3版)

[M].电子工业出版社.

[4]陈叶旺.泛型编程与设计模式[J].计算机科学,2006(4):253-257.

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(上接第43页)安全方面起着关键性作用。防火墙用

于加强网络间的访问控制,防止外部用户非法使用内部网资源,保护内部网络的设备不被破坏,防止内部网络的敏感数据被窃取。防火墙系统还决定了哪些内部服务可以被外部访问,外界的那些人可以访问内部的服务,以及哪些外部服务可以被内部人员访问。通过它可以隔离风险区域与安全区域的连接,同时不会妨碍安全区域对风险区域的访问。入侵检测技术是一种增强系统安全的有效办法,对系统资源的非授权使用能够做出及时判断、记录和报警,能检测出系统中违背系统安全性规则或者威胁系统安全的活动,通过对企业系统中用户行为或系统行为的可疑程度进行评估,并根据评估结果来鉴别系统中行为的正常性,从而帮助系统管理员进行安全管理或对系统所受到的攻击采取相应的对策。

3.4IP安全与WEB安全

为了加强Internet的安全性,从1950年开始IETF制定了一套用于保护IP通信安全的IP安全协议,IP安全协议维系整个TCP/IP协议的体系结构,提供具有

较强的互操作能力、高质量和基于密码的安全功能,通

过支持一系列的加密算法确保通信双方的机密性。WEB是运行在Internet和TCP/IPInternet之上的基本客户—服务器应用。WEB具有双向性,实现端对端的安全、虚拟专用网络和安全隧道的计算。总之,企业要适应现代化发展的需要,要提高自身信息安全意识,加强对信息安全风险防范意识的认识,重视安全策略的施行及安全教育,做好信息需求分析和评估,为企业设计适合实际情况的安全解决方案,制定正确和采取适当的安全策略和安全机制,保护企业信息的完整性、保密性、可用性、不可否认性、可控制性,保证企业安全体系处于应有的健康状态。参考文献:

[1]项菲,林山.中小企业信息安全策略研究[J].电脑知识与技术,2009

(1):325-326.

[2]张帆.企业信息安全威胁分析与安全策略[J].网络安全技术与应用,

2007(5):66-67.

[3]姜桦,郭永利.企业信息安全策略研究[J].焦作大学学报,2009(1):

84-85.

因篇幅问题不能全部显示,请点此查看更多更全内容

Top