结构化分析设计与面向对象分析设计比较研究
结构化和面向对象的系统分析设计方法的对比

结构化方法和面向对象方法的对比1 结构化和面向对象的方法1.1 结构化方法结构化方法基于功能分解设计系统结构,通过不断把复杂的处理逐层分解来简化问题,它从内部功能上模拟客观世界。
用结构化开发能提高软件的运行效率,且能够增加软件系统的可靠性。
结构是指系统内各个组成要素之间的相互联系、相互作用的框架。
结构化的系统分析设计方法是一种传统的系统开发方法。
针对软件生存周期各个不同的阶段,有结构化分析(SA)、结构化设计(SD)和结构化程序设计(SP)等方法。
它的基本思想:把一个复杂问题的求解过程分阶段进行,而且这种分解是自顶向下,逐层分解,使得每个阶段处理的问题都控制在人们容易理解和处理的范围内。
1.1.1 结构化分析结构化分析是面向数据流进行需求分析的方法,主要采用数据流图DFD (Data Flow Diagram)来描述边界和数据处理过程的关系。
结构化分析的主要工作是使用数据流程图、数据字典、结构化语言、判定表和判定树等工具,来建立一种新的、称为结构化说明书的目标文档-需求规格说明书。
1.1.2 结构化设计结构化设计是将数据流图表示的信息转换成程序结构的设计描述,和功能的实现方法,并且采用系统结构图表示系统所具有的功能和功能之间的关系。
结构化设计过程分两步完成,第一步以需求分析的结果作为出发点,构造出一个具体的系统设计方案,决定系统的模块结构(包括决定模块的划分、模块间的数据传递及调用关系)。
第二步详细设计,即过程设计。
在总体设计的基础上,确定每个模块的内部结构和算法,最终产生每个模块的程序流程图1.2 面向对象方法面向对象方法是从内部结构上模拟客观世界,其基本思想为:对象是对现实世界客观实体的描述,均由其属性和相关操作组成,是系统描述的基本单位。
面向对象方法更强调运用人类在日常的逻辑思维中经常采用的思想方法和原则,例如抽象、分类、继承、聚合、封装等,这使得软件开发者能更有效地思考问题,并以其他人也能看得懂的方式把自己的认识表达出来。
电子商务系统的分析与设计(第二版)课后习题答案

第一章1 企业商务活动的基本特征a)从事商品交换的活动b)涉及商品的交换、买卖和再分配,包含商品物理上的位移过程2.电子商务的基本目标:电子商务的基本目标是以企业的“商务整合”为目的,通过整合企业的业务流程和信息资源,将信息技术和企业商务策略整合,形成有助于提升企业竞争力的新的组织结构、商业模式和业务流程。
3 电子商务系统的概念及特点a)概念:从广义上讲是支持商务活动的电子技术的集合。
从狭义上看,则指:在Internet和其他网络的基础上,以实现企业电子商务活动为目标,满足企业生产、销售、服务等生产和管理的需要,支持企业的对外业务协作,从运作、管理和决策等层次全面提高企业信息化水平,为企业提供商业智能的信息系统。
特点:A支持企业以交易为核心的商务活动的技术平台B企业内部业务流程重构、价值链增值的技术平台C依托网络,提供基于Web的分布式服务D在系统、应用的安全性方面有较高的要求E服务对象不仅包括企业内部人员,还涵盖了企业外部的客户和合作伙伴4.信息系统要素:硬件、软件、人员及相应的处理功能软件包括:程序、数据、文档第二章1、软件生命周期瀑布模型中包括哪几个阶段?每个阶段的中心任务是什么?答:包括问题定义阶段、可行性研究阶段、需求分析阶段、系统设计阶段、编码与测试阶段和运行维护阶段。
问题定义阶段的中心任务是:明确将要建设的软件系统要解决什么问题。
可行性研究阶段的中心任务是:探讨欲解决的问题是否有可行的解决办法。
需求分析阶段的中心任务是:回答“目标系统必须做什么”这一问题。
系统设计阶段的中心任务是:回答:“如何构造目标系统”这一问题。
编码及测试阶段的中心任务是:编码与测试交替进行。
运行维护阶段的中心任务是:通过各种维护,不断完善系统,从而使系统持久地满足用户需求。
系统开发生命周期(SDLC):1)系统规划(明确目标勾画轮廓制定方案)2)系统分析(分析现状明确约束确定需求)3)系统设计(体系结构设计选择软硬件平台应用软件设计网站设计安全子系统设计支付子系统设计4系统实现(系统平台搭建应用软件开发系统集成运行准备系统评估优化)5)系统运行和支持(系统维护运行维护组织管理性能优化)SDLC-系统规划—问题定义,可行性研究系统分析---需求分析系统设计---总体设计,详细设计系统实现---编码与单元测试,综合测试系统运行和支持—运行维护2、JAD与RAD方法各自所蕴涵的主要思想是什么?答:JAD的主要思想:必须加强最终用户在系统开发建设过程中的作用,让他们积极参与到整个系统开发过程的每一个阶段中。
结构化方法与面向对象方法的介绍与对比

