资源预览内容
第1页 / 共102页
第2页 / 共102页
第3页 / 共102页
第4页 / 共102页
第5页 / 共102页
第6页 / 共102页
第7页 / 共102页
第8页 / 共102页
第9页 / 共102页
第10页 / 共102页
亲,该文档总共102页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
UMLUML建模语言及工具建模语言及工具第第 8 8 章章 面向对象的设计面向对象的设计Object-Oriented DesignObject-Oriented DesignReview: Object-Oriented Design Patternsn设计模式设计模式nGoF设计模式及应用设计模式及应用3学习线路图学习线路图OOOOUMLUMLOOAOOAOOPOOPDPDP Case-Study 学学 习习 线线 路路 图图4从需求到分析从需求到分析Analysis workflowAnalysis workflowAnalysis Class5从分析到设计从分析到设计Design ClassSubsystemAnalysis ClassDesign workflowDesign workflow6内容安排内容安排n n从分析到设计从分析到设计n体系结构设计体系结构设计n用例设计用例设计n子系统设计子系统设计n类设计类设计n数据库设计数据库设计7分析分析 VS. 设计设计n分析:做什么分析:做什么n nAnalysis emphasized the Analysis emphasized the businessbusiness problemproblemn设计:怎么做设计:怎么做n nDesign focuses on the Design focuses on the technicaltechnical or or implementationimplementation concerns of the concerns of the systemsystem分析模型虽然有效地确定了将要构建的内容,但是却没有分析模型虽然有效地确定了将要构建的内容,但是却没有分析模型虽然有效地确定了将要构建的内容,但是却没有分析模型虽然有效地确定了将要构建的内容,但是却没有包含足够的信息来定义如何构建系统,而面向对象的设计包含足够的信息来定义如何构建系统,而面向对象的设计包含足够的信息来定义如何构建系统,而面向对象的设计包含足够的信息来定义如何构建系统,而面向对象的设计用来填补分析和实现之间的差距用来填补分析和实现之间的差距用来填补分析和实现之间的差距用来填补分析和实现之间的差距8设计模型设计模型 VS. 分析模型分析模型-1需要维护两个模型吗?需要维护两个模型吗?需要维护两个模型吗?需要维护两个模型吗?策略策略策略策略结果结果结果结果制作分析模型并精化成设计模型制作分析模型并精化成设计模型有了单独的设计模型,但失去了分有了单独的设计模型,但失去了分析模型析模型制作分析模型并精化成设计模型,制作分析模型并精化成设计模型,然后用然后用CASE工具重新获得分析工具重新获得分析模型模型有了单独的设计模型,但是用有了单独的设计模型,但是用CASE工具重新获得的分析模型可能并不工具重新获得的分析模型可能并不令人满意令人满意在细化阶段的某个点将分析模型在细化阶段的某个点将分析模型冻结,然后把分析模型的一份拷冻结,然后把分析模型的一份拷贝精化成设计模型贝精化成设计模型有了两个模型,但是它们步调不一有了两个模型,但是它们步调不一致致维护两个独立的模型维护两个独立的模型分析模型分析模型和设计模型和设计模型有了两个模型,并且它们步调一致,有了两个模型,并且它们步调一致,但是这增加了维护的负担但是这增加了维护的负担9设计模型设计模型 VS. 分析模型分析模型-2n需要保留分析模型吗?需要保留分析模型吗?n易于理解:分析模型提供系统的易于理解:分析模型提供系统的“大场景大场景”,它可,它可能只包括设计模型中的能只包括设计模型中的1%到到10%的类的类n价值:价值:n介绍新人加入项目介绍新人加入项目n在交付几个月或几年后重新理解系统在交付几个月或几年后重新理解系统n理解系统是怎么满足客户需求以及提供可跟踪性理解系统是怎么满足客户需求以及提供可跟踪性n计划维护和增强计划维护和增强n理解系统的逻辑架构理解系统的逻辑架构n外包系统的构造外包系统的构造n10设计模型设计模型 VS. 分析模型分析模型-3n需要分别维护分析模型和设计模型的系需要分别维护分析模型和设计模型的系统统n庞大的庞大的n复杂的复杂的n战略性的战略性的n受经常变更所支配的受经常变更所支配的n期望长期运行的期望长期运行的n外包的外包的11软件设计的定义软件设计的定义IEEE 1990IEEE 1990:设计是:设计是体系结构体系结构、构件构件、接接口口、以及系统、以及系统其它特征其它特征定义的定义的过程过程12更精确定义更精确定义n软件设计(的结果)必须软件设计(的结果)必须n描述系统的体系结构(描述系统的体系结构(architecturearchitecture)n系统如何分解(系统如何分解(decompose)和组织)和组织(organize)构件)构件n描述构件间的接口(描述构件间的接口(interfaceinterface)n描述构件(描述构件(componentcomponent):必须详细到可):必须详细到可进一步构造的程度进一步构造的程度13ISO/IEC 12207n按按ISO/IEC 12207软件开发生存周期过软件开发生存周期过程,软件设计由两个活动组成程,软件设计由两个活动组成n软件体系结构设计软件体系结构设计-software architectural designn顶层设计(顶层设计(top-level design)n描述系统顶层的结构和组织描述系统顶层的结构和组织n标识各个构件标识各个构件n软件详细设计软件详细设计-software detailed designn充分描述每个构件使之可以编码充分描述每个构件使之可以编码14软件设计的作用软件设计的作用n软件设计在软件系统开发过程中扮演重要软件设计在软件系统开发过程中扮演重要角色角色n开发者作出各种模型,形成实现时解决方案的开发者作出各种模型,形成实现时解决方案的蓝图蓝图n对这些模型进行分析和评价,以判定是否满足对这些模型进行分析和评价,以判定是否满足各种需求各种需求n便于考察备选方案和可行的替换措施便于考察备选方案和可行的替换措施n设计模型也可用于规划后续的开发活动设计模型也可用于规划后续的开发活动n是编码和测试的输入是编码和测试的输入连接需求和构造的桥梁连接需求和构造的桥梁15RUP中的分析和设计工作流中的分析和设计工作流分分分分 析析析析AnalysisAnalysis设设设设 计计计计DesignDesign16内容安排内容安排n从分析到设计从分析到设计n n体系结构设计体系结构设计n用例设计用例设计n子系统设计子系统设计n类设计类设计n数据库设计数据库设计17为什么需要体系结构为什么需要体系结构n我们所定义的类或者对象其关注的重点是定义我们所定义的类或者对象其关注的重点是定义了一个系统的核心概念和行为了一个系统的核心概念和行为n一个系统是由多个子系统组成,每个子系统中一个系统是由多个子系统组成,每个子系统中的领域对象都不只一个的领域对象都不只一个n这些类如何组织、分布并协同完成所需的功能这些类如何组织、分布并协同完成所需的功能?n因此系统应该要有一个总体的体系结构,它定因此系统应该要有一个总体的体系结构,它定义了各子系统之间的通信和耦合义了各子系统之间的通信和耦合n体系结构包图(体系结构包图(architecture package diagram)18软件体系结构定义软件体系结构定义n软件体系结构描述软件系统的子系统和软件体系结构描述软件系统的子系统和构件及其相互关系构件及其相互关系nUML Reference Manual:体系结构是:体系结构是一个系统的组织结构,包括系统分解成一个系统的组织结构,包括系统分解成的各个部分、它们的连接性、交互机制的各个部分、它们的连接性、交互机制和通知系统设计的向导规则和通知系统设计的向导规则软件体系结构将多组类结合起来,形成一个软件体系结构将多组类结合起来,形成一个有机的整体,并且展示各部分之间有机的整体,并且展示各部分之间结构结构上的上的相互相互关系关系19软件体系结构风格软件体系结构风格n体系结构风格体系结构风格stylen提供软件系统高层组织的元模型提供软件系统高层组织的元模型n通用结构:通用结构:分层分层、管道过滤器、黑板、管道过滤器、黑板n分布式系统:分布式系统:客户客户-服务器、三层服务器、三层、中介、中介n交互式系统:交互式系统:MVC、表示、表示-抽象抽象-控制控制n可适配系统:微内核、反映式可适配系统:微内核、反映式n其它:批处理、解释器、进程控制、基于规则其它:批处理、解释器、进程控制、基于规则20UML和体系结构和体系结构n体系结构的全部内容就是复杂性管理:将解体系结构的全部内容就是复杂性管理:将解决方案划分成多个小的组成部分,再将这些决方案划分成多个小的组成部分,再将这些小的部分结合起来,构成更大的、更加一致小的部分结合起来,构成更大的、更加一致的结构的结构n包(包(package)n包依赖关系图(包依赖关系图(package dependency diagram)n子系统(子系统(subsystem)n层(层(layer)21包包-packagen包是一种将模型元素分组的机制包是一种将模型元素分组的机制n包主要用于包主要用于n组织模型元素组织模型元素n配置管理单元配置管理单元n分包的原则分包的原则n职责相似:将一组职责相似、但以不同方式实现的职责相似:将一组职责相似、但以不同方式实现的类归为一组有意义的包;如类归为一组有意义的包;如java类库中的类库中的javax.swing.bordern协作关系:包含了各种不同类型的类,它们之间通协作关系:包含了各种不同类型的类,它们之间通过相互协作实现一个意义重大的职责过相互协作实现一个意义重大的职责22包依赖关系包依赖关系n包之间存在着依赖关系包之间存在着依赖关系n如果如果Client包依赖于包依赖于Supplier包:包:nSupplier包的改变将影响到包的改变将影响到Client包包nClient包不能够独立的重用,因为它依赖于包不能够独立的重用,因为它依赖于Supplier包包23避免循环依赖避免循环依赖循环依赖使得任何一个包循环依赖使得任何一个包循环依赖使得任何一个包循环依赖使得任何一个包都不能独立的重用,修改都不能独立的重用,修改都不能独立的重用,修改都不能独立的重用,修改任何一个包都会引起所有任何一个包都会引起所有任何一个包都会引起所有任何一个包都会引起所有的包的变化的包的变化的包的变化的包的变化24体系结构设计过程体系结构设计过程n1. 确立目标确立目标n2. 将类分组将类分组n3. 展示技术展示技术n4. 抽取子系统抽取子系统n5. 针对准则和目标对体系结构进行评估针对准则和目标对体系结构进行评估251. 确立目标确立目标n一个好的体系结构其实是不断权衡、妥一个好的体系结构其实是不断权衡、妥协、折衷的产物协、折衷的产物n可扩展性可扩展性n可维护性可维护性n可靠性可靠性n可伸缩性可伸缩性n262. 将类分组并评估各个类将类分组并评估各个类n将分析类划分成几个候选包,并对它们的内聚将分析类划分成几个候选包,并对它们的内聚性进行评估性进行评估n目标是使每个包具有清晰的且严格定义的目的目标是使每个包具有清晰的且严格定义的目的和职责和职责n结合体系结构模式,考虑分组方式结合体系结构模式,考虑分组方式n实体类实体类n用户界面类用户界面类n控制类控制类n系统接口类系统接口类nn描述包之间的耦合度:包依赖关系图描述包之间的耦合度:包依赖关系图27考勤卡系统的体系结构包图考勤卡系统的体系结构包图283. 展示技术展示技术294. 抽取子系统抽取子系统305. 针对准则和目标进行评估针对准则和目标进行评估31内容安排内容安排n从分析到设计从分析到设计n体系结构设计体系结构设计n n用例设计用例设计n子系统设计子系统设计n类设计类设计n数据库设计数据库设计32用例设计用例设计Design workflowDesign workflowUse Case33从分析类到设计元素从分析类到设计元素34用例实现(设计)用例实现(设计)n将设计应用于用例将设计应用于用例n1. 结合设计元素,定义设计对象间的交互结合设计元素,定义设计对象间的交互(交互图)(交互图)n2. 利用利用子系统子系统子系统子系统简化交互图简化交互图n3. 描述与描述与持久化持久化持久化持久化相关的行为相关的行为n4. 检查用例事件流的实现检查用例事件流的实现n5. 评价评价类类类类和子系统和子系统 35交互图的设计:职责分配交互图的设计:职责分配n利用设计元素,进行类的职责分配,完利用设计元素,进行类的职责分配,完成用例实现的交互图成用例实现的交互图n职责分配模式:职责分配模式:GRASP(General Responsibility Assignment Software Pattern)模式)模式n专家模式、创建者模式专家模式、创建者模式(老板原则老板原则)、高内聚高内聚、低耦合低耦合、控制者、控制者n多态、纯虚构、中介者、多态、纯虚构、中介者、不要和陌生人讲话不要和陌生人讲话(可视原则)(可视原则)3637383940414243444546GRASP:不要和陌生人讲话:不要和陌生人讲话(可视原则)(可视原则)n解决方案解决方案n分配职责给一个客户端的直接对象以使它与一个间分配职责给一个客户端的直接对象以使它与一个间接对象进行协作,这样客户端无需知道这个间接对接对象进行协作,这样客户端无需知道这个间接对象象n这个模式也被称为这个模式也被称为DemeterDemeter准则准则准则准则,在那些你需要在,在那些你需要在其上发送消息的对象上面放置一些限制条件,它表其上发送消息的对象上面放置一些限制条件,它表明在一个方法中,消息只能发往下面的对象:明在一个方法中,消息只能发往下面的对象:n对象本身;方法的一个参数;对象本身的属性;对象本身对象本身;方法的一个参数;对象本身的属性;对象本身的一个属性集合中的元素;该方法内创建的对象的一个属性集合中的元素;该方法内创建的对象n优点优点n低耦合低耦合4748不满足迪米特法则的系统不满足迪米特法则的系统49不满足迪米特法则的系统不满足迪米特法则的系统public class Someone public void operation1(Friend friend) Stranger stranger=friend.provide(); stranger.operation3(); public class Friend private Stranger stranger=new Stranger(); public void operation2() public Stranger provide() return stranger; 50满足迪米特法则的系统满足迪米特法则的系统51满足迪米特法则的系统public class Someone public void operation1(Friend friend) friend.forward(); public class Friend private Stranger stranger=new Stranger(); public void operation2() public void forward() stranger.operation3(); 52用例图零件销售系统用例图零件销售系统535455565758596061626364656667内容安排内容安排n从分析到设计从分析到设计n体系结构设计体系结构设计n用例设计用例设计n n子系统设计子系统设计n类设计类设计68子系统与接口子系统与接口n子系统是一种介于包和类之间的一种设子系统是一种介于包和类之间的一种设计机制,它实现一个或多个接口所定义计机制,它实现一个或多个接口所定义的行为的行为n具有包的语义:能够包含其它模型元素具有包的语义:能够包含其它模型元素n具有类的语义:具有行为具有类的语义:具有行为69子系统的作用子系统的作用n完全封装了行为完全封装了行为n利用清晰的接口代表所拥有的能力利用清晰的接口代表所拥有的能力n可以定义不同的实现可以定义不同的实现70子系统子系统 VS. 包包n子系统:子系统:n提供行为提供行为n完全封装实现完全封装实现细节细节n容易替换容易替换n包:包:n不提供行为不提供行为n不完全封装实不完全封装实现细节现细节n难以替换难以替换关键在于封装关键在于封装71子系统的主要用途子系统的主要用途n子系统可以将系统划分成独立的部分,子系统可以将系统划分成独立的部分,以利于:以利于:n开发,只要保持接口不变开发,只要保持接口不变n部署到不同分布的节点上部署到不同分布的节点上n变更,而不影响到其它系统变更,而不影响到其它系统n在设计阶段,子系统还可用于打包遗留在设计阶段,子系统还可用于打包遗留系统系统n子系统代表了粗粒度的组件子系统代表了粗粒度的组件72子系统的设计原则子系统的设计原则n目标目标n松散耦合松散耦合n可替换的,可替换的,plug-and-playn隔离变更隔离变更n自身可独立的改进自身可独立的改进n好的建议好的建议n不要暴露细节,只有接口不要暴露细节,只有接口n仅依赖于接口仅依赖于接口73子系统的设计步骤子系统的设计步骤n将子系统的行为分发到各个子系统元素将子系统的行为分发到各个子系统元素中:分发子系统的中:分发子系统的职责职责n描述子系统中的元素描述子系统中的元素n描述子系统的依赖关系描述子系统的依赖关系74接口设计接口设计n接口说明了一组操作,隐藏子系统的实现细节接口说明了一组操作,隐藏子系统的实现细节n在在GoF的的23种设计模式中,种设计模式中,Facade模式是一模式是一种很好的接口的设计模式种很好的接口的设计模式n确定系统的内聚部分确定系统的内聚部分n将这些打包到一个将这些打包到一个n为该子系统设计接口为该子系统设计接口75考勤卡系统中的子系统设计考勤卡系统中的子系统设计利用子系统来利用子系统来利用子系统来利用子系统来打包遗留系统打包遗留系统打包遗留系统打包遗留系统76内容安排内容安排n从分析到设计从分析到设计n体系结构设计体系结构设计n用例设计用例设计n子系统设计子系统设计n n类设计类设计77设计类设计类n设计类设计类n设计模型的构造块设计模型的构造块n设计类是已经完成了规格说明并且达到能够设计类是已经完成了规格说明并且达到能够被实现程度的类被实现程度的类被实现程度的类被实现程度的类n来源于问题域和解域来源于问题域和解域n通过分析类的精化得到的问题域通过分析类的精化得到的问题域添加实现细节添加实现细节n解域,提供了能够实现系统的技术工具解域,提供了能够实现系统的技术工具78设计类剖析设计类剖析n在分析中,只要尽量捕获系统需要的行在分析中,只要尽量捕获系统需要的行为,而完全不必考虑如何去实现这些行为,而完全不必考虑如何去实现这些行为为n在设计中,则必须准确地说明类是如何在设计中,则必须准确地说明类是如何履行它们的职责履行它们的职责n完整的属性集合,包括详细说明的名称、类完整的属性集合,包括详细说明的名称、类型、可视性和一些默认值型、可视性和一些默认值n将分析类指定的职责转化成一个或多个方法将分析类指定的职责转化成一个或多个方法的完整集合的完整集合79良好的设计类良好的设计类n类的公共方法定义它和类用户之间的契类的公共方法定义它和类用户之间的契约约n通常要从类用户的角度去评估类的目的通常要从类用户的角度去评估类的目的n基本特征基本特征n完整性和充分性完整性和充分性n原始性原始性n高内聚高内聚n低耦合低耦合80类设计的主要工作类设计的主要工作n定义类的操作定义类的操作n类的职责类的职责n定义类的方法和状态定义类的方法和状态n方法:操作的实现方法:操作的实现n状态:对象的状态如何影响它的行为状态:对象的状态如何影响它的行为(状态状态图图)n定义类的属性定义类的属性n定义类之间的关系定义类之间的关系81类之间的关系类之间的关系n依赖关系依赖关系n关联关系关联关系n聚合关系聚合关系n组合关系组合关系n泛化关系泛化关系低低低低耦耦耦耦合合合合度度度度高高高高82关联关系的表示方法关联关系的表示方法n关联具有:名称、多重性表达式、导航符号、关联具有:名称、多重性表达式、导航符号、角色名称角色名称n名名称:动词短语称:动词短语n多重性表达式:多重性表达式:*,1.*,1-40,5,3,5,8,n导航符号导航符号n角色名称角色名称83聚合关系示例聚合关系示例 一台一台Computer可能连接到可能连接到0.n台台Printers 任何时候一台任何时候一台Printer连接到连接到0.1台台Computer随着时间推移,许多台随着时间推移,许多台Computers可以使用一台给定的可以使用一台给定的Printer即使没有所连接的即使没有所连接的Computers,那台,那台Printer也可以生存也可以生存在非常客观的意义上,那台在非常客观的意义上,那台Printer是独立于那台是独立于那台Computer的的 聚合有时能够不依赖部分而存在,有时又不能聚合有时能够不依赖部分而存在,有时又不能 部分可以独立于聚合而存在部分可以独立于聚合而存在如果有一部分遗失,聚合会给人一种不完整的感觉如果有一部分遗失,聚合会给人一种不完整的感觉部分的所有权可以由几个聚合共享部分的所有权可以由几个聚合共享84组合关系示例组合关系示例 Button离开离开Mouse对象则不能独立存在对象则不能独立存在销毁销毁Mouse则也销毁则也销毁Mouse,因为它们是,因为它们是Mouse对象整体的一个部分对象整体的一个部分每个每个Button只能仅仅属于一个只能仅仅属于一个Mouse(如树和树叶)(如树和树叶)部分在某一时刻仅仅只能属于一个组成部分在某一时刻仅仅只能属于一个组成 组成唯一地负责处理它的所有部分组成唯一地负责处理它的所有部分负责它们的创建和销毁负责它们的创建和销毁倘若对于部分的职责有由其他的对象来承担的话,组合也可以放松这些职倘若对于部分的职责有由其他的对象来承担的话,组合也可以放松这些职责责如果一个组成销毁的话,它必须将它所有的部分销毁,或者把负责处理它如果一个组成销毁的话,它必须将它所有的部分销毁,或者把负责处理它们的权力交给其他的一些对象们的权力交给其他的一些对象85泛化关系泛化关系n只有在两个设计类之间存在清晰明确的只有在两个设计类之间存在清晰明确的“is a”关系或为了复用代码才使用继承(但是注意关系或为了复用代码才使用继承(但是注意不要因此引入耦合)不要因此引入耦合)n缺点缺点n类间可能耦合的最强形式:派生类会继承基类的属类间可能耦合的最强形式:派生类会继承基类的属性、方法、关系性、方法、关系n类层次中的封装是脆弱的,它会导致类层次中的封装是脆弱的,它会导致“脆弱基类脆弱基类”问题问题基类的改动会直接波及底下的层次基类的改动会直接波及底下的层次n在大多数语言中,继承非常不易改变在大多数语言中,继承非常不易改变关系是在编关系是在编译时确定的,关系在运行时是固定的译时确定的,关系在运行时是固定的86可见性问题可见性问题n动机:对象动机:对象A若要对对象若要对对象B发送消息,那么对象发送消息,那么对象B必须必须对对象对对象A可见可见n可见性(可见性(Visibility)是一个对象)是一个对象“看到看到”或者引用另或者引用另一个对象的能力;更一般地讲,可见性与问题的范围一个对象的能力;更一般地讲,可见性与问题的范围有关:一个资源(如一个实例)是否在另一个资源的有关:一个资源(如一个实例)是否在另一个资源的范围之内?范围之内?n从对象从对象A到对象到对象B通常有四种可见性:通常有四种可见性:n属性可见性(属性可见性(attribute):B是是A的一个属性的一个属性n参数可见性(参数可见性(parameter):B是是A中一个方法的参数中一个方法的参数n局部声明可见性(局部声明可见性(local):B在在A的一个方法中被声明为一个的一个方法中被声明为一个局部对象局部对象n全局可见性(全局可见性(global):B在某种程度上全局可见在某种程度上全局可见87属性可见性属性可见性public class Host private Dog dog; 88参数可见性参数可见性从ShowMails 到Mails的参数可见性public class ShowMails static int putMails(Mails mail)if (currentMails = maxMails)System.out.println(Mailbox overwhelmed!);return -1;showListcurrentMails = mail;currentMails +;return currentMails;89局部声明可见性局部声明可见性从从Show到到Mails 的的局部声明可见性局部声明可见性public class Showpublic static void main(String args)Mails newmail;.90全局可见性全局可见性91可见性问题示例可见性问题示例/属性可见性属性可见性class POSTprivate private ProductCatalogProductCatalog prodCatalogprodCatalog; ;public void enterItem(int upc,int qty) spec:=prodCatalog.getSpecification(upc); /参数可见性参数可见性class Salepublic void public void makeLineItem(ProductSpecificationmakeLineItem(ProductSpecification spec, spec, intint qty) qty) /局部声明可见性局部声明可见性class POST public void enterItem(int upc,int qty) ProductSpecificationProductSpecification spec= spec=prodCatalog.getSpecification(upcprodCatalog.getSpecification(upc); ); 92内容安排内容安排n从分析到设计从分析到设计n体系结构设计体系结构设计n用例设计用例设计n子系统设计子系统设计n类设计类设计n n从设计模型到代码实现从设计模型到代码实现93设计模型与代码实现设计模型与代码实现n编写代码形成软件编写代码形成软件n软件最终需要代码来实现软件最终需要代码来实现n模型只是为代码实现提供支持模型只是为代码实现提供支持n目前尚未产生成熟的可执行模型目前尚未产生成熟的可执行模型n正向工程(正向工程(Forward engineering)n由设计类图导出框架代码由设计类图导出框架代码n由交互图创建方法实现由交互图创建方法实现n逆向工程(逆向工程(Reverse engineering)n由源代码导出设计模型由源代码导出设计模型94正向工程正向工程-生存框架代码生存框架代码n什么是框架代码?什么是框架代码?n代码在设计上的初步实现代码在设计上的初步实现n类的框架代码包括那些?类的框架代码包括那些?n属性值定义:名称、类型、缺省值等属性值定义:名称、类型、缺省值等n方法定义:名称、参数、返回类型等方法定义:名称、参数、返回类型等n引用关系引用关系nn根据设计类图产生框架代码根据设计类图产生框架代码n用方法和简单属性定义一个类用方法和简单属性定义一个类n加入引用属性:角色名定义引用属性加入引用属性:角色名定义引用属性95从设计类图产生框架代码从设计类图产生框架代码-11. 1. 用方法和简单属性定义一个类(用方法和简单属性定义一个类(用方法和简单属性定义一个类(用方法和简单属性定义一个类(属性、方法、构造函数属性、方法、构造函数属性、方法、构造函数属性、方法、构造函数)96从设计类图产生框架代码从设计类图产生框架代码-22. 2. 加入引用属性(加入引用属性(加入引用属性(加入引用属性(引用属性引用属性引用属性引用属性reference attributereference attribute:关联和:关联和:关联和:关联和导航;角色名导航;角色名导航;角色名导航;角色名role namerole name)97Rose支持框架代码的导出支持框架代码的导出n利用利用Rose由设计类图生成框架代码(由设计类图生成框架代码(Java)n新建一个基于新建一个基于J2SE的应用程序的应用程序n选择缺省的语言为选择缺省的语言为Javan利用利用Rose建模建模n开始导出工作:开始导出工作:n类的语法检查类的语法检查n设置导出路径设置导出路径ClassPathn导出框架代码导出框架代码n主要问题:主要问题:n设设计模型开发不够完善,无法导出代码计模型开发不够完善,无法导出代码98其它问题其它问题-一对多关系的实现一对多关系的实现99正向工程正向工程-创建方法实现创建方法实现n一个一个交互图交互图显示出了响应方法调用而产显示出了响应方法调用而产生的消息传递;这些消息序列可以被翻生的消息传递;这些消息序列可以被翻译成方法实现中的一系列语句译成方法实现中的一系列语句n由顺序图产生方法实现由顺序图产生方法实现n由协作图产生方法实现由协作图产生方法实现100示例示例-POST类类enterItem方法实现方法实现/1.1创建创建Sale实例实例if (isNewSale() sale =new Sale();/1.2获得获得ProductSpecificationProductSpecification spec= productCatalog.getSpecification(upc);/1.3添加销售项添加销售项sale.makeLineItem(spec,qty);public void enterItem(int upc,int qty) if (isNewSale() sale =new Sale(); ProductSpecification spec= productCatalog.getSpecification(upc); sale.makeLineItem(spec,qty);由顺序图产生实现代码由顺序图产生实现代码由顺序图产生实现代码由顺序图产生实现代码101作业作业3:系统设计:系统设计-题目要求题目要求n总分:总分:20分分n在作业在作业2用例分析的基础上,完成设计过程用例分析的基础上,完成设计过程n完成已分析的用例的设计过程,主要包括(完成已分析的用例的设计过程,主要包括(10分)分)n用例实现用例实现-交互图设计交互图设计n类设计(类设计(VOPC和类的详细定义)和类的详细定义)n可选:子系统设计可选:子系统设计n由于费用支付方式未定,因此,在第一版的系统设计由于费用支付方式未定,因此,在第一版的系统设计时,应充分考虑支付方式的可扩展性;请结合面向对时,应充分考虑支付方式的可扩展性;请结合面向对象的设计原则和模式,设计系统中的象的设计原则和模式,设计系统中的“支付类支付类”(Payment),以使得系统能够适应多种不同的支),以使得系统能够适应多种不同的支付方式(注意在图中添加适当的注释阐明相关的设计付方式(注意在图中添加适当的注释阐明相关的设计原则或模式)(原则或模式)(5分)分)102
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号