结构化方法与面向对象方法之应用比较

Posted on 2016-12-14 21:05  xyCrystal  阅读(234)  评论(0)    收藏  举报

  结构化方法是一种传统的软件开发方法,它由结构化分析、结构化设计和结构化程序设计三部分构成。虽然软件开发不断推陈出新,但结构化方法最为成熟且影响最大,它的基本思想是把一个复杂问题的求解过程分阶段进行,使得每个阶段处理的问题都控制在人们容易理解和处理的范围内。结构化方法的基本思想可概括为:自顶向下、逐步求精、模块化技术。

​  面向对象方法是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法。是建立在“对象”概念基础上的方法学。对象是由数据和容许的操作组成的封装体,与客观实体有直接对应关系,一个对象类定义了具有相似性质的一组对象。而每继承性是对具有层次关系的类的属性和操作进行共享的一种方式。所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统。面向对象方法它不仅仅是一些具体的软件开发技术与策略,而且是一整套关于如何看待软件系统与现实世界的关系,用什么观点来研究问题并进行问题求解,以及如何进行软件系统构造的软件方法学。

一、基本思想的比较

结构化方法基本要点有:自顶向下,逐步求精,模块化设计。自顶向下的核心本质是“分解”,它将相对复杂的大问题分解为简单的小问题,对每一个小问题进行精确、定量的描述。逐步求精即是抽象处理,将系统功能按层次进行分解,由单一简单的模块来描述整个系统。模块化设计是将求精得到的功能化的模块,以功能块为单位进行程序设计,实现其求解算法。模块化降低了程序复杂程度,使程序设计、测试和维护等操作简化。

面向对象方法的基本思想主要有:

(1)客观世界中的事物都是对象,对象之间存在一定的关系,并且复杂对象由简单对象构成。面向对象方法要求从现实世界客观存在的事物出发来建立软件系统,强调直接从现实世界中的事物为中心来思考问题和认识问题,并根据这些事物的本质特征和系统责任,把他们抽象成系统对象,作为系统的基本构成单位。

(2)具有相同属性和操作的对象属于一个类,对象是类的一个实例。

(3)类之间可以有层次结构,即类可以有子类,其中,子类继承父类的全部属性和操作,而且子类有自己的属性和操作。

(4)类具有封装性,把类内部的属性和一些操作隐藏起来,只有公共的操作对外是可见的,对象只可通过消息来请求其他对象的操作或自己的操作。

(5)强调充分运用人在日常逻辑思维中经常采用的思想方法与原则。例如:抽象,分类,继承,聚合,封装,关联等。

二、基本原则的比较

结构化方法遵循基本原则有:

(1)抽象原则:是一切系统科学方法都必须遵循的基本原则,它注重把握系统的本质内容,而忽略与系统当前目标无关的内容,它是一种基本的认知过程和思维方式。

(2)分解原则:是结构化方法中最基本的原则,它是一种先总体后局部的思想原则,在构造信息系统模型时,它采用自顶向下、分层解决的方法。

(3)模块化原则:结构化方法最基本的分解原则的具体应用,它主要出现在结构化设计阶段中,其目标是将系统分解成具有特定功能的若干模块,从而完成系统指定的各项功能。

面向对象方法遵循基本原则有:

(1)抽象: 抽象是指从事物中舍弃个别的、非本质的特征,而抽取共同的本质特征的做法。使用抽象的好处:一是便于访问,外部对象只需知道有限的几个操作(接口)即可访问其中的对象;二是便于维护,如果程序内部发生变化而其接口没有发生变化,则只需对其内部进行修改。

(2)分类:分类的作用就是按照某种原则划分出事物的类别,以便有助于认识复杂世界。在面向对象中分类就是把具有相同属性和方法的对象化为一类,用类作为这些对象的抽象描述。分类实际上是把抽象原则运用于对象描述时的一种表现形式。

(3)封装:在面向对象中封装就是用对象把属性和和操纵这些属性的操作包装起来,形成一个独立的实体单元,体现了事物的相对独立性。封装的另一个含义则是信息隐蔽,即外界不能直接存取对象的内部属性以及隐藏起来的内部操作,外界也不用知道对象操作的内部实现细节。

(4)多态性 :多态性是指在具有继承关系的类层次结构中可以定义同名的操作或者属性,但是这些属性和操作具有不同的含义,即具有不同的数据类型或表现出不同的行为。

三、优缺点的比较

​   结构化方法在程序设计时,先考虑问题大的方面,在确定了主要方向后,再由表及里深入到问题具体的细节,由易到难,逐层解决问题,使得整个程序设计过程由模糊到清晰,由概括到具体。结构化方法强调功能抽象和模块化,采取了分块处理问题的方法,可以把一个比较复杂的问题分解为若干个容易处理解决的部分,从而降低了问题处理的难度。由于结构化方法思路清晰,条理清楚,又有效地分解了繁复的问题,使得编写程序时清晰明了,简化了编程人员繁杂的工作,而在阅读时也能够一气呵成,给人以明朗的感觉。

​   面向对象方法与人类习惯的思维方法一致,使得使用者和维护人员都容易理解,在用户使用时不会理解困难,在软件维护中可维护性也较高,并且易于测试和调试。它的稳定性好,对软件的局部进行修改时,不会引起整体的变化,而且对局部修改容易实现。它的可重用性好,并且由于它是把大的问题分解成相互独立的小问题处理,降低了开发的技术难度,开发工作的管理也变的容易了,开发大型软件变的容易,成本也降低了。面向对象方法直接由问题入手,来进行系统的建模,降低了使用成本,让用户在使用一个新的软件时,能够在最短的时间里了解使用方法,能正确、清楚地使用软件。

​   在编写程序方面,结构化方法有着比较强的优势,它思路清晰,条理严谨,步骤整洁,便于阅读理解;而在注重功能的用户使用方法,面向对象方法则更容易理解,它操作简单,界面清楚,使得软件使用变得简单。

​   结构化方法在得到问题本质性的描述之前,不断分解出的结论和需要处理的信息越来越多、越来越复杂,它要求系统分析员具有一种“俯视全局”的能力,能够透过问题的表象直接把握到问题本质。当软件项目较小、系统分析员能力足够高的时候,结构化方法能快速的找到最简洁、高效率的逻辑模型。结构化方法对复杂问题的帮助有限,但它有助于使用面向分析方法的系统分析员确认系统最初的高阶模型。 面向对象方法总是试图抽象出更公用的类,因此对系统分析员抽象事物和把握最初分析方向的要求很高,常常难以控制抽象对象的层次、粒度,甚至抽象出与问题本质面目全非的对象模型,掌握难度高于结构化分析方法。面向对象方法通过信息隐藏和封装等手段屏蔽了对象内部的执行细节,控制了错误的蔓延,但发生错误时,定位故障的代价大,尤其是继承的深度很大时。对于需求变化频繁的系统,得到一个高度可复用的面向对象软件系统设计是很困难的事情。

​   结构化方法与面向对象方法不是两种对立的设计方法,没有先进或过时的区分,按照需求来选择合适的设计方法才是最明智的选择。

博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3