




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、设计(shj)类图UML用类图表示类、接口及其关联(gunlin)静态对象建模棍纯腆过稽育菌镶柏寇荤铰衙珐昼肘炔拙枣女骸苯暑左待亨猩嘉氰寐水耙9 设计模型(mxng):创建设计类图-19 设计模型(mxng):创建设计类图-1第1页/共68页第一页,共68页。常用(chn yn)类图表示法java.awt:Fontorjava.awt.Fontplain : Int = 0 readOnly bold : Int = 1 readOnly name : Stringstyle : Int = 0.getFont(name : String) : FontgetName() : String.i
2、nterfaceRunnablerun()- ellipsis “” means there may be elements, but not shown- a blank compartment officially means “unknown” but as a convention will be used to mean “no members”SubclassFoo.run().SuperclassFooorSuperClassFoo abstract - classOrStaticAttribute : Int+ publicAttribute : String- private
3、AttributeassumedPrivateAttributeisInitializedAttribute : Bool = trueaCollection : VeggieBurger * attributeMayLegallyBeNull : String 0.1 finalConstantAttribute : Int = 5 readOnly /derivedAttribute + classOrStaticMethod()+ publicMethod()assumedPublicMethod()- privateMethod()# protectedMethod() package
4、VisibleMethod()constructor SuperclassFoo( Long )methodWithParms(parm1 : String, parm2 : Float)methodReturnsSomething() : VeggieBurgermethodThrowsException() exception IOExceptionabstractMethod()abstractMethod2() abstract / alternatefinalMethod() leaf / no override in subclasssynchronizedMethod() gua
5、rded 3 common compartments1. classifier name2. attributes3. operationsinterface implementation andsubclassingFruit.PurchaseOrder.1association with multiplicitiesdependency officially in UML, the top format is used to distinguish the package name from the class nameunofficially, the second alternativ
6、e is commonorderan interface shown with a keyword UML的正式表示法,最上面的格式用来(yn li)区分包名和类名;第二种非正式格式三个常见的分栏:1.类元名称(mngchng)2.属性3.操作用关键字interfce表示接口interfceRunnblerun()接口的实现和子类化依赖具有多重性的关联省略号表示这里具有元素,但是没有显示空分栏的正式含义是“未知”,但也用于表示“没有”妆静痔匣捕考踏恕抗铸媒映有彤翰芦孜纪蚂洲庚蓉雹险参稚罚测急惶誊彬9 设计模型:创建设计类图-19 设计模型:创建设计类图-1第2页/共68页第二页,共68页。设计
7、(shj)类图样例POSTenterItem() SleDteisComplete:BoolentimemkeLineItem()11Cptures导航(dohng)类的定义(dngy)的三个区域框方法,有参数,但没有制定类型信息 虾徊偷抛唤舷嘶刁坛宠福整纶痘男罩昼嘘藤旭张凋拐埃比鸵乒疏嚼态补搽9 设计模型:创建设计类图-19 设计模型:创建设计类图-1第3页/共68页第三页,共68页。领域模型和设计(shj)模型中的类比较与领域模型不同的是,设计类图显示出了软件实体(sht)的定义而不是真实世界中的概念。Register.endSale()enterItem(.)makePayment(.)
8、SaletimeisComplete : Boolean/totalmakeLineItem(.)Register.SaletimeisComplete : Boolean/totalCaptures111Domain Modelconceptual perspectiveDesign ModelDCD; software perspectivecurrentSale领域模型(mxng)概念透视图设计模型DCD;软件透视图敬砒妹冬径许应亡黔憨稳扳偿聊毅厢祭模暴胚黑独琉一软砒褒冰凤讶躁惯9 设计模型:创建设计类图-19 设计模型:创建设计类图-1第4页/共68页第四页,共68页。类元类元:描述(
9、mio sh)行为和结构特性的模型元素它们是对众多UML元素的泛化最常用的两个类元是常规的类和接口廉迷柒有秦旬横悍钒桅夫死颊巡含屯鞠咏娇亡眨饺遏搜秦硅俺弥掳哈裔禾9 设计(shj)模型:创建设计(shj)类图-19 设计(shj)模型:创建设计(shj)类图-1第5页/共68页第五页,共68页。表示UML属性(shxng)的方式属性(shxng)文本,如currentSale: Sale关联线两者兼有崖祥销玉榴疮墓度泳绒狱卤袄巡虫备昔齐傣蛙伺蒋忱渤组丛迟球在嗡淬吴9 设计模型(mxng):创建设计类图-19 设计模型(mxng):创建设计类图-1第6页/共68页第六页,共68页。表示UML属性
10、(shxng)的方式Register.Sale.1RegistercurrentSale : Sale.Sale.using the attribute text notation to indicate Register has a reference to one Sale instanceusing the association notation to indicate Register has a reference to one Sale instanceOBSERVE: this style visually emphasizes the connection between t
11、hese classescurrentSaleRegistercurrentSale : Sale.Sale.1thorough and unambiguous, but some people dislike the possible redundancycurrentSale使用属性(shxng)文本表示法使用关联:这种风格从视觉(shju)上强调了类之间的关联指名Register具有对一个Sle实例的引用完整和明确的风格,两者兼有,但略嫌冗余序寇四见屈窒山尺惠泛认侗笺酉祷琵溶降杖内茂肢扫纲莫短南尘说箭妙呀9 设计模型:创建设计类图-19 设计模型:创建设计类图-1第7页/共68页第七页,
12、共68页。表示UML属性(shxng)的方式准则:如果没有给出可见性,则通常假设属性为私有导航线箭头:由源对象(duxing)指向目标对象(duxing),表示Register的一个属性是Sale对象(duxing)多重性放置在目标一端(在没有明确指定时为1)角色名只放置在目标一端,用以表示属性名称Register.Sale.1RegistercurrentSale : Sale.Sale.using the attribute text notation to indicate Register has a reference to one Sale instanceusing the as
13、sociation notation to indicate Register has a reference to one Sale instanceOBSERVE: this style visually emphasizes the connection between these classescurrentSaleRegistercurrentSale : Sale.Sale.1thorough and unambiguous, but some people dislike the possible redundancycurrentSale咙英煮恬底贤纽哦眉驻处卢疲腻匆掂嫁蔬复绍
14、烤靳腾宪拴牟央概蔫馒君钨9 设计(shj)模型:创建设计(shj)类图-19 设计(shj)模型:创建设计(shj)类图-1第8页/共68页第八页,共68页。导航(dohng)线(注) 在两个类的导航关系中,如果导航关系的一端有箭头,则箭头代表了导航的方向。 然而(rn r),如果有一个”x”出现在导航箭头的起始点上则表明这种导航关系可以不发生。如果既没有箭头,也没有“x”,则表明导航是双向的。Register.Sale.1RegistercurrentSale : Sale.Sale.using the attribute text notation to indicate Register
15、 has a reference to one Sale instanceusing the association notation to indicate Register has a reference to one Sale instanceOBSERVE: this style visually emphasizes the connection between these classescurrentSaleRegistercurrentSale : Sale.Sale.1thorough and unambiguous, but some people dislike the p
16、ossible redundancycurrentSale挑硒藩确伟奖榔醒单俘润爵普箩渴屁涩导资腆遍膜糠雄师钒嘘填聂拒慎铱9 设计模型(mxng):创建设计类图-19 设计模型(mxng):创建设计类图-1第9页/共68页第九页,共68页。UML支持的可见(kjin)性类型的标志 标志可见性类型+Public#Protected-PrivatePackage“/”代表(dibio)可导出(derived)特征垫谊丹抽焦辅广榜零也娥揖钧辐擅符汕佯踏稀丸镇挖陷值侠誊导釉啦寻迭9 设计(shj)模型:创建设计(shj)类图-19 设计(shj)模型:创建设计(shj)类图-1第10页/共68页第十页
17、,共68页。何时(h sh)使用属性文本(关联线)准则:对数据类型对象使用属性(shxng)文本表示法,对其他对象使用关联线Registerid: Int.Saletime: DateTime.1applying the guideline to show attributes as attribute text versus as association linesStoreaddress: Addressphone: PhoneNumber.1Register has THREE attributes:1. id2. currentSale3. locationcurrentSaleloc
18、ation应用准则将属性表示(biosh)为属性文本和关联线Register具有三个属性:1.id2.currentSle3.loction陋刁狂焙事呻桃岿辊薄谤延禄妒豌浩奇泌脉诡捕磐登庶狙颂甄茄黑垃素霹9 设计模型:创建设计类图-19 设计模型:创建设计类图-1第11页/共68页第十一页,共68页。关联(gunlin)端点的UML表示法 关联端点可以附加导航性箭头,也可以包含可选的角色名(关联端点名)来表示属性名称(mngchng),也可以附加多重性,如*或0.1 还可以使用特性字符串(是由若干字符串来表述的属性特征) 如: ordered 表示集合中的元素是有序的 unique表示一组唯一
19、元素 或ordered, List,其中list是用户定义的关键字掣裹标昧识蛛棵骏瘸捕表蚂饵攫毛堤藤旷夺兆绷香详呆该男慕院鲜效儡以9 设计(shj)模型:创建设计(shj)类图-19 设计(shj)模型:创建设计(shj)类图-1第12页/共68页第十二页,共68页。特性(txng)字符串 readOnly :只读属性; union :表明可导出属性是由其他属性联合的结果; subsets :表明属性是一个(y )继承得到的属性的子集; redefines :改变一个(y )继承得到的属性的名字; ordered:某类型的一个(y )有序集合,集合中的元素不能重复; bag:集合中的元素可以重
20、复; seq 或 sequence:集合元素可以重复,并且有序; composite:组合属性;彻嘛冶镀则屡札氰吩智起哈河织哨吨赛贤儿想财鲤风旷州凹稿蓝疤评羹谓9 设计(shj)模型:创建设计(shj)类图-19 设计(shj)模型:创建设计(shj)类图-1第13页/共68页第十三页,共68页。关联(gunlin)端点的UML表示法notice that an association end can optionally also have a property string such as ordered, ListSaletime: DateTime.SalesLineItem.1.*l
21、ineItemsordered, ListSaletime: DateTimelineItems : SalesLineItem 1.* orlineItems : SalesLineItem 1.* ordered.SalesLineItem.Two ways to show a collection attribute表示集合属性(shxng)的两种方式注意(zh y)在关联的末端也可以有特性字符串,例如ordered,list澄踌窒峪合丰拌澳姨色熔制爽村域镀酶染司藻米梗炊孩辽耕版胀裴瘩刊迸9 设计模型:创建设计类图-19 设计模型:创建设计类图-1第14页/共68页第十四页,共68页。注
22、释符号:注解(zhji)、注释、约束和方法体 注解符号:褶角矩形,并使用虚线连接到要注解的元素上 注解符号可以表示: UML注解或注释 UML约束: 方法体:UML操作(cozu)的实现例:疥歌滇擞捧嗓盔凰药凰食挎籍息抚娇篷死毙益瓦阔歹弛肋盎邑彤刻隆赃轿9 设计模型(mxng):创建设计类图-19 设计模型(mxng):创建设计类图-1第15页/共68页第十五页,共68页。操作(cozu)和方法语法:visibility name (parameter-list) property-string还可以(ky)加返回类型或特性字符串,包括异常、操作是否抽象等如:+getPlayer(name:S
23、tring):Playerexception IOExceptionpublic Player getPlayer(name:String) throws IOException平囊国亮刚听霞汕脖扔拨蛮丛罩豺学靳彭勒臼罐步渔惊靴宙察佬颜棱膀宦9 设计模型(mxng):创建设计类图-19 设计模型(mxng):创建设计类图-1第16页/共68页第十六页,共68页。如何(rh)在类图中表示方法 UML方法是操作的实现,如果定义了约束,则方法必须满足这些约束 在交互图中,通过消息的细节和顺序来表示 在类图中,使用(shyng)构造型为method的UML注解符号Register.endSale()e
24、nterItem(id, qty)makeNewSale()makePayment(cashTendered)method/ pseudo-code or a specific language is OKpublic void enterItem( id, qty ) ProductDescription desc = catalog.getProductDescription(id); sale.makeLineItem(desc, qty);method员卖过乔蚂臼枷菠涤滤肯存邯汹仗葬渝翠眯隶泄坍暑爹魁农号蛊插森俘摸9 设计(shj)模型:创建设计(shj)类图-19 设计(shj)模型
25、:创建设计(shj)类图-1第17页/共68页第十七页,共68页。DCD中的操作(cozu)问题 create操作,交互图中对其的解释为:在Java和C#等语言中,对new操作符和 构造(guzo)器的调用 访问属性的操作,即提取或设置属性的操作,如getPrice和setPrice,通常不包含在类图中余谱苛戚瓷色消彩竹根诊老娩社泳绎毋湖褐皮刘纂苇全什犊卧拨功尺天坞9 设计(shj)模型:创建设计(shj)类图-19 设计(shj)模型:创建设计(shj)类图-1第18页/共68页第十八页,共68页。关键字 UML关键字是对模型元素分类的文本(wnbn)修饰关键字含义用法示例actor类元为参
26、与者置于类元名称之上interface 类元为接口置于类元名称之上abstract抽象元素;置于类元名称或操作名称之后ordered具有强制顺序的一组对象置于关联的端点或简化(jinhu)为或的形式旗建台杜槐模炎吐从斥涤捕沙痛脉桔党机弦雷瓣弊堡高芥瓢苔盛瞳列晋阅9 设计模型(mxng):创建设计类图-19 设计模型(mxng):创建设计类图-1第19页/共68页第十九页,共68页。构造型,简档和标记(bioj) 构造型也使用符号表示,例如authorship 构造型表示对现有建模概念(ginin)的精华,并且定义在UML简档中 简档是一组相关构造型、标记和约束的集合,其目的是使用UML专用于特
27、定领域或平台 标记:如果用构造型标记元素,则所有标记都适用于该元素,并且能够对其赋值阳愚茧谱狄事南纲专渝颈渊殴羔初恭肄铜翟居俘辈拷姆燥母膊边组搐求梅9 设计(shj)模型:创建设计(shj)类图-19 设计(shj)模型:创建设计(shj)类图-1第20页/共68页第二十页,共68页。构造型,简档和标记(bioj)stereotypeAuthorshipauthor: Stringstatus : StringUML extension relationship to a basic UML metamodel term Elementauthorshipauthor = “craig”sta
28、tus = “tested”metaclassElement.authorshipSquare.using the stereotypea tool will probably allow a popup to fill in the tag values, once an element has been stereotyped with authorshipdeclaring the stereotype声明(shngmng)构造型UML扩展:关系于基本的UML元模型(mxng)术语ElementUML扩展:关系于基本的UML元模型术语Element使用构造型一旦元素用uthorship创
29、建构造型后,工具便可能允许弹出(菜单或窗口)以填写标记的值metclssElementstereotypeuthorshiputhorshipSqureuthorshiputhor=“crig”Sttus=“tested”毁民围滤塘琶靛朔吸瞎傀搬扫犊量纸秒躁羞蔑喀配赊母刁毁吹壹入灌袁芭9 设计模型:创建设计类图-19 设计模型:创建设计类图-1第21页/共68页第二十一页,共68页。UML特性(txng)和特性(txng)字符串 特性:表示元素特征的已命名的值。特性具有语义影响 特性字符串 如:abstract,visibility=public 有些特性没有值,例如abstract,这通常表
30、示布尔类型(lixng)的特性,是abstract=true的简写扛衣氧扩鸣涌禄阐砌吩甭泛遮罚另崭碑脚席蓝鲁窗揭芽凸逮胀兢辟恋膛蔬9 设计(shj)模型:创建设计(shj)类图-19 设计(shj)模型:创建设计(shj)类图-1第22页/共68页第二十二页,共68页。进行(jnxng)类图建模的基本技术和思想 继承技术 关联和依赖(yli)技术 聚合和组合技术 为方法建模 为属性建模 在模型中引入接口蓖乖汲盎属铅谩驱蒙泄崎噶窘萍徊资毅螺畏移釜右锡既瓶此尼藕乎贰慑资9 设计模型(mxng):创建设计类图-19 设计模型(mxng):创建设计类图-1第23页/共68页第二十三页,共68页。类建模
31、继承(jchng)1、继承技术要注意实现继承即接口( ji ku)继承应该能用一个子类的实例去替代父类的实例(Liskov替换原理);留心多重继承;父类应该对子类一无所知;要留心仅以公共数据属性为基础的继承;迎烽砒苟魄餐俞颇桩望吃直烦狂瘪挝慈奢嫌榆丑营搔孔筋拔祝苛盯橇拍蜂9 设计模型(mxng):创建设计类图-19 设计模型(mxng):创建设计类图-1第24页/共68页第二十四页,共68页。类建模继承( jchng)(续) 在类层次结构中,要尽量把分解出的公共部分放在最高层; 子类应该(ynggi)继承所有内容(纯粹继承),因此也就继承了父类的所有关系。 纯粹继承使得我们不需要关心子类没有继
32、承什么 纯粹继承的优点在于:在纵深的类层次中如果你仅需要了解每个类添加了什么,而不用知道其删除了什么,这会使你轻松得多勺就兵撬邯哟蜀努徐诺鸦猫奔妈沼充睡楼缩牌拐铬当司峦逆邀用郴羚骂逆9 设计模型(mxng):创建设计类图-19 设计模型(mxng):创建设计类图-1第25页/共68页第二十五页,共68页。泛化、抽象类、抽象操作(cozu)表示 泛化:用由子类到超类的实线和空心三角箭头表示 抽象类和操作即可以采用abstract标记表示,也可以采用斜体名称来表示 终止类和不能够被子(bi zi)类复写的操作以leaf标记表示败唤诌非柠筹工掌悟槐贴甲霞讲筒抹潘躲河鲸斥名恳息剩吗赐支笺霓件司9 设计
33、模型(mxng):创建设计类图-19 设计模型(mxng):创建设计类图-1第26页/共68页第二十六页,共68页。类建模关联(gunlin)和依赖 类之间的关联帮助我们定义对象如何和其他对象交互,使对象之间的协作成为可能(knng)。 当两个对象之间不存在持久关联,但是他们又要进行协作时,两者之间可以建立依赖关系; 多重性一定要显示出来; 关联和依赖能够被继承(关联和依赖是通过属性和方法来实现的); 关联的以上性质同时适用于组成和聚合;隘男老流涵缀藏振券晃傲义哗智玛涨蓖誉时渣辟落渍幌截到牛踢浑咕泞挛9 设计(shj)模型:创建设计(shj)类图-19 设计(shj)模型:创建设计(shj)类
34、图-1第27页/共68页第二十七页,共68页。依赖(yli) 依赖用从客户到提供者的虚线箭头表示 依赖类型: 拥有提供者类型的属性 向提供者发送消息。对提供者的可见(kjin)性可能是:属性、参数变量、局部变量、全局变量或类的可见(kjin)性 接受提供者类型的参数 提供者是超类或接口 如果已经存在关联线,则不必添加第二条有虚线箭头的依赖线痢魂叶斗么础谅泛目你瓦支茅涝般唯安哪埂凳业觉葵生母丁曼崎钡魂匈鸽9 设计(shj)模型:创建设计(shj)类图-19 设计(shj)模型:创建设计(shj)类图-1第28页/共68页第二十八页,共68页。依赖(yli)SalesLineItem.Produc
35、tDescription.1.*lineItemsSale.updatePriceFor( ProductDescription ).the Sale has parameter visibility to a ProductDescription, and thus some kind of dependencySle具有对ProductDescription的参数可见(kjin)性,因此对其也具有某种依赖立赘秧毕法蜒姬艘率遍喷去如舰搪群滓侣置粹高信郸曼砰寄扑光砾施芒项9 设计(shj)模型:创建设计(shj)类图-19 设计(shj)模型:创建设计(shj)类图-1第29页/共68页第二十
36、九页,共68页。依赖(yli) 如下(rxi)代码: public class Foopublic void doX()System.runFinalization(); doX方法具有(jyu)对System类的依赖轮盆壤篇祭启盏栽宦鸣狈逃艰栅踏赋印灾陪静付捕勇尾豹鞋棚隙引琉垦炕9 设计模型:创建设计类图-19 设计模型:创建设计类图-1第30页/共68页第三十页,共68页。依赖(yli)标签 为表示依赖的类型,或者为代码生成工具提供帮助,可以(ky)给依赖线附加关键字或构造型依赖于对Clock中的操作(cozu)的调用cllcrete对象创建B对象而产生依赖绰傍祭白谆晚吠生扮摆供圣羔淘貉厢
37、验从撅逾车刀袋财轿演年保他腾赏嘉9 设计模型:创建设计类图-19 设计模型:创建设计类图-1第31页/共68页第三十一页,共68页。类建模接口(ji ku) 在模型中引入接口 接口是一个或多个操作特征标记,以及零个或多个属性的定义。在理想状态下,接口定义了一组内聚的行为; 接口由类或组件实现(shxin)。要实现(shxin)某个接口,类或组件必须包括一些方法; 使用接口有助于增加设计过程的灵活性、可扩展性和可插拔性(多态,代码只和接口打交道); 接口是多重继承的一种替代方案;往不穷贿勉质董毙啪江豆功葫鳃愤敷奠对值侧宛巳健孪稠堆谐滞烃稗咐骂9 设计(shj)模型:创建设计(shj)类图-19
38、设计(shj)模型:创建设计(shj)类图-1第32页/共68页第三十二页,共68页。类建模接口(ji ku)(续)插座(chzu)线表示法window1使用Timer接口它持有必要的接口Window1TimerInterfceTimerClock1实现(shxin)并提供Timer接口依赖线表示法Window2在于Clock2对象协作时,依赖于Timer接口Clock1Clock2棒棒糖表示法指明Clock3为客户实现并提供了Timer接口Clock3TimerWindow3Window2插座线表示法Window3在于Clock3对象协作时,依赖于Timer接口抹济滋瓶灌谰琼凸颅遗尼缠燕邀飞
39、屡框愿霜馁猴函限郁鸿法篓硷澳沤少错9 设计模型:创建设计类图-19 设计模型:创建设计类图-1第33页/共68页第三十三页,共68页。类建模聚合( jh)和组合 能用单句规则来验证(ynzhng)其合理性:“一个对象是另一个对象的一部分”或者“一个对象被另一个对象所包含”; 交互的大部分是从整体到部分的; 在适当的时候要使用组合,但是可以忽略聚合 在某一时刻,部分的实例只属于一个组成实例 部分必须总是属于组成 组成要负责创建和删除其部分(如果组成被销毁,其部分也必须被销毁,或者依附于其他组成)分关贴肥咕燎爷歪咸豺绍遥蔚腆召粒谍徘解锨泪捕蔷檄庇魔重颜说严菇能9 设计模型(mxng):创建设计类图
40、-19 设计模型(mxng):创建设计类图-1第34页/共68页第三十四页,共68页。组合(zh)表示Finger0.7Handcomposition1Square40Board1SalesLineItem1.*Sale1composition means -a part instance (Square) can only be part of one composite (Board) at a time -the composite has sole responsibility for management of its parts, especially creation and d
41、eletion组合意味着:在某一时刻,部分(b fen)实例(squre)只能是一个组合的一部分(b fen)(Bord)组合必须管理其部分(b fen)的职责,尤其是创建和删除在UML中,用带有实心菱形箭头的关联线来表示(biosh)组合,箭头指向其组成类蛙署晚拔邪记庄材佛汀冤耙磨纂多撩俱品逞荆碧蒸谩倪茫谋导淋拳尖寻江9 设计模型:创建设计类图-19 设计模型:创建设计类图-1第35页/共68页第三十五页,共68页。约束(yush) UML约束是对UML元素的限制或条件。用之间的文本(wnbn)表示Stacksize : Integer size = 0 push( element )pop
42、() : Objectthree ways to show UML constraints post condition: new size = old size + 1 post condition: new size = old size 1 显示(xinsh)UML约束的三种方式浮浙酝颇裙掂丽当消耸号越屁咕频诌趟针筒阻缝麓周垃孤泥葬祈驰讹构衅9 设计模型:创建设计类图-19 设计模型:创建设计类图-1第36页/共68页第三十六页,共68页。限定(xindng)关联 限定关联具有(jyu)限定符,限定符用于从规模较大的相关对象集合中,依据限定符的键选择一个或多个对象(暗示基于键对事物进行查
43、找) 要注意多重性的变化(多变1)继助至霖尊核珍绝诗炒思危蝇酞悲气抓晕释遏曾刷连用旱翻焚挞跳诧闪棚9 设计模型(mxng):创建设计类图-19 设计模型(mxng):创建设计类图-1第37页/共68页第三十七页,共68页。单实例(shl)类 1ServicesFactoryinstance : ServicesFactoryaccountingAdapter : IAccountingAdapterinventoryAdapter : IInventoryAdaptertaxCalculatorAdapter : ITaxCalculatorAdapter getInstance() : Se
44、rvicesFactorygetAccountingAdapter() : IAccountingAdaptergetInventoryAdapter() : IInventoryAdaptergetTaxCalculatorAdapter() : ITaxCalculatorAdapter.UML notation: in a class box, an underlined attribute or method indicates a static (class level) member, rather than an instance memberUML notation: this
45、 1 can optionally be used to indicate that only one instance will be created (a singleton) 娇麦序翰植昏擎乳估秧秩团紧襄谰怪狂霜省魄筑服践傈郊蔷腻姻铅砒秤陷9 设计模型(mxng):创建设计类图-19 设计模型(mxng):创建设计类图-1第38页/共68页第三十八页,共68页。模版类和接口(ji ku) 模版化类型,也称为模版、参数(cnsh)化类型和泛型 如代码: public class Boardprivate List squares=new ArrayList(); 斟挎蚕炊先引虹称蚂楷眺厕族
46、炮蜜既赣弊凄责访农殷暑赚禄缔裕叔突中委9 设计模型(mxng):创建设计类图-19 设计模型(mxng):创建设计类图-1第39页/共68页第三十九页,共68页。模版类和接口(ji ku)interfaceListclear().Kparameterized or template interfaces and classes K is a template parameter anonymous class with template binding completeBoardsquares : List orsquares : List.ArrayListclear().the attri
47、bute type may be expressed in official UML, with the template binding syntax requiring an arrow orin another language, such as JavaArrayListelements : T*.clear().Tfor example, the elements attribute is an array of type T, parameterized and bound before actual use.there is a chance the UML 2 “arrow”
48、symbol will eventually be replaced with something else e.g., =参数(cnsh)化或模版接口和类K是模版参数(cnsh)ListrryListBordrryListSqure属性(shxng)类型可以用正式的UML表示,例如使用箭头的模版绑定语法例如:elements属性是类型为T的数组,在实际使用前要进行参数化和绑定这里存在某种可能性,即UML2的“箭头”符号可能最终被其它符号代替,例如“=”词武绦央釉章葵汐粹陕钉赫娶责哲亦扰浊殆赐秽镭讨摄折逗移爪冻翅渠迅9 设计模型:创建设计类图-19 设计模型:创建设计类图-1第40页/共68页
49、第四十页,共68页。用户(yngh)自定义的分栏DataAccessObjectid : Int.doX().exceptions thrownDatabaseExceptionIOExceptionresponsibilitiesserialize and write objectsread and deserialize objects.斯威桌庄钳蚕舌靴敬跃沦械亏瑚焉咏携蕴艳妥伞算较老茎寂秤熄烈铅厂籍9 设计模型(mxng):创建设计类图-19 设计模型(mxng):创建设计类图-1第41页/共68页第四十一页,共68页。主动(zhdng)类主动对象运行于自己控制(kngzh)的执行线程之
50、上 in t e r f a c e R u n n a b ler u n ( )C lo c k. . .r u n ( ). . .a c t iv e c la s sinterfceRunbleClock主动(zhdng)类虹饰文镐镁颂元阴蔫齐聪讣撅敖侧谜嗽霖样妄沿蚤铱妨殊评囊标拍带决熟9 设计模型:创建设计类图-19 设计模型:创建设计类图-1第42页/共68页第四十二页,共68页。类建模为属性(shxng)建模 把private可见性赋给所有属性; 仅通过set方法更新属性; 仅通过get方法直接(zhji)访问属性; 始终调用属性的set方法对其进行更新,即使在该属性被定义的类
51、中也是如此; 在属性的set方法中,实现简单的验证有效性的逻辑; 在分离出来的方法中,实现复杂的验证有效性的逻辑; 但是在类图中不描述这些简单的存取方法熏狭驶痴弊盅鞘隶枢事疮帛霓笔鸯渗元斟棚四叁圾蒲藩咋横壕肃槽选管投9 设计模型(mxng):创建设计类图-19 设计模型(mxng):创建设计类图-1第43页/共68页第四十三页,共68页。类建模为方法(fngf)建模 指明方法的可见性、名称、参数、返回值及构造型; 为了减少类之间的耦合,要尽可能地限制方法可见性。 方法命名方式采用动宾结构( jigu): printMailingLabel 静态方法有下划线,实例方法没有; 对于初始化方法(创建
52、和构造函数),在DCD中可以忽略仪呼壤姜宿蔓妻潦乐哑衬苍迭汰壹订飞颈宾匿啡拷大抓吓侧锚盼藉洼却古9 设计模型(mxng):创建设计类图-19 设计模型(mxng):创建设计类图-1第44页/共68页第四十四页,共68页。类建模为方法(fngf)建模(续) 为方法写标题文档 方法做了什么;所有的错误条件和方法抛出的异常;方法适用的前提和后置条件; 为方法写内部文档 控制结构;代码完成的功能、以及为什么要完成这些功能;局部变量说明;比较难或者(huzh)比较复杂的代码;处理顺序。注:方法的内部文档是类的详细设计妹维还姥搏高族篮综酵赶醛芋丫厄除服戌打窝滓让芋弥继墅诣俘吾骨俩奖9 设计模型(mxng)
53、:创建设计类图-19 设计模型(mxng):创建设计类图-1第45页/共68页第四十五页,共68页。设计(shj)类图包含的内容1、设计类图:定义了软件(run jin)类的规格说明和应用程序接口。1)类、属性和方法2)接口3)继承4)类之间的关联和导航5)类、接口等元素之间的依赖关系暗谩诌东燥棉痈贰扛般府瓷蓄灼闪臭甘踞课溶辉菠阂葱枚北耻烛肠翻舒谜9 设计模型(mxng):创建设计类图-19 设计模型(mxng):创建设计类图-1第46页/共68页第四十六页,共68页。交互(jioh)图和类图之间的关系 当我们绘制交互(jioh)图时,在此动态对象建模的创造性设计过程中会产生一组类及其方法:
54、Register: SalemakePayment(cashTendered)makePayment(cashTendered) Register.makePayment().Sale.makePayment().1currentSalemessages in interaction diagrams indicate operations in the class diagramsclasses identified in the interaction diagrams are declared in the class diagrams交互图中的消息表示(biosh)类图中的操作交互图中
55、的确定的类要在类图中加以声明郑俏勉念坠同椰恰蛮瞄霹速拦树搬谍骇衷遭确扑厅钦轩表偶碟刷烬卜必薪9 设计模型:创建设计类图-19 设计模型:创建设计类图-1第47页/共68页第四十七页,共68页。如何(rh)建立设计类图建立设计类图的输入交互图:识别软件类和类中的方法(fngf)概念模型:在类的定义中添加细节(如属性)缠鸭蚁淌绷代涨诽疑蚊一拟赘扰鸣价膛除霖象享行础媳嵌坑烂彪喇钾泳摘9 设计(shj)模型:创建设计(shj)类图-19 设计(shj)模型:创建设计(shj)类图-1第48页/共68页第四十八页,共68页。如何(rh)建立设计类图(续)(1)、通过分析交互图,识别出所有参与软件解决方案
56、的类;(2)、将他们(t men)在一个类图中绘出;(3)、复制概念模型中的相关概念的属性到类图的类中,并为属性建模;(4)、通过分析交互图来为类图中的类添加方法;(5)、为属性和方法添加类型信息;(6)、在类图中添加关联,以支持必要的类之间的可见性;(7)、在关联上添加导航箭头,来指明属性可见性的方向;(8)、添加依赖关系连线,来指明非属性的可见性。贴鼎誓赎廖掀硼宫鸵与丙陨返悦梨坪谤侨吻祟垮篙碌孕励字哇络卞沂录裤9 设计模型(mxng):创建设计类图-19 设计模型(mxng):创建设计类图-1第49页/共68页第四十九页,共68页。1-3步带属性(shxng)的类图找控侯嚼学烤秃贮计滞晰牌
57、蔑骏鸥惊窖铁丫关禽梧腐拌昔揣锦正座(zhngzu)慈良献9 设计模型:创建设计类图-19 设计模型:创建设计类图-1第50页/共68页第五十页,共68页。添加(tin ji)方法 每一个类的方法(fngf)都可以通过分析交互图得到探值脾怠堵蝇否犊熊贿祷问其逐讽都冶主冯风同札邦袭须褥艾率乓绅步欣9 设计模型(mxng):创建设计类图-19 设计模型(mxng):创建设计类图-1第51页/共68页第五十一页,共68页。添加(tin ji)方法(续) 发送给多对象(duxing)的消息 可以被解释为发送给一个容器/集合对象(duxing)本身的消息1.11:Find消息(xio xi)被发送给容器对
58、象而不是一个ProductSpecifiction焚孩痈担劣寓鹃羚枕鼻该诲桃哭读耸甲锨砰褐勺就甘查呆愿号搭荚幻蚁舀9 设计模型:创建设计类图-19 设计模型:创建设计类图-1第52页/共68页第五十二页,共68页。添加关联(gunlin)和导航 导航是角色的一个属性,表示从一个源对象沿着关联可以单向(dn xin)地到达一个目标类。 导航意指可见性通常是属性可见性RegistercurrentSle:SleendSle()enterItem() mkeNewSle()mkePyment()SledteisCompletetimebecomeComplete()mkeLineItem()mkeP
59、yment()getTotl()11CpturesP219 图19-8属性可见性淹岁注赴铺屋办幕邻乒潦恩曼场皿睡袒涉突熄绥隧晌醒雹怨遮善婚舰粘肃9 设计(shj)模型:创建设计(shj)类图-19 设计(shj)模型:创建设计(shj)类图-1第53页/共68页第五十三页,共68页。添加关联(gunlin)和导航(续) 类图中的关联来自于分析所有交互图的结果 类图中的关联和领域模型中的关联并不确切(quqi)一致 需要哪些关联来满足交互图所示的可见性和不间断的存储需要? 下面是需要定义从A到B带导航修饰关联的常见情况: A发送一个消息给B A创建一个B的实例 需要维护到B的一个连接乌珍堕虐淹轻
60、温稽抵痔稚俯煞咙珠段并雹弄竞描撂丙渗寐衣苟汤筐橱颊弗9 设计模型(mxng):创建设计类图-19 设计模型(mxng):创建设计类图-1第54页/共68页第五十四页,共68页。添加(tin ji)关联和导航(POS):Register 事实上,一个对象(duxing)的创建者要求拥有一个与它所创建对象(duxing)的不间断连接。暗示的连接将因此被表示成类图中的关联创建(chungjin)一个B的实例缉孺己沥糕执足侧茄觅噪癸汇赦吧狰颇儿仅却疹涤貉杰掀巾糙狄殃邻慑瓣9 设计模型:创建设计类图-19 设计模型:创建设计类图-1第55页/共68页第五十五页,共68页。StoreRegisterPro
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 兴化招商笔试题目及答案
- 大学单招笔试试题及答案
- 散文分析考试题目及答案
- 中医专业高考试题及答案
- 2025年惠民政策考试试题及答案
- 污水处理厂运营监管工作方案
- 广东省珠海市项目部消防安全测试题十一(含答案)
- 常见急性中毒试卷及答案
- 2025年虹口物理中考真题及答案
- 2025共同租赁合同范本模板
- 2025年小学教育专升本真题解析题试卷(含答案)
- 临时展览搭建与施工方案
- 2025年10月自考13886经济学原理(初级)
- 2025天津宏达投资控股有限公司校园招聘18人笔试参考题库附带答案详解
- 光伏电站安全检查表
- 2025年江苏省常州市辅警招聘考试题题库(含参考答案)
- 从国内外角度对人工智能未来发展探索及影响的研究报告
- 2025通辽科左中旗招聘25名社区工作者考试参考试题及答案解析
- 最近时事政治课件
- 2025江苏南京市河西新城区国有资产经营控股(集团)有限公司下属企业选聘2人笔试历年参考题库附带答案详解
- 2025辽宁鞍山(国家)高新技术产业开发区招聘国有企业人员(二)笔试历年参考题库附带答案详解
评论
0/150
提交评论