《软件工程教学》06_类的详细设计_第1页
《软件工程教学》06_类的详细设计_第2页
《软件工程教学》06_类的详细设计_第3页
《软件工程教学》06_类的详细设计_第4页
《软件工程教学》06_类的详细设计_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、大连理工大学软件学院软件工程2022-3-8整理课件2第第6章章 类的详细设计类的详细设计 详细设计是以概要设计说明书作为基础,完成各详细设计是以概要设计说明书作为基础,完成各模块的算法设计、用户界面设计以及数据结构设模块的算法设计、用户界面设计以及数据结构设计的细化等计的细化等。 对于开发者来说详细设计的主要工作就是在每个对于开发者来说详细设计的主要工作就是在每个类的方法中补充对应的业务类的方法中补充对应的业务实现。实现。 类中方法的类中方法的设计设计,使用状态图对类使用状态图对类的的行为,使用行为,使用OCL对类的对类的实现细节进行准确实现细节进行准确定义。定义。详细设计的主要活动详细设计

2、的主要活动 为每个模块进行详细的为每个模块进行详细的算法设计算法设计。用某种图形、。用某种图形、表格、语言等工具将每个模块处理过程的详细算表格、语言等工具将每个模块处理过程的详细算法描述出来。法描述出来。 为模块内的为模块内的数据结构数据结构进行设计。对于需求分析、进行设计。对于需求分析、概要设计确定的概念性的数据类型进行确切的定概要设计确定的概念性的数据类型进行确切的定义。义。 为数据结构进行物理设计,即确定为数据结构进行物理设计,即确定数据库的物理数据库的物理结构结构。物理结构主要指数据库的存储记录格式、。物理结构主要指数据库的存储记录格式、存储记录安排和存储方法,这些都依赖于具体所存储记

3、录安排和存储方法,这些都依赖于具体所使用的数据库系统使用的数据库系统。2022-3-8整理课件3详细设计的主要活动详细设计的主要活动 其他其他设计设计:根据软件系统的类型,还可能:根据软件系统的类型,还可能要进行以下设计:输入要进行以下设计:输入/输出格式设计;人输出格式设计;人机对话设计;对于一个实时系统,用户与机对话设计;对于一个实时系统,用户与计算机频繁对话,因此要进行对话方式、计算机频繁对话,因此要进行对话方式、内容、格式的具体设计等。内容、格式的具体设计等。 编写编写详细设计说明书详细设计说明书。 评审评审。对处理过程的算法和数据库的物理。对处理过程的算法和数据库的物理结构结构等进行

4、等进行评审评审。2022-3-8整理课件4类方法的详细设计类方法的详细设计 结构化的程序结构化的程序如果程序如果程序的代码的代码块仅仅通过顺序块仅仅通过顺序、选择和、选择和循环三循环三种控制结构进行种控制结构进行连接,并且每个连接,并且每个代码块只有一个代码块只有一个入口和一个出口入口和一个出口,则称这个程序,则称这个程序是结构化的是结构化的。2022-3-8整理课件5非非结构化程结构化程序设计序设计 目的是简化设计过程,仅使用有限的可预测的操作目的是简化设计过程,仅使用有限的可预测的操作即可完成相应的算法流程即可完成相应的算法流程图形设计工具图形设计工具 程序流程图程序流程图(flowcha

5、rt) 简单、直观、易于简单、直观、易于学习学习2022-3-8整理课件6应尽量保持结构化的特点,应尽量保持结构化的特点,限制控制流的随意跳限制控制流的随意跳转转适当使用适当使用goto、break、continue等语句等语句图形设计工具图形设计工具 盒图盒图(NS) 一种符合结构化一种符合结构化程序设计原则的程序设计原则的图形描述图形描述工具工具 不不允许随意跳转允许随意跳转 通过组合嵌套方通过组合嵌套方式构成更大的式构成更大的“盒子盒子” 复杂逻辑绘制繁复杂逻辑绘制繁琐琐2022-3-8整理课件7图形设计工具图形设计工具 问题分析图问题分析图(PAD) 使用使用二维树形二维树形结构的图来

