还剩3页未读,继续阅读
文本内容:
面对过程与面对对象程序设计
一、面对过程的程序设计面对过程Process Oriented这个词是在面对对象Object Oriented消失之后为与之相对而提出的,其实它在以前基本被叫做结构化编程〃早期的程序设计,大量使用共享变量全局变量和GOTO语句一类的东西,后来有人证明全部的程序流程都可以使用三种基本流程挨次、选择、重复来实现,并提出GOTO有害说,从今人们进行编程的方式发生重大变化,每种语言都供应这些基本掌握结构的实现方式,并供应把数据访问局部化的力量,以及某种形式的模块化/分别编译机制在这些基础上,人们所进行的编程活动基本是通过编写用于不同目的的功能函数/过程来实现,故称为“面对过程
1.1面对过程设计概述面对过程的结构化程序设计方法就是采纳面对过程的方法来设计结构化程序结构化程序通常包含一个主程序和若干个子过程,其中每个子过程都描述了某一个小问题的解决方法再由主过程自顶向下调用各子过程,来逐步解决整个问题结构化程序设计方法是一种数学思维或计算机思维方法,和人们熟悉世界时所习惯使用的方法不同面对过程开发方式是对计算机底层结构的一层抽象,它把程序的内容分为数据和操纵数据的操作两部分这种编程方式的核心问题是数据结构和算法的开发和优化C语言所供应的机制就是典型的结构化编程设施
1.2面对对象设计的特点面对过程的程序设计方法通过在程序中模拟问题求解中的过程来进行问题求解,这种方法认为过程或函数可以作为建立大型简单软件系统的抽象机制但由于在问题求解过程中,一些过程匕匕较简单,为掌握简单性,引入了功能分解的方法,即将一个简单的过程分解为简单性较低的低级过程,这种分解始终进行到参加设计和编程的人员可以理解的步骤或过程为止这样使得系统是过程的组件,在整个分解过程中,数据结构的支配是出于对过程组织的需要而进行的因此,数据处于次要地位,而过程是关怀的焦点面对过程的程序方法把重点放在解决问题的过程上,将数据结构和操作这些数据结构的函数分开,在方法上存在明显的不足
二、面对对象的程序设计人们在熟悉客观世界中的各种系统时所习惯使用的方法是面对对象的方法面对对象的程序设计(OOP)方法就是用人类在现实生活中常用的思维方法来认识、理解和描述客观事物,强调最终建立的程序系统能够映射问题域,即程序系统中的对象以及对象之间的关系能够照实地反映问题域中固有的事物及其关系因此,它为我们提出了一个全新的概念,其主要思想是将数据(成员数据)及处理这些数据的相应函数(成员函数)封装到,一个类(class)中而使用类的数据变量则称为对象(object工
2.1面对对象设计概述面对对象的程序在程序结构上表现为类之间的联系,这些联系反映了程序运行时对象之间的消息传递关系,程序正文中类之间的静态联系供应了在程序运行时对象之间的消息传递的通道面对对象的程序的功能是通过特定的消息传递序列来实现的使用面对对象的程序设计方法设计软件系统必需首先清晰软件系统的构造块对象在面对对象的程序设计中,对象就是将数据和对数据进行的合法操作结合于一体的抽象实体,以这种实体所构成的程序就是面对对象的程序面对对象方法中,对象可以接受其他对象传来的消息,也可以向其他对象发送消息有的语言静态类型,打算了对象可接受的消息的范围,这称为对象的类型的接口有的语言中对象可以接受任1可消息,但只对其有意义的消息进行反应对象中可以包含其他对象,这成为“聚合”,对象可以被当作其他类型的对象,这要求对象的类型“继承〃此外的类型对象只能通过其所供应的接口来进行访问,其内部详细实现是不行访问的,这成为〃封装二面对对象方法的三个核心要素是封装、继承、多态
2.2面对对象设计的基本概念
1.对象对象的本意是指某一事物,即对象是可以看到、摸到、感觉到的一种实体在面对对象的技术中,对象是指计算机系统的一个基本成分,它有一个唯一的名,有一组状态(用公共数据和私有数据表示)及表示对象行为的一组公共或私有操作,即”对象=数据+动作,对象具有一个操作集合和一个纪录操作结果的局部共享状态
2.类(class)类是具有相同操作(功能)与相同数据格式(特征)的对象集合它是面对对象程序设计语言供应的可再用软件成分,类可以看作为抽象数据类型的详细实现抽象数据类型是指数据的集合和作用其上的操作的集合,而抽象数据类型则不关怀实现的详细细节,从外部看,类的行为可以用新定义的操作加以规定类为对象集合的抽象,它规定了对象的公共状态与行为特征,即对象为类的一个实例(instance),对象与类的关系相当于程序设计语言中变量与变量所具有的类型的关系3消息消息是要求某个操作的规格说明,由三部分组成接受消息的对象、消息选择子(消息名)和零个或多个变元
4.方法对象所能执行的操作称为方法,在C++语言中称为成员函数方法是类中定义的函数,描述对象执行操作的算法
2.3面对对象设计的优点面对对象的程序设计方法与面对过程的结构化程序设计方法相比较,面对对象的方法至少有三个优点:第一,面对对象的程序设计方法通过将数据封装在类中,对信息进行了很好的隐蔽,面对对象的程序简单阅读和理解,程序员只需了解必要的细节,降低了程序的简单性,使其具有较好的可维护性;其次,程序员通过修改、添加或删除对象,可以很简单的修改、添加或删除程序的属性,使程序具有易修改的特性;第三,程序员可以将某些公用的类和对象保存起来,随时插入到应用程序中,不需做什么修改就能使用,具有很好的可重用性因此,面对对象的设计方法是提高软件开发效率,解决软件重用的有效方法综上,面对过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了面对对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为面对对象的程序设计方法所得到的程序是类的集合,而面对过程的程序设计方法所得到的程序是函数的集合
三、程序的设计模式对于设计模式,Christopher Alexander和他的同事们可能最先将模式语言(patternlanguage)应用于城市建筑领域,他的思想和其他人的贡献已经根植于面对对象软件界简而言之,软件领域中的设计模式为开发人员供应了一种使用专家设计阅历的有效途径设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计阅历的总结毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,犹如大厦的结构一样T殳而言,一个模式包含四个要素模式名称、问题、解决方案和效果一个设计模式命名、抽象和确定了一个通用设计结构的主要方面,这些设计结构能被用来构造可复用的面对对象设计设计模式确定了所包含的类和实例,它们的角色、协作方式以及职责安排每一个设计模式都集中于一个特定的面对对象设计问题或设计要点,描述了什么时候使用它,在另一些设计约束条件下是否还能使用,以及使用的效果和如何取舍,虽然设计模式描述的是面对对象设计,但它们都基于实际的解决方案这些方案的实现语言是Smalltalk和C++等主流面对对象编程语言,而不是过程式语言(Pascal.C、Ada)或更具动态特性的面对对象语言(CLOS、Dylan.Self).设计模式分为三种类型,共23种,创建型模式包括单例模式、抽象工厂模式、建筑者模式、工厂模式、原型模式;结构型模式包括适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式;行为型模式包括模版方法模式、命令模式、迭代器模式、观看者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式设计模式不能够随便使用通常你通过引入额外的间接层次获得敏捷性和可变性的同时,你也使设计变得更简单并/或牺牲了肯定的性能一个设计模式只有当它供应的敏捷性是真正需要的时候,才有必要使用当衡量一个模式的得失时,它的效果部分是最能供应关心的。