《《软件工程教学课件》06-类的详细设计.pptx》由会员分享,可在线阅读,更多相关《《软件工程教学课件》06-类的详细设计.pptx(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、大连理工大学软件学院软件工程2023/2/12大连理工大学软件学院2第第6章章 类的详细设计类的详细设计详细设计是以概要设计说明书作为基础,完成各详细设计是以概要设计说明书作为基础,完成各模块的算法设计、用户界面设计以及数据结构设模块的算法设计、用户界面设计以及数据结构设计的细化等计的细化等。对于开发者来说详细设计的主要工作就是在每个对于开发者来说详细设计的主要工作就是在每个类的方法中补充对应的业务类的方法中补充对应的业务实现。实现。类中方法的类中方法的设计设计,使用状态图对类使用状态图对类的的行为,使用行为,使用OCL对类的对类的实现细节进行准确实现细节进行准确定义。定义。详细设计的主要活动
2、详细设计的主要活动为每个模块进行详细的为每个模块进行详细的算法设计算法设计。用某种图形、。用某种图形、表格、语言等工具将每个模块处理过程的详细算表格、语言等工具将每个模块处理过程的详细算法描述出来。法描述出来。为模块内的为模块内的数据结构数据结构进行设计。对于需求分析、进行设计。对于需求分析、概要设计确定的概念性的数据类型进行确切的定概要设计确定的概念性的数据类型进行确切的定义。义。为数据结构进行物理设计,即确定为数据结构进行物理设计,即确定数据库的物理数据库的物理结构结构。物理结构主要指数据库的存储记录格式、。物理结构主要指数据库的存储记录格式、存储记录安排和存储方法,这些都依赖于具体所存储
3、记录安排和存储方法,这些都依赖于具体所使用的数据库系统使用的数据库系统。2023/2/12大连理工大学软件学院3详细设计的主要活动详细设计的主要活动其他其他设计设计:根据软件系统的类型,还可能:根据软件系统的类型,还可能要进行以下设计:输入要进行以下设计:输入/输出格式设计;人输出格式设计;人机对话设计;对于一个实时系统,用户与机对话设计;对于一个实时系统,用户与计算机频繁对话,因此要进行对话方式、计算机频繁对话,因此要进行对话方式、内容、格式的具体设计等。内容、格式的具体设计等。编写编写详细设计说明书详细设计说明书。评审评审。对处理过程的算法和数据库的物理。对处理过程的算法和数据库的物理结构
4、结构等进行等进行评审评审。2023/2/12大连理工大学软件学院4类方法的详细设计类方法的详细设计结构化的程序结构化的程序如果程序如果程序的代码的代码块仅仅通过顺序、块仅仅通过顺序、选择和选择和循环三循环三种种控制结构进行连控制结构进行连接,并且每个代接,并且每个代码块只有一个入码块只有一个入口和一个出口,口和一个出口,则称这个程序是则称这个程序是结构化的结构化的。2023/2/12大连理工大学软件学院5非非结构化程结构化程序设计序设计目的是简化设计过程,仅使用有限的可预测的操作目的是简化设计过程,仅使用有限的可预测的操作即可完成相应的算法流程即可完成相应的算法流程图形设计工具图形设计工具程序
5、流程图程序流程图(flowchart)简单、直观、易于简单、直观、易于学习学习2023/2/12大连理工大学软件学院6应尽量保持结构化的特点,应尽量保持结构化的特点,限制控制流的随意跳限制控制流的随意跳转转适当使用适当使用goto、break、continue等语句等语句图形设计工具图形设计工具盒图盒图(NS)一种符合结构化程一种符合结构化程序设计原则的图形序设计原则的图形描述描述工具工具不不允许随意跳转允许随意跳转通过组合嵌套方式通过组合嵌套方式构成更大的构成更大的“盒子盒子”复杂逻辑绘制繁琐复杂逻辑绘制繁琐2023/2/12大连理工大学软件学院7图形设计工具图形设计工具问题分析图问题分析图
6、(PAD)使用使用二维树形二维树形结构的图来表结构的图来表示程序的控制示程序的控制流流,绘制方便,绘制方便结构清晰,翻结构清晰,翻译到代码较为译到代码较为容易容易2023/2/12大连理工大学软件学院8表格工具表格工具判定表判定表是一种进行详细设计的表格工具,又称为是一种进行详细设计的表格工具,又称为决策决策表。表。判定表适用于描述判断条件较多,各条件又相互组合、判定表适用于描述判断条件较多,各条件又相互组合、有多种决策方案的情况有多种决策方案的情况。判定表有着准确而又简洁的描述方式,能够将复杂的判定表有着准确而又简洁的描述方式,能够将复杂的条件组合与对应的执行动作相对应条件组合与对应的执行动
7、作相对应。例如:某工厂机器维修的方式:对功率大于例如:某工厂机器维修的方式:对功率大于50马力的马力的机器或已运行机器或已运行10年以上的机器,应送到专业的维修公年以上的机器,应送到专业的维修公司处理;否则如果功率小于司处理;否则如果功率小于20马力,并且有维修记录,马力,并且有维修记录,则在车间维修;否则送到本厂的维修中心维修。则在车间维修;否则送到本厂的维修中心维修。2023/2/12大连理工大学软件学院9判定表示例判定表示例规则规则#12345678910 11 12机器功率机器功率wAAAABBBBCCCC运行时长运行时长10年年?YYNNYYNNYYNN有维修记录有维修记录YNNYY
8、NNYYNNY送外维修送外维修 本厂维修本厂维修 本车间维修本车间维修2023/2/12大连理工大学软件学院10判定表构成判定表构成判定表有判定表有4个部分构成,分别是个部分构成,分别是条件列表、条件组合、条件列表、条件组合、动作列表及动作动作列表及动作入口入口;每个每个条件对应一个变量、关系或者预测,如上例中的条件对应一个变量、关系或者预测,如上例中的机器功率、运行时长、维修记录机器功率、运行时长、维修记录;条件条件组合是各种条件可能取值的所有组合,如果每个组合是各种条件可能取值的所有组合,如果每个条件有真假两种取值,则条件有真假两种取值,则n个条件的取值组合数量为个条件的取值组合数量为2n
9、个;个;动作动作指要执行的过程或操作列表,如上例中的送外修指要执行的过程或操作列表,如上例中的送外修或者送本厂维修中心或者送本厂维修中心;动作动作入口指某个条件组合下与动作的对应,与条件组入口指某个条件组合下与动作的对应,与条件组合一起构成了判定表的一列,也叫做规则。合一起构成了判定表的一列,也叫做规则。2023/2/12大连理工大学软件学院11判定表化简判定表化简2023/2/12大连理工大学软件学院12规则规则#12345机器功率机器功率wABCB运行时长运行时长=0以上方法会使类图不够简洁,而且复杂业务规则以上方法会使类图不够简洁,而且复杂业务规则也不能清晰描述,因此引入了也不能清晰描述
10、,因此引入了OCL。这里引入一个新的类图作为例子:这里引入一个新的类图作为例子:2023/2/12大连理工大学软件学院312023/2/12大连理工大学软件学院32关联类,只关联类,只与其对与其对应的一个学生对象应的一个学生对象和一个课程对象具和一个课程对象具有联系。有联系。学学号要求至少五位数字长,并且构成学号的数字号要求至少五位数字长,并且构成学号的数字要大于或等于要大于或等于10000。若使用。若使用OCL进行进行描述:描述:context Student inv regStudentId:self.stuId=10000关键字关键字context表明此段表明此段OCL的描述与哪些的描述
11、与哪些UML对对象或类相关象或类相关。关键字关键字inv表示这是不变的(表示这是不变的(invariant),也就是),也就是说所有的说所有的Student对象都要遵守这个对象都要遵守这个约束约束self关键字指关键字指的是对的是对context对象对象的引用,正如在的引用,正如在Java中的中的this或或C+中的中的*this的作用一样的作用一样。context s:Student inv:s.stuId=100002023/2/12大连理工大学软件学院33将将OCL同样以包的形式进行组织同样以包的形式进行组织,便于使用和管,便于使用和管理:理:package com:myCompany:
12、mySWcontext Student inv:context Student inv:endpackage除了实例变量的约束外,除了实例变量的约束外,OCL同样可以对实例的同样可以对实例的方法方法进行,描述方法执行的条件,如未休学的学进行,描述方法执行的条件,如未休学的学生至少要选择一门课程:生至少要选择一门课程:context Student:selectedLectures():Integerpre stustatus:self.freesemester=falsepost selectedLectures:result 02023/2/12大连理工大学软件学院34当该生选择了一门之前没
13、有学过的课程时,该生当该生选择了一门之前没有学过的课程时,该生选课总数加选课总数加一:一:context Student:registerLecture(v:Lecture)pre:notSelected(v)post:self.selectedLectures()pre=self.selectedLectures()1pre表示引用的是方法执行表示引用的是方法执行之前的之前的状态值。状态值。2023/2/12大连理工大学软件学院35类型名类型名取值示例取值示例相关方法相关方法Booleantrue,falseand,or,xor,notimplies,ifthenelseendifInteg
14、er1,-2,50,464646*,+,-,/,abs()Real3.14,42.42,-99.99*,+,-,/,floor()StringHello,Dalian,Concat(),size(),substring()某门课的授课教授在上课时是不能在国外某门课的授课教授在上课时是不能在国外的:的:context Lecture inv:self.status=Lecturestatus:runningimpliesnot 关键字关键字implies表示表示“if-then”的条件的条件说明。说明。对于一个结课的课程成绩要求分数在对于一个结课的课程成绩要求分数在1-5之间,可之间,可以进行如
15、下的描述以进行如下的描述:context Examination inv:self.selectedLecture.status=Lecturestatus:closed implies(self.note=1.0 and self.note method(parameter)一个学生一个学生在一在一个学期内最多可以选择个学期内最多可以选择12门门课程:课程:context Student inv:Student.selectedLecture-select(s|s.status=Lecturestatus:running)-size()exists(p|p.note=60=Theory)要求
16、方法要求方法passedLectures()返回的所有课程必须是返回的所有课程必须是已经修过的已经修过的课程:课程:context Student:passedLectures():Collectionpost:result=self.examination-select(p|p.note=60)-iterate(p:Examination;res:Collection=Collection|res-including(p.selectedLecture)2023/2/12大连理工大学软件学院38OCL小结小结以以OCL作为约束的构建时,如果有一些编作为约束的构建时,如果有一些编程经验会使其这个构建过程变得简单程经验会使其这个构建过程变得简单。OCL是一种条件约束语言,因此并不能直是一种条件约束语言,因此并不能直接从接从OCL翻译到具体的代码实现翻译到具体的代码实现;又又由于由于OCL是一种描述性语言,因此对于是一种描述性语言,因此对于建模来说可视情况进行指定,并不需要强建模来说可视情况进行指定,并不需要强制给出。制给出。2023/2/12大连理工大学软件学院392023/2/12大连理工大学软件学院40作业作业习题习题16(P111)