结构化⽅法与⾯向对象⽅法的介绍与对⽐结构化⽅法与⾯向对象⽅法的介绍与对⽐结构化和⾯向对象,这两个概念在计算机领域的中应⽤⼗分⼴泛。
在软件⼯程中,结构化和⾯向对象的思想也占有重要地位,产⽣了结构化⽅法和⾯向对象⽅法,⽤来指导软件⽣产。
⼀、结构化⽅法结构是指系统内各个组成要素之间的相互联系、相互作⽤的框架。
结构化⽅法强调开发⽅法的结构合理性以及所开发软件的结构合理性。
针对软件⽣存周期各个不同阶段,可以分为结构化分析(SA)、结构化设计(SD)、结构化程序设计(SP)等⽅法。
1.1结构化分析⽅法结构化分析⽅法是⾯向数据流的分析⽅法,是70年代由Yourdon、Constaintine及DeMarco 等⼈提出和发展,并得到⼴泛的应⽤,其基本思想为分解和抽象。
结构化分析⽅法的设计原则有:(1)使每个模块尽量只执⾏⼀个功能(坚持功能性内聚);(2)每个模块⽤过程语句(或函数⽅式等)调⽤其他模块;(3)模块间传送的参数作数据⽤;(4)模块间共⽤的信息(如参数等)尽量少。
在结构化分析⽅法中,常⽤的⼯具有:数据流图数据流图(Data Flow Diagram,简称DFD)是描述系统中数据流程的图形⼯具,它标识了⼀个系统的逻辑输⼊和逻辑输出,以及把逻辑输⼊转换逻辑输出所需的加⼯处理。
通常,⼀个系统的DFD图会进⾏分层设计,使数据处理过程更加有层次,逻辑更加清晰。
DFD图的设计原则为:数据守恒与数据封闭原则、加⼯分解的原则、⼦图与⽗图的平衡、合理使⽤⽂件。
数据字典分层数据流图只是表达了系统的“分解”,为了完整地描述这个系统,还需借助“数据词典”(data dictionary)对图中的每个数据和加⼯给出解释。
对数据流图中包含的所有元素的定义的集合构成了数据词典。
它有四类条⽬:数据流、数据项、⽂件及基本加⼯。
在定义数据流或⽂件时,使⽤下表给出的符号,将这些条⽬按照⼀定的规则组织起来,构成数据词典。
在以上⼯具的辅助下,我们可以进⾏完整的结构化分析,⼀个典型的结构化分析过程为:①分析当前的情况,做出反映当前物理模型的DFD;②推导出等价的逻辑模型的DFD;③设计新的逻辑系统,⽣成数据字典和基元描述;④建⽴⼈机接⼝,提出可供选择的⽬标系统物理模型的DFD;⑤确定各种⽅案的成本和风险等级,据此对各种⽅案进⾏分析;⑥选择⼀种⽅案;⑦建⽴完整的需求规约。
结构化编程和面向对象编程

