版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、大连理工大学软件学院软件工程;2022-4-29;2第第4章章 类的概要设计类的概要设计 对未来系统的功能进展总体上的概括并运用对未来系统的功能进展总体上的概括并运用UML的类图进展表达。的类图进展表达。 在开场阶段粗略的对模型进展构建,后续再经过在开场阶段粗略的对模型进展构建,后续再经过迭代逐级详细化,是一个逐渐求精的设计过程。迭代逐级详细化,是一个逐渐求精的设计过程。 初始类图要覆盖一切需求的功能,并经过优化尽初始类图要覆盖一切需求的功能,并经过优化尽量坚持业务构造的稳定,然后经过修订和丰富细量坚持业务构造的稳定,然后经过修订和丰富细节逐渐过渡到详细设计,并最终转化为胜利的物节逐渐过渡到详
2、细设计,并最终转化为胜利的物理实现。理实现。2022-4-29;3系统架构系统架构 概要设计要满足系统架构方面的要求。概要设计要满足系统架构方面的要求。 系统架构的约束和其它在非功能性需求在概要设系统架构的约束和其它在非功能性需求在概要设计中要同时思索,以保证未来的系统可以满足这计中要同时思索,以保证未来的系统可以满足这些要求。些要求。 指定的硬件指定的硬件 指定的操作系统指定的操作系统 指定的中间件指定的中间件 指定的接口或编程言语指定的接口或编程言语 指定的耐久化框架指定的耐久化框架 等等根本类确实定根本类确实定 设计阶段的主要义务是从需求分析阶段的设计阶段的主要义务是从需求分析阶段的规格
3、阐明出发,对系统进展模型表示并优规格阐明出发,对系统进展模型表示并优化。化。 面向对象的概要设计首先寻觅系统中参与面向对象的概要设计首先寻觅系统中参与业务处置的对象和类。业务处置的对象和类。 然后运用类图然后运用类图Class Diagram将系统中将系统中不同的类笼统出来描画系统的静态构造,不同的类笼统出来描画系统的静态构造,包括类以及它们之间的关系。包括类以及它们之间的关系。2022-4-29;4类及其种类类及其种类在系统分析与设计阶段,类通常可以分为三种,分别是实体类在系统分析与设计阶段,类通常可以分为三种,分别是实体类Entity Class、控制类、控制类Control Class和
4、边境类和边境类Boundary Class:实体类:对应需求中的实体,通常需求永久保管,普通运用数实体类:对应需求中的实体,通常需求永久保管,普通运用数据库表或文件来记录,既包括存储和传送数据的类,还包括操据库表或文件来记录,既包括存储和传送数据的类,还包括操作数据的类。名词作数据的类。名词控制类:用于表达运用程序的执行逻辑,提供相应的业务操作控制类:用于表达运用程序的执行逻辑,提供相应的业务操作,笼统控制类可以降低界面和数据库之间的耦合度。控制类有,笼统控制类可以降低界面和数据库之间的耦合度。控制类有时也称为管理类。动宾时也称为管理类。动宾边境类:边境类用于对外部用户与系统之间的交互对象进展
5、笼边境类:边境类用于对外部用户与系统之间的交互对象进展笼统,主要包括界面类,如对话框、窗口、菜单等。统,主要包括界面类,如对话框、窗口、菜单等。在分析设计初始,通常首先识别出实体类,绘制初始类图,也在分析设计初始,通常首先识别出实体类,绘制初始类图,也可称为领域模型。可称为领域模型。2022-4-29;5类的识别类的识别 类的寻觅和细化是迭代的过程,不断补充新类及类的寻觅和细化是迭代的过程,不断补充新类及信息并逐渐扩展,最后开展为更多的类和实例变信息并逐渐扩展,最后开展为更多的类和实例变量。量。 需求规格阐明书是寻觅业务类的直接来源。需求规格阐明书是寻觅业务类的直接来源。 一种比较快速而适用的
6、分析方法是按照语法分析一种比较快速而适用的分析方法是按照语法分析的方式将名词作为对象的候选,描画词作为属性的方式将名词作为对象的候选,描画词作为属性实例变量的候选进展重点关注。实例变量的候选进展重点关注。 业务术语词汇表也是类信息的重要来源,这些与业务术语词汇表也是类信息的重要来源,这些与业务术语相关的类通常为实体类。业务术语相关的类通常为实体类。2022-4-29;6举例举例 R1.1 工程创建:在工程编辑中系统必需提供应用工程创建:在工程编辑中系统必需提供应用户新工程的创建以及为其指定详细工程信息的功户新工程的创建以及为其指定详细工程信息的功能。能。 词汇词汇“工程信息:自动生成的独一工程
7、编号、工工程信息:自动生成的独一工程编号、工程称号、工程起止时间、估计任务量。程称号、工程起止时间、估计任务量。 在初次的迭代中主要关注的是类及其属性。经过在初次的迭代中主要关注的是类及其属性。经过以上需求和词汇描画的分析,下面的内容会被首以上需求和词汇描画的分析,下面的内容会被首先识别出来:工程类,含有工程编号、工程称号先识别出来:工程类,含有工程编号、工程称号、工程起止时间以及估计任务量等属性。、工程起止时间以及估计任务量等属性。2022-4-29;7 R1.4 子工程创建:工程选定后,系统需求提供应子工程创建:工程选定后,系统需求提供应用户为所选工程创建子工程的时机。用户为所选工程创建子
8、工程的时机。 子工程为工程的一个实例变量,并最终能够成为子工程为工程的一个实例变量,并最终能够成为一个新的子工程类,可以将其暂记为一个备选类一个新的子工程类,可以将其暂记为一个备选类。 R1.5 子工程与工程:在工程编辑过程中,系统对子工程与工程:在工程编辑过程中,系统对子工程的处置方式与工程应该是一样的,对工程子工程的处置方式与工程应该是一样的,对工程提供的编辑功能子工程也必需具有。提供的编辑功能子工程也必需具有。 子工程与工程是同义词,所以子工程不需求单独子工程与工程是同义词,所以子工程不需求单独设置一个类而存在。设置一个类而存在。 对于同义词有对于同义词有“异形同义的情况,还有异形同义的
9、情况,还有“同形异同形异义的情况,这在需求分析阶段曾经进展了标识义的情况,这在需求分析阶段曾经进展了标识。2022-4-29;8 R1.6 工程数据编辑:工程选定后,系统应提供应用工程数据编辑:工程选定后,系统应提供应用户对该工程数据编辑的功能,包括实践开场时间、最户对该工程数据编辑的功能,包括实践开场时间、最新计算出的终了时间、估计任务量以及工程备注等。新计算出的终了时间、估计任务量以及工程备注等。 可发现以下信息:工程类的实例变量还应包括实践开可发现以下信息:工程类的实例变量还应包括实践开场时间、最新计算的终了时间、备注。场时间、最新计算的终了时间、备注。 R1.7 工程义务添加:工程选定
10、后,系统必需提供应工程义务添加:工程选定后,系统必需提供应用户对该工程添加详细义务的定义,包括:义务称号用户对该工程添加详细义务的定义,包括:义务称号、方案开场和终了时间、人员安排以及该义务的估计、方案开场和终了时间、人员安排以及该义务的估计任务量等内容。任务量等内容。 词汇词汇“工程义务:工程中包含的原子义务,具有称工程义务:工程中包含的原子义务,具有称号以及与详细的责任人对应,具有可量化的任务量比号以及与详细的责任人对应,具有可量化的任务量比例,具有方案与实践任务量、方案与实践的开场和终例,具有方案与实践任务量、方案与实践的开场和终了时间以及完成进度等属性,是不可再分的工程管理了时间以及完
11、成进度等属性,是不可再分的工程管理单元。单元。2022-4-29;9 词汇词汇“完成进度:每次编辑操作后对工程义务的完成进度经过完成进度:每次编辑操作后对工程义务的完成进度经过百分数进展标识。此数字在普通情况下应呈一种递增的线性的增百分数进展标识。此数字在普通情况下应呈一种递增的线性的增长方式。工程的进度是根据其子工程以及义务的进度,以估计任长方式。工程的进度是根据其子工程以及义务的进度,以估计任务量值作为权重计算出来的。务量值作为权重计算出来的。 词汇词汇“任务量:每次编辑操作为工程义务记录此义务破费的时任务量:每次编辑操作为工程义务记录此义务破费的时间小时。整个工程的任务量根据每个子工程和
12、义务的任务量间小时。整个工程的任务量根据每个子工程和义务的任务量进展核算。进展核算。 发现的信息:工程类的发现的信息:工程类的“义务属性、工程义务新类及其属性:义务属性、工程义务新类及其属性:称号、责任人、任务量比例、方案的任务量、实践任务量、方案称号、责任人、任务量比例、方案的任务量、实践任务量、方案和实践的开场时间、方案和实践的终了时间、完成进度比例。和实践的开场时间、方案和实践的终了时间、完成进度比例。 工程类的实例对象同样也具有完成进度比例以及实践任务量等属工程类的实例对象同样也具有完成进度比例以及实践任务量等属性,即使它的值可以经过其它相关子工程或者子义务完全计算出性,即使它的值可以
13、经过其它相关子工程或者子义务完全计算出来。把这样的属性称为依赖属性。对于工程属性来。把这样的属性称为依赖属性。对于工程属性“义务的另外义务的另外的特殊之处在于其取值的数量可以是多个或者在少数的时候取空的特殊之处在于其取值的数量可以是多个或者在少数的时候取空值,不像其它属性只能取一个单一的值。值,不像其它属性只能取一个单一的值。2022-4-29;10初始类图初始类图 类名类名 实例变量实例变量 可见性可见性 +, -, *, 依赖计算属依赖计算属性性 类型可忽略类型可忽略 UML预定义预定义 编程言语提供编程言语提供2022-4-29;11-projectNo : int-projectNam
14、e : String-startPlanned : Date-endPlanned : Date-effortPlanned : int-subprojects : Collection(Project)-startReal : Date-endReal : Date-comment : String-tasks : Collection(ProjectTask)- / compeletePct : int- / effortReal : int-predecessor : Collection(Project)Project-TaskName : String-pInCharge : Emp
15、loyee-laborShare : int-startPlanned : Date-endPlanned : Date-effortPlanned : int-startReal : Date-endReal : Date-effortReal : int-compeletePct : intProjectTask类的关系类的关系 关联关系关联关系, Association, 静态,拥有静态,拥有 导航方向导航方向, Navigation 依赖关系依赖关系, Dependency 应防止双向应防止双向依赖依赖2022-4-29;12-projectNo : int-projectName :
16、 String-startPlanned : Date-endPlanned : Date-effortPlanned : int-startReal : Date-endReal : Date-comment : String- / compeletePct : int- / effortReal : intProject-TaskName : String-laborShare : int-startPlanned : Date-endPlanned : Date-effortPlanned : int-startReal : Date-endReal : Date-effortReal
17、: int-compeletePct : intProjectTaskEmployee-pInCharge*1-subprojects0.1*-tasks0.1*-predecessor*属性属性“义务其实无需显式的给出,由义务其实无需显式的给出,由于它可以间接的经过与义务类之间的关于它可以间接的经过与义务类之间的关联关系进展表达。联关系进展表达。自反关联自反关联reflexiveClass or String?关联关系的基数多重性关联关系的基数多重性 “*:恣意多个包括:恣意多个包括0个对象个对象 “1:只需:只需1个对象个对象 “3:正好:正好3个对象个对象 “1.*:最少:最少1个,也能
18、够为多个对象个,也能够为多个对象 “3.*:至少:至少3个,也能够为多个对象个,也能够为多个对象 “0.1:0或或1个对象个对象 “3.7:3到到7个对象个对象2022-4-29;13对象与类对象与类 系统中的每个对象在表示上具有独一的标识系统中的每个对象在表示上具有独一的标识ID以以及经过其属性进展描画。及经过其属性进展描画。 比如一个详细的工程名字为比如一个详细的工程名字为“考勤系统,工程考勤系统,工程经理名经理名“王楠,工程开场日期王楠,工程开场日期“2019年年10月月20日。这些属性称为实例变量日。这些属性称为实例变量instance variable或属性或属性attribute。
19、 同类对象的共同构造可经过类进展阐明,除了类同类对象的共同构造可经过类进展阐明,除了类名外,一切的实例变量都可包含在类中作为类的名外,一切的实例变量都可包含在类中作为类的初始信息。因此对于初始信息。因此对于“工程类来说,它是一切工程类来说,它是一切详细详细“工程对象的一个模板。工程对象的一个模板。2022-4-29;14对象与类的表示对象与类的表示 衔接类与对象间的衔接类与对象间的实线,表示类图中实线,表示类图中关联关系的实例化关联关系的实例化 对象名对象名:类的类型类的类型 实例变量的初始值实例变量的初始值2022-4-29;15-projectNo : int-projectName :
20、String-startPlanned : Date-endPlanned : Date-effortPlanned : int-startReal : Date-endReal : Date-comment : String- / compeletePct : int- / effortReal : intProjectprojectNo = 001projectName = AcadDrawstartPlanned = 2014.10.20endPlanned = 2015.12.31effortPlanned = 1000startReal = nullendReal = nullcom
21、ment = in planningAcadDraw : Project类的细化类的细化 在下一轮的迭代中,将重新审视并分析需在下一轮的迭代中,将重新审视并分析需求陈说和词汇表中提到的功能与对象之间求陈说和词汇表中提到的功能与对象之间的对应关系。的对应关系。 除了实例变量的阐明,类中还包含方法,除了实例变量的阐明,类中还包含方法,又称为操作或对象功能,它们为业务计算又称为操作或对象功能,它们为业务计算或对实例变量值的读写提供了效力。或对实例变量值的读写提供了效力。 一个对象中一切实例变量值的组合构成了一个对象中一切实例变量值的组合构成了该类的形状集合。该类的形状集合。2022-4-29;16方
22、法和管理类方法和管理类 访问和修正方法,不涉及业务,在分析模型中通常不思索访问和修正方法,不涉及业务,在分析模型中通常不思索,实现阶段再思索。,实现阶段再思索。 对象通常还提供了只需经过内部信息,照实例变量,对业对象通常还提供了只需经过内部信息,照实例变量,对业务数据进展计算的方法。务数据进展计算的方法。 如方法如方法computeAllocatedEffort(),计算曾经对工程中的义,计算曾经对工程中的义务和子工程分配的任务量。务和子工程分配的任务量。 对于同类对象的协调和管理通常运用一个管理类,主要担对于同类对象的协调和管理通常运用一个管理类,主要担任对对象的创建、代理访问其它对象的信息
23、等。任对对象的创建、代理访问其它对象的信息等。 管理类必需可以提供所管辖一切对象一致的处置方式。管理类必需可以提供所管辖一切对象一致的处置方式。2022-4-29;17管理类的识别管理类的识别 普通方法:先对一切的用例进展分析,对普通方法:先对一切的用例进展分析,对每个用例对应产生一个管理类,用来对该每个用例对应产生一个管理类,用来对该场景中需求的对象进展管理和协调。场景中需求的对象进展管理和协调。 管理类每次思索一个义务,只向管理类添管理类每次思索一个义务,只向管理类添加与该义务相关的方法和方法需求的实例加与该义务相关的方法和方法需求的实例变量。变量。 类与类之间尽能够坚持较少的联络,这样类
24、与类之间尽能够坚持较少的联络,这样可以降低接口的数量。可以降低接口的数量。2022-4-29;18进一步识别和补充类及方法进一步识别和补充类及方法 R1.4 子工程创建:工程选定后,系统需求提供应用户为子工程创建:工程选定后,系统需求提供应用户为所选工程创建子工程的时机。所选工程创建子工程的时机。 集合的常用操作集合的常用操作add和和delete方法对元素添加和删除。对于方法对元素添加和删除。对于本需求,需求在工程类中参与一个函数本需求,需求在工程类中参与一个函数addSubproject(Project): void,并商定假设前往值为空值,并商定假设前往值为空值表示创建子工程的过程没有胜
25、利完成。表示创建子工程的过程没有胜利完成。 R1.10 对其它工程的依赖:工程选定后,系统必需提供应对其它工程的依赖:工程选定后,系统必需提供应用户对该工程与其它子工程的依赖情况的编辑操作,用户对该工程与其它子工程的依赖情况的编辑操作,比如在哪些工程终了后该工程才干启动。比如在哪些工程终了后该工程才干启动。 工程类应具有方法工程类应具有方法addPredecessor(Project):void。2022-4-29;192022-4-29;20-projectNo : int-projectName : String-startPlanned : Date-endPlanned : Date-
26、effortPlanned : int-startReal : Date-endReal : Date-comment : String- / compeletePct : int- / effortReal : int+Project(String, Date, Date, int)+addSubproject(Project) : void+addTask(ProjectTask) : void+compeletePctCompute() : double+realEffortCompute() : int+effortToAllocate() : int+addPredecessor(P
27、roject) : void+testEffortModification(int) : bool+testEffortModification(ProjectTask, int) : boolProject-TaskName : String-laborShare : int-startPlanned : Date-endPlanned : Date-effortPlanned : int-startReal : Date-endReal : Date-effortReal : int-compeletePct : int+ProjectTask(String, Date, Date, in
28、t, int)ProjectTaskEmployee-subprojects0.1*-predecessor*-tasks1*-pInCharge1+inconsistentUpdateNotify(reason : String) : voidProjectMan1-projects*0.1-selectedProject0.1-parent0.1-selectedTask0.1迭代后的类图迭代后的类图类图的不同表示方式类图的不同表示方式2022-4-29;21PointxyPoint-x : int-y : intPoint-x : int-y : int+Point(int, int)+
29、isNull() : bool+moveto(int, int) : void+distance() : doublePoint-x : int-y : int+Point(x : int, y : int)+isNull() : bool+moveto(xdir : int, ydir : int) : void+distance() : doublePoint2维平面上的坐标点, 能够按指定方向进行 移动或者计算离原点 距离。2022-4-29;22-projectNo : int-comment : String- / compeletePct : int- / effortReal :
30、 int+Project(String, Date, Date, int)+addSubproject(Project) : void+addTask(4.5.ProjectTask) : void+compeletePctCompute() : double+realEffortCompute() : int+effortToAllocate() : int+addPredecessor(Project) : void+testEffortModification(int) : bool+testEffortModification(4.5.ProjectTask, int) : boolP
31、roject-laborShare : int-effortReal : int-compeletePct : int+ProjectTask(String, Date, Date, int, int)ProjectTaskEmployee+inconsistentUpdateNotify(reason : String) : voidProjectMan-parent-subprojects0.1*-predecessor*-tasks*1-selectedTask0.10.1*-pInCharge1-projects1*-selectedProject0.10.1#name : Strin
32、g#startPlanned : Date#endPlanned : Date#effortPlanned : int#startReal : Date#endReal : DateProjectComponent利用笼统类利用笼统类隔离变化隔离变化利用泛利用泛化进展化进展重用重用优化可以提高模型的易了解性优化可以提高模型的易了解性没有方法和实例变量的类将会被删除掉没有方法和实例变量的类将会被删除掉复杂功能的拆分复杂功能的拆分设计优化设计优化枚举类枚举类 假设一个变量的取值是某个有假设一个变量的取值是某个有限集合中的数据,如限集合中的数据,如“红色红色、“黄色,黄色,“绿色等,应绿色等,应该运
33、用一种叫做枚举的类型而该运用一种叫做枚举的类型而不是直接运用不是直接运用String类型。类型。 如图中所示的枚举类,其具有如图中所示的枚举类,其具有一个构外型一个构外型描描画,在它的实例变量部分例举画,在它的实例变量部分例举的数据为该类型能够的取值。的数据为该类型能够的取值。2022-4-29;23redyellowgreenLightColor运用顺序图进展验证运用顺序图进展验证 当初始版本的分析类图完好的构建出来后,需求确认当初始版本的分析类图完好的构建出来后,需求确认能否需求中的一切信息在模型中都得到了表达而没有能否需求中的一切信息在模型中都得到了表达而没有脱漏。脱漏。 为进展这样的验
34、证,可运用为进展这样的验证,可运用UML中的顺序图对需求中的顺序图对需求场景中涉及到的不同对象之间的交互过程进展建模。场景中涉及到的不同对象之间的交互过程进展建模。 类图在类图在UML中是一种静态图,由于描画了系统的功中是一种静态图,由于描画了系统的功能侧面,而基于类图的顺序图可以用来设计对象之间能侧面,而基于类图的顺序图可以用来设计对象之间的动态交互过程,描画对象之间的过程调用顺序和关的动态交互过程,描画对象之间的过程调用顺序和关系。系。 经过顺序图可以用来检验类图中阐明的功能能否可以经过顺序图可以用来检验类图中阐明的功能能否可以实现活动图中描画的功能需求。实现活动图中描画的功能需求。202
35、2-4-29;24顺序图顺序图 对象轴、时间轴对象轴、时间轴 同步伐用的方式同步伐用的方式和表示和表示 生命线、控制焦生命线、控制焦点激活区域点激活区域 同样可以运用通同样可以运用通讯图协作图讯图协作图进展交互建模进展交互建模2022-4-29;25object2 : Class2object1 : Class1y=5methodx(45,x)y=methodx(45,x)methodx(45,x)通讯图通讯图 对象表示方式一样,对象间的关联对象表示方式一样,对象间的关联 音讯发送的顺序、嵌套和表示音讯发送的顺序、嵌套和表示 关注对象间关联构造,与顺序图等价关注对象间关联构造,与顺序图等价20
36、22-4-29;26C : C3B : C2A : C1n2()z=m3(y)yy=n1()m2(x)x=m1()A : C1B : C2C : C31: x=m1()2: m2(x)2.1: y=n1()2.2: y3: z=m3(y)3.1: n2()对象的创建与删除对象的创建与删除 左图是对象的创建过程,箭头所指是一个新创建的对左图是对象的创建过程,箭头所指是一个新创建的对象,留意此对象名并不在最上方的位置出现。象,留意此对象名并不在最上方的位置出现。 右图是对象的删除过程,经过在生命线上的右图是对象的删除过程,经过在生命线上的X符号表符号表示对象在内存中被回收。示对象在内存中被回收。2
37、022-4-29;27创建的对象ob2 : Class2ob1 : Class1create需要删除的对象ob2 : Class2ob1 : Class1delete构造表示构造表示顺序图某些部分运用矩形框封锁描画,左上角指定一种处置方式。顺序图某些部分运用矩形框封锁描画,左上角指定一种处置方式。 “opt为可选的内容,表示在满足方括号条件的情况下,对应部分为可选的内容,表示在满足方括号条件的情况下,对应部分就会被执行,否那么跳过。就会被执行,否那么跳过。“alt对多分支的条件进展选择,矩形框内各分支用虚线分割。每个对多分支的条件进展选择,矩形框内各分支用虚线分割。每个分支一个布尔条件,应彼此
38、排斥。分支一个布尔条件,应彼此排斥。“loop为循环构造,这里必需清楚的给出循环执行的参数,如循环为循环构造,这里必需清楚的给出循环执行的参数,如循环次数和终了条件。次数和终了条件。2022-4-29;28opti=0ob2 : Class2ob1 : Class1do2( )loop (start, end,condition)ob2 : Class2ob1 : Class1do2( )altelsei0 & j=2i=0ob2 : Class2ob1 : Class1do3( )do2( )do1( )验证方法验证方法 对于每个活动图的过对于每个活动图的过程尝试运用一个顺序程尝试运
39、用一个顺序图进展描画。图进展描画。 图中活动图存在图中活动图存在3个个过程,验证的目的是过程,验证的目的是要确保每条活动图中要确保每条活动图中的边都要被执行到。的边都要被执行到。 为使子过程不用多次为使子过程不用多次在每个顺序图中反复在每个顺序图中反复描画,可以对一个或描画,可以对一个或多个动作创建子图。多个动作创建子图。2022-4-29;29验证的作用验证的作用 将需求中重点描画的过程进展建模,包括将需求中重点描画的过程进展建模,包括对新对象的创建过程。对新对象的创建过程。 确保一切的功能需求在分析模型中都得到确保一切的功能需求在分析模型中都得到了表达,而非功能性需求那么主要是在系了表达,
40、而非功能性需求那么主要是在系统架构中表达。统架构中表达。 分析类模型和顺序模型的构建也是迭代的分析类模型和顺序模型的构建也是迭代的过程,完善顺序图时能够会发现新的必要过程,完善顺序图时能够会发现新的必要的类方法,从而对类图也进展了补充。的类方法,从而对类图也进展了补充。2022-4-29;30举例举例2022-4-29;31tpa : ProjectTasktpr : ProjectTasktp : Projectpr : Project: ProjectMansetComment(Example Project)addTask(tpa)addTask(tpr)addSubproject(tp
41、)tpa=new ProjectTask(Analysis,2015.1.1,2015.4.1,100,200)tpr=new ProjectTask(RS,2014.11.1,2014.12.31,100,200)tp=new Project(P11,2014.10.28,2015.6.14,300)pr=new Project(P1,2014.10.28,2015.12.31,1000)新工程的创建过程新工程的创建过程自调用类内的私有自调用类内的私有方法方法工程管理对象可工程管理对象可以是包含在图形以是包含在图形界面中的一个对界面中的一个对象象图形界面中的对图形界面中的对象逐渐补充,由象逐
42、渐补充,由于与编程言语相于与编程言语相关关举例举例 由外部推进的工程创建由外部推进的工程创建 无法准确命名和识别动作的对象,用无法准确命名和识别动作的对象,用“extern对象表示对象表示 外部外部extern类运用了角色的图标,这是为了可以明晰的阐类运用了角色的图标,这是为了可以明晰的阐明此外部类并不属于系统相关的业务类。明此外部类并不属于系统相关的业务类。2022-4-29;32sel : Projectpr : Project: ProjectManExternaddSubproject(pr)pr=new Project(P1,2014.10.28,2015.12.31,1000)se
43、l=getSelectedProject( )2022-4-29;33elsealt左面项目的父项目newvalue = newvalue-effortPlannedaltelsenewvalue = v: Project: Project: ProjectManfalsetruefalsetruev=effortToAllocate( )plan=getEffortPlanned( )v=effortToAllocate( )testEffortModification(newvalue) 工程任务量的修工程任务量的修正正 减少工程的任务减少工程的任务量,要对其子工量,要对其子工程和义务的任
44、务程和义务的任务量进展检查量进展检查 首先总体上进展首先总体上进展确认,任务量的确认,任务量的新值能否小于原新值能否小于原始的方案任务量始的方案任务量值值举例举例2022-4-29;34altelseeffortPlanned - v = newvalue - planpt : ProjectTask: Project: ProjectManfalsetruev=effortToAllocate( )plan=getEffortPlanned( )testEffortModification(pt, newvalue) 义务任务量义务任务量的修正的修正举例举例完成进度的计算完成进度的计算eff
45、ortToAllocate( )2022-4-29;35loop (for all subprojects)loop (for all tasks): ProjectTask: Project: Project: ProjectMangetCompeletePct( )compeletePctCompute( )compeletePctCompute( )1.为计算整个工程为计算整个工程的完成进度,需的完成进度,需求逐个确定每个求逐个确定每个子工程的完成进子工程的完成进度。度。2.递归的运用在这递归的运用在这里没有问题,由里没有问题,由于工程只能作为于工程只能作为独一工程的子工独一工程的子工程
46、,是一个树构程,是一个树构造而不是一个图造而不是一个图构造。构造。3.下一步确定每个义务的完成进度以及由这下一步确定每个义务的完成进度以及由这些前往的结果确定工程总体的完成进度。些前往的结果确定工程总体的完成进度。其前往值没有显式的给出。其前往值没有显式的给出。界面类设计界面类设计 界面设计的根本要求是:经过界面使得模型中含有的类的界面设计的根本要求是:经过界面使得模型中含有的类的某些部分对外部可见,比如用户经过界面可进展业务内容某些部分对外部可见,比如用户经过界面可进展业务内容的修正或访问,即包括人机交互界面。的修正或访问,即包括人机交互界面。 界面类设计通常可推迟进展,由于可以直接运用现成
47、的类界面类设计通常可推迟进展,由于可以直接运用现成的类库中的模型,采用不同的类库对整体的类设计会有很大的库中的模型,采用不同的类库对整体的类设计会有很大的影响。影响。 对现有的类模型补充对应的界面描画,一个直接的方法就对现有的类模型补充对应的界面描画,一个直接的方法就是对于每个类补充一个对应的接口,使得它向外部提供可是对于每个类补充一个对应的接口,使得它向外部提供可访问的信息。访问的信息。 对于工程类可设置一个对于工程类可设置一个ProjectMask界面,对外提供工程界面,对外提供工程创建和修正的操作;运用一个界面控制类创建和修正的操作;运用一个界面控制类GUIControl,控制当前哪个类
48、的界面类处于运用形状。控制当前哪个类的界面类处于运用形状。2022-4-29;362022-4-29;37-projectNo : int-comment : String- / compeletePct : int- / effortReal : int+Project(String, Date, Date, int)+addSubproject(Project) : void+addTask(ProjectTask) : void+compeletePctCompute() : double+realEffortCompute() : int+effortToAllocate() : in
49、t+addPredecessor(Project) : void+testEffortModification(int) : bool+testEffortModification(ProjectTask, int) : boolProject+Enter ProjectData()+Modify ProjectData()+Query ProjectData()ProjectMask+Create NewProject()+Edit ProjectData()+Manage Project()GUIControl+Select Project()+Add Subproject()+Remov
50、e Subproject()ProjectManMask+inconsistentUpdateNotify(reason : String) : void+getProjectAt(position : int) : ProjectProjectMan0.1controlscontrolscontrolscontrols用例用例“工程编辑中的界面工程编辑中的界面类类界面类的方法没有参数,只界面类的方法没有参数,只需一个简要的描画,对应着需一个简要的描画,对应着该对象的职责。该对象的职责。也暗示需求的参数主要是在也暗示需求的参数主要是在外部功能中进展的初始化,外部功能中进展的初始化,比如输入框。比如输入框。界面规划相关的类界面规划相关的类没有参与。没有参与。界面类主要来源为界面类主要来源为类型类型2的需求,即的需求,即针对用户交互的描针对用户交互的描画。画。界面类又称边境
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- PCI术后相关并发症预防、识别及规范化处理业务学习
- 2026年陕西省西安市西咸新区中考语文二模试卷(含详细答案解析)
- 农林牧渔企业办公设备资产管理自查整改落实报告
- 《财务人员继续教育管理办法(2026年)》
- 某工程安全文明施工及环保水保监理实施细则
- 门诊婴幼儿药物过敏性休克应急演练总结
- 2025年官方兽医题库含完整答案详解(夺冠系列)
- 密封材料加工厂消防安全自查整改措施报告
- 发展研究部门年度工作总结
- 公司网络销售年终工作总结
- 2025年西安市8中小升初试题及答案
- 机械设备保修期服务方案及保证措施
- 《贵州省涉路工程安全技术指南(试行)》
- 2025年湖南省中考物理试卷(含解析)
- 食品安全日管控、周排查及月调度记录表
- 《资治通鉴》与为将之道知到课后答案智慧树章节测试答案2025年春武警指挥学院
- 数字生活产数人才练习试题及答案
- 数据新闻教程 课件 第6章 数据新闻的叙事
- 2024年10月自考13180操作系统试题及答案
- 污水处理厂提标改造工程施工组织设计
- 2021年11月信息系统监理师考试信息系统工程监理应用技术下午真题
评论
0/150
提交评论