面向对象分析和设计讲座6.从需求到设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

上海交通大学计算机科学与工程系第6讲.从需求到设计CaoJianCITLab,ShanghaiJiaotongUniversity上海交通大学计算机科学与工程系2020/2/252内容提要从分析到设计逻辑体系结构与包图迈向对象设计交互图类图上海交通大学计算机科学与工程系2020/2/2531.从分析到设计DotherightthingsDothethingsrightWhatHowChapter12上海交通大学计算机科学与工程系2.逻辑体系架构与UML包图上海交通大学计算机科学与工程系2020/2/2552.1逻辑架构与层逻辑架构是软件类的宏观组织结构,它将软件类组织成包,子系统和层等层:对类、包或子系统的粗粒度的分组,具有对系统主要方面加以内聚的职责。较高的层可以调用较低的层。常见的层:用户界面应用逻辑和领域对象技术服务上海交通大学计算机科学与工程系2020/2/256DomainUISwingnottheJavaSwinglibraries,butourGUIclassesbasedonSwingWebSalesPaymentsTaxesTechnicalServicesPersistenceLoggingRulesEngineOO技术可以适合于所有级别,但本书的介绍着重于核心应用逻辑上海交通大学计算机科学与工程系2020/2/2572.2软件架构架构是一组重要决策,其中涉及软件系统的组织,对结构元素及其组成系统的接口的选择,这些元素特定于其相互协作的行为,这些结构和行为元素到规模更大的子系统的组成,以及指导该组织结构(这些元素及其接口,协作和组成)的架构风格上海交通大学计算机科学与工程系2020/2/2582.3包的概念上海交通大学计算机科学与工程系2020/2/2592.3.1包的引入大型的软件系统中往往包含大量的建模元素需要将它们有序的组织起来包就是一种概念性的模型管理的图形工具上海交通大学计算机科学与工程系2020/2/25102.3.2包的语义包是一种对模型元素进行成组组织的通用机制。包用于定义一个名字空间或容器(Container)。运用包可以把语义上相近的可能一起变更的模型元素组织在同一个包中,对包中的元素作为一个整体对待,并且控制它们的可视性和存取。包纯粹是一种概念性的模型元素,只存在于软件的开发过程中,因而与组件的概念是不一样的。上海交通大学计算机科学与工程系2020/2/25112.3.3包的表示GUIGUICOMMON:GUI{Version1.2}+窗口+表格#事件处理简单名字路径名字Common是GUI所属的包包的性质拥有的对象类上海交通大学计算机科学与工程系2020/2/2512包拥有内容,包括类、接口、组件、节点、协同。UseCase、图,甚至其它包包与它所含的模型元素之间的关系是一种组合联系,即一个包由一个或多个模型元素组成,每一个模型元素都在该包中申明,一个模型元素只能为一个包唯一地拥有,一个包消失了,该包中所有元素都消失不同包中的元素可以同名,但是同一包中的模型元素不能同名上海交通大学计算机科学与工程系2020/2/2513包的模型元素名前可以有可视性标志,其表示方法与类中的属性和操作的可视性表示一样。+,对于输入该包的任何包的模型元素都可见-,对于外包不可见#,只对其子包可见+订货表+追踪表-订货客户机上海交通大学计算机科学与工程系2020/2/25142.3.4包的嵌套包可以拥有其它包作为包内的元素,子包又可以拥有子包,这样就构成一个嵌套结构包的嵌套层次不能太多,一般最多不超过2~3层上海交通大学计算机科学与工程系2020/2/2515《import》《import》《import》《access》《access》控制器图形元素领域元素图形内核编辑器通用的图形编辑器上海交通大学计算机科学与工程系2020/2/2516编辑器图形元素图形内核领域元素控制器+另一种表达只能表示构成,不能表示依赖上海交通大学计算机科学与工程系2020/2/25172.3.5标准构造型构造型和标记值说明其特定的性质,如包的作者,提供的服务等《facade》:一个包仅仅是其它一些包的视图《framework》:代表模型架构《stub》:一个包是另一个包的公共内容的服务代理《subsystem》:子系统《system》:代表一个系统模型上海交通大学计算机科学与工程系2020/2/25182.4包的联系上海交通大学计算机科学与工程系2020/2/25192.4.1包的联系种类主要有两种:依赖泛化上海交通大学计算机科学与工程系2020/2/25202.4.2依赖与输入依赖依赖:一个元素的定义的改变会引起另一个元素发生相应改变如对于类而言,一个类作为另一个类的数据的一部分,一个类用另一个类作为操作的参数等两个包之间存在依赖是指两个包所含的模型元素之间存在着一个或多个依赖。依赖关系的表示:用虚箭线从依赖包指向独立包上海交通大学计算机科学与工程系2020/2/2521订货顾客数据库接口{abstract}Oracle接口Sybase接口领域上海交通大学计算机科学与工程系2020/2/2522包的依赖关系没有传递性包的依赖关系可以加上许多构造型规定它的语义,其中最常见的是输入依赖输入依赖(ImportDependency)是包与包之间的一种存取(Access)依赖关系。输入(importing)允许一个包中的元素存取另一个包中的元素输入依赖是单向的。上海交通大学计算机科学与工程系2020/2/2523包的公共部分,即可视性为公共的模型元素,称为包的输出,包的输出只对另一个与它有输入依赖的包才是可视的,可存取的输入依赖的表示,是在虚箭线上标有构造型《import》,箭头的方向从输入方的包指向输出方的包表达存取依赖的另一构造型是《Access》,《import》把目标包的内容加到源包的名字空间,因而无需限定(指出)它们的名称《Access》不把目标包的内容加到源包的名字空间,因而需要指出它们的名称上海交通大学计算机科学与工程系2020/2/2524客户机+订货表+追踪表-订货+订货规则-GUI:窗口+窗口+表格#事件处理策略GUI《import》《import》对于“策略”包中的类可视对于“策略”包中的类不可视上海交通大学计算机科学与工程系2020/2/25252.4.3泛化与类的泛化关系一样:表示一般与特殊的关系两个包之间存在泛化关系,指其中的特殊性包必须遵循一般性包的接口。与类的继承相同,特殊包一般继承其所包含的公共类,并且可以重载和添加自己的类。上海交通大学计算机科学与工程系2020/2/25262.5使用层进行设计系统的大型逻辑结构组织为独立的,职责相关的离散层,具有清晰内聚的关注分离。较低的层是低级别和一般性服务,较高的层则是与应用相关。协作与耦合从较高层到较低层进行,避免从较低层到较高层的耦合上海交通大学计算机科学与工程系2020/2/2527UI(AKAPresentation,View)Application(AKAWorkflow,Process,Mediation,AppController)Domain(AKABusiness,ApplicationLogic,Model)TechnicalServices(AKATechnicalInfrastructure,High-levelTechnicalServices)Foundation(AKACoreServices,BaseServices,Low-levelTechnicalServices/Infrastructure)widthimpliesrangeofapplicabilityGUIwindowsreportsspeechinterfaceHTML,XML,XSLT,JSP,Javascript,...handlespresentationlayerrequestsworkflowsessionstatewindow/pagetransitionsconsolidation/transformationofdisparatedataforpresentationhandlesapplicationlayerrequestsimplementationofdomainrulesdomainservices(POS,Inventory)-servicesmaybeusedbyjustoneapplication,butthereisalsothepossibilityofmulti-applicationservices(relatively)high-leveltechnicalservicesandframeworksPersistence,Securitylow-leveltechnicalservices,utilities,andframeworksdatastructures,threads,math,file,DB,andnetworkI/OmoreappspecificdependencyBusinessInfrastructure(AKALow-levelBusinessServices)verygenerallow-levelbusinessservicesusedinmanybusinessdomainsCurrencyConverter上海交通大学计算机科学与工程系2020/2/2528代码:将代码组织映射为层和UML包UML工具:对代码逆向工程产生包图上海交通大学计算机科学与工程系2020/2/2529领域层与应用逻辑层典型的软件系统都有UI逻辑和应用逻辑,我们如何使用对象设计应用逻辑“全能类”?从真实世界出发设计对象,分配应用逻辑职责,称为领域对象,因此应用逻辑层被称为领域层领域层和领域模型的关系:领域模型可以给我们领域层命名的灵感上海交通大学计算机科学与工程系2020/2/2530PersistenceSecurityLoggingTechnicalServicesPOSInventoryTaxDomainVerticalLayersHorizontalPartitions上海交通大学计算机科学与工程系2020/2/2531不要把外部资源表示为最低层大部分系统依赖于外部资源或服务,例如MySQL库存数据库。这些是物理实现构件,而不是逻辑结构中的层就逻辑架构和层而言,对某个持久数据集合的访问可以看作领域层中的子领域-库存子领域上海交通大学计算机科学与工程系2020/2/2532Domain(s)TechnicalServicesFoundationMySQLInventoryPersistenceNamingandDirectoryServicesWebAppFrameworkTechnicalServicesPOSInventoryDomain(s)FoundationWorsemixeslogicalanddeploymentviewsBetteralogicalviewalogicalrepresentationoftheneedfordataorservicesrelatedtothesesubdomains,abstractingimplementationdecisionssuchasadatabase.玞omponent?NovellLDAPUMLnotation:AUMLcomponent,orreplaceable,modularpartofthephysicalsystemUMLnotation:AphysicaldatabaseintheUML.上海交通大学计算机科学与工程系2020/2/2533模型-视图分离原则不要将非UI对象直接与UI对象连接或耦合。因为窗口与某个应用相关,非窗口对象可以重用不要在UI对象方法中加入应用逻辑模型:领域层对象同义词

1 / 152
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功