结构化编程和⾯向对象编程结构化设计:结构化程序设计⽅法主张按功能来分析系统需求, 原则有⾃顶向下, 逐步求精, 模块化等.结构化程序设计⾸先采⽤结构化分析(SA)⽅法对系统进⾏需求分析, 然后采⽤结构化设计(SD)⽅法对系统进⾏概要设计,详细设计, 最后采⽤结构化编程(SP)⽅法实现系统.结构化程序设计按功能来把系统逐步细化, 因此⼜叫做⾯向功能的程序设计⽅法.结构化程序设计的每个功能都负责对数据的接收,处理,输出,这种⽅式⼜称为⾯向数据流的处理⽅式⽤DFD(数据流图)表⽰.结构化程序设计⾥最⼩的程序单元是函数.整个程序由⼀个个函数组成, ⽽整个程序的⼊⼝是⼀个主函数(main()), 由主函数调⽤其他函数,函数之间的依赖来构成整个程序的功能.结构化程序设计的局限性:设计不够直观,与⼈类的思维不⼀致.适应性差,可扩展性不强.程序的三种基本结构:结构化程序设计⾮常强调某个功能的算法.算法由⼀系列操作组成. 任何简单或复杂的算法都可以由顺序结构,选择结构,循环结构这三种基本结构来构成.顺序结构: 顺序结构表⽰程序中的各操作是按照它们在代码中的排列顺序依次执⾏的.选择结构: 选择结构表⽰程序的处理需要根据某个特定的条件选择其中的⼀个分⽀执⾏(单选,双选,多选).循环结构: 循环结构表⽰程序反复执⾏某个或某些操作,直到某条件为假(或为真)时才停⽌循环(直到循环, 当循环).当型循环: 当条件为真时循环. 直到型循环: 直到条件为假时结束循环.结构化程序设计中的任何结构都具有唯⼀的⼊⼝和出⼝. java的⽅法⾥⾯则是⼀种结构化设计.⾯向对象设计:⾯向对象的基本思想是使⽤类, 对象, 继承, 封装, 消息等基本概念进⾏程序设计.在系统构造中尽可能的利⽤⼈类的⾃然思维⽅式,强调以现实世界中的事物(对象)为中⼼来思考,认识问题,并根据这些事物的本质特征,把它们抽象表⽰为系统中的类.这使得软件系统的组件可以直接的映像到客观世界,并保持客观世界中事物及其相互关系的本来⾯貌.⾯向对象⽅法的三个基本特征:封装性:将对象的实现细节隐藏起来, 通过⼀些公共的接⼝⽅法来供外部调⽤对象的功能.继承性:是⾯向对象实现的的重要⼿段,⼦类继承⽗类, ⼦类直接获得⽗类的⾮private属性和⽅法.多态性:⼦类对象可以赋值给⽗类对象引⽤, 但运⾏的时候仍然表现出⼦类的⾏为特征,同⼀个类型的对象在执⾏同⼀个⽅法时, 可能表现出不同的特征.⾯向对象还⽀持如下特点:对象是⾯向对象最基本的概念, 它的基本特点有:标识唯⼀性,分类性,多态性,封装性,模块独⽴性好.类是具有公共属性公共⽅法的⼀类事物.类是对象的抽象, 对象是类的实例化. 类的封装提⾼了类的内聚性, 降低了对象之间的耦合性.对象间的相互合作需要⼀个机制协助进⾏, 这样的机制称为"消息", 消息是⼀个实例与另⼀个实例之间的相互通信的机制.⾯向对象⽅法中,类之间的共享属性和共享⽅法的机制称为继承.继承具有传递性.继承分为多继承和单继承(java不⽀持多继承)."基于对象"和⾯向对象⾯向对象和"基于对象"都实现了"封装"的概念, 但是⾯向对象实现了"继承和多态", ⽽"基于对象"没有实现.⾯向对象的程序员按照分⼯分为: 类库的创建者和类库的使⽤者。
软件工程:结构化方法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等语⾔。
结构化⽅法把对程序的分析、设计,延伸⾄对项⽬⼯程的分析、设计,结合程序设计语⾔的技术⽀持,得以产⽣和发展。
面向对象分析与设计方法的研究及应用

