结构化与面向对象分析方法之间关系的研究
- 格式:pdf
- 大小:325.72 KB
- 文档页数:3
结构化方法和面向对象方法的对比1 结构化和面向对象的方法1.1 结构化方法结构化方法基于功能分解设计系统结构,通过不断把复杂的处理逐层分解来简化问题,它从内部功能上模拟客观世界。
用结构化开发能提高软件的运行效率,且能够增加软件系统的可靠性。
结构是指系统内各个组成要素之间的相互联系、相互作用的框架。
结构化的系统分析设计方法是一种传统的系统开发方法。
针对软件生存周期各个不同的阶段,有结构化分析(SA)、结构化设计(SD)和结构化程序设计(SP)等方法。
它的基本思想:把一个复杂问题的求解过程分阶段进行,而且这种分解是自顶向下,逐层分解,使得每个阶段处理的问题都控制在人们容易理解和处理的范围内。
1.1.1 结构化分析结构化分析是面向数据流进行需求分析的方法,主要采用数据流图DFD (Data Flow Diagram)来描述边界和数据处理过程的关系。
结构化分析的主要工作是使用数据流程图、数据字典、结构化语言、判定表和判定树等工具,来建立一种新的、称为结构化说明书的目标文档-需求规格说明书。
1.1.2 结构化设计结构化设计是将数据流图表示的信息转换成程序结构的设计描述,和功能的实现方法,并且采用系统结构图表示系统所具有的功能和功能之间的关系。
结构化设计过程分两步完成,第一步以需求分析的结果作为出发点,构造出一个具体的系统设计方案,决定系统的模块结构(包括决定模块的划分、模块间的数据传递及调用关系)。
第二步详细设计,即过程设计。
在总体设计的基础上,确定每个模块的内部结构和算法,最终产生每个模块的程序流程图1.2 面向对象方法面向对象方法是从内部结构上模拟客观世界,其基本思想为:对象是对现实世界客观实体的描述,均由其属性和相关操作组成,是系统描述的基本单位。
面向对象方法更强调运用人类在日常的逻辑思维中经常采用的思想方法和原则,例如抽象、分类、继承、聚合、封装等,这使得软件开发者能更有效地思考问题,并以其他人也能看得懂的方式把自己的认识表达出来。
结构化⽅法与⾯向对象⽅法的介绍与对⽐结构化⽅法与⾯向对象⽅法的介绍与对⽐结构化和⾯向对象,这两个概念在计算机领域的中应⽤⼗分⼴泛。
在软件⼯程中,结构化和⾯向对象的思想也占有重要地位,产⽣了结构化⽅法和⾯向对象⽅法,⽤来指导软件⽣产。
⼀、结构化⽅法结构是指系统内各个组成要素之间的相互联系、相互作⽤的框架。
结构化⽅法强调开发⽅法的结构合理性以及所开发软件的结构合理性。
针对软件⽣存周期各个不同阶段,可以分为结构化分析(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⾯向对象⽅法⼀、基本概念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等语⾔。
结构化⽅法把对程序的分析、设计,延伸⾄对项⽬⼯程的分析、设计,结合程序设计语⾔的技术⽀持,得以产⽣和发展。
962012年第12期《软件工程》是研究、开发、维护以及使用软件所涉及的理论、方法、技术所构成的学科,也是高等院校计算机专业的一门核心课程。
同时,进入新世纪,软件工程已经由最初的一个学科方向发展成为以计算机科学技术为基础的多学科交叉学科,在当今的信息社会中占有重要地位。
开设该课程的主要目标一方面是让学生掌握软件开发的系统知识,包括其中的原理和方法;另一方面是提高学生解决实际问题的能力,培养学生的团队精神,为将来从事软件开发及进行项目管理打下坚实的基础。
在2006年之前,普遍采用结构化的《软件工程》作为计算机专业的教学课程,随着面向对象方法的发展,自2006年以来采用结构化和面向对象结合的《软件工程》进行教学,并在5年的教学过程中形成了比较完整的教学方法,提高了教学质量。
结构化《软件工程》的教学大多是以结构化为主线建立课程内容体系,教学内容包括软件工程概论、软件开发模型、结构化需求分析、结构化设计、软件测试等,其中以结构化的需求分析和设计为主要内容,采用的是几十年来延续使用的软件工程教材,并且以课堂讲授为主要教学形式。
在学习过程中学生能很好的掌握软件开发的系统过程,但呈现出了如下问题。
(1)在结构化分析阶段学生不能很好的进行能够需求分析。
结构化方法对需求变化的适应能力比较弱,软件系统结构对功能的变化十分敏感,功能的变化会引起许多数据流的修改,同时设计出的软件难以重用,延缓了开发的过程。
(2)学生动手能力欠佳,实践效果差,学生在结构化的需求分析的基础上不能很好的进行结构化设计,这是因为结构化方法分析结果不能直接反映问题域。
同时,当系统较复杂时,很难检验分析的正确性。
所以,结构化分析方法容易隐蔽一些对问题域的理解偏差,造成分析和设计之间存在“鸿沟”,导致学生进行与后续阶段的设计比较困难。
正因为这些问题的出现导致了学生仅仅把《软件工程》当作一门理论课程来学习,普遍认为这门课程内容就是一些死记硬背的概念,所以造成教学效果差、学生开发软件系统时的动手能力不足。
结构化⽅法与⾯向对象⽅法之应⽤⽐较结构化⽅法与⾯向对象⽅法是最具代表性的,也是⽬前应⽤最为⼴泛的软件开发⽅法。
本⽂将分别对两者进⾏介绍和⽐较。
⼀、结构化⽅法 结构化⽅法(Structured Methodology)是计算机学科的⼀种典型的系统开发⽅法。
它采⽤系统科学的思想⽅法,从层次的⾓度,⾃顶向下地分析和设计系统。
基本思想是基于功能的分解和抽象,形成系统的模块结构,从⽽针对每个模块进⾏结构化设计及结构化编程来完成系统的开发。
结构化⽅法由结构化分析(SA)、结构化设计(SD)和结构化程序设计(SP)三者组成。
(⼀)结构化分析 结构化分析是⾯向数据流进⾏需求分析的⽅法。
采取的⼯具主要有数据流图、数据字典、实体关系图等。
数据流图(Data Flow Diagram,DFD)是⼀种分层的建⽴系统逻辑模型的⽅法,模拟系统的⼀个⼤致边界,并展⽰系统和外部的接⼝、数据的输⼊输出以及数据的存储。
它有四个基本要素:数据流、实体、数据加⼯和数据存储。
数据流图分层的思想体现为,⾸先确定系统和系统涉及到的外部实体之间的数据流,画出第0层数据流图(顶层图);其次在顶层图的基础上对系统的主要功能进⾏分析,抽象出功能作为系统的加⼯,确定实体和加⼯之间的数据流,将顶层图细化为第1层数据流图;依此类推,之后不断细化得到第2、3乃⾄更多层的数据流图,直到不能再细化为⽌。
数据字典(Data Dictionary)是⼀个包含所有系统数据元素定义的仓库。
数据元素的定义必须是精确的、严格的和明确的。
⼀个实体⼀般应包含以下⼏个部分的内容:名字、别名、⽤途、内容描述、备注信息。
实体关系图(E-R图)是数据库设计的基础,是指以实体、关系、属性三个基本概念概括数据的基本结构,从⽽描述静态数据结构的概念模式。
(⼆)结构化设计 结构化设计是指在结构化分析的基础上,映射分析模型到设计模型,得到系统的模块结构、数据库结构等。
如在数据流图的基础上,进⾏相应的变换分析和事务分析得到系统的模块结构,在ER模型的的基础上,进⾏数据库设计得到数据库结构。
⾯向对象分析与⾯向结构分析⾯向对象的分析:领域模型、⽤例图、类图、活动图、顺序图、状态图。
⾯向过程或称结构化的:流程图、数据字典、er图。
⼀、什么是需求分析需求分析是先分解,再提炼,并在这个过程中消除⽭盾。
分解:(1)业务流程为主线索的分解——SERU。
⽬标系统——>主题域——>业务事件——>业务活动——>业务步骤。
适⽤于管理信息系统。
按“事”的⾓度进⾏分解,(2)程序结构为主线索的分解结构。
⽬标系统——>⼦系统——>功能模块——>⼦模块——>功能点。
过早的进⼊了程序结构,割裂了与问题域之间的联系,从⽽导致对问题研究不⾜,降低了需求的质量。
适⽤于问题不复杂,或者系统与问题管理性不强的情况下。
(3)基于场景的分解结构。
⽬标系统——>关注点/功能域——>决策场景/使⽤场景——>决策步骤。
适⽤于决策⽀持系统、⾯向⽤户的嵌⼊式系统。
(4)基于数据的分解结构。
⽬标系统——>主题域——>主题类——>企业逻辑数据类——>物理数据类。
适⽤于数据类项⽬。
提炼;分解是⾃顶向下的⽅法,提炼是⾃底向上的⽅法。
⼆、为什么要建模?(1)可视化:帮助我们按照实际情况或按照我们需要的样式对系统进⾏可视化;(2)结构或⾏为:提供⼀种详细说明系统的结构或⾏为的⽅法;(3)给出⼀个指导系统构造的模板;(4)对我们所做出的决策⽂档化;三、什么是结构化分析⽅法,怎么⽤?结构化分析⽅法是以数据为中⼼的结构化分析⽅法,关键点有两个:⼀确定有哪些数据,格式是什么,如何存储,如ER图;⼆是确定数据加⼯、处理过程,如数据流图。
在实际⼯作中,⼀般⽤于对⼯作任务分解结构、公司管理中组织结构分解。
常⽤的建模⽅法有:数据流图、ER图、数据字典。
四、什么是⾯向对象分析⽅法,怎么⽤?以⼈、事(业务流程)的视⾓来分析问题。
常⽤的建模⽅法有:类图、领域模型、⽤例图、类图、活动图、顺序图、状态图、包图等UML中定义的模型。
理解结构化和⾯向对象的区别结构化⽅法 结构化程序设计⽅法包含结构化分析(SA)、结构化设计(SD)、结构化程序设计(SP)三个⽅⾯,分别对应了软件开发中的分析、设计和编码阶段。
结构化分析是由DeMarco和Yourdon在20世纪70年代所倡导的。
结构化分析是⼀种基于功能分解的分析⽅法,在分析过程中使⽤了各种⼯具,例如数据流图等,这些⼯具本质上是⼀个对⽤户需求的解读,也是⾯向⽤户展⽰的⼀个“说明书”,⽬的在于使软件真正符合⽤户的需求。
结构化设计⾯向数据流,其最⼤的着⼒点在于设计系统各个组成部分之间的内部联系,以满⾜软件所需要的层次和结构。
结构化设计中,软件被⾃顶向下地不断细分,并谨慎地对待数据流通软件时的每⼀个步骤。
David Hay曾经说过(1999):"信息⼯程是1970年代开发的结构化技术的逻辑延伸。
结构化编程导致结构化设计,这⼜导致结构化系统分析。
这些技术的特点是使⽤图表,例如为结构化设计的产⽣的结构图和为结构化分析⽽产⽣的数据流图,这些图表都是为了帮助⽤户与开发者之间的交流,以及规范化分析、开发过程⽽产⽣的。
在20世纪80年代,各种⼯具开始出现,它们⾃动绘制图表,并跟踪在数据字典中描述的东西。
"[1] 例如CAD/CAM这样的CASE⼯具。
⾯向对象⽅法 和结构化设计类似,⾯向对象技术包括⾯向对象分析(OOA)、⾯向对象设计(OOD)和⾯向对象编程(OOP)三部分。
⾯向对象⽅法有⼏个需要遵循的基本原则:即抽象、封装、继承和多态。
在⾯向对象建模中,代码和数据被合并成⼀个单⼀的不可拆分的单元,也就是⼀个对象。
这样的特性允许对象保持像⼀个⿊盒⼦,也就是说没有⼈需要看到⾥⾯的具体原理。
⽽为了达到这⼀点,对任何对象的所有修改是通过作⽤于对象的消息来完成的,并且实际上所有对象都从消息中获得它们的动作。
在⾯向对象建模中,这种特性被称为封装性,它⼤⼤便利了软件部件、包或者库的调⽤,并且更便于重⽤。
1、结构化系统分析方法与面向对象分析方法的区别何在?答:结构化系统分析方法是采用“自顶向下,由外到内,逐层分解”的思想对复杂的系统进行分解化简,从而有效地控制了系统分析每一步的难度,并运用数据流图、加工说明和数据字典作为表达工具的一种系统分析技术。
而面向对象的分析方法则是通过将数据和逻辑结构抽象成为对象,运用对象属性和方法等来操作和处理业务数据和逻辑的系统分析方法。
两者的区别在于:当软件项目较小、系统分析员能力足够高的时候,结构化方法能快速的找到最简洁、高效率的逻辑模型,结构化方法对复杂问题的帮助有限,而面向对象的分析方法提供了一种方便的、可持续观测和扩展系统的机制,通过信息隐藏和封装等手段屏蔽了对象内部的执行细节,控制了错误的蔓延,对于需求变化频繁的系统,可以用面向对象软件系统的方法。
2. 在实际项目中,具体地是采用结构化系统分析方法,还是或面向对象分析方法,是否存在相应的前提条件?或者说依据什么来选择不同的分析方法?答:两种方法不是对立的,没有谁先进谁过时之说,可在项目中结合使用。
恰当的运用方法解决问题才是根本性的问题。
在运用时应关注运用方法的成本和价值。
如果软件项目较小、系统分析员能力足够高的时候,用结构化方法较好,如果系统需求变化较大,内部逻辑关系较复杂,复用性要求较高,可采用面向对象的方法。
3.结构化系统分析方法是否已经过时?为什么现在很多项目都要采用UML进行系统分析和设计?谈谈你的理解答:结构化系统分析方法没有过时,当软件项目较小、系统分析员能力足够高的时候,结构化方法是快速的找到最简洁、高效率的逻辑方式;UML是一种应用于面象对象软件开发过程的建模语言,是一种简单、直观的表示符号和标准,UML的优点在于:1、对于开发团队的层面来说:有利于队员间在各个开发环节间确立沟通的标准,便于系统文档的制定和项目的管理。
UML的简单、直观和标准性,在一个团队中用UML来交流比用文字说明的文档要好得多。
第四讲结构化程序设计与面向对象程序设计在当今的计算机编程领域,结构化程序设计和面向对象程序设计是两种非常重要的编程方法。
它们各自有着独特的特点和优势,适用于不同的应用场景。
接下来,让我们一起深入了解这两种编程设计方法。
结构化程序设计诞生于 20 世纪 60 年代,它的出现是为了解决当时程序设计中存在的混乱和难以维护的问题。
结构化程序设计强调程序的清晰结构和逻辑流程,通过顺序、选择和循环这三种基本控制结构来构建程序。
顺序结构是最基本的,程序按照语句的先后顺序依次执行。
比如,我们先定义变量,然后进行计算,最后输出结果,这就是一个简单的顺序结构。
选择结构则用于根据不同的条件来决定程序的执行路径。
常见的有ifelse 语句和 switch 语句。
假设我们要判断一个数是奇数还是偶数,就可以使用 ifelse 语句,如果这个数除以 2 的余数为 0,就是偶数,否则就是奇数。
循环结构则允许我们重复执行一段代码,直到满足特定的条件。
比如 for 循环和 while 循环,当我们需要计算 1 到 100 的和时,就可以使用循环结构来实现。
结构化程序设计的优点是显而易见的。
它使得程序的逻辑更加清晰,易于理解和调试。
而且,由于程序的结构比较规范,代码的可读性和可维护性都得到了很大的提高。
然而,随着软件规模的不断扩大和复杂性的增加,结构化程序设计也逐渐暴露出一些局限性。
当程序变得非常复杂时,单纯依靠结构化程序设计可能会导致代码的重复度较高,模块之间的耦合度较大,不利于代码的复用和扩展。
为了解决这些问题,面向对象程序设计应运而生。
面向对象程序设计将数据和对数据的操作封装在一起,形成一个个对象。
对象具有自己的属性和方法,可以与其他对象进行交互。
在面向对象程序设计中,最重要的概念包括类、对象、封装、继承和多态。
类是对象的模板,它定义了对象所具有的属性和方法。
比如,我们可以定义一个“汽车”类,这个类包含了汽车的品牌、颜色、速度等属性,以及加速、刹车等方法。