6、表结构的图来表示程序的控制示程序的控制流流,绘制方便,绘制方便 结构清晰,翻结构清晰,翻译到代码较为译到代码较为容易容易2022-3-8整理课件8表格工具表格工具 判定表判定表是一种进行详细设计的表格工具,又称为是一种进行详细设计的表格工具,又称为决策决策表。表。 判定表适用于描述判断条件较多,各条件又相互组合判定表适用于描述判断条件较多,各条件又相互组合、有多种决策方案的情况、有多种决策方案的情况。 判定表有着准确而又简洁的描述方式,能够将复杂的判定表有着准确而又简洁的描述方式,能够将复杂的条件组合与对应的执行动作相对应条件组合与对应的执行动作相对应。 例如:某工厂机器维修的方式:对功率大于

7、例如:某工厂机器维修的方式:对功率大于50马力的马力的机器或已运行机器或已运行10年以上的机器,应送到专业的维修公年以上的机器,应送到专业的维修公司处理;否则如果功率小于司处理;否则如果功率小于20马力,并且有维修记录马力,并且有维修记录,则在车间维修;否则送到本厂的维修中心维修。,则在车间维修;否则送到本厂的维修中心维修。2022-3-8整理课件9判定表示例判定表示例规则规则#12345678910 11 12机器功率机器功率wAAAABBBBCCCC运行时长运行时长10年?年? YYNNYYNNYYNN有维修记录有维修记录YNNYYNNYYNNY送外维修送外维修 本厂维修本厂维修 本车间维

8、修本车间维修2022-3-8整理课件10:50,:20,: 2050AwBwCw判定表构成判定表构成 判定表有判定表有4个部分构成,分别是个部分构成,分别是条件列表、条件组合条件列表、条件组合、动作列表及动作、动作列表及动作入口入口; 每个每个条件对应一个变量、关系或者预测,如上例中的条件对应一个变量、关系或者预测,如上例中的机器功率、运行时长、维修记录机器功率、运行时长、维修记录; 条件条件组合是各种条件可能取值的所有组合,如果每个组合是各种条件可能取值的所有组合,如果每个条件有真假两种取值,则条件有真假两种取值,则n个条件的取值组合数量为个条件的取值组合数量为2n个;个; 动作动作指要执行

9、的过程或操作列表,如上例中的送外修指要执行的过程或操作列表,如上例中的送外修或者送本厂维修中心或者送本厂维修中心; 动作动作入口指某个条件组合下与动作的对应,与条件组入口指某个条件组合下与动作的对应,与条件组合一起构成了判定表的一列,也叫做规则。合一起构成了判定表的一列,也叫做规则。2022-3-8整理课件11判定表化简判定表化简2022-3-8整理课件12规则规则#12345机器功率机器功率wABCB运行时长运行时长10年?年?NYNNN有维修记录有维修记录NY送外维修送外维修本厂维修本厂维修本车间维修本车间维修:50,:20,: 2050AwBwCw 使用使用“”来表来表示对此条件的不示对

