版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
管理信息系统设计第五章管理信息系统设计知识目标了解结构化设计的基本概念和方法。了解面向对象设计的基本概念。了解系统体系结构设计。掌握结构化系统设计的总体设计与详细设计。掌握面向对象设计的过程与原则。技能目标在了解结构化设计概念与方法的基础上,初步具备利用结构化设计方法设计相关软件的能力;在熟知的基础上,能够利用面向对象设计方法对实际问题进行抽象并且构造出相应的数据模型。第五章管理信息系统设计结构化系统设计面向对象系统设计系统设计概述系统总体设计系统详细设计系统设计说明书面向对象设计概述信息系统体系结构设计软件类设计面向对象设计原则第五章管理信息系统设计第一节结构化系统设计概述一、系统设计概述(一)系统设计的概念系统设计又称为物理设计,是开发管理信息系统的第二阶段。系统设计通常可以分为总体设计和详细设计。总体设计的任务是设计系统的框架和概貌,并向用户单位和领导部门作详细报告以获得认可;详细设计是在总体设计的基础上进行的,这两部分工作是互相联系的,需要交叉进行。系统设计是开发人员进行的工作,他们将系统分析阶段得到的目标系统的逻辑模型转换为目标系统的物理模型。该阶段得到的工作成果—系统设计说明书是下一个阶段需要实施的工作依据。第五章管理信息系统设计第一节结构化系统设计概述一、系统设计概述(二)系统设计的基本原则严格遵循系统分析报告所提供的文档资料,不能任意更改系统的功能和性能要求。权衡系统的投资和效益比例保证系统的效率和质量。体现系统的可扩展性和可适应性。合理运用先进和成熟的技术,既要考虑系统的先进性又要避免更大的风险。保证系统的安全性。产生完备的系统设计说明书。第五章管理信息系统设计第一节结构化系统设计概述一、系统设计概述(三)系统设计的目标系统设计的目标是否达标可以从以下六个方面来衡量1.系统的功能是否解决了用户希望解决的问题,是否有较强的数据校验功能,能否完成所需要的运算,能否提供符合用户需要信息输出等2.系统的效率影响系统效率的因素很多,包括系统的硬件及其组织结构、人机接口的合理性、计算机处理过程的速度等。第五章管理信息系统设计第一节结构化系统设计概述一、系统设计概述(三)系统设计的目标系统设计的目标是否达标可以从以下六个方面来衡量3.系统的可靠性是指系统在运行过程中抵御各种干扰、保证系统正常工作的能力,包括检查错误、纠正错误的能力和系统一旦发生故障后重新恢复、重新启动的能力。4.系统的工作质量指系统提供信息的准确程度、使用的方便性、输出表格的实用性和清晰性等。第五章管理信息系统设计第一节结构化系统设计概述一、系统设计概述(三)系统设计的目标系统设计的目标是否达标可以从以下六个方面来衡量5.系统的可变更性是指修改和维护系统的难易程度。6.系统的经济性指系统的收益和支出之比。系统设计概述系统设计系统总体设计系统详细设计系统模块结构设计计算机物理系统的配置方案设计代码设计数据库设计界面设计处理流程设计编写系统设计说明书(四)系统设计的内容输入输出设计模块结构图、模块说明书其他详细设计的内容第五章管理信息系统设计第一节结构化系统设计概述一、系统设计概述(四)系统设计的内容→总体设计(1)系统模块结构设计:它的主要任务是划分子系统,然后确定子系统的模块结构,并画出模块结构图。在这个过程中必须考虑以下问题:如何将一个系统划分成多个子系统。每个子系统如何划分成多个模块。如何确定子系统之间、模块之间传送的数据及其调用关系。如何评价并改进模块结构的质量。第五章管理信息系统设计第一节结构化系统设计概述一、系统设计概述(四)系统设计的内容→总体设计(2)计算机物理系统的配置方案设计:要解决计算机软、硬件系统的配置,通信网络系统的配置,机房设备的配置等问题。第五章管理信息系统设计第一节结构化系统设计概述一、系统设计概述(五)系统划分的一般原则(1)子系统要具有相对独立性
子系统的划分必须使得子系统的内部功能、信息等各方面的凝聚性较好。在实际中我们都希望每个子系统或模块相对独立,尽量减少各种不必要的数据、调用和控制联系。并将联系比较密切、功能近似的模块相对集中,这样对于以后的搜索、查询、调试、调用都比较方便。
(2)子系统划分的结果应使数据冗余最小
如果我们忽视这个问题,则可能引起相关的功能数据分布在各个不同的子系统中,大量的原始数据需要调用,大量的中间结果需要保存和传递,大量计算工作将要重复进行。从而使得程序结构紊乱,数据冗余,不但给软件编制工作带来很大的困难,而且系统的工作效率也大大降低了。第五章管理信息系统设计第一节结构化系统设计概述一、系统设计概述(五)系统划分的一般原则(3)要使子系统之间数据的依赖性尽量小
子系统之间的联系要尽量减少,接口简单、明确。一个内部联系强的子系统对外部的联系必然是相对很少。所以划分时应将联系较多的都划入子系统内部。这样划分的子系统,将来调试、维护、运行都是非常方便的。(4)子系统的设置应考虑今后管理发展的需要
子系统的设置光靠上述系统分析的结果是不够的,因为现存的系统由于这样或那样的原因,很可能都没有考虑到一些高层次管理决策的要求。为了适应现代管理的发展,对于老系统的这些缺陷,在新系统的研制过程中应设法将它补上。只有这样才能使系统实现以后不但能够更准确、更合理地完成现存系统的业务,而且可以支持更高层次、更深一步的管理决策。第五章管理信息系统设计第一节结构化系统设计概述一、系统设计概述(五)系统划分的一般原则(5)子系统的划分应便于系统分阶段实现信息系统的开发是一项较大的工程,它的实现一般都要分期分步进行。所以子系统的划分应该考虑到这种要求,适应这种分期分步的实施。另外,子系统的划分还必须兼顾组织机构的要求(但又不能完全依赖于组织,因为目前正在进行体制改革,组织结构相对来说是不稳定的),以便系统实现后能够符合现有的情况和人们的习惯,更好地运行。返回本节目录系统分析系统实施系统设计根据系统分析阶段所确定的新系统的逻辑模型,综合考虑各种约束,利用合理的技术手段和方法,提出一个能在计算机上实现的新系统的物理模型,解决系统“怎样做”的问题。第五章管理信息系统设计第一节结构化系统设计概述二、系统总体第五章管理信息系统设计第一节结构化系统设计概述二、系统总体设计(一)系统总体设计的任务
根据系统分析的逻辑模型设计应用软件系统的物理结构。系统的物理结构必须符合逻辑模型,具备逻辑模型所规定的信息处理功能,这是物理设计的基本要求。
系统应具有可修改性,即易读,易于进行差错、改错,可以根据环境的变化和用户的要求进行各种改变和改进。
(二)系统总体设计的方法结构化设计方法。第五章管理信息系统设计第一节结构化系统设计概述二、系统总体设计(三)结构化设计的基本思想
结构化设计方法的特点:(1)模块结构相对独立、功能单一。(2)具有“块内联系大、块间联系小”的模块性能标准(3)采用模块结构图的描述方式。结构化设计的要点:(1)模块化。(2)自顶向下、逐步求精。(3)信息隐藏。第五章管理信息系统设计第一节结构化系统设计概述二、系统总体设计(四)结构化设计的评估准则
从用户的角度来看,一个高质量的软件至少应具备两个特点。易于实施和测试;易于修改和维护。从软件结构的角度来看,一个是耦合,另一个是内聚。
模块的独立性不同模块间的相互联系应尽可能的少,一个模块应尽可能的具有完整单一的功能耦合度内聚性模块间的联系程度模块内的联系程度第五章管理信息系统设计第一节结构化系统设计概述二、系统总体设计耦合度内容耦合一个模块直接修改另一个模块的数据公共耦合控制耦合数据耦合标记耦合两个以上模块共同引用一个全局数据项一个模块通过信号控制另一个模块模块间通过参数等方式传递数据下级模块使用上级模块传送的整体数据记录中的部分数据项第五章管理信息系统设计内聚性偶然内聚模块内各处理间无有意义联系逻辑内聚暂时内聚过程内聚通信内聚模块内是逻辑功能相似的处理处理动作与时间有关,与问题无关功能各不相关但具有前后关系的处理操作或生成同一组数据的处理顺序内聚功能内聚具有顺序关系的功能相关的处理实现某一功能所必需的全部处理第五章管理信息系统设计模块划分的原则降低模块间耦合提高模块内聚性第五章管理信息系统设计模块划分完成了,是不是模块结构设计就做完了?表示模块间的关系模块结构图第五章管理信息系统设计(五)系统总体设计-控制结构图的绘制模块结构图图例A矩形表示模块,矩形中写模块名称箭头表示模块间的调用关系小箭头表示表示模块间在调用过程中相互传递的信息作数据用的信息作控制用的信息模块结构图图例辅助符号选择调用循环调用(五)系统总体设计-控制结构图的绘制模块结构图示例(五)系统总体设计-控制结构图的绘制模块结构图注意事项模块结构图着重反映模块间的隶属关系(即调用关系与层次关系),只考虑模块功能、相互关系,而不涉及模块内部细节模块结构图不表示模块间调用次序与时间关系,即使大多数人有从左向右绘图的习惯(五)系统总体设计-控制结构图的绘制模块结构图转换数据流程图步骤一确定输入、变换、输出部分步骤二设计模块结构的顶层(总控模块)与第一层(输入、变换、输出模块)步骤三设计下层模块(五)系统总体设计-控制结构图的绘制数据流程图转换模块结构图示例学生选课系统数据流程图(五)系统总体设计-控制结构图的绘制数据流程图转换模块结构图示例选课主模块输入身份信息选课处理输出选课信息输入密码验证密码课程查询选课登记显示课表打印课表学号密码学号验证信息选课信息选课信息课表课表课表课表课表学号学号密码验证信息学号(五)系统总体设计-控制结构图的绘制控制结构图(模块结构图)的基本绘制原则如下:(1)每个模块有自身的任务,只有接受到上级模块的调用命令时才能执行。(2)模块之间的通信只限于其直接上、下级模块,人和模块都不能直接与其他上下级模块或同级模块发生通信联系。(3)若有某模块要与非直接上、下级的其他模块发生通信联系,必须通过其上级模块进行传递。(4)模块调用顺序为自上而下。在控制结构图中,把一个系统分解为若干模块,实质上是把一件比较抽象、物理内容不大确定的任务分解为若干件比较具体的、物理内容比较确定的任务。(五)系统总体设计-控制结构图的绘制控制结构图(模块结构图)的基本绘制原则如下:
控制结构图既可以反映系统的整体结构,又能反映系统的细节,既能准确反映各组成部分(各模块)及它们之间的联系。而DFD中流入“处理功能”的数据流映射为输入模块的数据流,DFD中流出“处理功能”的数据流映射成从“模块”中输出的数据流。(五)系统总体设计-控制结构图的绘制分解采用的方式
(1)以转换为中心结构的分解:如果待分解的模块是一个数据凝聚的模块,即内部包含若干顺序执行且对某些数据进行转换处理,称为已转换为中心的结构。这种模块可分解为输入-处理-输出-三大部分。
(2)以业务为中心结构的分解:待分解的模块要处理几项逻辑上相似的业务,即它是一个逻辑内聚的模块。可以将这种模块分解为一个检查业务类型的模块和一个调度模块,根据不同的业务类型,调度模块调用不同的下层模块,进行不同的处理。
以上两种分解方式常常要混合使用,已达到模块内聚程度高、模块之间独立性强、易于修改的目的。(五)系统总体设计-控制结构图的绘制返回本节目录第五章管理信息系统设计第一节结构化系统设计概述三、系统详细设计(一)代码设计(二)输出设计(三)输入设计(四)处理过程设计(五)数据存储设计(六)用户界面设计返回本节目录第五章管理信息系统设计第一节结构化系统设计概述三、系统详细设计(一)代码设计代码也叫信息编码。是作为事物(实体)唯一标志的、一组有序字符组合,用来表示事物名称、属性和状态等的符号。它必须便于计算机和人识别、处理。在管理信息系统中,代码是人和机器的共同语言,是系统进行信息分类、校对、统计和检索的依据。代码设计就是要设计出一套能为系统各部门公用的、优化的代码系统,这是实现计算机管理的一个前提条件。第五章管理信息系统设计第一节结构化系统设计概述三、系统详细设计(一)代码设计1.代码的重要性代码的重要性表现在以下几个方面:(1)可以唯一地标记一个分类对象(实体)。(2)便于储存和检索,节省储存空间。(3)使标准化的表达数据,简化了处理程序,提高了处理效率。2.代码设计的原则(1)唯一性:是区别系统中每个实体或属性的唯一标志。(2)简单性:尽量压缩代码长度,可降低出错机会。(3)易识别性:为便于记忆、减少出错,代码应当逻辑性强,表已明确。(4)可扩充性:不需要变动原代码体系,可直接追加新代码,以适应系统发展。(5)合理性:必须在逻辑上满足应用需要,在结构上与处理方法相一致。(6)规范性:尽可能采用现有国标、部标编码,统一结构。第五章管理信息系统设计第一节结构化系统设计概述三、系统详细设计3.代码种类代码的种类是指代码符号的表现形式,进行代码设计时可选择一种或几种代码类型组合。一般可按文字或功能给代码进行分类。按文字种类可以分为数字代码、字母代码和字母数字混合码。按功能则可以分为以下几类:(1)顺序码,也叫序列码,用连续数字作为每个实体的标志,编码顺序可以是实体出现的先后或实体名的字母顺序等。其优点是简单、易处理、易扩充、用途广;缺点是没有逻辑含义,不能表示信息特征,无法插入数据,删除数据将造成空码。第五章管理信息系统设计第一节结构化系统设计概述三、系统详细设计3.代码种类(2)重复性,采用与原来手工系统相同的编码。其优点是容易被原系统人员接受,易实现,便于推广;缺点是不能任意更改。(3)成组码,是最常用的一种编码,它将代码分为几段(组),每段都由连续数字组成,表示一种含义。其优点是简单、方便,能够反映出分类体系,易校对,易处理;缺点是位数多,不便记忆,必须为每段预留编码,否则不易扩充。(4)表意码,是将表示实体特征的文字、数字或几号直接作为编码。其优点是可以直接明白编码含义、易理解、易记忆;缺点是编码长度位数可变,给分类、处理带来不变。例如,网站代码就是表意码。第五章管理信息系统设计第一节结构化系统设计概述三、系统详细设计3.代码种类
(5)专用码,是具有特殊用途的编码,如汉字国标码、五笔字型编码、自然码、ASCII代码等。
(6)组合码,也叫合成码、复杂码,它由若干种简单编码组合而成,使用十分普遍。其优点是容易分类,容易增加编码层数,可以从不同角度识别编码,容易实现多种分类统计;缺点是编码位数和数据项个数较多。
4.代码校验
校验码是按事先规定好的算法计算出来,将它附加到代码本体上以后,成为代码的一个组成部分。当代码输入到计算机以后,系统将会按规定好的算法验证,从而检测代码的正确性。第五章管理信息系统设计第一节结构化系统设计概述三、系统详细设计4.代码校验(1)校验值的生成过程。1)第一步,对原代码中的每一位加权求和S。N位代码为:C1,C2,C3,···,Cn;权因子为:P1,P2,P3,···,Pn;加权和为:S=C1×P1+C2×P2+C3×P3+···+Cn×Pn。其中,全因子可任意选取,以提高错误发生率为基础。常用的有:全取1;几何级数20,21,22···;摆动列数1,2,1,2···;等等。2)求余数R,用加权和S除以模数M(常用的模数为10和11)可得余数R,即S/M=Q······R(Q为商数)。3)选择校验值,可选用下述方法中的一种获得校验值:余数R直接作为校验值;把模数M和R只差(即M-R)作为校验值;取R的若干位作为校验值。把获得的校验值放在原代码的最后作为整个代码的组成部分。(2)用校验值检查代码的过程。此过程是上述生成过程的逆过程,这里不再解释。5代码设计的步骤(1)确定代码对象。(2)考查是否已有标准代码。如果国家标局、某个部门对某些事物已规定了标准代码,那么应遵循这些标准代码。如果没有标准代码,那么在进行代码设计时要参考国际标准化组织、其他国家、其他部门、其他单位的编码标准,设计出便于今后标准化的代码。(3)根据代码的使用范围、使用时间和实际情况选择代码的种类与类型。(4)考虑检错功能。(5)编写代码表。代码编写好后,要编制代码表,作详细说明,通知有关部门,组织学习,一边正确使用。居民身份证编码规则ABCDEFYYYYMMDDXXXR地址码(ABCDEF):表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按【GB/T2260】的规定执行。出生日期码(YYYYMMDD):表示编码对象出生的年、月、日,按【GB/T7408】的规定执行。顺序码(XXX):表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序码,顺序码的奇数分配给男性,偶数分配给女性。校验码(R),一位数字,通过前17位数字参照【ISO7064:1983.MOD11-2】规则计算得出。5代码校验的功能:核对输入代码是否正确。校验位可以发现的错误 错字 1234 1224 错位 1234 1243代码校验方法 建立代码字典 如公安部人口身份信息数据库 设置校验位 如身份证号第18位数字5.3.1代码设计-代码校验131082199905010277910584216379105842XXXXXXXXXXXXXXXXX‖‖‖‖‖‖‖‖‖‖‖‖‖‖‖‖‖727100648295427045050814+=+++++++++++++++?R012345678910校验值0123456789XS=280M=11280/11=25…5=R返回本条目录5第五章管理信息系统设计第一节结构化系统设计概述三、系统详细设计(二)输出设计输出设计主要考虑输出要求的确定、输出方式的选择和输出格式的设计。输出设备和介质也要考虑在内。
(二)输出设计
1.输出要求的确定在确定一个系统究竟应输出什么信息时,应按照下列步骤加以调查和分析:(1)详细分析现行系统的输出报表和内容,找出哪些报表是真正需要的,哪些是重复的或可以合并的,各分报表的输出周期等。(2)参照与用户同类型企业或部门的情况,借鉴业务性质类似的其他MIS的经验。(3)与用户单位的实际业务人员讨论。第五章管理信息系统设计第一节结构化系统设计概述三、系统详细设计(二)输出设计
2.输出方式的选择目前,我国MIS主要使用的输出方式是屏幕显示和打印机打印。磁盘、磁带、移动硬盘、U盘则往往作为一种保存数据的手段。输出介质主要是各种规格的打印纸,包括专用的和通用的。第五章管理信息系统设计第一节结构化系统设计概述三、系统详细设计3.输出格式的设计
对输出格式设计的基本要求如下:(1)规格标准化,文字和术语统一。(2)使用方便,符合用户的习惯。(3)美观大方,界面漂亮。(4)便于计算机实现。(5)能适当考虑系统发展的需要。
设计屏幕输出格式时,除了合理安排数据项的显示位置外,还应注意适当的颜色搭配,美观的屏幕输出格式会使人赏心悦目,容易获得用户好感。
设计纸质报表的格式时,要先了解打印机的特性。为便于编写输出程序,设计输出格式时,最好先在方格纸上拟出草图。三、系统详细设计→输出设计返回本条目录(三)输入设计
输入设计的目的是:在保证输入信息正确性和满足输出需求的前提下,尽量做到输入方法简便、迅速、经济。1.输入设计的原则:(1)输入量应保持在能满足处理要求的最低限度。(2)杜绝重复输入,特别是在数据能共享的大系统中,一定要避免重复输入。(3)输入数据的汇集和输入操作应尽量简便易行,减少错误的发生。(4)输入数据应尽早处理成所需要的形式,用这种形式进行记录,以减少或避免由一种介质转换到另一种介质时可能产生的错误。第五章管理信息系统设计第一节结构化系统设计概述三、系统详细设计(三)输入设计
2.输入数据的获得:原始的账单、票据、凭证、台账、账簿等。3.输入格式的设计输入格式应该针对输入设备的特点进行设计。若选用键盘方式人机交互输入数据,则输入格式的编排应尽量做到计算机屏幕显示方式与单据格式一致。输入数据的形式一般可采用“填表式”,有用户逐项输入数据,输入完毕后系统应具有要求“确认”输入数据是否正确无误的功能。第五章管理信息系统设计第一节结构化系统设计概述三、系统详细设计(三)输入设计
4.输入数据的校验:
常用的校验方法有以下两种:
(1)重复输入校验。(2)程序校验法:根据输入数据的特性,编写相应的校验程序对输入的数据进行检查。第五章管理信息系统设计第一节结构化系统设计概述三、系统详细设计返回本条目录(四)处理过程设计
第五章管理信息系统设计第一节结构化系统设计概述三、系统详细设计在获得模块结构图以后,就可以设计各模块的处理过程,为程序员编写程序做准备,是编程的依据。处理过程设计(模块详细设计)通常是在IPO(Input-Process-Output)图上进行,是用来表述每个模块的输入,输出和数据加工的重要工具。常用系统的IPO图的结构如下图表示(四)处理过程设计
第五章管理信息系统设计模块详细设计时除了要满足某个具体模块的功能、输入和输出的基本要求以外,还应考虑以下几个方面的问题:(1)模块间的接口要符合通信的要求。(2)考虑将来实现时所有计算机语言的特点。(3)考虑数据处理的特点。(4)估计计算机执行时间不能超出要求。(5)考虑程序运行所占用的存储空间。(6)使程序调试跟踪方便。(7)估计编程和上机调试的工作量。返回本条目录(五)数据存储设计
第五章管理信息系统设计第一节结构化系统设计概述三、系统详细设计对数据的存储和管理有文件、数据库两种方式1.文件设计文件是按一定的组织方式存放在存储介质上的同类记录的集合。文件设计就是根据文件的使用要求、处理方式、存储量、数据的活动性以及硬件设备的条件等,合理地确定文件类别,选择文件存储介质,决定文件的组织方式和存取方法,估算文件容量等。文件由记录组成,所以设计文件主要是设计文件记录的格式,详见文件记录的格式实例(五)数据存储设计文件设计记录文件名:主文件应用:工资子系统序号123456数据项名职工代码职工姓名部门基本工资附加工资扣房费变量名DMXMBMJBGZFJGZFF类型CCCNNN宽度482777小数位数222输入到:输出自:设计人员签名
设计日期
。
(五)数据存储设计文件数据的具体内容如下:(1)对数据字典描述的数据存储情况进行分析,确定需要作为文件存储的内容,区分固定数据、流动数据和共享数据,决定文件类型。(2)决定需要建立的文件及其用途和内容,并为每个文件选取文件名。(3)选择文件的存储介质和组织形式。(4)根据数据结构设计记录格式。(5)根据记录长度,记录个数和文件总数估算出整个系统的数据存储容量。2.数据库设计
数据厍设计是在选定的数据库管理系统基础上建立数据库的过程。数据库设计除用户需求分析外,还包括概念结构设计、逻辑结构设计和物理结构设计等三个阶段。由于数据库系统已形成一门独立的学科,所以,当我们把数据库设计原理应用到MIS开发中时,数据库设计的几个步骤就与系统开发的各个阶段相对应,且融为一体,它们的对应关系如下图所示。
2.数据库设计
(1)数据厍设计的要求:数据厍设计的目标是建立一个合适的数据模型,这个数据模型应符合以下条件:满足用户要求满足某个数据库管理系统的要求。具有较高的范式:数据完整性好、效益高,便于理解和维护,没有数据冲突。(2)数据库数据步骤:可以分为概念结构设计、逻辑结构设计和物理结构数据三个阶段。概念结构设计应在系统分析阶段进行,任务是根据用户需求设计数据库的概念数据模型(简称概念模型)。概念模型是从用户角度看到的数据库,它可用前面章节中介绍的E-R模型表示。数据库的逻辑结构设计逻辑结构设计是将概念结构设计阶段完成的概念模型转换成能被选定的数据库管理系统(DBMS)支持的数据模型。数据模型可以由实体联系模型转换而来。E-R模型转换为关系数据模型的规则:每一实体集对应于一个关系模式,实体名作为关系名,实体的属性作为对应关系的属性。实体间的联系一般对应一个关系,联系名作为对应的关系名,不带有属性的联系可以去掉。实体和联系中关键字对应的属性在关系模式中仍作为关键字。2.数据库设计
概念结构的转换举例:
实体联系图
2.数据库设计
根据规则,转换成对应的关系数据模型:①供方单位(单位号、单位名、地址、联系人、邮政编码)。②物资(代码、名称、规格、备注)③库存(入库号、日期、货位、数量)④合同(合同号、数量、金额、备注)⑤结算(编号、用途、金额、经手人)⑥购进(入库号、编号、数量、金额)⑦付款(编号、合同号、数量、金额)⑧订货(代码、单位号、合同号、数量、单价)2.数据库设计
概念结构的转换举例:
数据库的物理结构设计
物理结构设计:为一个确定的逻辑数据模型选择一个最适合应用要求的物理结构的过程。数据库在物理设备上的存储结构和存取方法称为数据库的物理数据模型。数据库数据最后阶段是确定数据库的物理数据模型。2.数据库设计
返回本条目录(六)用户界面设计
第五章管理信息系统设计第一节结构化系统设计概述三、系统详细设计用户界面主要有菜单式、填表式、选择问答式和按钮式四种形式菜单式目前常用的菜单设计方法有以下几种:一般菜单。下拉菜单。快键菜单。返回本条目录返回本节目录第五章管理信息系统设计第一节结构化系统设计概述四、系统设计说明书系统设计说明书包括以下几个方面的内容:引言引言主要说明项目的背景、工作条件及约束、引用资料和专门术语。2.系统总体技术方案系统总体技术方案是系统说明书中最主要的部分,包括以下几个方面的内容:(1)模块设计:用结构图表示系统模块层次结构,说明主要模块的名称、功能。(2)代码设计:说明所用代码的种类、功能、代码表。总体方案包括内容:(3)输入设计:说明输入的项目、主要功能、输入要求、输入的承担着、输入校验方法等。(4)输出设计:说明输出的项目、主要功能、输出的接受者、输出的数据类型与设备、介质、数值范围、精度要求等。(5)数据库设计:说明数据设计的目标、主要功能要求、需求性能规定、运行环境要求、逻辑设备方案、物理设计方案。(6)网络设计:说明系统的网络结构、功能设计。(7)安全保密设计。(8)实施方案说明。系统设计说明书还要说明实施的计划安排,给出各项工作(包括文件编制、用户培训)的预定日期和完成日期,规定各项工作的先后次序即工作完成的标志。可以用PERT图或甘特图表示。在经费预算中,要逐项列出本开发项目实施需要的各项经费(包括办公费、差旅费、机时费、资料费、设备租金等)。出用户、系统研制人员外,还应邀请有关专家人员、管理人员审批实施方案,并将评审意见及审批人员名单附于系统说明书之后,经批准后,实施方案方可生效。返回本节目录
面向对象设计(OOD,Object-OrientedDesign)是面向对象分析到实现的一个桥梁。面向对象分析是将用户需求经过分析后,建立问题域精确模型的过程;而面向对象设计则根据面向对象分析得到的需求模型,建立求解域模型的过程。即分析必须搞清楚系统“做什么”,而设计必须搞清楚系统“怎么做”,从分析到设计不是传统方法的转换,而是平滑(无缝)过渡,而求解域模型是系统实现的依据。
第五章管理信息系统设计第二节面向对象设计第五章管理信息系统设计第二节面向对象设计一、面向对象设计概述面向对象设计是在面向对象分析的基础上增加实现的细节来完成的。(一)面向对象设计模型面向对象设计的任务可用Coad和Yourdon提出的面向对象设计模型表示,该模型由四个部分和五个层次组成,其中四个部分是问题领域、人机交互、任务管理、和数据管理;五个层次是主题层、对象层、结构层、属性层、和服务层。问题领域部分是针对业务领域进行的总体设计,它包括完成目标系统主要功能的对象。问题领域设计以面向对象分析为基础,通过扩展和调整,为实现有关功能所需的类、对象等提供实现途径。人机交互部分给出实现人机交互需要的对象。其主要工作是进一步熟悉用户,分析用户工作流程与习惯,设计命令系统,设计用户界面细节,设计用户界面专用类等。此外,也可以利用快速原型技术对人机交互部件的设计进行验证。(一)面向对象设计模型任务管理主要包括任务的选择和调整。所谓任务是进程的别称,是执行一系列活动的一段程序。当系统中有许多并发行为时,需要依照各个行为的协调和通信关系,划分各种作为,以达到简化并发行为的设计和编码的目的。任务关系部分的工作包括:识别事件驱动任务;识别时钟驱动任务,识别优先任务和关键任务;识别任务之间的协调者;对各个任务进行审评,保证它能够满足选择任务的过程标准;定义各个任务、说明它是什么任务、任务之间如何协调工作、如何通信。数据管理部分主要是定义专用对象,它将目标软件系统中有关开发平台的数据存取操作与其他功能分开,以提高对象的独立性。数据存取的主要功能包括数据格式定义和数据操作定义。(一)面向对象设计模型架构的概念建筑、文学、音乐、机械、电子、计算机软硬件等领域都会使用“架构(architecture)”这一概念。架构都提供了系统最高层的设计方案,以确保建筑、小说、乐曲、设备、计算机等系统满足期望的特性。好的建筑应该美观、坚固、实用好的计算机应用系统应该实用、好维护、可靠、性价比高架构师(architect)需要发现特定系统的最重要的关注点,设计某种折衷的总体方案以满足关注点。架构包含系统的一组基本结构(structure),每种结构都有各种类型的部件(component)及其关系构成,架构描述了这些部件的组合、相互调用参照、通信以及其他动态交互。第二节面向对象设计(二)高层构架设计架构和结构的关系架构是抽象无形的,体现高层全局的决策,就像文章的中心思想和提纲。结构是具体有形的,体现决策的贯彻,如同文章的每个段落及细节描述。架构包含了结构的初步描述和决策。相同架构的系统,具体结构允许有差异。使用桥梁来比喻桥梁的架构设计可以使用草图描述,架构决定了桥梁的基本结构部件。桥梁有梁式桥、拱桥、斜拉桥、悬索桥等架构斜拉桥的基本结构:索塔主梁斜拉索使用桥梁来比喻桥梁的结构设计则需要考虑各种部件的数量、材料、重量、形态等方面,是可以施工的严谨的结构图。架构是抽象的,对结构进行了设计和限定,每座桥的结构是具体有形的、元素组合千变万化高层构架设计的目的是开发系统的结构,它从对象设计模型的四个部分入手,构造应用系统的总体构架。1.问题领域部分设计问题领域部分设计包括与应用问题直接有关的全部类和对象。它的设计工作主要从以下五个方面对分析模型进行增补修改:(1)复用已有的构架和设计模式;(2)把与问题领域相关的类、相关类,建立类的层次结构;(3)创建一般化类;(4)改进系统性能;(5)加入较底层的构件。第二节面向对象设计(二)高层构架设计2.人机交互部分的设计用户界面部分设计主要由以下几个部分组成:(1)用户分类及用户任务描述;(2)设计命令层;(3)设计与用户的详细交互,并进行原型设计;(4)设计人机交互。3.任务管理部分的设计任务管理部分的设计包括以下几个方面:(1)为任务命名,并简要说明任务;(2)定义任务间的协调关系,标明是事件驱动还是时钟驱动;(3)描述任务之间的通信,说明任务将从哪里取值,执行结果将送往何方。第二节面向对象设计(二)高层构架设计4.数据管理部分的设计数据管理部分提供在MIS中存储和检索对象的基本结构,包括对永久性数据的访问和管理。数据管理的方法主要有三种:文件管理、关系数据库管理和面向对象的数据库管理。数据管理部分的设计包括以下两个方面的内容:(1)数据存放设计;(2)设计相应的操作。它是指为每个需要存储的对象和类增加用于存储管理的属性和操作,在类和对象的定义中加以描述第二节面向对象设计(二)高层构架设计第二节面向对象设计(三)类设计类设计关注系统行为如何被实现,因此必须完成以下事情:(1)完整的属性集合,包括详细说明的名称、类型、可见性和一些默认值。(2)将分析类指定的操作转化为一个或多个方法的完整集合。1.设计类及其获取设计类是已经完成了规格说明的类,并且达到能够被实现的程度。设计类来自两个方面:(1)通过分析类的细化得到(2)应用程序框架第二节面向对象设计(三)类设计2.良好的设计类的特征(1)完整的和充分的;(2)原始的;(3)高内聚;(4)低耦合。返回本节目录第二节面向对象设计二、信息系统体系结构设计信息系统体系结构(informationsystemarchitecture)是指计算机信息系统的各个组成部分之间的相互关系,它是硬件、软件、算法和语言的综合性概念。信息系统体系结构有集中式结构和分布式结构两种类型,典型的代表是客户机/服务器(client/server,C/S)和浏览器/服务器(browser/server,B/S)。现代信息系统的部件通常分布于多个计算机系统和不同的地理位置上,因此B/S结构是当前分布式信息系统资源的资源结构形式。分层的含义基于组件的软件开发,组件根据横向位置划分为多层(N-Layer):下层组件负责对上层组件提供服务上层组件可以使用下层组件定义的服务,但下层组件对上层组件一无所知。层与层之间通常是不透明的,每一层都具有独立的职责不同层的软件构件可以分布在多台机器上,也可以部署在同一台机器上,形成物理上的多层(N-Tier)理解分层概念层次模型的理念就是将整个任务横向划分为不同级别,而不是纵向比如学校管理纵向划分有教学、人事、财务、后勤等任务横向划分有主管校长(高层)、部门领导(中层)、普通员工(基层),或处、科、室计算机程序的组织结构也可以有纵向划分和横向划分纵向:教师管理功能、学生管理功能、课程管理功能……横向:界面窗体、业务逻辑类、数据访问类……第二节面向对象设计二、信息系统体系结构设→客户机/服务器体系结构数据库界面窗口程序中包含所有的内容,如输入输出、界面逻辑控制、业务逻辑运算等。系统架构是两层,应用架构没有分层。第二节面向对象设计二、信息系统体系结构设→浏览器/服务器体系结构数据库借还书组件读者管理组件表示层(UI)业务逻辑层(BLL)数据访问层(DAL)数据库访问组件细节看P143扩展的五层架构表现层:等同于三层中的表现层。控制层/中介层:是表现层和领域层的中介层,也称应用控制器。主要表示业务逻辑中的工作流,一般针对于用例的事件流控制。此外还负责会话状态、数据的合成或分解等事务。领域层:业务逻辑中的领域类的集合,不包含复杂工作流。数据映射层:负责将基于对象的领域层数据映射到数据库关系表中的记录。也称为数据持久层,可自行开发或采用持久化框架。数据访问层:负责数据库表的增删改查等操作。持久化框架中包含该层组件。返回本节目录第二节面向对象设计三、软件类设计(一)面向对象程序的工作原理(1)封装:对象封装了该对象实例所需的所有数据、对象类,对象的模板封装了对象的逻辑程序。(2)信息隐蔽:指属于一个对象的数据不为系统中的其他对象所见。另一个对象只有通过消息才能得到该对象的数据。(二)面向对象设计的目标(1)提高软件生产效率:强化维护;提供重用类。(2)提高质量:对开发的最终产品进行仔细测试。(3)加强可维护性:把系统中易变的部分和比较稳定的部分分离开来。第二节面向对象设计三、软件类设计(三)面向对象设计的基本任务对问题域外部可见的行为,描述实际的计算机系统实现所需的细节,包括人机交互、应用程序、数据库、和网络的细节。补充需求细节并检查需求。构造系统并确定其表现形式(包括其构架)OOD阶段需要建立的模型如下:(1)设计类图:是对类图的扩展,增加了属性和方法细节。(2)包图:用于标志一个完整系统的主要部分。(3)构件图:表示构件及其之间是如何相互关联的。(4)部署图:表示结点及其之间是如何相互关联的。第二节面向对象设计三、软件类设计(四)设计类图设计类图的一个基本思想是将类模型层次化,形成类的类型体系结构,如下图所示用户界面类业务/领域类持久类永久存储系统类类的类型体系结构第二节面向对象设计三、软件类设计(四)设计类图1.建立类的类型体系结构的原因(1)好的类型体系结构能够对某一特点的层进行修改而不影响任何其他层,这将有助于提高系统的可扩展性和可维护性;其次,层应该是模块化的,即只要接口不变,可以重写某一层或替换某一层,从而提高系统的可移植性。(2)可以减少类间的耦合从而增加其可移植性。(3)同一层中允许类之间的协作。(4)协作还可发生在箭头相连的层中的类之间。第二节面向对象设计三、软件类设计(四)设计类图2.类的类型体系结构(1)用户界面类:也称为接口类或边界类,是实现系统的主要用户界面元素,包含应用程序中用户界面部分的代码。(2)业务/领域类:也称为分析类,实现与业务领域相关的概念。这些类通常在分析阶段确定。(3)持久类:将永久存储、检索和删除对象的能力封闭起来,使底层的存储技术不暴露出来。(4)系统类:为应用系统提供与OS相关的功能,通过将与OS相关的特性包装起来,使软件与OS分离,增加系统的可移植性。包(Package)是一种逻辑分组手段,可以取UML模型中的任何一种事物,将相关成分聚在一起,以构成更高层的组织单元——包。最常用的方法是将类以包为单位进行分组,比如上一节提到的层,每一层中的所有类组成一个包。一个包可以包含其它的包,高层包被分成若干子包,子包又可以在分成更小的包。包之间的关系可以通过访问依赖来说明,访问依赖表明一个包(源包)有权引用另一个包(目标包)中的元素。在两个同等层次的包之间,除非存在显示的访问关系,否则一个包中的元素不能引用另一个包中的元素。第二节面向对象设计三、软件类设计(五)设计包图分包(软件类的分组)有两种原则:共同封闭原则(CommonClosurePrinciple)。一个包中的各个类应该是由于相似的原则而改变,即将一组职责相似、但以不同方式实现的类归为一个包中。比如按照层来进行分包就是这种类型。共同复用原则(CommonReusePrinciple)。一个包中的各个类应该一起被复用,复用其中一个可能需要同时考虑同一个包中的其它协作类。通常和业务功能相关。第二节面向对象设计三、软件类设计(五)设计包图包图包图用来描述包及其依赖关系。当表现层包中的类要使用领域包中的领域类提供的服务时,表示包就依赖于领域包。访问依赖用虚线箭头表示构件(component)是系统中实际存在的可更换部分,它实现特定的功能,符合一套接口标准并实现一组接口。构件是可复用的软件组成成份,可被用来构造其他软件。在系统中采用构件软件程序不需要重新编译,也不需要构件自身的源代码并且不局限于某一种编程语言,所以构件的复用也称为二进制复用(binaryreuse),因为它是建立在接口而不是源代码级别的复用。构件及其关系使用UML构件图描述。第二节面向对象设计三、软件类设计(六)设计构件图第二节面向对象设计三、软件类设计(六)设计构件图在UML中定义了五种标准构件造型:(1)可执行的,即一个直接可执行模块。(2)库,即一个静态或动态对象库模块。(3)表,即一个数据库表。(4)文件,即一段源代码或数据文档。(5)文档,即可读的文档。构件图是显示代码自身结构的实现级别的图标。构件图由诸如源代码文件、二进制代码文件、可执行文件或动态链接库(DLL)这样的构件构成,并通过依赖关系相连接。
使用构件图可将系统划分为多个内聚构件。通常,构件图中的每个构件都会在类图中有更为详细的说明。构件图表示了构件之间的依赖关系。构件之间唯一的关系是依赖关系,依赖关系要求一个类要在另一个类之前编辑。每个构件实现(支持)一些接口,并使用另一些接口。如果构件间的依赖关系与接口有关,那么构件可以被具有同样接口的其他构建替代。构件图构件之间存在依赖关系:DataAccess构件用于实现数据存取访问,对外提供接口名为SearchInDB(查询数据库,接口参数等细节省略)。Book构件实现图书的管理,对外提供SearchBook(查询图书)和ExportToXml(导出图书为XML文件)两个接口。Book构件需要使用DataAccess构件提供的接口,即构件Book依赖于DataAccess构件。
DataAccessBookSearchBookExportToXmlSearchInDB部署图:描述一个运行时的硬件结点,以及在结点上运行的软件组件的静态视图。部署图显示了系统的硬件、安装在系统上的软件以及用于连接异构的机器之间的中间件。第二节面向对象设计三、软件类设计(七)设计部署图如何阅读部署图BS客户端支持IE6亿傻姑娘和FF1.5以上版本,通过Http请求CS客户端是Windows系统,需要按.net1.1,sw.exe
是客户端程序,通过WebService与服务器通信服务器是IIS,.Net1.1各个组件之间相互依赖,通过ADO.Net
访问数据库数据库为Oracle9i部署图的主要元素•节点:它代表一个运行时的计算资源(一台实体设备),例如一台计算机、一个工作站等其它设备•节点的概念和构件有许多相同之处,例如二者有多名称,都可以参与依赖、泛化和关联关系,都可以被嵌套,都可以有实例,都可以参与交互。但它们之间也存在明显的区别:构件是参与系统执行的事物,而节点是执行构件的事物;构件表示逻辑元素的物理打包,而节点表示构件的物理部署•本图中建模了四个节点:B/S客户端、C/S客户端、IIS服务器和数据库服务器•连接:节点之间最常见的关系就是关联关系(用一根实线表示)。为了更好地表示两个节点之间的关系,我们可以通过“约束”来对连接进行描述。源节点目标节点约束(描述)含义B/S客户端IIS服务器{HTTP+Network}网络连接,使用HTTP协议C/S客户端IIS服务器{HTTP+SOAP+Network}网连接,通过WebService访问服务IIS服务器DBS服务器{ADO.NET}.NET提供的数据库访问解决方案部署图的补充元素•处理器(《process》):具有处理能力的节点,即可以执行构件•设备(《device》):没有处理能力的节点,至少是不关心其处理能力的节点。例如打印机、IC卡读写器,如果我们的系统不考虑它们内部的芯片,就可建模为设备•节点属性和操作:可以为一个节点提供处理器速度、内存容量、网卡数量等属性,可以为其提供启动、关机等操作•自定义构造型图标创建一个部署模型的目的包括:(1)探究系统投产的相关问题。(2)探究用户系统和生产环境中的其他系统的依赖关系,这些系统可能是已经存在,或是将要引入的。(3)描述一个商业应用主要的部署构件。(4)设计一个嵌入系统的硬件和软件结构。(5)描述一个组织的硬件/网络基础结构。第二节面向对象设计三、软件类设计(七)设计部署图创建部署图的一些指南如下:(1)通用准则:在特定的项目图上注明软件组件,集中在企业级图上的节点和通信关联。(2)结点和组件:用描述性术语命名结点,仅仅建模重要的软件组件,为组件一致地应用一致版型;把可视化的版型应用到结点。(3)依赖和通信关联:用版型来注明通信协议;仅仅建模组件间的关键性依赖。第二节面向对象设计三、软件类设计(六)设计构件图第二节面向对象设计三、软件类设计(八)用户界面设计、DBS设计的集成用面向对象方法进行设计类的设计时,不必太在意用户界面的设计和数据库的设计对设计类的影响。应该注意的问题:应用程序和用户界面的集成首先要求选择一个适当的设计工具,利用工具所提供的组件进行表单、报表等界面类的设计,并在应用类的方法中添加用以访问用户界面类方法的逻辑,因此应用程序类的设计应最好能和用户界面的设计结合起来考虑,这样,在设计时就能确定哪些消息发送给哪些用户界面方法。第二节面向对象设计三、软件类设计(八)用户界面设计、DBS设计的集成对数据库的访问也可以通过一系列的数据库来实现,考虑到有些面向对象语言支持直接读写数据库,二有些语言则要求提供一些对数据库接口对象的特殊调用,因此,数据库访问有可能较为复杂。为确保在设计阶段能将应用程序和数据库有机集成,重要的一点是尽早确定所要用的目标编程语言和数据库管理系统。返回本节目录四、面向对象设计原则总的原则抽象与复用(封装、信息隐藏)松耦合面向功能模块设计功能内聚的模块,避免使用全局数据模块传递的参数作数据用,并且尽可能少模块内语句数一般为50-100面向对象单一职责、开放封闭、里氏替换、依赖倒置…面向服务标准化服务合约、服务松散耦合、服务抽象、服务可复用、服务自治、服务无状态、服务可发现性和服务可组合性4.1抽象与复用模块化:模块是广泛意义上的建模元素,可以是子过程或函数、类、构件、服务、流程等。模块化强调抽象和封装。好的抽象能让人们集中精力考虑问题实质,而忽略问题中与主旨无关的次要部分。好的封装能让一个部件暴露出其最本质的内容,让人们快速理解和使用它,不让复杂性蔓延。模块化的另一个好处就是复用。不同业务流程中重复对一组数据执行同一操作,对这类数据和操作进行合理抽象和封装后,就能在多个地方进行复用,节约了成本,提高了效率。四、面向对象设计原则4.2松耦合任何事物只要相互之间存在某种关系,就意味着事物间的耦合。紧耦合:是指应用系统的各部件在功能上、数据上或结构上是紧密相连的,因而每当某个部件发生变化时,相关部分的也要随之进行部分甚至整个应用程序的调整。松耦合:面对变化则具有很好的适应能力和应变能力。耦合和内聚有着密切关系,通常高内聚就会带来松耦合。四、面向对象设计原则4.3单一职责原则SRP即内聚性原则。单一职责的模块—>单一职责的类。一个类承担的职责过多,某个职责的变化可能会削弱或者抑制该类完成其他职责的能力,并影响到构建、测试和部署等活动。多职责会导致脆弱的和不易理解的设计。职责过多的职工类四、面向对象设计原则分离职责到不同的类对“杂凑类”进行分解4.4开放封闭原则OCP软件实体(类、模块、函数等)应该是“可扩展”的,但又是“不可修改”的。“变化才是不变的真理”,但通过设计使得系统能够适应改变又能保持相对稳定,避免僵化的设计。开放-封闭原则实现两个目标:“对于扩展是开放的”(openforextension)。这意味着模块的行为是可扩展的,从而使其具有满足那些改变的新需求。“对于更改是封闭的”(closedformodification)。当对模块进行扩展时,不必改动模块的源代码或二进制代码(如dll/jar文件)。自相矛盾吗?四、面向对象设计原则什么是不封闭、不开放如下的模型可以处理月薪制(SALARIED)和时薪制(WAGED)职工工资,时薪制根据考勤卡计算。如果增加了一种新的职工类型,其计酬方式不同(如提成制),则必定要修改Employee类(即Employee是不封闭的),如果让其封闭,开放扩展又是不可能的。如何改进利用抽象机制封闭:Employee及其已有的子类是封闭的,不可改开放:可以派生新的子类,实现新的需求,可扩展4.5Liscov替换原则LSP实现OCP的主要机制是抽象和多态。怎样设计最佳的继承层次,BarbaraLiskov在1988年首次提出LSP:子类型(subtype)必须能够替换掉它们的基类型(basetype)。假设S是T的子类型,所有使用了T对象的程序(也称客户程序),用S对象替换T对象后,仍能成功执行。LSP是多态顺利实现的保证,从而使OCP成为可能。因为正是子类型的可替换性才使得使用基类的模块在无需修改的情况下就可以扩展。增加或修改任何一个子类型,基类不用修改(封闭)基类的使用者(客户程序)通过多态得到扩展或修改过的行为(开放)。四、面向对象设计原则一个使用继承的例子正方形是长方形的一种特例会发生什么情况?正方形有独特的行为方式通过覆盖父类的有关方法来实现子类行为客户程序如何能了解长方形的使用者按照长方形的特点来调用SetWidth和SetHeight两个函数,并测试面积,代码如下:voidtestArea(Rectangle&r){ r.SetWidth(5); r.SetHeight(4); assert(r.Area()==20);}如果传递进来的是Square对象又会如何呢?显然会出现断言错误,测试失败。对于客户程序来说,模型中的层次结构是脆弱的,因为违反了LSP替换原则,Square对象和Rectangle对象的行为方式不相容,这样的抽象即使采用虚函数也无法实现子类对父类的替换。违反LSP替换原则,多态的使用是不安全的。4.6依赖倒置原则DIP高层模块不应该依赖于低层模块,二者都应该依赖于抽象(也称针对抽象编程);抽象不应该依赖于细节,细节应该依赖于抽象。结构化设计时,高层模块总是依赖于低层模块。面向对象的分层模式中也是高层的类依赖于底层的类。按照自上而下的依赖关系,高层的策略设置模块往往是无法重用的,如果设法让高层模块独立于低层模块,则实现重用就变为可能。依赖倒置原则的启发式建议是“依赖于抽象”,具体做法是将高层需要的服务声明为抽象接口,高层使用这些接口,低层模块实现这些接口,使得高层不再依赖于低层,而是依赖于抽象接口,同样低层也依赖于抽象接口。传统的依赖层次高层使用低层的对象及其服务都依赖于抽象设计抽象接口,上层类使用接口,下层类实现接口这样Button类也可以得到重用,也许是开关灯,也许是开关电视,根据创建具体对象完成多态的行为。4.7合成复用原则
合成复用原则又称为组合/聚合复用原则(Composition/AggregateReusePrinciple,CARP),其定义如下:合成复用原则:尽量使用对象组合,而不是继承来达到复用的目的。
合成复用原则就是在一个新的对象里通过关联关系(包括组合关系和聚合关系)来使用一些已有的对象,使之成为新对象的一部分;新对象通过委派调用已有对象的方法达到复用功能的目的。简言之:复用时要尽量使用组合/聚合关系(关联关系),少用继承。四、面向对象设计原则4.7合成复用原则由于组合或聚合关系可以将已有的对象(也可称为成员对象)纳入到新对象中,使之成为新对象的一部分,因此新对象可以调用已有对象的功能,这样做可以使得成员对象的内部实现细节对于新对象不可见,所以这种复用又称为“黑箱”复用,相对继承关系而言,其耦合度相对较低,成员对象的变化对新对象的影响不大,可以在新对象中根据实际需要有选择性地调用成员对象的操作;合成复用可以在运行时动态进行,新对象可以动态地引用与成员对象类型相同的其他对象。4.7合成复用原则下面通过一个简单实例来加深对合成复用原则的理解:Sunny软件公司开发人员在初期的CRM系统设计中,考虑到客户数量不多,系统采用MySQL作为数据库,与数据库操作有关的类如CustomerDAO类等都需要连接数据库,连接数据库的方法getConnection()封装在DBUtil类中,由于需要重用DBUtil类的getConnection()方法,设计人员将CustomerDAO作为DBUtil类的子类,初始设计方案结构如图1所示:4.7合成复用原则下面通过一个简单实例来加深对合成复用原则的理解:图1
初始设计方案结构图4.7合成复用原则下面通过一个简单实例来加深对合成复用原则的理解:随着客户数量的增加,系统决定升级为Oracle数据库,因此需要增加一个新的OracleDBUtil类来连接Oracle数据库,由于在初始设计方案中CustomerDAO和DBUtil之间是继承关系,因此在更换数据库连接方式时需要修改CustomerDAO类的源代码,将CustomerDAO作为OracleDBUtil的子类,这将违反开闭原则。【当然也可以修改DBUtil类的源代码,同样会违反开闭原则。】
现使用合成复用原则对其进行重构。4.7合成复用原则根据合成复用原则,我们在实现复用时应该多用关联,少用继承。因此在本实例中我们可以使用关联复用来取代继承复用,重构后的结构如图2所示:图2
重构后的结构图4.7合成复用原则在图2中,CustomerDAO和DBUtil之间的关系由继承关系变为关联关系,采用依赖注入的方式将DBUtil对象注入到CustomerDAO中,可以使用构造注入,也可以使用Setter注入。如果需要对DBUtil的功能进行扩展,可以通过其子类来实现,如通过子类OracleDBUtil来连接Oracle数据库。由于CustomerDAO针对DBUtil编程,根据里氏代换原则,DBUtil子类的对象可以覆盖DBUtil对象,只需在CustomerDAO中注入子类对象即可使用子类所扩展的方法。例如在CustomerDAO中注入OracleDBUtil对象,即可实现Oracle数据库连接,原有代码无须进行修改,而且还可以很灵活地增加新的数据库连接方式。4.8接口隔离原则
接口隔离原则的含义是:建
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年黑龙江林业职业技术学院单招综合素质考试题库有答案详细解析
- 2026年日照职业技术学院单招综合素质考试题库含答案详细解析
- 2026浙江金华市浦江县教育系统招聘教师20人备考题库(夺分金卷)附答案详解
- 2026年常州工业职业技术学院单招职业适应性测试题库附答案详细解析
- 供暖上水应急预案(3篇)
- 亚运酒店营销方案(3篇)
- 南洋贵族营销方案(3篇)
- 2026年上海市高职单招综合素质考试题库含答案详细解析
- 保山开业营销方案(3篇)
- 大宗商品营销方案(3篇)
- 诺瓦星云SHL测评题库
- 水电站春节安全生产培训
- 软硬件测试方案
- 语文教育与学生心理健康
- 中央空调施工安全培训
- 英语四级词汇加例句
- 四级翻译句子及答案
- 中学语文拟写人物短评课件
- 四川大学成人教育 《工程估价》 期末考试复习题及参考答案
- GB/T 41498-2022纤维增强塑料复合材料用剪切框测定面内剪切应力/剪切应变响应和剪切模量的试验方法
- 博弈策略的生活解读 课件
评论
0/150
提交评论