类的详细设计.pptx

大连理工大学软件学院;2015-11-27;详细设计的主要活动;详细设计的主要活动;类方法的详细设计;图形设计工具;2015-11-27;2015-11-27;2015-11-27;图形设计工具;图形设计工具;2015-11-27;2015-11-27;图形设计工具;2015-11-27;表格工具;判定表示例;判定表构成;判定表化简;2015-11-27;2015-11-27;判定树;判定树;语言工具;PDL特点;PDL示例;类的详细设计;状态图;状态图的基本结构;状态;状态转换;;类Project的状态;状态图的扩展;2015-11-27;对象状态也可能是由多个互不依赖的子状态构成的。 每种可能的行为变化,可使用独立的状态图分别进行描述。 每个子状态图相互独立,组合在一起又构成了一个全局的状态。 使用并行的组合方式减轻状态图的描述负担。;并行状态的考虑;带有时间控制的状态图,可以将间隔时间或发生的次数作为条件和动作执行的依据。 ;状态图应用;状态图应用;2015-11-27;操作界面的状态描述;对象约束语言;2015-11-27;学号要求至少五位数字长,并且构成学号的数字要大于或等于10000。若使用OCL进行描述: context Student inv regStudentId: self.stuId = 10000 关键字context表明此段OCL的描述与哪些UML对象或类相关。 关键字inv表示这是不变的(invariant),也就是说所有的Student对象都要遵守这个约束 self关键字指的是对context对象的引用,正如在Java中的this或C++中的*this的作用一样。 context s:Student inv: s.stuId = 10000 ;将OCL同样以包的形式进行组织,便于使用和管理: package com::myCompany::mySW context Student inv: context Student inv: endpackage 除了实例变量的约束外,OCL同样可以对实例的方法进行约束,描述方法执行的条件,如未休学的学生至少要选择一门课程: context Student::selectedLectures(): Integer pre stustatus: self.freesemester = false post selectedLectures: result 0 ;当该生选择了一门之前没有学过的课程时,该生选课总数加一: context Student::registerLecture(v: Lecture) pre: notSelected(v) post: self.selectedLectures()@pre = self.selectedLectures() – 1 @pre表示引用的是方法执行之前的状态值。;某门课的授课教授在上课时是不能在国外的: context Lecture inv: self.status = Lecturestatus::running implies not self.prof.inForeign 关键字implies表示“if-then”的条件说明。 对于一个结课的课程成绩要求分数在1-5之间,可以进行如下的描述: context Examination inv: self.selectedLecture.status = Lecturestatus::closed implies (self.note = 1.0 and self.note = 5.0) ;OCL目前只支持一些标准集合类型,如Collection、Set、OrderedSet、Sequence以及Bag。 collection - method(parameter) //使用集合的方法 一个学生在一个学期内最多可以选择12门课程: context Student inv: Student.selectedLecture - select (s | s.status = Lecturestatus::running) - size() = 12 竖线前的s变量为一个循环变量,用于遍历集合student.selectedLecture中的每一个元素。 返回来的集合又进一步使用了size()方法,提供所含元素数量的整型值。;如果在已考试的课程中存在“理论”课程,则方法hasTheoryLect()返回真值: context Student::hasTheoryLect():Boolean post: result = self.examination - exists( p

文档评论(0)

1亿VIP精品文档

相关文档