10、此条件的不关心或关心或不适用不适用 任意两个条件组任意两个条件组合合之间不能之间不能有有交交集集判定树判定树 判定表判定表虽能表示虽能表示复杂的条件组合复杂的条件组合与与动作动作之间的对应关系,但其含义却之间的对应关系,但其含义却不是一目了然,理解它不是一目了然,理解它也要也要有一个有一个学习过程学习过程。 当当数据数据元素值元素值多于两个时多于两个时(如功率(如功率),判定表的简洁程度也将下降),判定表的简洁程度也将下降。2022-3-8整理课件13运行时长(50W2020=w=0.5s左键按下选中对象soand time0.5s左键按下状态图应用状态图应用 点火器组件能够点火器组件能够发出

11、发出start和和end信号信号;自动控制器能够;自动控制器能够发发出出on和和off信号信号;离合器能够;离合器能够发出空转或者负载的信号发出空转或者负载的信号。 外部温度通过传感器连续测量,存于本地外部温度通过传感器连续测量,存于本地温度变量中温度变量中。 启启停控制器本身会产生信号停控制器本身会产生信号motor_on和和motor_off,并作,并作为动作输入给电机控制器。为动作输入给电机控制器。2022-3-8整理课件282022-3-8整理课件29待机节能运转自动启停行进启动工作中静止end/ motor_off负载/motor_on空转3温度= 0 以上方法会使类图不够简洁,而且

12、复杂业务规则以上方法会使类图不够简洁,而且复杂业务规则也不能清晰描述,因此引入了也不能清晰描述,因此引入了OCL。 这里引入一个新的类图作为例子:这里引入一个新的类图作为例子:2022-3-8整理课件312022-3-8整理课件32 正常 结课 取消课程状态课程状态-姓名 : String-学号 : int-专业 : String-是否修学期 : boolean+课程注册(v : 课程) : void+考核合格课程() : ArrayList+已选课程数() : int+是否已选(v : 课程) : boolean+是否理论课程已通过() : boolean学生学生-日期 : Date-分数

13、: double学习情况学习情况-课程名 : String-状态 : 课程状态课程课程-名字 : String-是否出国 : boolean教授教授1*-选课学生-所选课程3.*讲授选课关联类,只关联类,只与其对与其对应的一个学生对象应的一个学生对象和一个课程对象具和一个课程对象具有联系。有联系。 学学号要求至少五位数字长,并且构成学号的数字号要求至少五位数字长,并且构成学号的数字要大于或等于要大于或等于10000。若使用。若使用OCL进行进行描述:描述:context Student inv regStudentId:self.stuId = 10000 关键字关键字context表明此段表

14、明此段OCL的描述与哪些的描述与哪些UML对对象或类相关象或类相关。 关键字关键字inv表示这是不变的(表示这是不变的(invariant),也就是),也就是说所有的说所有的Student对象都要遵守这个对象都要遵守这个约束约束 self关键字指关键字指的是对的是对context对象对象的引用,正如在的引用,正如在Java中的中的this或或C+中的中的*this的作用一样的作用一样。context s:Student inv:s.stuId = 100002022-3-8整理课件33 将将OCL同样以包的形式进行组织同样以包的形式进行组织,便于使用和管,便于使用和管理:理:package c

15、om:myCompany:mySWcontext Student inv:context Student inv:endpackage 除了实例变量的约束外,除了实例变量的约束外,OCL同样可以对实例的同样可以对实例的方法方法进行,描述方法执行的条件,如未休学的学进行,描述方法执行的条件,如未休学的学生至少要选择一门课程:生至少要选择一门课程:context Student:selectedLectures(): Integerpre stustatus: self.freesemester = falsepost selectedLectures: result 02022-3-8整理课件3

16、4 当该生选择了一门之前没有学过的课程时,该生当该生选择了一门之前没有学过的课程时,该生选课总数加选课总数加一:一:context Student:registerLecture(v: Lecture)pre: notSelected(v)post: self.selectedLectures()pre = self.selectedLectures() 1 pre表示引用的是方法执行表示引用的是方法执行之前的之前的状态值。状态值。2022-3-8整理课件35类型名类型名取值示例取值示例相关方法相关方法Booleantrue,falseand,or,xor,notimplies,ifthene

17、lseendifInteger1,-2,50,464646*,+,-,/,abs()Real3.14,42.42,-99.99 *,+,-,/,floor()StringHello,Dalian, Concat(),size(),substring() 某门课的授课教授在上课时是不能在国外某门课的授课教授在上课时是不能在国外的:的:context Lecture inv: = Lecturestatus:runningimpliesnot 关键字关键字implies表示表示“if-then”的条件的条件说明。说明。 对于一个结课的课程成绩要求分数在对于一个结课的课程成绩要求分数在1-5之间,可

18、之间,可以进行如下的描述以进行如下的描述:context Examination inv:self.selectedLecture.status = Lecturestatus:closed implies(self.note = 1.0 and self.note method(parameter) 一个学生一个学生在一在一个学期内最多可以选择个学期内最多可以选择12门门课程:课程:context Student inv:- select (s | s.status = Lecturestatus:running)- size() exists( p | p.note = 60 =Theory) 要求方法要求方法passedLectures()返回的所有课程必须是返回的所有课程必须是已经修过的已经修过的课程:课程:context Student:passedLectures():Collectionpost- select( p | p.note=60) - iterate(p:Examination; res: Collection =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论