200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 面向对象:结构化开发方法和面向对象开发方法

面向对象:结构化开发方法和面向对象开发方法

时间:2022-04-15 23:06:43

相关推荐

面向对象:结构化开发方法和面向对象开发方法

在目前的软件开发领域有两种主流的开发方法:结构化开发方法和面向对象开发方法。

Java语言是纯粹的面向对象的程序设计语言,这主要表现为Java完全支持面向对象的三种基本特征:继承、封装和多态。Java语言完全以对象为中心,Java程序的最小程序单位是类,整个Java程序由一个一个的类组成。Java完全支持使用对象、类、继承、封装、消息等基本概念来进行程序设计,允许从现实世界中客观存在的事物(即对象)出发来构造软件系统,在系统构造中尽可能运用人类的自然思维方式。

1,结构化程序设计

结构化程序设计方法主张按功能来分析系统需求,其主要原则可以概括为自顶向下、逐步求精、模块化等。结构化程序设计首先采用结构化程序分析(SA)方法对系统进行需求分析,然后使用结构化程序设计(SD)方法对系统进行概要设计、详细设计,最后采用结构化编程(SP)方法来实现系统。使用这种SA、SD和SP的方式可以较好地保证软件系统的开发进度和质量。

因为结构化程序设计方法主张按功能把软件系统逐步细分,因此这种方法也被称为面向功能的程序设计方法;结构化程序设计的每个功能都负责对数据进行一次处理,每个功能都接受一些数据,处理完后输出一些数据,这种处理方法也被称为面向数据流的处理方法。

结构化程序设计的最小的程序单元是函数,每个函数都负责完成一个功能,用以接收一些输入数据,函数对这些输入数据进行处理,处理结束后输出一些数据。整个软件系统由一个个函数组成,其中作为函数入口的函数被称为主函数,主函数依次调用其他普通函数,普通函数之间一次调用,从而完成整个软件系统的功能。

结构化设计需要采用自顶向下的设计方式,在设计阶段就需要考虑每个模块应该分解成那些子模块,每个子模块又分解成哪些更小的模块,以此类推,只至将模块细分成一个个函数。

每个函数都是具有输入、输出的子系统,函数的输入数据包括函数形参、全局变量和常量等,函数的输出数据包括函数的返回值及传出参数等。结构化程序设计有两个局限性:

设计不够直观,与人类习惯思维不一致。采用结构化程序分析、设计时,开发者需要将客观世界模型分解成一个个功能,每个功能用以完成一定的数据处理。适应性差,可扩展性不强。由于结构化设计采用自顶向下的设计方式,所以当用户的需求发生改变,或需要修改现有的实现方式时,都需要自顶向下地修改模块结构,这种方式的维护成本相当高。

采用结构化方式设计的软件系统,整个软件系统就由一个个函数组成,这个软件的运行入口往往由一个主函数代表,而主函数负责把系统中的所有函数串起来。

2,面向对象程序设计

面向对象是一种更优秀的设计方法,它的基本思想是使用类、对象、继承、消息等基本概念进行程序设计。它从现实世界中客观存在的事物(对象)出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式,强调直接以现实世界中的事物(对象)为中心来思考,认识问题,并根据这些事物的本质特点,把它们抽象地表示为系统中的类,作为系统的基本构成单元(而不是用一些与现实世界中的事物相关比较远,并且没有对应关系的过程来构造系统),这使得软件系统的组件可以直接映像到客观世界,并保持客观世界中事物极其相关关系的本来面貌。

采用面向对象方式开发的软件系统,其最小的程序单元是类,这些类可以生成系统中的多个对象,而这些对象则直接映像成客观世界的各种事物。面向对象的软件系统由多个类组成,类代表了客观世界中具有某种特征的一类事物,这类事务往往有一些内部的状态数据,比如人有身高、体重、年龄等各种状态数据——当然程序没必要记录该事物所有的状态数据,程序只要记录业务关心的状态数据即可。

面向对象语言不仅使用类来封装一类事物的内部状态数据,而且类会提供操作这些状态数据的方法,还会为这类事务的行为特征提供响应的实现。因此可以得到如下基本等式:成员变量(状态数据)+方法(行为)=类定义。由此可以看到,面向对象比面向过程的编程粒度要大:面向对象的程序单位是类;而面向过程是程序单位是函数(方法),因此面向对象比面向过程更简单、易用。

从面向对象的眼光来看,开发者希望从自然的认识、使用角度来定义和实用类。开发者希望直接对客观世界进行模拟:定义一个类,对应客观世界的那种事务;业务需要关系这个事务的哪些状态,程序就为这些状态定义成员变量;业务需要关心这个事务的哪些行为,程序就为这些行为定义方法。

不仅如此,面向对象程序设计与人类习惯的思维方法有较好的一致性,比如希望完成“燕双嘤吃饭”这一件事:

面向过程设计中,一切以函数为中心,函数最大:吃(燕双嘤,饭)。面向对象设计中,一切以对象为中心,对象最大:燕双嘤.吃(饭)。

面向对象具有三大类特征:

封装:将对象的实现细节隐藏起来,然后通过一些公共方法来暴露该对象的功能,继承:继承是面向对象实现软件复用的重要手段,当子类继承父类后,子类作为一个特殊的父类,将直接获得父类的属性和方法。多态:子类对象可以直接赋给父类变量,但运行时依然表现出子类的行为和特征,这意味着同一个类型的对象在执行同一个方法时,可能表现出多种行为特征。

除此之外,抽象也是面向对象的重要部分,抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是考虑部分问题。虽然抽象是面向对象的重要部分,但它不是面向对象的特征之一,因为所有的编程语言都需要抽象。当开发者进行抽象时应该考虑那些特征是软件系统所需要的,那么这些特征就应该使用程序记录并表现出来。因此,需要抽象哪些特征没有必然的规定,而是取决于软件系统的功能需求。

面向对象支持的功能:

对象是面向对象方法中最基本的概念,它的基本特点有:标识唯一性、分类性、封装性、模块独立性好。类是具有共同属性、共同方法的一类事物。类是对象的抽象:对象则是类的实例。而类是整个软件系统最小的程序单元,类的封装性将各种信息细节隐藏起来,并通过公用方法来暴露该类对外所提供的功能,从而提高了类的内聚性,降低了对象之间的耦合性。对象间的这种相互合作需要一个机制协助进行,这样的机制称为“消息”。消息是一个实例与另一个实例之间相互通信的机制。在面向对象方法中,类之间共享属性和操作的机制称为继承。继承具有传递性。继承可分为单继承与多继承。

基于对象和面向对象:基于对象也使用了对象,但是无法利用现有的对象模板产生新的对象类型,继而产生新的对象,也就是说基于对象没有继承的特点;而多态则更需要继承,没有了继承的概念也就无从谈论多态。

面向对象方法的三大特征缺一不可。例如,JS就是基于对象,它使用一些封装好的对象,调用对象方法,设置对象属性;但是它们无法让开发者派生出新的类,开发者只能使用现有对象的方法和属性。

判断一门语言是否是面向对象的,通常可以使用继承和多态来加以判断。“面向对象”和“基于对象”都实现了“封装”的概念,但是面向对象实现了“继承和多态”,而“基于对象”没有实现这些。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。