结构化方法与面向对象方法比较
结构化方法与面向对象方法的介绍与对比
结构化⽅法与⾯向对象⽅法的介绍与对⽐结构化⽅法与⾯向对象⽅法的介绍与对⽐结构化和⾯向对象,这两个概念在计算机领域的中应⽤⼗分⼴泛。
在软件⼯程中,结构化和⾯向对象的思想也占有重要地位,产⽣了结构化⽅法和⾯向对象⽅法,⽤来指导软件⽣产。
⼀、结构化⽅法结构是指系统内各个组成要素之间的相互联系、相互作⽤的框架。
结构化⽅法强调开发⽅法的结构合理性以及所开发软件的结构合理性。
针对软件⽣存周期各个不同阶段,可以分为结构化分析(SA)、结构化设计(SD)、结构化程序设计(SP)等⽅法。
1.1结构化分析⽅法结构化分析⽅法是⾯向数据流的分析⽅法,是70年代由Yourdon、Constaintine及DeMarco 等⼈提出和发展,并得到⼴泛的应⽤,其基本思想为分解和抽象。
结构化分析⽅法的设计原则有:(1)使每个模块尽量只执⾏⼀个功能(坚持功能性内聚);(2)每个模块⽤过程语句(或函数⽅式等)调⽤其他模块;(3)模块间传送的参数作数据⽤;(4)模块间共⽤的信息(如参数等)尽量少。
在结构化分析⽅法中,常⽤的⼯具有:数据流图数据流图(Data Flow Diagram,简称DFD)是描述系统中数据流程的图形⼯具,它标识了⼀个系统的逻辑输⼊和逻辑输出,以及把逻辑输⼊转换逻辑输出所需的加⼯处理。
通常,⼀个系统的DFD图会进⾏分层设计,使数据处理过程更加有层次,逻辑更加清晰。
DFD图的设计原则为:数据守恒与数据封闭原则、加⼯分解的原则、⼦图与⽗图的平衡、合理使⽤⽂件。
数据字典分层数据流图只是表达了系统的“分解”,为了完整地描述这个系统,还需借助“数据词典”(data dictionary)对图中的每个数据和加⼯给出解释。
对数据流图中包含的所有元素的定义的集合构成了数据词典。
它有四类条⽬:数据流、数据项、⽂件及基本加⼯。
在定义数据流或⽂件时,使⽤下表给出的符号,将这些条⽬按照⼀定的规则组织起来,构成数据词典。
在以上⼯具的辅助下,我们可以进⾏完整的结构化分析,⼀个典型的结构化分析过程为:①分析当前的情况,做出反映当前物理模型的DFD;②推导出等价的逻辑模型的DFD;③设计新的逻辑系统,⽣成数据字典和基元描述;④建⽴⼈机接⼝,提出可供选择的⽬标系统物理模型的DFD;⑤确定各种⽅案的成本和风险等级,据此对各种⽅案进⾏分析;⑥选择⼀种⽅案;⑦建⽴完整的需求规约。
软件工程 比较结构化方法和面向对象
软件工程比较结构化方法和面向对象一、引言软件工程是一门关注软件开发过程的学科,它涉及到软件开发的各个方面,包括需求分析、设计、编码、测试和维护等。
在软件工程领域中,有两种主要的开发方法:比较结构化方法和面向对象方法。
本文将对这两种方法进行详细的比较和分析。
二、比较结构化方法1.概念结构化方法是一种基于模块化设计思想的软件开发方法。
它将一个大型系统划分为多个小模块,每个模块都有明确的输入和输出,并且通过调用其他模块来实现其功能。
2.特点(1)强调程序流程控制;(2)采用自顶向下或自底向上的设计方式;(3)使用层次结构图表示程序流程;(4)采用数据流图表示数据流动情况;(5)模块之间通过参数传递来交换信息。
3.优缺点①易于理解和维护;②适合大型系统开发;③能够提高程序可读性。
(2)缺点:①不够灵活,难以应对需求变更;②不支持复杂的数据类型;③容易出现模块间的耦合。
三、面向对象方法1.概念面向对象方法是一种基于对象思想的软件开发方法。
它将一个系统看作是由多个对象组成,每个对象都有自己的属性和方法,并且通过消息传递来实现对象之间的交互。
2.特点(1)强调数据抽象和封装;(2)采用自下而上的设计方式;(3)使用类图表示程序结构;(4)采用序列图表示消息传递过程;(5)支持继承和多态等高级特性。
3.优缺点①能够提高代码重用性;②支持动态绑定,具有更好的灵活性;③能够提高系统可扩展性。
(2)缺点:①易于出现类爆炸问题;②需要掌握较为复杂的概念和技术。
四、比较分析1.设计思想不同结构化方法注重程序流程控制,通过模块化设计来实现程序结构清晰、易于维护。
而面向对象方法则注重数据抽象和封装,通过对象之间的交互来实现程序功能。
2.设计方式不同结构化方法采用自顶向下或自底向上的设计方式,通过层次结构图和数据流图来表示程序结构和数据流动情况。
而面向对象方法则采用自下而上的设计方式,通过类图和序列图来表示程序结构和消息传递过程。
面向对象方法与结构化方法的比较
结构化方法和面向对象方法的比较结构化方法是结构化分析,结构化设计和结构化编程的总称,是最早最传统的软件开发方法,也是迄今为止信息系统中应用最普遍、最成熟的一种,它引入了工程思想和结构化思想,使大型软件的开发和编程都得到了极大的改善。
面向对象方法它不仅仅是一些具体的软件开发技术与策略,而且是一整套关于如何看待软件系统与现实世界的关系,用什么观点来研究问题并进行问题求解,以及如何进行软件系统构造的软件方法学。
人们普遍认为面向对象方法是一种运用对象、类、继承、封装、聚合、关联、消息和多态性等概念和原则来构造系统的软件开发方法。
结构化方法和面向对象方法二者的比较如下。
一、基本思想的比较结构化方法的基本思想主要体现在三个方面。
一、自顶向下,逐步求精:把程序看成是一个逐步演化的过程。
把一个系统与程序看成是一层一层的。
例如:户籍管理系统可以划分为:户籍迁入迁出,人员迁入迁出,户籍注销,人员注销等几个子系统,而每个子系统又划分为接收用户信息,实施处理,提供返回信息等等部分。
二、模块化:即将几个系统分成几个模块,每个模块实现特定的功能,最终整个系统由这些模块组成。
模块跟模块之间通过接口传递信息,模块最重要的特点就是独立性,模块之间还有上下层的关系,上层模块调用下层模块来实现一些功能。
三、语句结构化:顺序结构、分支结构、循环结构,都是常用的语句结构。
面向对象方法的基本思想主要有:一、客观世界中的事物都是对象,对象之间存在一定的关系,并且复杂对象由简单对象构成。
二、具有相同属性和操作的对象属于一个类,对象是类的一个实例。
三、类之间可以有层次结构,即类可以有子类,其中,子类继承父类的全部属性和操作,而且子类有自己的属性和操作。
四、类具有封装性,把类内部的属性和一些操作隐藏起来,只有公共的操作对外是可见的,对象只可通过消息来请求其他对象的操作或自己的操作。
五、强调充分运用人在日常逻辑思维中经常采用的思想方法与原则。
例如:抽象,分类,继承,聚合,封装,关联等。
结构化方法和面向对象方法的特点、优点与不足。
结构化方法和面向对象方法的特点、优点与不足。
结构化方法和面向对象方法是两种重要的程序设计方法,它们分别有各自独特的特点、优点和不足。
在本篇文章中,我将对这两种方法进行全面评估,并据此撰写一篇有价值的文章,以便你能更深入地理解这个主题。
一、结构化方法1. 特点结构化方法是一种从任务分解的角度来思考问题的方法。
它强调程序的模块化和层次化设计,将整个系统划分成若干个较小的、相对独立的模块或功能单元,然后逐步细化这些模块,直至得到可直接转换成程序的模块为止。
2. 优点(1)易于理解和维护:结构化程序易于理解和维护,因为每个模块都相对独立,不会相互影响。
(2)适合大型项目:结构化方法适合大型项目的开发,因为它能够将复杂的系统分解成若干相对简单的模块,便于团队协作。
(3)代码重用:结构化方法能够促进代码的重用,提高开发效率。
3. 不足(1)难以处理复杂关联:结构化方法在处理复杂关联和交互较多的系统时,容易使得程序的结构变得复杂,不易理解和维护。
(2)不够灵活:结构化方法在应对需求变化时,不够灵活,需要重新调整模块之间的关系。
二、面向对象方法1. 特点面向对象方法是一种从对象抽象的角度来思考问题的方法。
它将系统中的各种实体抽象为对象,这些对象包含了数据和操作这些数据的方法,同时也能够与其他对象进行交互。
2. 优点(1)便于理解:面向对象方法更符合人类的思维模式,因此更容易理解。
(2)灵活性:面向对象方法更灵活,能够更好地应对需求变化。
(3)代码重用:面向对象方法通过继承和多态,能够更好地促进代码的重用。
3. 不足(1)学习曲线较陡:面向对象方法对程序员的抽象能力要求较高,因此刚开始学习时往往感到困难。
(2)性能开销:在一些性能要求较高的场景下,面向对象方法可能带来一些性能开销。
结合以上对结构化方法和面向对象方法的评估,我认为两种方法各有优劣。
在实际项目中,我们应根据项目的特点和需求来选择合适的方法,甚至可以结合两种方法的优点,定制出适合项目的开发方法。
软件工程 比较结构化方法和面向对象
软件工程一、引言在当今信息技术高速发展的时代,软件的开发和维护变得越来越重要。
为了有效管理软件项目,提高开发效率和质量,软件工程的概念应运而生。
软件工程是一门研究如何按照系统化、规范化、定量化和可重复性的方式开发和维护软件的学科。
在软件工程中,结构化方法和面向对象是两种常用的开发方法。
本文将对结构化方法和面向对象进行比较,并探讨它们在软件工程中的优劣和适用场景。
二、结构化方法2.1 定义和特点结构化方法是一种基于数据流和流程的软件开发方法。
它将软件系统视为一系列逐步细化的模块,通过分析数据流和流程来设计和实现软件系统。
结构化方法强调模块化、层次化和自顶向下的设计思想,以确保程序逻辑清晰、易于理解和修改。
2.2 优点1.结构化方法强调模块化,将软件系统分解为多个模块,每个模块负责特定的功能。
这种模块化的设计使得程序易于理解、修改和测试,提高了软件的可维护性和可测试性。
2.结构化方法采用自顶向下的设计思想,先设计系统的总体框架,再逐步细化到具体的模块。
这种逐步细化的设计方式使得开发过程更加可控,项目管理更加容易。
同时,自顶向下的设计过程也便于团队协作和分工。
3.结构化方法将程序逻辑分解为一系列有序的步骤,每个步骤都有明确的输入和输出。
这种严格的输入输出规定使得程序的设计和测试更加方便。
4.结构化方法在软件开发初期就明确定义了数据流和流程,使得开发人员能够更好地理解和掌握软件系统的整体架构,从而减少了项目失败的风险。
2.3 缺点1.结构化方法的设计过程较为复杂,需要详细分析系统的数据流和流程。
对于较大规模的软件系统,分析和设计的工作量较大,容易导致项目开发周期延长。
2.结构化方法强调模块化,但对于一些复杂的问题,模块化的设计可能不够灵活和强大。
这就需要在设计阶段尽可能考虑全部的需求和功能,否则可能会在后期的修改过程中遇到困难。
三、面向对象3.1 定义和特点面向对象是一种以对象为基础的软件开发方法。
在面向对象方法中,软件系统由一组相互作用的对象组成。
软件工程:结构化方法VS面向对象方法
软件⼯程:结构化⽅法VS⾯向对象⽅法⼀、基本概念1、结构化⽅法 结构化⽅法是⼀种传统的软件开发⽅法,它是由结构化分析、结构化设计和结构化程序设计三部分有机组合⽽成的。
基本思想:把⼀个复杂问题的求解过程分阶段进⾏,⽽且这种分解是⾃顶向下,逐层分解,使得每个阶段处理的问题都控制在⼈们容易理解和处理的范围内。
2、⾯向对象⽅法 ⾯向对象⽅法是⼀种把⾯向对象的思想应⽤于软件开发过程中,指导开发活动的系统⽅法,简称OO,是建⽴在“对象”概念基础上的⽅法学。
对象是由数据和容许的操作组成的封装体,与客观实体有直接对应关系,⼀个对象类定义了具有相似性质的⼀组对象。
基本思想:尽可能模拟⼈类习惯的思维⽅式,使开发软件的⽅法与过程尽可能接近⼈类认识世界、解决问题的⽅法与过程, 也就是使描述问题的问题空间与实现解法的求解空间在结构上尽可能⼀致。
⼆、两者对⽐1、基本单位不同 结构化⽅法的基本单位是模块。
⾯向对象⽅法的基本单位是对象。
2、分析⽅法不同 结构化分析⽅法是⼀种⾯向数据流⽽基于功能分解的分析⽅法, 在该阶段主要通过采⽤数据流程图、编制数据字典等⼯具, 描述边界和数据处理过程的关系, ⼒求寻找功能及功能之间的说明。
⾯向对象分析是把对问题域和系统的认识理解, 正确地抽象为规范的对象( 包括类、继承层次) 和消息传递联系, 最终建⽴起问题域的简洁、精确、可理解的⾯向对象模型, 为后续的⾯向对象设计和⾯向对象编程提供指导。
⾯向对象分析通常建⽴三种模型: 对象模型、动态模型、功能模型。
其中, 对象模型描述了系统的静态结构,确定类的名称和类间的关系;动态模型表⽰瞬时的、⾏为化的系统的“ 控制”性质, 规定了对象模型中的对象的合法变化序列;功能模型表明了系统中数据之间的依赖关系, 以及有关数据的处理功能。
3、各⾃局限(1)结构化⽅法 i.不能直接反映问题域: 结构化分析⽅法以数据流为中⼼, 强调数据的流动及每⼀个处理过程, 不是以问题域中的各事物为基础, 打破了各事物的界限, 分析结果不能直接反映问题域, 容易隐蔽⼀些对问题域的理解偏差。
软件工程之结构化方法与面向对象方法之比较与结合
软件⼯程之结构化⽅法与⾯向对象⽅法之⽐较与结合 软件开发⽅法指,在项⽬投资规模和时间限制内,设计、实现符合⽤户需求的⾼质量软件,根据软件开发的特点,提出的多种软件开发的策略。
随着20世纪60年代,计算机软件、硬件发展不均衡,使⼤型软件的开发过程中出现了复杂程度⾼、研制周期长、正确性难以保证的三⼤难题,引发了“软件危机”。
为了同时提⾼软件效率和质量,软件开发⽅法不断⾰新。
经过⼏⼗年的研究和应⽤,两种基于相应的程序设计思想和语⾔的软件开发⽅法,结构化⽅法与⾯向对象⽅法,成为了主流的开发⽅法之⼀,⼴泛地使⽤于软件⼯程。
结构化⽅法包括结构化分析(Structured Analysis,简称SA)、结构化设计(Structured Design,简称SD)和结构化程序设计(Structured Program Design,简称SP)三部分内容。
相应地,⾯向对象⽅法包括⾯向对象分析(Object-Oriented Analysis,简称OOA)、⾯向对象设计(Object—Oriented Design,简称OOD)和⾯向对象程序语⾔(Object-Oriented Program Design,简称OOP)。
两种软件开发⽅法从起源、思想、分析、设计,到程序设计、扩展重⽤、应⽤等各个⽅⾯有着许多的联系和区别,下⽂我将对⼆者进⾏⽐较分析。
两种⽅法针对不同的⼯作环境和应⽤场景,各具优势,也都有所不⾜,我也将讨论⼆者在软件⼯程中的结合,以期产⽣更好的效果。
(⼀)从起源上看 结构化⽅法与⾯向对象⽅法都起源于相应的程序设计思想和语⾔。
20世纪60年代后期,《程序结构理论》和《GOTO陈述有害论》的提出,证明了任何程序的逻辑结构都可以⽤顺序结构、选择结构和循环结构来表⽰,确⽴了结构化程序设计思想,产⽣了如FORTRAN、PASCAL、C等语⾔。
结构化⽅法把对程序的分析、设计,延伸⾄对项⽬⼯程的分析、设计,结合程序设计语⾔的技术⽀持,得以产⽣和发展。
结构化方法与面向对象方法之应用比较
结构化⽅法与⾯向对象⽅法之应⽤⽐较结构化⽅法与⾯向对象⽅法是最具代表性的,也是⽬前应⽤最为⼴泛的软件开发⽅法。
本⽂将分别对两者进⾏介绍和⽐较。
⼀、结构化⽅法 结构化⽅法(Structured Methodology)是计算机学科的⼀种典型的系统开发⽅法。
它采⽤系统科学的思想⽅法,从层次的⾓度,⾃顶向下地分析和设计系统。
基本思想是基于功能的分解和抽象,形成系统的模块结构,从⽽针对每个模块进⾏结构化设计及结构化编程来完成系统的开发。
结构化⽅法由结构化分析(SA)、结构化设计(SD)和结构化程序设计(SP)三者组成。
(⼀)结构化分析 结构化分析是⾯向数据流进⾏需求分析的⽅法。
采取的⼯具主要有数据流图、数据字典、实体关系图等。
数据流图(Data Flow Diagram,DFD)是⼀种分层的建⽴系统逻辑模型的⽅法,模拟系统的⼀个⼤致边界,并展⽰系统和外部的接⼝、数据的输⼊输出以及数据的存储。
它有四个基本要素:数据流、实体、数据加⼯和数据存储。
数据流图分层的思想体现为,⾸先确定系统和系统涉及到的外部实体之间的数据流,画出第0层数据流图(顶层图);其次在顶层图的基础上对系统的主要功能进⾏分析,抽象出功能作为系统的加⼯,确定实体和加⼯之间的数据流,将顶层图细化为第1层数据流图;依此类推,之后不断细化得到第2、3乃⾄更多层的数据流图,直到不能再细化为⽌。
数据字典(Data Dictionary)是⼀个包含所有系统数据元素定义的仓库。
数据元素的定义必须是精确的、严格的和明确的。
⼀个实体⼀般应包含以下⼏个部分的内容:名字、别名、⽤途、内容描述、备注信息。
实体关系图(E-R图)是数据库设计的基础,是指以实体、关系、属性三个基本概念概括数据的基本结构,从⽽描述静态数据结构的概念模式。
(⼆)结构化设计 结构化设计是指在结构化分析的基础上,映射分析模型到设计模型,得到系统的模块结构、数据库结构等。
如在数据流图的基础上,进⾏相应的变换分析和事务分析得到系统的模块结构,在ER模型的的基础上,进⾏数据库设计得到数据库结构。
1、结构化、面向对象程序设计差别、类基本概念
1、结构化、⾯向对象程序设计差别、类基本概念1、⾯向对象程序设计与结构化程序设计的优缺点对⽐(1)结构化程序(C程序为例)的特点程序 = 数据结构 + 算法程序由全局变量以及众多相互调⽤的函数组成,算法以函数的形式实现,⽤于对数据结构进⾏操作。
(2)结构化程序设计缺点①结构化程序设计中,函数和其所操作的数据结构,没有直观的联系。
随着程序规模的增加,程序逐渐难以理解,很难⼀下⼦看出来:某个数据结构到底有哪些函数可以对它进⾏操作?某个函数到底是⽤来操作哪些数据结构的?任何两个函数之间存在怎样的调⽤关系?②结构化程序设计没有“封装”和“隐藏”的概念。
③要访问某个数据结构中的某个变量,就可以直接访问,那么当该变量的定义有改动的时候,就要把所有访问该变量的语句找出来修改,⼗分不利于程序的维护、扩充。
④难以查错,当某个数据结构的值不正确时,难以找出到底是那个函数导致的。
⑤重⽤:在编写某个程序时,发现其需要的某项功能,在现有的某个程序⾥已经有了相同或类似的实现,那么⾃然希望能够将那部分代码抽取出来,在新程序中使⽤。
⑥在结构化程序设计中,随着程序规模的增⼤,由于程序⼤量函数、变量之间的关系错综复杂,要抽取这部分代码,会变得⼗分困难。
软件业的⽬标是更快、更正确、更经济地建⽴软件。
总之,结构化的程序,在规模庞⼤时,会变得难以理解,难以扩充(增加新功能),难以查错,难以重⽤。
违背了软件设计的⽬标。
(3)⾯向对象程序设计的特点⾯向对象的程序设计⽅法,能够较好解决上述问题。
⾯向对象的程序 = 类 + 类 + …+ 类设计程序的过程,就是设计类的过程。
(4)⾯向对象的程序设计⽅法:将某类客观事物共同特点(属性)归纳出来,形成⼀个数据结构(可以⽤多个变量描述事物的属性);将这类事物所能进⾏的⾏为也归纳出来,形成⼀个个函数,这些函数可以⽤来操作数据结构(这⼀步叫“ 抽象”)。
然后,通过某种语法形式,将数据结构和操作该数据结构的函数“捆绑”在⼀起,形成⼀个“ 类”,从⽽使得数据结构和操作该数据结构的算法呈现出显⽽易见的紧密关系,这就是“封装” 。
理解结构化和面向对象的区别
理解结构化和⾯向对象的区别结构化⽅法 结构化程序设计⽅法包含结构化分析(SA)、结构化设计(SD)、结构化程序设计(SP)三个⽅⾯,分别对应了软件开发中的分析、设计和编码阶段。
结构化分析是由DeMarco和Yourdon在20世纪70年代所倡导的。
结构化分析是⼀种基于功能分解的分析⽅法,在分析过程中使⽤了各种⼯具,例如数据流图等,这些⼯具本质上是⼀个对⽤户需求的解读,也是⾯向⽤户展⽰的⼀个“说明书”,⽬的在于使软件真正符合⽤户的需求。
结构化设计⾯向数据流,其最⼤的着⼒点在于设计系统各个组成部分之间的内部联系,以满⾜软件所需要的层次和结构。
结构化设计中,软件被⾃顶向下地不断细分,并谨慎地对待数据流通软件时的每⼀个步骤。
David Hay曾经说过(1999):"信息⼯程是1970年代开发的结构化技术的逻辑延伸。
结构化编程导致结构化设计,这⼜导致结构化系统分析。
这些技术的特点是使⽤图表,例如为结构化设计的产⽣的结构图和为结构化分析⽽产⽣的数据流图,这些图表都是为了帮助⽤户与开发者之间的交流,以及规范化分析、开发过程⽽产⽣的。
在20世纪80年代,各种⼯具开始出现,它们⾃动绘制图表,并跟踪在数据字典中描述的东西。
"[1] 例如CAD/CAM这样的CASE⼯具。
⾯向对象⽅法 和结构化设计类似,⾯向对象技术包括⾯向对象分析(OOA)、⾯向对象设计(OOD)和⾯向对象编程(OOP)三部分。
⾯向对象⽅法有⼏个需要遵循的基本原则:即抽象、封装、继承和多态。
在⾯向对象建模中,代码和数据被合并成⼀个单⼀的不可拆分的单元,也就是⼀个对象。
这样的特性允许对象保持像⼀个⿊盒⼦,也就是说没有⼈需要看到⾥⾯的具体原理。
⽽为了达到这⼀点,对任何对象的所有修改是通过作⽤于对象的消息来完成的,并且实际上所有对象都从消息中获得它们的动作。
在⾯向对象建模中,这种特性被称为封装性,它⼤⼤便利了软件部件、包或者库的调⽤,并且更便于重⽤。
结构化程序设计和面向对象程序设计
结构化程序设计和面向对象程序设计结构化程序设计和面向对象程序设计程序设计是计算机科学领域的基础,是软件开发的重要部分。
结构化程序设计和面向对象程序设计是两种方法,被广泛使用。
本文将分别介绍这两种方法的特点和优势。
一、结构化程序设计结构化程序设计是一种程序设计的方法,它通常采用顺序、选择和循环等基本结构,使用结构化编程语言编写程序。
结构化程序设计强调程序的清晰性和易维护性,对程序员而言,它更容易理解。
结构化程序设计将程序分解为若干小的、独立的模块,每个模块包含若干明确定义的输入和输出,这样能够使程序员更好地组织代码,并且在必须修改时更容易进行维护。
由于它可以实现代码的重用,因此可以使得程序员更加高效率和节省时间和精力,而且非常适合需求比较简单的软件项目。
二、面向对象程序设计面向对象程序设计(OOP)是目前最为先进的程序设计方法之一,它包括了对对象建模、类和继承等概念的广泛应用。
面向对象的编程语言,如Java、Python和C++,都采用了这种方式。
在面向对象的程序设计中,程序被看作一个对象的集合,每个对象都具有属性和方法。
对象可以相互作用,通过方法来告知计算机他们想要做的事情。
因此,面向对象程序设计将程序员体验变为了“物体之间的关系”,从而更贴近现实世界。
面向对象程序设计的特点在于代码的复用性,它能够提高程序员的工作效率,而且更便于阅读和修改。
面向对象程序设计能够最大限度地减少程序员编写重复代码的问题,从而避免了出现代码的冗余和失误,而对于比较复杂的项目,它更为合适,在软件系统中的应用越来越广泛。
因此,如果需要完成一个高质量的、复杂的软件项目,面向对象程序设计是不可或缺的。
综上所述,结构化程序设计和面向对象程序设计都是程序设计领域中重要的方法。
两者都有其自身的优势和使用场景,根据不同的需求来选择不同的编程方法。
当程序比较简单、需求不复杂时,可以采用结构化程序设计;如果程序需要拥有更多的灵活性和可扩展性时,建议采用面向对象的编程方法。
结构化系统分析方法与面向对象分析方法的区别何在
1、结构化系统分析方法与面向对象分析方法的区别何在?答:结构化系统分析方法是采用“自顶向下,由外到内,逐层分解”的思想对复杂的系统进行分解化简,从而有效地控制了系统分析每一步的难度,并运用数据流图、加工说明和数据字典作为表达工具的一种系统分析技术。
而面向对象的分析方法则是通过将数据和逻辑结构抽象成为对象,运用对象属性和方法等来操作和处理业务数据和逻辑的系统分析方法。
两者的区别在于:当软件项目较小、系统分析员能力足够高的时候,结构化方法能快速的找到最简洁、高效率的逻辑模型,结构化方法对复杂问题的帮助有限,而面向对象的分析方法提供了一种方便的、可持续观测和扩展系统的机制,通过信息隐藏和封装等手段屏蔽了对象内部的执行细节,控制了错误的蔓延,对于需求变化频繁的系统,可以用面向对象软件系统的方法。
2. 在实际项目中,具体地是采用结构化系统分析方法,还是或面向对象分析方法,是否存在相应的前提条件?或者说依据什么来选择不同的分析方法?答:两种方法不是对立的,没有谁先进谁过时之说,可在项目中结合使用。
恰当的运用方法解决问题才是根本性的问题。
在运用时应关注运用方法的成本和价值。
如果软件项目较小、系统分析员能力足够高的时候,用结构化方法较好,如果系统需求变化较大,内部逻辑关系较复杂,复用性要求较高,可采用面向对象的方法。
3.结构化系统分析方法是否已经过时?为什么现在很多项目都要采用UML进行系统分析和设计?谈谈你的理解答:结构化系统分析方法没有过时,当软件项目较小、系统分析员能力足够高的时候,结构化方法是快速的找到最简洁、高效率的逻辑方式;UML是一种应用于面象对象软件开发过程的建模语言,是一种简单、直观的表示符号和标准,UML的优点在于:1、对于开发团队的层面来说:有利于队员间在各个开发环节间确立沟通的标准,便于系统文档的制定和项目的管理。
UML的简单、直观和标准性,在一个团队中用UML来交流比用文字说明的文档要好得多。
对结构化方法和面向对象方法的对比和讨论
① 基 于 映 射 : 把现 实世 界 的 工 作 过程
从 超 类 继 承 属 性 和 操 作 ; 超 类 — — 也 称 作 基 类 ,是 一 组 相 关 类 的泛 化 。 () 向 对 象 的 特 点 2面
结 构 化 方 法 是 强 调 开 发 方法 的 结 构合 理 性 以及 所 开 发 软 件 的 结 构 合 理 性 的 软 件 开 发 方 法 。 结 构 化 分 析 方 法 给 出 一 组 帮 助 系 统
进 行 仿 真 , 引 入 了类 概 念 和 继 承 机 。 7 年 代 0
结 构 化 方 法 是 强 调 开 发 方 法 的 结 构 合 理 性 以及 所 开 发 软 件 的 结 构 合 理 性 的 软 件 开 发
末 ,另 一个专用 的面 向对象语 言S a 1 a k m l t l 开 始进 行设 计 ,并在8 年提 出一个 完善 版本 。 O 但 这时只 在实 验室和 科研 活动 中使用 。随着 软件 复 杂程度 的进 一步提 高 ,低 耦 合、高 内
实体有 直接对 应关 系 ,一 个对 象类定 义 了具 有相似 性质 的一组 对象 。而每 继承性 是对 具 有层次 关系 的类 的属性和 操作 进行共 享 的一
种方式 。所 谓面 向对象就 是基 于对象 概念 , 以对 象 为 中心 , 以 类 和 继 承 为 构 造 机 制 , 来 认 识 、理 解 、 刻 画 客 观 世 界 和 设 计 、 构 建 相 应 的 软件 系 统 。
面 向对 象 的 思 想 应 用 于 软 件 开 发 过 程 中 , 指 导 开 发 活 动 的 系 统 方 法 , 简 称 O 方 法 ,是 建 O 立 在 “ 象 ” 概 念 基 础 上 的 方 法 学 。 对 象 是 对 由数 据 和 容 许 的 操 作 组 成 的 封 装 体 , 与 客 观
结构化方法与面向对象方法
结构化方法与面向对象方法一、概述结构化方法和面向对象方法是软件开发中两种不同的编程思想。
结构化方法强调程序的流程控制,将程序划分为多个模块,每个模块完成特定的功能。
面向对象方法则强调数据和行为的封装,将数据和操作数据的函数封装在一个类中,通过类来描述问题。
二、结构化方法1. 模块化设计结构化方法将程序划分为多个模块,每个模块完成特定的功能。
在设计过程中需要考虑模块之间的接口和数据传递方式。
通常采用自顶向下或自底向上的设计方式。
2. 顺序、选择和循环控制结构结构化方法强调程序的流程控制,其中顺序、选择和循环控制结构是最基本的三种控制结构。
在编写代码时需要根据实际情况选择合适的控制结构。
3. 结构体和数组结构体是一种用户定义类型,在一个结构体中可以包含多个不同类型的变量。
数组是一种相同类型变量组成的集合。
在处理大量数据时可以使用数组来简化代码。
4. 函数和指针函数是一段可重复使用的代码,可以接受参数并返回值。
指针是一种特殊的变量,它存储的是内存地址。
在结构化方法中,函数和指针是非常重要的概念。
三、面向对象方法1. 类和对象面向对象方法强调数据和行为的封装,将数据和操作数据的函数封装在一个类中。
类是一种用户定义类型,它描述了一组属性和方法。
对象则是类的一个实例。
2. 继承继承是面向对象编程中最重要的概念之一。
通过继承可以实现代码复用和层次关系描述。
派生类可以继承基类中所有公有成员,并且可以添加自己的成员。
3. 多态多态是指同一操作作用于不同的对象上面时,可以产生不同的解释和不同的执行结果。
多态性分为静态多态性和动态多态性两种形式。
4. 封装封装是将数据和行为包装在一个单元中,并保护其内部状态不被外部访问或修改。
通过封装可以提高代码重用性、可读性和可维护性。
四、结构化方法与面向对象方法比较1. 设计思路不同结构化方法强调程序流程控制,而面向对象方法强调数据和行为的封装。
2. 技术实现不同结构化方法主要采用模块化设计、顺序、选择和循环控制结构、结构体和数组、函数和指针等技术实现。
面向对象与结构化区别
面向对象与面向过程的区别1、面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
2、面向对象以数据(属性)为导向,将具有相同一个或者多个属性的物体抽象为“类”,将他们包装起来;而有了这些数据(属性)之后,我们再考虑他们的行为(对这些属性进行什么样的操作),面向过程以功能(行为)为导向,按模块化的设计,在你在脑袋中也许也有一个类似“类”的概念,但是表现出来的是属性与行为的分离,1.什么是面向对象技术?面向对象技术是一种以对象为基础,以事件或消息来驱动对象执行处理的程序设计技术。
它具有抽象性、封装性、继承性及多态性。
2.面向对象与面向过程程序设计有什么不同?面向对象与面向过程程序设计有如下不同:(1)面向过程程序设计方法采用函数(或过程)来描述对数据的操作,但又将函数与其操作的数据分离开来;面向对象程序设计方法将数据和对数据的操作封装在一起,作为一个整体来处理。
函数与数据是否分离(2)面向过程程序设计方法以功能为中心来设计功能模块,难于维护;而面向对象程序设计方法以数据为中心来描述系统,数据相对于功能而言具有较强的稳定性,因此更易于维护。
以功能为中心;以数据为中心(3)面向过程程序的控制流程由程序中预定顺序来决定;面向对象程序的控制流程由运行时各种事件的实际发生来触发,而不再由预定顺序来决定,更符合实际需要。
预定顺序;由运行时各种事件的实际发生来触发(4)面向对象程序设计方法可以利用框架产品(如MFC,Microsoft Foundation Classes)进行编程。
面向对象可利用框架面向对象和面向过程的根本差别,在于封装之后,面向对象提供了面向过程不具备的各种特性,最主要的,就是继承和多态。
3.面向对象技术有哪些优点?面向对象技术具有程序结构清晰,自动生成程序框架,实现简单,可有效地减少程序的维护工作量,代码重用率高,软件开发效率高等优点。
软件开发方法——结构化方法与面向对象方法比较
【 src] o ue ow r o e sineadtcnlg e otn s tsa drl, a eo eteifr t nsceyo ek y AbtatC mptrsf aei m dm cec n h ooyi vr i r t t u n oe hsb cm h omai oit fh e t n e s y mp a a n o t
( ) 据 字典 1数 数 据 字 典是 一 个 包 含 所 有 系 统数 据 元 素 定 义 的仓 库 。 据 元 素 的 数
言 , 种 发 展 趋 势 具 有 十 分 重 要 的意 义 , 使 那 些 富有 生 命 力 的新 方 这 它 定 义 必须 是 精 确 的 、 格 的 和 明确 的 。一 个 实 体 一 般 应 包 括 以 下几 个 严 法 和新 技 术 就 此 形 成 自己 系统 化 的 技 术 体 系 , 它极 大地 推 动 了计 算机 部 分 的 内容 : 软 件技 术 的发 展 。 ①名字 ; ②别名 ; ③用途; 内容描述 ; ④ ⑤备注信息。 结 构 化 方 法 和 面 向对 象 方 法 都 是 计 算 技术 中 常 用 的 软 件 开 发 方 ( ) 据 流 图 2数 法 , 种 开 发 方 法 目前 都 非 常 流 行 , 择 哪 一种 方 法 要 根 据 分 析 者 的 两 选 数据 流 图是 S 和 S 的 核 心技 术 .它 采 用 面 向处 理 过 程 的思 想 A D 熟 练程 度 和 项 目的类 型 而定 。就 目前 而 言 , 十全 十美 的开 发 方 法 是 不 来 描 述 系 统 。 是 一 种 描述 信 息 流 和 数 据从 输 入 到输 出变 换 的应 用 图 它 存 在 的 , 正 实 用 的 系统 开 发 方 法 往 往 是 多种 开 发 方 法 的结 合 。如 何 真 形 技 术 。 拟 系 统 的 一 个大 致 边 界 , 展 示 系统 和外 部 的 接 口、 据 的 模 并 数 综 合应 用 , 根 据 开 发 系统 的规 模 、 统 的 复杂 程 度 、 统 开 发 方 法 的 输 入 和输 出 以及 数 据 的存 储 。 要 系 系 特点 , 以及 所 能使 用 的计 算 机 软 件 等诸 多 因素 综 合 考 虑后 决 定 。 ( ) 态 变 迁 图 3状 状 态 变 迁 图及 时地 描 述 了 对 象 的状 态 , 着 重 系 统 的 时 间 依 赖 行 它 2 结 构 化 方 法 为 。 态 变 迁 图源 于 实 时 系统 的建 模 。状 态 变 迁 图 看 起来 非 常像 数 据 状 结 构 化 方 法 ftJtrdMehdlg) 计 算 学 科 的 一 种 典 型 的 系 流 图 , 而 , Sncue toooy是 然 它们 之 间却 存 在 着 本 质 的不 同 。 据 流 图 着重 于数 据 流 和 数 统开发方法。 它采 用 了系 统 科 学 的思 想 方 法 , 层 次 的 角度 , 从 自顶 向下 数 据 转 换 的过 程 , 状 态变 迁 图 着 重 于 状 态 的 描 述 , 而 如激 励 发 生 时 的 地 分 析 和 设计 系统 。结 构 化 方 法 包括 结 构 化 分 析 (t c rdA ayi, 开 始 状 态 和 系统 执 行 响 应 后 的 结果 状 态 。 态 变 迁 图 的条 件 和一 个 过 Sr t e n l s u u s 状
结构化方法和面向对象方法的比较
结构化⽅法和⾯向对象⽅法的⽐较⼀、引⾔20 世纪60 年代以来。
软件的发展⼀直受到开发综合症“软件危机”的影响。
为了提⾼软件质量,软件开发⽅法不断推陈出新,其中结构化⽅法经过30 多年的研究及应⽤,最为成熟且影响最⼤,直到现在仍有许多系统仍然是使⽤结构化⽅法开发的。
⽽⾯向对象⽅法是在结构化⽅法、信息建模⽅法等基础上发展起来的,近10 年来发展较快,现已呈现出取代结构化⽅法的趋势。
⼆、结构化⽅法结构化⽅法是⼀种传统的软件开发⽅法,它是由结构化分析、结构化设计和结构化程序设计三部分有机组合⽽成的。
它的基本思想:把⼀个复杂问题的求解过程分阶段进⾏,⽽且这种分解是⾃顶向下,逐层分解,使得每个阶段处理的问题都控制在⼈们容易理解和处理的范围内。
结构化⽅法基于功能分解设计系统结构,通过不断把复杂的处理逐层分解来简化问题,它从内部功能上模拟客观世界. ⽤结构化开发的软件运⾏效率较⾼, 且能够增加软件系统的可靠性。
2.1、结构化分析结构化分析(Structured Analysis,简称SA)是软件⼯程中的⼀种⽅法,结构化分析和结构化设计可以分析商业的需求,再转换为规格⽂件,最后再产⽣电脑软件、硬件配置及相关的⼿册及程序。
结构化分析包括将系统概念转换为⽤数据及控制的来表⽰,也就是转换为数据流程图。
数据流程图中的程序以泡泡来表⽰,因此也称为“泡泡图”。
不过完整的数据流程图中可能有许多的“泡泡”,使得很难去追踪数据移动的情形。
数据字典⽤来描述数据和指令的移动,⽽⽤程序规格来描述交易或数据转换的相关信息。
结构化分析的步骤如下:(1)、分析当前的情况,做出反映当前物理模型的DFD;(2)、推导出等价的逻辑模型的DFD;(3)、设计新的逻辑系统,⽣成数据字典和基元描述;(4)、建⽴⼈机接⼝,提出可供选择的⽬标系统物理模型的DFD;(5)、确定各种⽅案的成本和风险等级,据此对各种⽅案进⾏分析;(6)、选择⼀种⽅案;(7)、建⽴完整的需求规约。
结构化与面向对象的程序设计方法比较
摘
要 : 序设 计的基 本方 法 包括早期 的 结 构化 程序 设计 方 法 和 面向对 象的程序 设 计 方 法. 程 程 从
序设 计的 角度看 , 结构化 方法和 面向对 象方 法各有优 缺点. 从提 高程 序 的重用性和 可维护 性的 角度 看, 面向对 象方 法有较好 的应 用前景. 面 向对 象程 序设 计方 法 的基础 仍 然是 结构化 程序 设 计 , 但 即
收稿 日期 :0 0—1 2 2 1 2— 5
面 向对 象方 法 与结 构 化方 法不 同 , 把数 据 和 它
行为看成 同等重 要. 它是 一种 以数据 为主线 , 把数据
和对数据 的操作 紧密地 结合 在一起 的方法 .
2 1 面向对 象方 法的特 点 .
把 面 向对象 作为融 合 了数 据及 在数据 上的操作
一
1 结构化 程序设 计方 法
1 1 结构化程序 设计 的提 出 .
步分解 , 进入另 一个抽 象层次 . 12 2 基本 控制结 构 .. 用顺 序 方式 确 定各 部分 的执行 顺序 ,选 择方 用
计算 机软件 是伴 随着计算 机硬件 的发展 而发展
的. 早期 的程序 多为个人 的设计 产 品 , 开发者 和维 护
结构 化程 序设 计 的原 则 可 表 示 为 : 序 =( 程 算
法 ) 数据 结构 ) +( . 算 法 是 一 个 独 立 的 整 体 , 据 结 构 ( 含 数 数 包 据类 型 与 数 据 ) 是 一 个 独 立 的 整 体 . 者 分 开 也 两 设计 , 以算 法 ( 函数 或 过 程 ) 主 . 具 体 结 构 见 为 其 图 13( 中 的虚 线 表 示 上 面 的算 法 与 下 面 的 数 _ 图 据是 分 离 的 , 双箭 头 表 示 函数 或 过 程 对 数 据 的 输
面向对象和面向结构区别联系
面向对象方法与结构化方法比较答:分析是问题抽象 (做什么),设计是问题求解 (怎么做),实现是问题的解 (结果)。
在问题抽象阶段,结构化方法面向过程,按照数据变换的过程寻找问题的结点,对问题进行分解。
因此,与面向对象方法强调的对象模型不同,描述数据变换的功能模型是结构化方法的重点。
如果问题世界的功能比数据更复杂或者更重要,那么结构化方法仍然应是首选的方法学。
如果数据结构复杂且变换并不多,那么如以过程主导分析和设计,一旦有系统变更就会给下游开发带来极大混乱。
由于对过程的理解不同,面向过程的功能细分所分割出的功能模块有时会因人而异。
而面向对象的对象细分,从同一问题领域的对象出发,不同人得出相同结论的比率较高。
在设计上,结构化方法学产生自顶向下、结构清晰的系统结构。
每个模块有可能保持较强的独立性,但它往往与数据库结构相独立,功能模块与数据库逻辑模式间没有映射关系,程序与数据结构很难封装在一起。
如果数据结构复杂,模块独立性很难保证。
面向对象方法抽象的系统结构往往并不比结构化方法产生的系统结构简单,但它能映射到数据库结构中,很容易实现程序与数据结构的封装。
在软件工程基本原则中有一条“形式化原则”,即对问题世界的抽象结论应该以形式化语言 (图形语言、伪码语言等) 表述出来。
结构化方法可以用数据流图、系统结构图、数据辞典、状态转移图、实体关系图来进行系统逻辑模型的描述;而面向对象方法可以使用对象模型图、数据辞典、动态模型图、功能模型图。
其中对象模型图近似系统结构图与实体关系图的结合,动态模型图类似状态迁移图,功能模型图类似数据流图。
结构化方法三大模型:分析模型;设计模型;实现模型面向对象方法三大模型:对象模型;动态模型;功能模型等价划分的基本思想是什么?答:根据程序的输入特性,将程序的定义域划分为有限个等价区段—“等价类”,从等价类中选择出的用例具有“代表性”,即测试某个等价类的代表值就等价于对这一类其它值的测试。
结构化方法和面向对象方法
结构化方法和面向对象方法结构化方法和面向对象方法是两种不同的软件开发方法。
结构化方法和面向对象方法在软件开发过程中具有不同的思想和理念,并采用不同的设计模式和编程范式。
结构化方法是一种较早出现的软件开发方法,它的基本思想是将问题分解为多个子问题,然后设计出解决每个子问题的函数或过程,并通过循环、分支等方式将这些函数或过程组合在一起,最终解决整个问题。
结构化方法注重控制流程和数据流程的设计,主要通过顺序、选择和循环等结构来完成程序的开发。
结构化方法强调模块化思想,将程序划分为多个模块,每个模块完成一个独立的功能。
结构化方法通常采用结构化编程语言,如C、Pascal等,程序的整体逻辑清晰,易于理解和维护。
在结构化方法中,程序的输入和输出是通过参数进行传递,函数与函数之间通过参数和返回值进行交互。
然而,随着软件规模的不断扩大和复杂性的增加,结构化方法在处理大规模软件系统时存在一些问题。
问题包括:难以维护、难以重用、难以扩展等。
为了克服这些问题,面向对象方法应运而生。
面向对象方法是一种基于对象的软件开发方法,它的核心思想是将问题描述为一组对象之间的交互。
在面向对象方法中,将问题中涉及的实体抽象为对象,对象具有属性和方法,对象通过消息传递来实现交互。
面向对象方法注重对象的行为和状态的封装,通过继承、多态等概念和机制来实现代码的重用和扩展。
面向对象方法采用面向对象的编程语言,如Java、C++等。
在面向对象方法中,程序的整体结构是由对象之间的关系构成的,对象之间的关系通过类和接口来体现。
面向对象方法将数据和方法封装在类的内部,通过类的实例化来创建对象。
对象之间可以通过调用方法、传递消息来进行交互,并可以通过继承和多态实现代码的重用和扩展。
相对于结构化方法,面向对象方法具有一些优势。
首先,面向对象方法更符合人们对于问题的认知和描述方式,使得程序更易于理解和维护。
其次,面向对象方法具有更好的扩展性和重用性,对象的封装和继承使得代码更易于扩展和重用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
结构化方法与面向对象方法的内在联系
(一)二者在分解和抽象原则上一致
分解和抽象是软件开发中控制问题复杂性的重要原则。
分解即化
整分零,将问题剥茧抽丝,层层消化;抽象则是通过分解体现,在逐层分解时,上层是下层的抽象,下层是上层的具体解释和体现,运用抽象可以不用一次考虑太多细节,而逐渐的有计划有层次的了解更多细节。
面向对象方法与结构化方法在运用分解和抽象原则上的要求是完全一致的。
(二)局部化和重用性设计上的一致
局部化是软件开发中的一个重要原则,即不希望软件一部分过多
地涉及或影响软件的其它部分。
在结构化方法中,局部化主要体现在代码与数据的分隔化,即程序各部分除必要的信息交流外,彼此相互隔离而互不影响,而面向对象方法则采用数据、代码的封装,即将数据、代码和操作方法封装成一个类似“黑箱”的整体对象,提高了程序的可靠性和安全性,同时增强了系统的可维护性。
也就是说面向对象方法比结构化方法的运用更加深入更彻底。
结构化方法与面向对象方法的区别
(一)处理问题时的出发点不同
结构化方法是强调过程抽象化和模块化,以过程为中心构造或处
理客观世界问题的,它是一种面向过程的开发方法;面向对象方法强调把问题域的要领直接影射到对象及对象之间的接口上,是用符合人们通常的思维方式来处理客观世界的问题。
(二)处理问题的基本单位和层次逻辑关系不同
结构化方法把客观世界的问题抽象成计算机可以处理的过程,处
理问题的基本单位是能清晰表达过程的模块,用模块的层次结构概括模块或模块间的关系和功能;面向对象方法是用计算机逻辑来模拟客观世界中的物理存在,以对象的集合类作为处理问题的基本单位,尽可能使计算机世界向客观世界靠拢,以使问题的处理更直截了当,面向对象方法是用类的层次结构来体现类之间的继承和发展。
(三)数据处理方式与控制程序方式不同
结构化方法是直接通过程序来处理数据,处理完毕后即可显示处
理结果,在控制程序方式上是按照设计调用或返回程序不能自由导航,各模块程序之间存在着控制与被控制的关系;面向对象方法将数据与对应的代码封装成一个整体,原则上其它对象不能直接修改其数据,即对象的修改只能由自身的成员函数完成,控制程序方式上是通过“事件驱动”来激活和运行程序。
(四)分析设计与编码转换方式不同
结构化方法强调分析、设计及编码之间按规则进行转换,贯穿软件
生命周期的分析、设计及编码之间实现的是一种有缝的连接;面向对象方法从分析到设计再到编码则采用一致性的模型表示,贯穿软件生命周期的分析、设计及编码之间是一种平滑过程,即实现的是一种无缝连接。
结构化方法和面向对象方法各有优缺点
主要表现在如下几个方面:
(一)从执行效率来说。
结构化方法比面向对象方法产生的可执行代
码更直接, 更高。
所以对于一些嵌入式的系统, 结构化方法产生的系统更小, 运行效率更高;
(二)从重用性方面来说。
采用结构化方法的系统难以修改和扩充。
结构化分析与设计清楚定义了系统的接口, 当系统对外界接口发生变
动时, 往往造成系统结构较大变动, 难以扩充新的功能接口。
采用结构化方法的系统可复用性较差。
结构化方法将数据和操作分离, 导致一些可重用的软件构件在特定具体应用环境才能应用, 降低了软件的可重
用性。
面向对象方法具有很好的重用性。
在遇到类似的问题, 通过应用了抽象继承等技术, 来重用代码;
(三)从程序语言编译器来说。
面向对象方法, 通过编译器实现代码
的面向对象性。
也就是说经过编译器后, 代码会被翻译为相对应的结构化代码。
所以要熟练开发, 还要懂一定的结构化方法做为基础;
(四)从掌握难度来说, 面向对象方法比结构化对象方法复杂,难于
理解。
面象对象方法的内容广, 概念多, 而且很多都是难于理解, 做到精通更加不易。
应用面向对象方法, 常常需要一种支持的分析, 设计方法, 如RUP 方法, 敏捷方法等。
这些知识抽象枯燥,难于掌握。
面象对象方法要经过长期的开发实践才能很好的理解, 掌握。
相比之下, 结构化方法知识内容少, 容易上手;
(五)从应用的范围看, 结构化方法适用于数据少而操作多的问题。
实践证明对于像操作系统这样的以功能为主的系统, 结构化方法比较
适应它。
面向对象方法正好相反, 对于数据库, 信息管理等以数据为主
的而操作较少的系统, 用面向对象方法描述要好于结构化方法。
七、结语
综上所述,软件开发的目标是以最小的代价开发出满足用户需求
的软件。
为此,根据系统的实际需求,分别针对具体情况选择采用不同的设计方法,可以充分发挥面向对象与结构化方法各自的优势。
目前在大多数软件系统的分析设计过程中,这两种方法都兼而有之。
笔者以为,开发者在开发实践中, 从实际出发, 考虑执行效率、开发
者的技术水平、系统规模、是否为易需求变化的系统等因素, 尽量利用它们各自的优点, 避免他们的缺点。
如对于开发一些小型嵌入式实时监控系统或同等稳定小系统, 可用结构化方法;对于开发入门者, 使用结构化方法和面向对象方法相结合;对于大型系统或者需求易变系统, 使用面向对象方法。
总之, 根据实际出发, 选取合适的软件开发方法, 达到最佳的开发效益。