面向对象分析与设计方法的研究及应用面向对象分析与设计方法(Object-Oriented Analysis and Design,简称OOAD)是一种常用于软件开发中的方法论,它通过对现实世界中的事物进行分析和建模,最终得到系统的需求和设计方案。
本文将从OOAD的概念、历史发展、所涉及的方法及其应用等方面进行论述。
一、OOAD的概念OOAD最初由Grady Booch、James Rumbaugh、Ivar Jacobson等人提出,旨在解决膨胀复杂的软件系统开发所带来的问题。
与传统的结构化分析和设计相比,OOAD更加关注系统中各个部分之间的交互关系和耦合程度,强调对象的概念,将系统视为一系列相互作用的对象集合。
二、OOAD的历史发展OOAD的发展可以追溯到20世纪60年代。
早期,软件需求和设计常使用结构化分析和设计,但是随着软件的复杂性不断提高,结构化方法已经无法适应日益增长的需求。
在20世纪80年代,Grady Booch等人提出了面向对象分析法(OOA) ,用于定义和组织系统中各个对象的行为和特性。
接着James Rumbaugh提出了面向对象设计(OOD) ,为面向对象编程提供了更加精细的设计工具。
最后,Ivar Jacobson提出了用例驱动的面向对象分析和设计(UML) ,提供了一种通用的OOAD方法,并成为当前应用最广泛的OOAD标准之一。
三、涉及的方法与应用OOAD包括四个步骤:需求分析、对象分析、设计和实现。
在需求分析阶段,开发团队与客户合作制定系统的需求说明,梳理出系统所涉及的业务实体,把它们抽象成对象以及他们的关系。
在对象分析阶段,开发团队对所识别的对象进行更深层次的分析,合理地划分系统的对象层次结构。
在设计阶段,指将对象属性和方法转化为代码,根据需求进行系统设计,并将其分解为可以开发的具体任务。
在实现阶段,则是根据设计阶段的成果,编码实现系统功能。
除此之外,为保障系统质量,还需要进行测试、集成、部署等工作。
结构化方法与面向对象方法之应用比较

结构化⽅法与⾯向对象⽅法之应⽤⽐较结构化⽅法与⾯向对象⽅法是最具代表性的,也是⽬前应⽤最为⼴泛的软件开发⽅法。
本⽂将分别对两者进⾏介绍和⽐较。
⼀、结构化⽅法 结构化⽅法(Structured Methodology)是计算机学科的⼀种典型的系统开发⽅法。
它采⽤系统科学的思想⽅法,从层次的⾓度,⾃顶向下地分析和设计系统。
基本思想是基于功能的分解和抽象,形成系统的模块结构,从⽽针对每个模块进⾏结构化设计及结构化编程来完成系统的开发。
结构化⽅法由结构化分析(SA)、结构化设计(SD)和结构化程序设计(SP)三者组成。
(⼀)结构化分析 结构化分析是⾯向数据流进⾏需求分析的⽅法。
采取的⼯具主要有数据流图、数据字典、实体关系图等。
数据流图(Data Flow Diagram,DFD)是⼀种分层的建⽴系统逻辑模型的⽅法,模拟系统的⼀个⼤致边界,并展⽰系统和外部的接⼝、数据的输⼊输出以及数据的存储。
它有四个基本要素:数据流、实体、数据加⼯和数据存储。
数据流图分层的思想体现为,⾸先确定系统和系统涉及到的外部实体之间的数据流,画出第0层数据流图(顶层图);其次在顶层图的基础上对系统的主要功能进⾏分析,抽象出功能作为系统的加⼯,确定实体和加⼯之间的数据流,将顶层图细化为第1层数据流图;依此类推,之后不断细化得到第2、3乃⾄更多层的数据流图,直到不能再细化为⽌。
数据字典(Data Dictionary)是⼀个包含所有系统数据元素定义的仓库。
数据元素的定义必须是精确的、严格的和明确的。
⼀个实体⼀般应包含以下⼏个部分的内容:名字、别名、⽤途、内容描述、备注信息。
实体关系图(E-R图)是数据库设计的基础,是指以实体、关系、属性三个基本概念概括数据的基本结构,从⽽描述静态数据结构的概念模式。
(⼆)结构化设计 结构化设计是指在结构化分析的基础上,映射分析模型到设计模型,得到系统的模块结构、数据库结构等。
如在数据流图的基础上,进⾏相应的变换分析和事务分析得到系统的模块结构,在ER模型的的基础上,进⾏数据库设计得到数据库结构。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
结构化分析设计与面向对象分析设计比较研究重庆工商大学计算机科学与技术08软件龚霞指导老师康世瀛中文摘要:解析了结构化方法和面向对象方法这两种软件开发方法具有的分析设计过程,讨论了各自在不同软件开发中的应用及局限性,提出了在选用面向对象开发大型软件系统的同时可结合结构化方法。
关键词:软件开发;结构化方法;面向对象方法Abstract:This paper anatomizes the analysis and design process of Structural method and objected-oriented method,discusses their applications and disadvantages and proposes that structural method can also be used while developing the large-scale software systems in selecting the objected-oriented method.Key words:software-development;objected-oriented method;structural method一、引言结构化方法由E.Yourdon和L.L.Constantine在1978年提出,结构化方法又可称为面向功能的软件开发方法或面向数据流的软件开发方法。
结构化方法是建立在软件生存周期的模型基础上的一种软件开发方法,相对于早期的个体化开发方法无疑是前进了一大步。
由于传统的生命周期开发学存在下面的问题:生产率提高的幅度远不能满足需求,软件的重用度很低,软件难以维护,软件往往不能满足用户的需求。
所以出现了面向对象软件开发方法。
这是一种自底向上和自顶向下相结合的方法,而且它以对象建模为基础,从而不仅考虑了输入、输出数据结构,实际上也包含了所有对象的数据结构,所以面向对象的软件开发方法彻底实现了PAM没有完全实现的目标。
不仅如此,面向对象技术在需求分析、可维护性和可靠性这三个软件开发的关键环节和质量指标上有了实质性的突破,彻底地解决了这些方面存在的严重问题,从而宣告了软件危机末日的来临。
二、结构化分析设计方法1、结构化方法的定义结构化方法采用的是自顶向下、逐步求精的设计方法,各个模块通过“顺序、选择、循环”的控制结构进行连接,并且只有一个入口、一个出口。
2、结构化方法的基本要点结构化方法基本要点是:自顶向下,逐步求精,模块化设计。
自顶向下的核心本质是“分解”,它将相对复杂的大问题分解为简单的小问题,对每一个小问题进行精确、定量的描述。
逐步求精即是抽象处理,将系统功能按层次进行分解,由单一简单的模块来描述整个系统。
模块化设计是将求精得到的功能化的模块,以功能块为单位进行程序设计,实现其求解算法。
模块化降低了程序复杂程度,使程序设计、测试和维护等操作简化。
3、分析设计方法结构化分析法是基于问题分解与抽象的观点,将任何信息处理过程看作是将要输入数据变换成所要求的输出信息的装置,因此数据流分析是需求分析的出发点。
结构化分析方法采用“自顶向下,由外及里,逐步求精”的策略对问题进行分析。
具体做法是首先将整个系统看作一个加工(信息处理的装置,是一个黑匣子),标识出系统边界和所有的输入/输出数据流。
然后再对加工内部进行细化分解,将复杂功能分解为若干简单功能的有机结合,并逐步补充细节描述。
结构化分析使用数据流图、加工说明和数据字典等来构造系统的需求分析模型。
结构化设计则是在需求分析的基础上,针对给定的问题给出解决方案。
结构化设计中的总体设计部分要给出被建系统的模块结构,详细设计部分要为个模块提供关于算法的详细描述。
结构化方法比功能分解法更强调对问题域的分析,但所使用的建模概念仍然不能直接的映射到问题域中的事物。
需求的变化往往会引起相应的加工和数据流的变化,进而影响与之相关的其他加工和数据流的变化。
系统复杂时也不能检验分析建模的正确性。
此外,结构化需求分析与后续的结构化设计所采用的概念与表示法存在着不一致,且转换规格不严格、具体,仅是指导性的,这致使从需求分析模型过度到设计模型较为困难。
所以结构化分析设计方法更适合需求确定的中、小型系统开发上。
三、面向对象分析设计方法1、面向对象方法的定义面向对象方法解决问题的思路是从现实世界中的客观对象(如人和事物)入手,尽量运用人类的自然思维方式从多方面来构造软件系统,这与传统的开发方法构造系统的思想是不一样的。
面向对象方法是一种运用对象、类、继承、聚合、关联、消息和封装等概念和原则来构造软件系统的开发方法。
2、面向对象方法的基本思想(1)、客观世界中的任何事物都是对象,对象之间存在一定的关系。
面向对象方法要求从现实世界客观存在的事物出发来建立软件系统,强调直接从现实世界中的事物为中心来思考问题和认识问题,并根据这些事物的本质特征和系统责任,把他们抽象成系统对象,作为系统的基本构成单位。
(2)、用对象的属性来描述事物的数据特征;用对象的操作来描述事物的行为特征。
(3)、对象的属性和操作结合为一体,成为一个独立的、不可分割的实体,实体对外屏蔽其内部细节。
(4)、通过抽象对事物进行分类。
把具有相同属性和相同操作的对象归为一类,类是这些对象的抽象描述,每个对象是它的类的一个实例。
(5)、复杂的对象可以用简单的对象作为其构成部分。
(6)、通过在不同程度上运用抽象的原则,可以得到一般类和特殊类。
特殊类继承一般类的属性和方法,从而简化系统的构造过程。
(7)、对象之间通过消息进行通信,以实现对象之间的动态联系。
(8)、通过关联表达类之间的静态关系。
3、面向对象的基本原则面向对象的基本原则主要分为抽象、分类、封装、消息通信和多态性等。
(1)、抽象抽象是指从事物中舍弃个别的、非本质的特征,而抽取共同的本质特征的做法。
使用抽象的好处:一是便于访问,外部对象只需知道有限的几个操作(接口)即可访问其中的对象;二是便于维护,如果程序内部发生变化而其接口没有发生变化,则只需对其内部进行修改。
(2)、分类分类的作用就是按照某种原则划分出事物的类别,以便有助于认识复杂世界。
在面向对象中分类就是把具有相同属性和方法的对象化为一类,用类作为这些对象的抽象描述。
分类实际上是把抽象原则运用于对象描述时的一种表现形式。
(3)、封装在面向对象中封装就是用对象把属性和和操纵这些属性的操作包装起来,形成一个独立的实体单元,体现了事物的相对独立性。
封装的另一个含义则是信息隐蔽,即外界不能直接存取对象的内部属性以及隐藏起来的内部操作,外界也不用知道对象操作的内部实现细节。
(4)、消息通信消息必须直接发给特定的对象,消息中包含关于所请求的服务的必要信息,且遵守所规定的通信规约。
一条消息应包括:消息名、入口参数和返回参数。
一个对象可以是消息的发送者,也可以是消息的接受者,还可以作为消息的参数值。
(5)、多态性多态性是指在具有继承关系的类层次结构中可以定义同名的操作或者属性,但是这些属性和操作具有不同的含义,即具有不同的数据类型或表现出不同的行为。
4、分析设计方法面向对象分析强调用对象的概念对问题域中的事物进行完整的描述,刻画事物的静态特征和行为特征,同时也要如实的反映问题域中的事物之间的各种关系,包括分类关系、组装关系等静态关系以及动态关系。
面向对象分析主要有五个步骤:标识对象(类);标识结构;标识主题;定义属性;定义服务。
面向对象分析模型面向对象分析过程模型面向对象设计是把系统所要求解的问题分解为一些对象及对象间传递消息的过程。
因为对象既可以像数据流一样被处理,又可以像过程一样被描述成处理的流程和细节,所以面向对象分析到面向对象设计之间不存在转换。
面向对象设计以面向对象分析为基础,且面向对象分析与面向对象设计采用一致的表示法。
面向对象设计与面向对象分析之间虽然不强调严格的阶段划分,但是分析与设计有着不同的侧重点与分工,因此具有不同的开发过程及具体策略。
“分析”主要考虑的是做什么,而“设计”则是考虑的怎么做。
另一种观点则是“分析”针对的是问题域和系统的责任,而“设计”考虑的是与实现有关的因素。
四、结构化分析设计与面向对象分析设计比较结构化分析设计主要是将现实世界的问题转化为计算机可以理解的对数据的加工处理,是面向过程的;而面向对象分析设计则是将现实世界的问题直接映射成对象及其接口,面向问题域,复合人们的思维习惯。
下面通过一个实例分析设计来比较两者:在超市型书店中,顾客可以从书架上自由选书,然后到收款台付款和打印单据。
为方便顾客,书店还向顾客提供查询服务,可以依据顾客提供的信息,如书号、书名、作者或出版社,查询书店中有无相应的图书。
书店管理人员日常需要详细记录进书与售书情况,需要经常查询库存书和销售情况,还要统计销售量、销售利润最大的图书(比如10种)信息,为书店进书提供依据。
书店只设一个收款台,用一台微机即可实现经营管理。
从系统功能的角度分析,该系统应包括以下四个部分。
(1)进书登记。
登记本店购进图书的书名、书号、作者、出版社、进价、定价、库存数等信息;(2)售书登记。
登记售书日期、书号、售出数量、单据号、开单人等消息,打印销售单据;(3)查询统计与报表。
随时显示和打印给定时间段内的售书情况,并结算销售金额与利润;统计销售量、销售利润最大的10种图书;随时显示和打印库存书清单;(4)购书查询。
可查询有无某书号、书名、作者、出版社的书。
1、结构化分析设计(1)、系统E-R图系统所包含的实体有库存书、单据,二者之间具有售书关系,所对应的E-R 图如图所示。
系统E-R图(2)、系统的DFDDFD是自顶向下逐步细化的层次图,其中包含四种元素,即用矩形框表示的起点与终点;有向线表示的数据流;圆角框表示的加工;以及半封闭矩形表示的文件。
该系统所对应的DFD:顶层DFD:一层DFD:查询4输出报表客户查询结果二层DFD:3.2管理员查询4.1显示库存清单报表三层DFD:(3)、数据字典(1)文件条目库存表=0{入库书目+进书日期+库存数+封面+备注}m售书表=0{书号+单据号+数量}m单据表=0{单据号+开单日期+开单人+购书单位+总金额}m(2)数据流条目书目=书号+书名+作者+出版社入库书目=书目+进价+定价售书输入=1{书号+数量}m购书单=单据号+1{书名+定价+数量}m +总金额+付款金额+找零+开单日期查询选择=[客户查询输入|管理员查询选择]客户查询输入=[书号|书名|作者|出版社|书名+作者|书名+出版社|作者+出版社]客户查询结果=书目+库存数+封面起止日期=起始日期+终止日期管理员查询选择=[销售额选择|销售量最大选择|销售利润最大选择]+起止日期销售额查询结果管理员查询结果=销售额查询结果+销售量最大查询结果+销售利润最大查询结果报表选择=库存清单选择+售书选择+单据选择报表输出结果=库存清单+售书报表+单据报表库存清单=1{序号+入库书目+进书日期+库存数}m+书种数+总数量+总金额+报表生成日期售书报表=1{书号+书名+1{单据号+数量+开单日期+开单人+购书单位} n+售出数}m+销售书种数+总金额+利润总计+起止日期单据报表=1{单据号+开单日期+开单人+购书单位+1{书号+书名+数量+定价}n+合计金额}m+销售书种数+总金额+利润总计+起止日期客户查询输入|=[书号|书名|作者|出版社|书名+作者|书名+出版社|作者+出版社]管理员查询选择=[销售额选择|销售量最大选择|销售利润最大选择]+起止日期销售额查询结果=0{书目+销售数量+销售金额}m+起止日期销售量最大查询结果=0{书目+销售数量}10+起止日期销售利润最大查询结果=0{书目+销售利润}10+起止日期2、面向对象分析设计(1)、系统的用例图(2)、系统的类图从上面的分析设计过程可以看出,结构化方法是系统功能建模,基于功能分解设计系统结构,从内部功能上模拟客观世界;面向对象方法则是从行为的角度进行建模,基于行为分析发认定对象及它们之间的关系,从内部结构上模拟客观世界。