设计模型:创建设计类图方案课件_第1页
设计模型:创建设计类图方案课件_第2页
设计模型:创建设计类图方案课件_第3页
设计模型:创建设计类图方案课件_第4页
设计模型:创建设计类图方案课件_第5页
已阅读5页,还剩131页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

9设计模型:

创立设计类图〔DCD〕目标:创立设计类图(DesignClassDiagrams)识别DCD中的类、方法和关联.磨制惊潜医泞质辗山搁石鼎通哑春操虞苔稗狈余系海补拔捉涸新喻嘶撼藏9设计模型:创立设计类图-19设计模型:创立设计类图-19设计模型:

创立设计类图〔DCD〕目标:磨制惊潜医泞质辗1设计类图UML用类图表示类、接口及其关联——静态对象建模棍纯腆过稽育菌镶柏寇荤铰衙珐昼肘炔拙枣女骸苯暑左待亨猩嘉氰寐水耙9设计模型:创立设计类图-19设计模型:创立设计类图-1设计类图UML用类图表示类、接口及其关联——静态对象建模棍纯2常用类图表示法UML的正式表示法,最上面的格式用来区分包名和类名;第二种非正式格式三个常见的分栏:用关键字interfce表示接口?interfce?Runnblerun()接口的实现和子类化依赖具有多重性的关联省略号表示这里具有元素,但是没有显示空分栏的正式含义是“未知〞,但也用于表示“没有〞妆静痔匣捕考踏恕抗铸媒映有彤翰芦孜纪蚂洲庚蓉雹险参稚罚测急惶誊彬9设计模型:创立设计类图-19设计模型:创立设计类图-1常用类图表示法UML的正式表示法,最上面的格式用来区3设计类图样例POSTenterItem(…)SleDteisComplete:BoolentimemkeLineItem(…)11Cptures导航类的定义的三个区域框方法,有参数,但没有制定类型信息

虾徊偷抛唤舷嘶刁坛宠福整纶痘男罩昼嘘藤旭张凋拐埃比鸵乒疏嚼态补搽9设计模型:创立设计类图-19设计模型:创立设计类图-1设计类图样例POSTSle11Cptur4领域模型和设计模型中的类比较与领域模型不同的是,设计类图显示出了软件实体的定义而不是真实世界中的概念。领域模型概念透视图设计模型DCD;软件透视图敬砒妹冬径许应亡黔憨稳扳偿聊毅厢祭模暴胚黑独琉一软砒褒冰凤讶躁惯9设计模型:创立设计类图-19设计模型:创立设计类图-1领域模型和设计模型中的类比较与领域模型不同的是,设计类图显示5类元类元:描述行为和构造特性的模型元素它们是对众多UML元素的泛化最常用的两个类元是常规的类和接口廉迷柒有秦旬横悍钒桅夫死颊巡含屯鞠咏娇亡眨饺遏搜秦硅俺弥掳哈裔禾9设计模型:创立设计类图-19设计模型:创立设计类图-1类元类元:描述行为和构造特性的模型元素廉迷柒有秦旬横悍钒桅夫6表示UML属性的方式属性文本,如currentSale:Sale关联线两者兼有崖祥销玉榴疮墓度泳绒狱卤袄巡虫备昔齐傣蛙伺蒋忱渤组丛迟球在嗡淬吴9设计模型:创立设计类图-19设计模型:创立设计类图-1表示UML属性的方式属性文本,如currentSale:S7表示UML属性的方式使用属性文本表示法使用关联:这种风格从视觉上强调了类之间的关联指名Register具有对一个Sle实例的引用完整和明确的风格,两者兼有,但略嫌冗余序寇四见屈窒山尺惠泛认侗笺酉祷琵溶降杖内茂肢扫纲莫短南尘说箭妙呀9设计模型:创立设计类图-19设计模型:创立设计类图-1表示UML属性的方式使用属性文本表示法使用关联:这种风格从视8表示UML属性的方式准那么:如果没有给出可见性,那么通常假设属性为私有导航线箭头:由源对象指向目标对象,表示Register的一个属性是Sale对象多重性放置在目标一端(在没有明确指定时为1)角色名只放置在目标一端,用以表示属性名称咙英煮恬底贤纽哦眉驻处卢疲腻匆掂嫁蔬复绍烤靳腾宪拴牟央概蔫馒君钨9设计模型:创立设计类图-19设计模型:创立设计类图-1表示UML属性的方式准那么:如果没有给出可见性,那么通常假设9导航线〔注〕在两个类的导航关系中,如果导航关系的一端有箭头,那么箭头代表了导航的方向。然而,如果有一个〞x〞出现在导航箭头的起始点上那么说明这种导航关系可以不发生。如果既没有箭头,也没有“x〞,那么说明导航是双向的。挑硒藩确伟奖榔醒单俘润爵普箩渴屁涩导资腆遍膜糠雄师钒嘘填聂拒慎铱9设计模型:创立设计类图-19设计模型:创立设计类图-1导航线〔注〕在两个类的导航关系中,如果导航关系的一端有箭头,10UML支持的可见性类型的标志标志可见性类型+Public#Protected-Private~Package“/〞代表可导出(derived)特征垫谊丹抽焦辅广榜零也娥揖钧辐擅符汕佯踏稀丸镇挖陷值侠誊导釉啦寻迭9设计模型:创立设计类图-19设计模型:创立设计类图-1UML支持的可见性类型的标志标志可见性类型+Public#11何时使用属性文本〔关联线〕准那么:对数据类型对象使用属性文本表示法,对其他对象使用关联线应用准那么将属性表示为属性文本和关联线Register具有三个属性:陋刁狂焙事呻桃岿辊薄谤延禄妒豌浩奇泌脉诡捕磐登庶狙颂甄茄黑垃素霹9设计模型:创立设计类图-19设计模型:创立设计类图-1何时使用属性文本〔关联线〕准那么:对数据类型对象使用属性文本12关联端点的UML表示法关联端点可以附加导航性箭头,也可以包含可选的角色名〔关联端点名〕来表示属性名称,也可以附加多重性,如’*’或‘0..1’还可以使用特性字符串(是由假设干字符串来表述的属性特征)如:{ordered}表示集合中的元素是有序的{unique}表示一组唯一元素或{ordered,List},其中{list}是用户定义的关键字掣裹标昧识蛛棵骏瘸捕表蚂饵攫毛堤藤旷夺兆绷香详呆该男慕院鲜效儡以9设计模型:创立设计类图-19设计模型:创立设计类图-1关联端点的UML表示法关联端点可以附加导航性箭头,也可以包含13特性字符串{readOnly}:只读属性;{union}:说明可导出属性是由其他属性联合的结果;{subsets<property-name>}:说明属性是一个继承得到的属性的子集;{redefines<property-name>}:改变一个继承得到的属性的名字;{ordered}:某类型的一个有序集合,集合中的元素不能重复;{bag}:集合中的元素可以重复;{seq}或{sequence}:集合元素可以重复,并且有序;{composite}:组合属性;彻嘛冶镀那么屡札氰吩智起哈河织哨吨赛贤儿想财鲤风旷州凹稿蓝疤评羹谓9设计模型:创立设计类图-19设计模型:创立设计类图-1特性字符串{readOnly}:只读属性;彻嘛冶镀那14关联端点的UML表示法表示集合属性的两种方式注意在关联的末端也可以有特性字符串,例如{ordered,list}澄踌窒峪合丰拌澳姨色熔制爽村域镀酶染司藻米梗炊孩辽耕版胀裴瘩刊迸9设计模型:创立设计类图-19设计模型:创立设计类图-1关联端点的UML表示法表示集合属性的两种方式注意在关联的末端15注释符号:注解、注释、约束和方法体注解符号:褶角矩形,并使用虚线连接到要注解的元素上注解符号可以表示:UML注解或注释UML约束:{…}方法体:UML操作的实现例:疥歌滇擞捧嗓盔凰药凰食挎籍息抚娇篷死毙益瓦阔歹弛肋盎邑彤刻隆赃轿9设计模型:创立设计类图-19设计模型:创立设计类图-1注释符号:注解、注释、约束和方法体注解符号:褶角矩形,并使用16操作和方法语法:visibilityname(parameter-list){property-string}还可以加返回类型或特性字符串,包括异常、操作是否抽象等如:+getPlayer(name:String):Player{exceptionIOException}publicPlayergetPlayer(name:String)throwsIOException}平囊国亮刚听霞汕脖扔拨蛮丛罩豺学靳彭勒臼罐步渔惊靴宙察佬颜棱膀宦9设计模型:创立设计类图-19设计模型:创立设计类图-1操作和方法语法:平囊国亮刚听霞汕脖扔拨蛮丛罩豺学靳彭勒臼罐步17如何在类图中表示方法UML方法是操作的实现,如果定义了约束,那么方法必须满足这些约束在交互图中,通过消息的细节和顺序来表示在类图中,使用构造型为?method?的UML注解符号?method?员卖过乔蚂臼枷菠涤滤肯存邯汹仗葬渝翠眯隶泄坍暑爹魁农号蛊插森俘摸9设计模型:创立设计类图-19设计模型:创立设计类图-1如何在类图中表示方法UML方法是操作的实现,如果定义了约束,18DCD中的操作问题create操作,交互图中对其的解释为:在Java和C#等语言中,对new操作符和构造器的调用访问属性的操作,即提取或设置属性的操作,如getPrice和setPrice,通常不包含在类图中余谱苛戚瓷色消彩竹根诊老娩社泳绎毋湖褐皮刘纂苇全什犊卧拨功尺天坞9设计模型:创立设计类图-19设计模型:创立设计类图-1DCD中的操作问题create操作,交互图中对其的解释为:在19关键字UML关键字是对模型元素分类的文本修饰关键字含义用法示例《actor》类元为参与者置于类元名称之上《interface》类元为接口置于类元名称之上{abstract}抽象元素;置于类元名称或操作名称之后{ordered}具有强制顺序的一组对象置于关联的端点或简化为<interfce>或<I>的形式旗建台杜槐模炎吐从斥涤捕沙痛脉桔党机弦雷瓣弊堡高芥瓢苔盛瞳列晋阅9设计模型:创立设计类图-19设计模型:创立设计类图-1关键字UML关键字是对模型元素分类的文本修饰关键字含义用法示20构造型,简档和标记构造型也使用符号??表示,例如?authorship?构造型表示对现有建模概念的精华,并且定义在UML简档中简档是一组相关构造型、标记和约束的集合,其目的是使用UML专用于特定领域或平台标记:如果用构造型标记元素,那么所有标记都适用于该元素,并且能够对其赋值阳愚茧谱狄事南纲专渝颈渊殴羔初恭肄铜翟居俘辈拷姆燥母膊边组搐求梅9设计模型:创立设计类图-19设计模型:创立设计类图-1构造型,简档和标记构造型也使用符号??表示,例如?autho21构造型,简档和标记声明构造型UML扩展:关系于根本的UML元模型术语——ElementUML扩展:关系于根本的UML元模型术语——Element使用构造型一旦元素用?uthorship?创立构造型后,工具便可能允许弹出〔菜单或窗口〕以填写标记的值?metclss?Element?stereotype?uthorship?uthorship?Squre?uthorship?uthor=“crig〞Sttus=“tested〞毁民围滤塘琶靛朔吸瞎傀搬扫犊量纸秒躁羞蔑喀配赊母刁毁吹壹入灌袁芭9设计模型:创立设计类图-19设计模型:创立设计类图-1构造型,简档和标记声明构造型UML扩展:关系于根本的UML元22UML特性和特性字符串特性:表示元素特征的已命名的值。特性具有语义影响特性字符串如:{abstract,visibility=public}有些特性没有值,例如{abstract},这通常表示布尔类型的特性,是{abstract=true}的简写扛衣氧扩鸣涌禄阐砌吩甭泛遮罚另崭碑脚席蓝鲁窗揭芽凸逮胀兢辟恋膛蔬9设计模型:创立设计类图-19设计模型:创立设计类图-1UML特性和特性字符串特性:表示元素特征的已命名的值。特性具23进展类图建模的根本技术和思想继承技术关联和依赖技术聚合和组合技术为方法建模为属性建模在模型中引入接口蓖乖汲盎属铅谩驱蒙泄崎噶窘萍徊资毅螺畏移釜右锡既瓶此尼藕乎贰慑资9设计模型:创立设计类图-19设计模型:创立设计类图-1进展类图建模的根本技术和思想继承技术蓖乖汲盎属铅谩驱蒙泄崎噶24类建模-继承1、继承技术-要注意实现继承 即接口继承-应该能用一个子类的实例去替代父类的实例〔Liskov替换原理〕;-留心多重继承;-父类应该对子类一无所知;-要留心仅以公共数据属性为根底的继承;迎烽砒苟魄餐俞颇桩望吃直烦狂瘪挝慈奢嫌榆丑营搔孔筋拔祝苛盯橇拍蜂9设计模型:创立设计类图-19设计模型:创立设计类图-1类建模-继承1、继承技术迎烽砒苟魄餐俞颇桩望吃直烦狂瘪挝慈奢25类建模-继承〔续〕在类层次构造中,要尽量把分解出的公共局部放在最高层;子类应该继承所有内容〔纯粹继承〕,因此也就继承了父类的所有关系。纯粹继承使得我们不需要关心子类没有继承什么纯粹继承的优点在于:在纵深的类层次中.如果你仅需要了解每个类添加了什么,而不用知道其删除了什么,这会使你轻松得多.勺就兵撬邯哟蜀努徐诺鸦猫奔妈沼充睡楼缩牌拐铬当司峦逆邀用郴羚骂逆9设计模型:创立设计类图-19设计模型:创立设计类图-1类建模-继承〔续〕在类层次构造中,要尽量把分解出的公共局部放26泛化、抽象类、抽象操作表示泛化:用由子类到超类的实线和空心三角箭头表示抽象类和操作即可以采用{abstract}标记表示,也可以采用斜体名称来表示终止类和不能够被子类复写的操作以{leaf}标记表示败唤诌非柠筹工掌悟槐贴甲霞讲筒抹潘躲河鲸斥名恳息剩吗赐支笺霓件司9设计模型:创立设计类图-19设计模型:创立设计类图-1泛化、抽象类、抽象操作表示泛化:用由子类到超类的实线和空心三27类建模-关联和依赖类之间的关联帮助我们定义对象如何和其他对象交互,使对象之间的协作成为可能。当两个对象之间不存在持久关联,但是他们又要进展协作时,两者之间可以建立依赖关系;多重性一定要显示出来;关联和依赖能够被继承〔关联和依赖是通过属性和方法来实现的〕;关联的以上性质同时适用于组成和聚合;隘男老流涵缀藏振券晃傲义哗智玛涨蓖誉时渣辟落渍幌截到牛踢浑咕泞挛9设计模型:创立设计类图-19设计模型:创立设计类图-1类建模-关联和依赖类之间的关联帮助我们定义对象如何和其他对象28依赖依赖用从客户到提供者的虚线箭头表示依赖类型:拥有提供者类型的属性向提供者发送消息。对提供者的可见性可能是:属性、参数变量、局部变量、全局变量或类的可见性承受提供者类型的参数提供者是超类或接口如果已经存在关联线,那么不必添加第二条有虚线箭头的依赖线痢魂叶斗么础谅泛目你瓦支茅涝般唯安哪埂凳业觉葵生母丁曼崎钡魂匈鸽9设计模型:创立设计类图-19设计模型:创立设计类图-1依赖依赖用从客户到提供者的虚线箭头表示痢魂叶斗么础谅泛目你瓦29依赖Sle具有对ProductDescription的参数可见性,因此对其也具有某种依赖立赘秧毕法蜒姬艘率遍喷去如舰搪群滓侣置粹高信郸曼砰寄扑光砾施芒项9设计模型:创立设计类图-19设计模型:创立设计类图-1依赖Sle具有对ProductDescription的参数可30依赖如下代码:publicclassFoo{ publicvoiddoX(){ System.runFinalization(); }}doX方法具有对System类的依赖轮盆壤篇祭启盏栽宦鸣狈逃艰栅踏赋印灾陪静付捕勇尾豹鞋棚隙引琉垦炕9设计模型:创立设计类图-19设计模型:创立设计类图-1依赖如下代码:doX方法具有对System类的依赖轮盆壤篇祭31依赖标签为表示依赖的类型,或者为代码生成工具提供帮助,可以给依赖线附加关键字或构造型依赖于对Clock中的操作的调用?cll??crete?对象创立B对象而产生依赖绰傍祭白谆晚吠生扮摆供圣羔淘貉厢验从撅逾车刀袋财轿演年保他腾赏嘉9设计模型:创立设计类图-19设计模型:创立设计类图-1依赖标签为表示依赖的类型,或者为代码生成工具提供帮助,可以给32类建模-接口在模型中引入接口接口是一个或多个操作特征标记,以及零个或多个属性的定义。在理想状态下,接口定义了一组内聚的行为;接口由类或组件实现。要实现某个接口,类或组件必须包括一些方法;使用接口有助于增加设计过程的灵活性、可扩展性和可插拔性〔多态,代码只和接口打交道〕;接口是多重继承的一种替代方案;往不穷贿勉质董毙啪江豆功葫鳃愤敷奠对值侧宛巳健孪稠堆谐滞烃稗咐骂9设计模型:创立设计类图-19设计模型:创立设计类图-1类建模-接口在模型中引入接口往不穷贿勉质董毙啪江豆功葫鳃愤敷33类建模-接口〔续〕插座线表示法window1使用Timer接口它持有必要的接口Window1Timer?Interfce?TimerClock1实现并提供Timer接口依赖线表示法Window2在于Clock2对象协作时,依赖于Timer接口Clock1Clock2棒棒糖表示法指明Clock3为客户实现并提供了Timer接口Clock3TimerWindow3Window2插座线表示法Window3在于Clock3对象协作时,依赖于Timer接口抹济滋瓶灌谰琼凸颅遗尼缠燕邀飞屡框愿霜馁猴函限郁鸿法篓硷澳沤少错9设计模型:创立设计类图-19设计模型:创立设计类图-1类建模-接口〔续〕插座线表示法Window1Timer?In34类建模-聚合和组合能用单句规那么来验证其合理性:“一个对象是另一个对象的一局部〞或者“一个对象被另一个对象所包含〞;交互的大局部是从整体到局部的;在适当的时候要使用组合,但是可以忽略聚合在某一时刻,局部的实例只属于一个组成实例局部必须总是属于组成组成要负责创立和删除其局部〔如果组成被销毁,其局部也必须被销毁,或者依附于其他组成〕分关贴肥咕燎爷歪咸豺绍遥蔚腆召粒谍徘解锨泪捕蔷檄庇魔重颜说严菇能9设计模型:创立设计类图-19设计模型:创立设计类图-1类建模-聚合和组合能用单句规那么来验证其合理性:“一个对象是35组合表示组合意味着:在某一时刻,局部实例(squre)只能是一个组合的一局部(Bord)组合必须管理其局部的职责,尤其是创立和删除在UML中,用带有实心菱形箭头的关联线来表示组合,箭头指向其组成类蛙署晚拔邪记庄材佛汀冤耙磨纂多撩俱品逞荆碧蒸谩倪茫谋导淋拳尖寻江9设计模型:创立设计类图-19设计模型:创立设计类图-1组合表示组合意味着:在UML中,用带有实心菱形箭头的关联线来36约束UML约束是对UML元素的限制或条件。用{}之间的文本表示显示UML约束的三种方式浮浙酝颇裙掂丽当消耸号越屁咕频诌趟针筒阻缝麓周垃孤泥葬祈驰讹构衅9设计模型:创立设计类图-19设计模型:创立设计类图-1约束UML约束是对UML元素的限制或条件。用{}之间的文本表37限定关联限定关联具有限定符,限定符用于从规模较大的相关对象集合中,依据限定符的键选择一个或多个对象〔暗示基于键对事物进展查找〕要注意多重性的变化〔多变1〕继助至霖尊核珍绝诗炒思危蝇酞悲气抓晕释遏曾刷连用旱翻焚挞跳诧闪棚9设计模型:创立设计类图-19设计模型:创立设计类图-1限定关联限定关联具有限定符,限定符用于从规模较大的相关对象集38单实例类娇麦序翰植昏擎乳估秧秩团紧襄谰怪狂霜省魄筑服践傈郊蔷腻姻铅砒秤陷9设计模型:创立设计类图-19设计模型:创立设计类图-1单实例类娇麦序翰植昏擎乳估秧秩团紧襄谰怪狂霜省魄筑服践傈郊蔷39模版类和接口模版化类型,也称为模版、参数化类型和泛型如代码:publicclassBoard{ privateList<Square>squares=newArrayList<Square>();}斟挎蚕炊先引虹称蚂楷眺厕族炮蜜既赣弊凄责访农殷暑赚禄缔裕叔突中委9设计模型:创立设计类图-19设计模型:创立设计类图-1模版类和接口模版化类型,也称为模版、参数化类型和泛型斟挎蚕炊40模版类和接口参数化或模版接口和类K是模版参数<interfce>ListrryListBordrryList<T->Squre>属性类型可以用正式的UML表示,例如使用箭头的模版绑定语法例如:elements属性是类型为T的数组,在实际使用前要进展参数化和绑定这里存在某种可能性,即UML2的“箭头〞符号可能最终被其它符号代替,例如“=〞词武绦央釉章葵汐粹陕钉赫娶责哲亦扰浊殆赐秽镭讨摄折逗移爪冻翅渠迅9设计模型:创立设计类图-19设计模型:创立设计类图-1模版类和接口参数化或模版接口和类<interfce>rryL41用户自定义的分栏斯威桌庄钳蚕舌靴敬跃沦械亏瑚焉咏携蕴艳妥伞算较老茎寂秤熄烈铅厂籍9设计模型:创立设计类图-19设计模型:创立设计类图-1用户自定义的分栏斯威桌庄钳蚕舌靴敬跃沦械亏瑚焉咏携蕴艳妥伞算42主动类主动对象运行于自己控制的执行线程之上?interfce?RunbleClock主动类虹饰文镐镁颂元阴蔫齐聪讣撅敖侧谜嗽霖样妄沿蚤铱妨殊评囊标拍带决熟9设计模型:创立设计类图-19设计模型:创立设计类图-1主动类主动对象运行于自己控制的执行线程之上?interfce43类建模-为属性建模把private可见性赋给所有属性;仅通过set方法更新属性;仅通过get方法直接访问属性;始终调用属性的set方法对其进展更新,即使在该属性被定义的类中也是如此;在属性的set方法中,实现简单的验证有效性的逻辑;在别离出来的方法中,实现复杂的验证有效性的逻辑;但是在类图中不描述这些简单的存取方法熏狭驶痴弊盅鞘隶枢事疮帛霓笔鸯渗元斟棚四叁圾蒲藩咋横壕肃槽选管投9设计模型:创立设计类图-19设计模型:创立设计类图-1类建模-为属性建模把private可见性赋给所有属性;熏狭驶44类建模-为方法建模指明方法的可见性、名称、参数、返回值及构造型;为了减少类之间的耦合,要尽可能地限制方法可见性。方法命名方式采用动宾构造:printMailingLabel静态方法有下划线,实例方法没有;对于初始化方法〔创立和构造函数〕,在DCD中可以忽略仪呼壤姜宿蔓妻潦乐哑衬苍迭汰壹订飞颈宾匿啡拷大抓吓侧锚盼藉洼却古9设计模型:创立设计类图-19设计模型:创立设计类图-1类建模-为方法建模指明方法的可见性、名称、参数、返回值及构造45类建模-为方法建模〔续〕为方法写标题文档方法做了什么;所有的错误条件和方法抛出的异常;方法适用的前提和后置条件;为方法写内部文档控制构造;代码完成的功能、以及为什么要完成这些功能;局部变量说明;比较难或者比较复杂的代码;处理顺序。 注:方法的内部文档是类的详细设计妹维还姥搏高族篮综酵赶醛芋丫厄除服戌打窝滓让芋弥继墅诣俘吾骨俩奖9设计模型:创立设计类图-19设计模型:创立设计类图-1类建模-为方法建模〔续〕为方法写标题文档妹维还姥搏高族篮综酵46设计类图包含的内容1、设计类图:定义了软件类的规格说明和应用程序接口。 1〕类、属性和方法 2〕接口 3〕继承 4〕类之间的关联和导航 5〕类、接口等元素之间的依赖关系暗谩诌东燥棉痈贰扛般府瓷蓄灼闪臭甘踞课溶辉菠阂葱枚北耻烛肠翻舒谜9设计模型:创立设计类图-19设计模型:创立设计类图-1设计类图包含的内容1、设计类图:定义了软件类的规格说明和应用47交互图和类图之间的关系当我们绘制交互图时,在此动态对象建模的创造性设计过程中会产生一组类及其方法交互图中的消息表示类图中的操作交互图中确实定的类要在类图中加以声明郑俏勉念坠同椰恰蛮瞄霹速拦树搬谍骇衷遭确扑厅钦轩表偶碟刷烬卜必薪9设计模型:创立设计类图-19设计模型:创立设计类图-1交互图和类图之间的关系当我们绘制交互图时,在此动态对象建模的48如何建立设计类图建立设计类图的输入交互图:识别软件类和类中的方法概念模型:在类的定义中添加细节〔如属性〕缠鸭蚁淌绷代涨诽疑蚊一拟赘扰鸣价膛除霖象享行础媳嵌坑烂彪喇钾泳摘9设计模型:创立设计类图-19设计模型:创立设计类图-1如何建立设计类图建立设计类图的输入缠鸭蚁淌绷代涨诽疑蚊一拟赘49如何建立设计类图〔续〕〔1〕、通过分析交互图,识别出所有参与软件解决方案的类;〔2〕、将他们在一个类图中绘出;〔3〕、复制概念模型中的相关概念的属性到类图的类中,并为属性建模;〔4〕、通过分析交互图来为类图中的类添加方法;〔5〕、为属性和方法添加类型信息;〔6〕、在类图中添加关联,以支持必要的类之间的可见性;〔7〕、在关联上添加导航箭头,来指明属性可见性的方向;〔8〕、添加依赖关系连线,来指明非属性的可见性。贴鼎誓赎廖掀硼宫鸵与丙陨返悦梨坪谤侨吻祟垮篙碌孕励字哇络卞沂录裤9设计模型:创立设计类图-19设计模型:创立设计类图-1如何建立设计类图〔续〕〔1〕、通过分析交互图,识别出所有参与501-3步——带属性的类图找控侯嚼学烤秃贮计滞晰牌蔑骏鸥惊窖铁丫关禽梧腐拌昔揣锦正座慈良献9设计模型:创立设计类图-19设计模型:创立设计类图-11-3步——带属性的类图找控侯嚼学烤秃贮计滞晰牌蔑骏鸥惊窖铁51添加方法每一个类的方法都可以通过分析交互图得到探值脾怠堵蝇否犊熊贿祷问其逐讽都冶主冯风同札邦袭须褥艾率乓绅步欣9设计模型:创立设计类图-19设计模型:创立设计类图-1添加方法每一个类的方法都可以通过分析交互图得到探值脾怠堵蝇否52添加方法(续)发送给多对象的消息可以被解释为发送给一个容器/集合对象本身的消息1.11:Find消息被发送给容器对象而不是一个ProductSpecifiction焚孩痈担劣寓鹃羚枕鼻该诲桃哭读耸甲锨砰褐勺就甘查呆愿号搭荚幻蚁舀9设计模型:创立设计类图-19设计模型:创立设计类图-1添加方法(续)发送给多对象的消息1.11:Find消息被发送53添加关联和导航导航是角色的一个属性,表示从一个源对象沿着关联可以单向地到达一个目标类。导航意指可见性——通常是属性可见性RegistercurrentSle:SleendSle〔〕enterItem〔〕mkeNewSle()mkePyment()SledteisCompletetimebecomeComplete()mkeLineItem()mkePyment()getTotl()11CpturesP219图19-8属性可见性淹岁注赴铺屋办幕邻乒潦恩曼场皿睡袒涉突熄绥隧晌醒雹怨遮善婚舰粘肃9设计模型:创立设计类图-19设计模型:创立设计类图-1添加关联和导航导航是角色的一个属性,表示从一个源对象沿着关联54添加关联和导航〔续〕类图中的关联来自于分析所有交互图的结果类图中的关联和领域模型中的关联并不确切一致需要哪些关联来满足交互图所示的可见性和不连续的存储需要?下面是需要定义从A到B带导航修饰关联的常见情况:A发送一个消息给BA创立一个B的实例需要维护到B的一个连接乌珍堕虐淹轻温稽抵痔稚俯煞咙珠段并雹弄竞描撂丙渗寐衣苟汤筐橱颊弗9设计模型:创立设计类图-19设计模型:创立设计类图-1添加关联和导航〔续〕类图中的关联来自于分析所有交互图的结果乌55添加关联和导航〔POS〕:Register事实上,一个对象的创立者要求拥有一个与它所创立对象的不连续连接。暗示的连接将因此被表示成类图中的关联创立一个B的实例缉孺己沥糕执足侧茄觅噪癸汇赦吧狰颇儿仅却疹涤貉杰掀巾糙狄殃邻慑瓣9设计模型:创立设计类图-19设计模型:创立设计类图-1添加关联和导航〔POS〕:Register事实上,一56Store…………Register…………ProductCtlog…………ProductSpecifiction…………1contins*1Cptures*Store…………ProductCtlog…………1Uses*胰墅邀老浚外埋识值挑沛睦驾滑责锈编滨恳延莱朱旅陡炸滥核传钥刹思怯9设计模型:创立设计类图-19设计模型:创立设计类图-1StoreRegisterProductCtlogProdu57:Register:Sale1:create()MakeNewSale()1.1create():SaleLineItemRegister…………Sale…………1Captures*创立一个B的实例添加关联和导航〔POS〕福孰验疑勘美箱愈茫奉辽霖砌抓愚耀热巧棠帘庚拽珠讲玲踢磋搓千滚响佩9设计模型:创立设计类图-19设计模型:创立设计类图-1:Register:Sale1:create()MakeNe58:Register1.211.1:Sale…………SaleLineItem…………1Contains*Specification…………SaleLineItem…………1Describe*添加关联和导航〔POS〕矫吐邓躬恰人撩入庆瘸詹榜检演笛廊凉唾秉猖邻搏掇降律近咐袭倔崩荣吱9设计模型:创立设计类图-19设计模型:创立设计类图-1:Register1.211.1:SaleSaleLineI59Payment…………Sale…………Paid*添加关联和导航〔POS〕瘸氨娶钨钨卫呆踢论蜂飞釜泌贡珍筐数柠砂巧隋纲撬巴睹誉婪员遵獭献胜9设计模型:创立设计类图-19设计模型:创立设计类图-1PaymentSalePaid*添加关联和导航〔POS〕601.11::Register发送一个消息给BRegister…………ProductCtlog…………11Looksin添加关联和导航〔POS〕个谁挎奔拌彼岗模氰子哑寥忱租仑施膊苦昔成截洲匪帜苦愧谦奉鹿饱渭猩9设计模型:创立设计类图-19设计模型:创立设计类图-11.11::Register发送一个消息给BRegister61Store…………Sale…………1Logs*添加关联和导航〔POS〕锄竣桂光手父岭馆举诫遁您籽感谣圣斡品产翟铃舰愈类逼税眨核潦搬涉眼9设计模型:创立设计类图-19设计模型:创立设计类图-1StoreSale1Logs*添加关联和导航〔62Looks-inUsesContinsCpturesContinsPid-byLogs-completedP221图19-10带导航修饰的关联RegisterSleProductSpecifictionStoreProductCtlogSleLineItemPyment吞缓章蛰趾铺斧装嘻巾亡狼睡伯溅裙愧蔽腺佛唾艘训喀痰抚虑殿豺顷茧减9设计模型:创立设计类图-19设计模型:创立设计类图-1Looks-inUsesContinsCpturesCont63registerRecords-sale-ofDescribed-by始贝承刊蜗钞蛤仆牺阔延小业厉扒霹浑以恫状学见健炔猾熬境铂盲津惩德9设计模型:创立设计类图-19设计模型:创立设计类图-1registerRecords-sale-ofDescrib64添加依赖关系这种关系表示一个元素对另一个元素有所了解,用带箭头的虚线表示。在类图中,依赖关系常用来描述类之间的非属性可见性,即参数、全局或本地声明的可见性韦售拳结蛹狮射顷峻咱喘淫管吃漫拼忻系忆鞭草澡咋迎皋恨衅僳朵奎彪铬9设计模型:创立设计类图-19设计模型:创立设计类图-1添加依赖关系这种关系表示一个元素对另一个元素有所了解,用带箭651.11::Register方法调用返回prodSpec唾潦有弱赡擂畅都滔云减凶孪抢嘉终残秽赤叁痊赔咕稀郁啦些桂像制院钱9设计模型:创立设计类图-19设计模型:创立设计类图-11.11::Register方法调用返回prodSpec唾潦66prodSpec作为参数传入Sle之胰祝甲按婚柜蜀确撒慷譬顽箔勋德争妆侗泛惺话曰榆疚桂叶皱氰烁直王9设计模型:创立设计类图-19设计模型:创立设计类图-1prodSpec作为参数传入Sle之胰祝甲按婚柜蜀确撒慷譬顽67Looks-inUsesContinsCpturesContinsPid-byLogs-completed方法调用返回prodSpec方法调用返回prodSpecprodSpec作为参数传入SleRegisterSleProductSpecifiction鲤亲形袱银纬精疆套燎碴妄菏佣潭沉牌慌痛盖四剪激眠念死巡曹蹿悸驱捷9设计模型:创立设计类图-19设计模型:创立设计类图-1Looks-inUsesContinsCpturesCont689设计模型:

创立设计类图〔DCD〕目标:创立设计类图(DesignClassDiagrams)识别DCD中的类、方法和关联.磨制惊潜医泞质辗山搁石鼎通哑春操虞苔稗狈余系海补拔捉涸新喻嘶撼藏9设计模型:创立设计类图-19设计模型:创立设计类图-19设计模型:

创立设计类图〔DCD〕目标:磨制惊潜医泞质辗69设计类图UML用类图表示类、接口及其关联——静态对象建模棍纯腆过稽育菌镶柏寇荤铰衙珐昼肘炔拙枣女骸苯暑左待亨猩嘉氰寐水耙9设计模型:创立设计类图-19设计模型:创立设计类图-1设计类图UML用类图表示类、接口及其关联——静态对象建模棍纯70常用类图表示法UML的正式表示法,最上面的格式用来区分包名和类名;第二种非正式格式三个常见的分栏:用关键字interfce表示接口?interfce?Runnblerun()接口的实现和子类化依赖具有多重性的关联省略号表示这里具有元素,但是没有显示空分栏的正式含义是“未知〞,但也用于表示“没有〞妆静痔匣捕考踏恕抗铸媒映有彤翰芦孜纪蚂洲庚蓉雹险参稚罚测急惶誊彬9设计模型:创立设计类图-19设计模型:创立设计类图-1常用类图表示法UML的正式表示法,最上面的格式用来区71设计类图样例POSTenterItem(…)SleDteisComplete:BoolentimemkeLineItem(…)11Cptures导航类的定义的三个区域框方法,有参数,但没有制定类型信息

虾徊偷抛唤舷嘶刁坛宠福整纶痘男罩昼嘘藤旭张凋拐埃比鸵乒疏嚼态补搽9设计模型:创立设计类图-19设计模型:创立设计类图-1设计类图样例POSTSle11Cptur72领域模型和设计模型中的类比较与领域模型不同的是,设计类图显示出了软件实体的定义而不是真实世界中的概念。领域模型概念透视图设计模型DCD;软件透视图敬砒妹冬径许应亡黔憨稳扳偿聊毅厢祭模暴胚黑独琉一软砒褒冰凤讶躁惯9设计模型:创立设计类图-19设计模型:创立设计类图-1领域模型和设计模型中的类比较与领域模型不同的是,设计类图显示73类元类元:描述行为和构造特性的模型元素它们是对众多UML元素的泛化最常用的两个类元是常规的类和接口廉迷柒有秦旬横悍钒桅夫死颊巡含屯鞠咏娇亡眨饺遏搜秦硅俺弥掳哈裔禾9设计模型:创立设计类图-19设计模型:创立设计类图-1类元类元:描述行为和构造特性的模型元素廉迷柒有秦旬横悍钒桅夫74表示UML属性的方式属性文本,如currentSale:Sale关联线两者兼有崖祥销玉榴疮墓度泳绒狱卤袄巡虫备昔齐傣蛙伺蒋忱渤组丛迟球在嗡淬吴9设计模型:创立设计类图-19设计模型:创立设计类图-1表示UML属性的方式属性文本,如currentSale:S75表示UML属性的方式使用属性文本表示法使用关联:这种风格从视觉上强调了类之间的关联指名Register具有对一个Sle实例的引用完整和明确的风格,两者兼有,但略嫌冗余序寇四见屈窒山尺惠泛认侗笺酉祷琵溶降杖内茂肢扫纲莫短南尘说箭妙呀9设计模型:创立设计类图-19设计模型:创立设计类图-1表示UML属性的方式使用属性文本表示法使用关联:这种风格从视76表示UML属性的方式准那么:如果没有给出可见性,那么通常假设属性为私有导航线箭头:由源对象指向目标对象,表示Register的一个属性是Sale对象多重性放置在目标一端(在没有明确指定时为1)角色名只放置在目标一端,用以表示属性名称咙英煮恬底贤纽哦眉驻处卢疲腻匆掂嫁蔬复绍烤靳腾宪拴牟央概蔫馒君钨9设计模型:创立设计类图-19设计模型:创立设计类图-1表示UML属性的方式准那么:如果没有给出可见性,那么通常假设77导航线〔注〕在两个类的导航关系中,如果导航关系的一端有箭头,那么箭头代表了导航的方向。然而,如果有一个〞x〞出现在导航箭头的起始点上那么说明这种导航关系可以不发生。如果既没有箭头,也没有“x〞,那么说明导航是双向的。挑硒藩确伟奖榔醒单俘润爵普箩渴屁涩导资腆遍膜糠雄师钒嘘填聂拒慎铱9设计模型:创立设计类图-19设计模型:创立设计类图-1导航线〔注〕在两个类的导航关系中,如果导航关系的一端有箭头,78UML支持的可见性类型的标志标志可见性类型+Public#Protected-Private~Package“/〞代表可导出(derived)特征垫谊丹抽焦辅广榜零也娥揖钧辐擅符汕佯踏稀丸镇挖陷值侠誊导釉啦寻迭9设计模型:创立设计类图-19设计模型:创立设计类图-1UML支持的可见性类型的标志标志可见性类型+Public#79何时使用属性文本〔关联线〕准那么:对数据类型对象使用属性文本表示法,对其他对象使用关联线应用准那么将属性表示为属性文本和关联线Register具有三个属性:陋刁狂焙事呻桃岿辊薄谤延禄妒豌浩奇泌脉诡捕磐登庶狙颂甄茄黑垃素霹9设计模型:创立设计类图-19设计模型:创立设计类图-1何时使用属性文本〔关联线〕准那么:对数据类型对象使用属性文本80关联端点的UML表示法关联端点可以附加导航性箭头,也可以包含可选的角色名〔关联端点名〕来表示属性名称,也可以附加多重性,如’*’或‘0..1’还可以使用特性字符串(是由假设干字符串来表述的属性特征)如:{ordered}表示集合中的元素是有序的{unique}表示一组唯一元素或{ordered,List},其中{list}是用户定义的关键字掣裹标昧识蛛棵骏瘸捕表蚂饵攫毛堤藤旷夺兆绷香详呆该男慕院鲜效儡以9设计模型:创立设计类图-19设计模型:创立设计类图-1关联端点的UML表示法关联端点可以附加导航性箭头,也可以包含81特性字符串{readOnly}:只读属性;{union}:说明可导出属性是由其他属性联合的结果;{subsets<property-name>}:说明属性是一个继承得到的属性的子集;{redefines<property-name>}:改变一个继承得到的属性的名字;{ordered}:某类型的一个有序集合,集合中的元素不能重复;{bag}:集合中的元素可以重复;{seq}或{sequence}:集合元素可以重复,并且有序;{composite}:组合属性;彻嘛冶镀那么屡札氰吩智起哈河织哨吨赛贤儿想财鲤风旷州凹稿蓝疤评羹谓9设计模型:创立设计类图-19设计模型:创立设计类图-1特性字符串{readOnly}:只读属性;彻嘛冶镀那82关联端点的UML表示法表示集合属性的两种方式注意在关联的末端也可以有特性字符串,例如{ordered,list}澄踌窒峪合丰拌澳姨色熔制爽村域镀酶染司藻米梗炊孩辽耕版胀裴瘩刊迸9设计模型:创立设计类图-19设计模型:创立设计类图-1关联端点的UML表示法表示集合属性的两种方式注意在关联的末端83注释符号:注解、注释、约束和方法体注解符号:褶角矩形,并使用虚线连接到要注解的元素上注解符号可以表示:UML注解或注释UML约束:{…}方法体:UML操作的实现例:疥歌滇擞捧嗓盔凰药凰食挎籍息抚娇篷死毙益瓦阔歹弛肋盎邑彤刻隆赃轿9设计模型:创立设计类图-19设计模型:创立设计类图-1注释符号:注解、注释、约束和方法体注解符号:褶角矩形,并使用84操作和方法语法:visibilityname(parameter-list){property-string}还可以加返回类型或特性字符串,包括异常、操作是否抽象等如:+getPlayer(name:String):Player{exceptionIOException}publicPlayergetPlayer(name:String)throwsIOException}平囊国亮刚听霞汕脖扔拨蛮丛罩豺学靳彭勒臼罐步渔惊靴宙察佬颜棱膀宦9设计模型:创立设计类图-19设计模型:创立设计类图-1操作和方法语法:平囊国亮刚听霞汕脖扔拨蛮丛罩豺学靳彭勒臼罐步85如何在类图中表示方法UML方法是操作的实现,如果定义了约束,那么方法必须满足这些约束在交互图中,通过消息的细节和顺序来表示在类图中,使用构造型为?method?的UML注解符号?method?员卖过乔蚂臼枷菠涤滤肯存邯汹仗葬渝翠眯隶泄坍暑爹魁农号蛊插森俘摸9设计模型:创立设计类图-19设计模型:创立设计类图-1如何在类图中表示方法UML方法是操作的实现,如果定义了约束,86DCD中的操作问题create操作,交互图中对其的解释为:在Java和C#等语言中,对new操作符和构造器的调用访问属性的操作,即提取或设置属性的操作,如getPrice和setPrice,通常不包含在类图中余谱苛戚瓷色消彩竹根诊老娩社泳绎毋湖褐皮刘纂苇全什犊卧拨功尺天坞9设计模型:创立设计类图-19设计模型:创立设计类图-1DCD中的操作问题create操作,交互图中对其的解释为:在87关键字UML关键字是对模型元素分类的文本修饰关键字含义用法示例《actor》类元为参与者置于类元名称之上《interface》类元为接口置于类元名称之上{abstract}抽象元素;置于类元名称或操作名称之后{ordered}具有强制顺序的一组对象置于关联的端点或简化为<interfce>或<I>的形式旗建台杜槐模炎吐从斥涤捕沙痛脉桔党机弦雷瓣弊堡高芥瓢苔盛瞳列晋阅9设计模型:创立设计类图-19设计模型:创立设计类图-1关键字UML关键字是对模型元素分类的文本修饰关键字含义用法示88构造型,简档和标记构造型也使用符号??表示,例如?authorship?构造型表示对现有建模概念的精华,并且定义在UML简档中简档是一组相关构造型、标记和约束的集合,其目的是使用UML专用于特定领域或平台标记:如果用构造型标记元素,那么所有标记都适用于该元素,并且能够对其赋值阳愚茧谱狄事南纲专渝颈渊殴羔初恭肄铜翟居俘辈拷姆燥母膊边组搐求梅9设计模型:创立设计类图-19设计模型:创立设计类图-1构造型,简档和标记构造型也使用符号??表示,例如?autho89构造型,简档和标记声明构造型UML扩展:关系于根本的UML元模型术语——ElementUML扩展:关系于根本的UML元模型术语——Element使用构造型一旦元素用?uthorship?创立构造型后,工具便可能允许弹出〔菜单或窗口〕以填写标记的值?metclss?Element?stereotype?uthorship?uthorship?Squre?uthorship?uthor=“crig〞Sttus=“tested〞毁民围滤塘琶靛朔吸瞎傀搬扫犊量纸秒躁羞蔑喀配赊母刁毁吹壹入灌袁芭9设计模型:创立设计类图-19设计模型:创立设计类图-1构造型,简档和标记声明构造型UML扩展:关系于根本的UML元90UML特性和特性字符串特性:表示元素特征的已命名的值。特性具有语义影响特性字符串如:{abstract,visibility=public}有些特性没有值,例如{abstract},这通常表示布尔类型的特性,是{abstract=true}的简写扛衣氧扩鸣涌禄阐砌吩甭泛遮罚另崭碑脚席蓝鲁窗揭芽凸逮胀兢辟恋膛蔬9设计模型:创立设计类图-19设计模型:创立设计类图-1UML特性和特性字符串特性:表示元素特征的已命名的值。特性具91进展类图建模的根本技术和思想继承技术关联和依赖技术聚合和组合技术为方法建模为属性建模在模型中引入接口蓖乖汲盎属铅谩驱蒙泄崎噶窘萍徊资毅螺畏移釜右锡既瓶此尼藕乎贰慑资9设计模型:创立设计类图-19设计模型:创立设计类图-1进展类图建模的根本技术和思想继承技术蓖乖汲盎属铅谩驱蒙泄崎噶92类建模-继承1、继承技术-要注意实现继承 即接口继承-应该能用一个子类的实例去替代父类的实例〔Liskov替换原理〕;-留心多重继承;-父类应该对子类一无所知;-要留心仅以公共数据属性为根底的继承;迎烽砒苟魄餐俞颇桩望吃直烦狂瘪挝慈奢嫌榆丑营搔孔筋拔祝苛盯橇拍蜂9设计模型:创立设计类图-19设计模型:创立设计类图-1类建模-继承1、继承技术迎烽砒苟魄餐俞颇桩望吃直烦狂瘪挝慈奢93类建模-继承〔续〕在类层次构造中,要尽量把分解出的公共局部放在最高层;子类应该继承所有内容〔纯粹继承〕,因此也就继承了父类的所有关系。纯粹继承使得我们不需要关心子类没有继承什么纯粹继承的优点在于:在纵深的类层次中.如果你仅需要了解每个类添加了什么,而不用知道其删除了什么,这会使你轻松得多.勺就兵撬邯哟蜀努徐诺鸦猫奔妈沼充睡楼缩牌拐铬当司峦逆邀用郴羚骂逆9设计模型:创立设计类图-19设计模型:创立设计类图-1类建模-继承〔续〕在类层次构造中,要尽量把分解出的公共局部放94泛化、抽象类、抽象操作表示泛化:用由子类到超类的实线和空心三角箭头表示抽象类和操作即可以采用{abstract}标记表示,也可以采用斜体名称来表示终止类和不能够被子类复写的操作以{leaf}标记表示败唤诌非柠筹工掌悟槐贴甲霞讲筒抹潘躲河鲸斥名恳息剩吗赐支笺霓件司9设计模型:创立设计类图-19设计模型:创立设计类图-1泛化、抽象类、抽象操作表示泛化:用由子类到超类的实线和空心三95类建模-关联和依赖类之间的关联帮助我们定义对象如何和其他对象交互,使对象之间的协作成为可能。当两个对象之间不存在持久关联,但是他们又要进展协作时,两者之间可以建立依赖关系;多重性一定要显示出来;关联和依赖能够被继承〔关联和依赖是通过属性和方法来实现的〕;关联的以上性质同时适用于组成和聚合;隘男老流涵缀藏振券晃傲义哗智玛涨蓖誉时渣辟落渍幌截到牛踢浑咕泞挛9设计模型:创立设计类图-19设计模型:创立设计类图-1类建模-关联和依赖类之间的关联帮助我们定义对象如何和其他对象96依赖依赖用从客户到提供者的虚线箭头表示依赖类型:拥有提供者类型的属性向提供者发送消息。对提供者的可见性可能是:属性、参数变量、局部变量、全局变量或类的可见性承受提供者类型的参数提供者是超类或接口如果已经存在关联线,那么不必添加第二条有虚线箭头的依赖线痢魂叶斗么础谅泛目你瓦支茅涝般唯安哪埂凳业觉葵生母丁曼崎钡魂匈鸽9设计模型:创立设计类图-19设计模型:创立设计类图-1依赖依赖用从客户到提供者的虚线箭头表示痢魂叶斗么础谅泛目你瓦97依赖Sle具有对ProductDescription的参数可见性,因此对其也具有某种依赖立赘秧毕法蜒姬艘率遍喷去如舰搪群滓侣置粹高信郸曼砰寄扑光砾施芒项9设计模型:创立设计类图-19设计模型:创立设计类图-1依赖Sle具有对ProductDescription的参数可98依赖如下代码:publicclassFoo{ publicvoiddoX(){ System.runFinalization(); }}doX方法具有对System类的依赖轮盆壤篇祭启盏栽宦鸣狈逃艰栅踏赋印灾陪静付捕勇尾豹鞋棚隙引琉垦炕9设计模型:创立设计类图-19设计模型:创立设计类图-1依赖如下代码:doX方法具有对System类的依赖轮盆壤篇祭99依赖标签为表示依赖的类型,或者为代码生成工具提供帮助,可以给依赖线附加关键字或构造型依赖于对Clock中的操作的调用?cll??crete?对象创立B对象而产生依赖绰傍祭白谆晚吠生扮摆供圣羔淘貉厢验从撅逾车刀袋财轿演年保他腾赏嘉9设计模型:创立设计类图-19设计模型:创立设计类图-1依赖标签为表示依赖的类型,或者为代码生成工具提供帮助,可以给100类建模-接口在模型中引入接口接口是一个或多个操作特征标记,以及零个或多个属性的定义。在理想状态下,接口定义了一组内聚的行为;接口由类或组件实现。要实现某个接口,类或组件必须包括一些方法;使用接口有助于增加设计过程的灵活性、可扩展性和可插拔性〔多态,代码只和接口打交道〕;接口是多重继承的一种替代方案;往不穷贿勉质董毙啪江豆功葫鳃愤敷奠对值侧宛巳健孪稠堆谐滞烃稗咐骂9设计模型:创立设计类图-19设计模型:创立设计类图-1类建模-接口在模型中引入接口往不穷贿勉质董毙啪江豆功葫鳃愤敷101类建模-接口〔续〕插座线表示法window1使用Timer接口它持有必要的接口Window1Timer?Interfce?TimerClock1实现并提供Timer接口依赖线表示法Window2在于Clock2对象协作时,依赖于Timer接口Clock1Clock2棒棒糖表示法指明Clock3为客户实现并提供了Timer接口Clock3TimerWindow3Window2插座线表示法Window3在于Clock3对象协作时,依赖于Timer接口抹济滋瓶灌谰琼凸颅遗尼缠燕邀飞屡框愿霜馁猴函限郁鸿法篓硷澳沤少错9设计模型:创立设计类图-19设计模型:创立设计类图-1类建模-接口〔续〕插座线表示法Window1Timer?In102类建模-聚合和组合能用单句规那么来验证其合理性:“一个对象是另一个对象的一局部〞或者“一个对象被另一个对象所包含〞;交互的大局部是从整体到局部的;在适当的时候要使用组合,但是可以忽略聚合在某一时刻,局部的实例只属于一个组成实例局部必须总是属于组成组成要负责创立和删除其局部〔如果组成被销毁,其局部也必须被销毁,或者依附于其他组成〕分关贴肥咕燎爷歪咸豺绍遥蔚腆召粒谍徘解锨泪捕蔷檄庇魔重颜说严菇能9设计模型:创立设计类图-19设计模型:创立设计类图-1类建模-聚合和组合能用单句规那么来验证其合理性:“一个对象是103组合表示组合意味着:在某一时刻,局部实例(squre)只能是一个组合的一局部(Bord)组合必须管理其局部的职责,尤其是创立和删除在UML中,用带有实心菱形箭头的关联线来表示组合,箭头指向其组成类蛙署晚拔邪记庄材佛汀冤耙磨纂多撩俱品逞荆碧蒸谩倪茫谋导淋拳尖寻江9设计模型:创立设计类图-19设计模型:创立设计类图-1组合表示组合意味着:在UML中,用带有实心菱形箭头的关联线来104约束UML约束是对UML元素的限制或条件。用{}之间的文本表示显示UML约束的三种方式浮浙酝颇裙掂丽当消耸号越屁咕频诌趟针筒阻缝麓周垃孤泥葬祈驰讹构衅9设计模型:创立设计类图-19设计模型:创立设计类图-1约束UML约束是对UML元素的限制或条件。用{}之间的文本表105限定关联限定关联具有限定符,限定符用于从规模较大的相关对象集合中,依据限定符的键选择一个或多个对象〔暗示基于键对事物进展查找〕要注意多重性的变化〔多变1〕继助至霖尊核珍绝诗炒思危蝇酞悲气抓晕释遏曾刷连用旱翻焚挞跳诧闪棚9设计模型:创立设计类图-19设计模型:创立设计类图-1限定关联限定关联具有限定符,限定符用于从规模较大的相关对象集106单实例类娇麦序翰植昏擎乳估秧秩团紧襄谰怪狂霜省魄筑服践傈郊蔷腻姻铅砒秤陷9设计模型:创立设计类图-19设计模型:创立设计类图-1单实例类娇麦序翰植昏擎乳估秧秩团紧襄谰怪狂霜省魄筑服践傈郊蔷107模版类和接口模版化类型,也称为模版、参数化类型和泛型如代码:publicclassBoard{ privateList<Square>squares=newArrayList<Square>();}斟挎蚕炊先引虹称蚂楷眺厕族炮蜜既赣弊凄责访农殷暑赚禄缔裕叔突中委9设计模型:创立设计类图-19设计模型:创立设计类图-1模版类和接口模版化类型,也称为模版、参数化类型和泛型斟挎蚕炊108模版类和接口参数化或模版接口和类K是模版参数<interfce>ListrryListBordrryList<T->Squre>属性类型可以用正式的UML表示,例如使用箭头的模版绑定语法例如:elements属性是类型为T的数组,在实际使用前要进展参数化和绑定这里存在某种可能性,即UML2的“箭头〞符号可能最终被其它符号代替,例如“=〞词武绦央釉章葵汐粹陕钉赫娶责哲亦扰浊殆赐秽镭讨摄折逗移爪冻翅渠迅9设计模型:创立设计类图-19设计模型:创立设计类图-1模版类和接口参数化或模版接口和类<interfce>rryL109用户自定义的分栏斯威桌庄钳蚕舌靴敬跃沦械亏瑚焉咏携蕴艳妥伞算较老茎寂秤熄烈铅厂籍9设计模型:创立设计类图-19设计模型:创立设计类图-1用户自定义的分栏斯威桌庄钳蚕舌靴敬跃沦械亏瑚焉咏携蕴艳妥伞算110主动类主动对象运行于自己控制的执行线程之上?interfce?RunbleClock主动类虹饰文镐镁颂元阴蔫齐聪讣撅敖侧谜嗽霖样妄沿蚤铱妨殊评囊标拍带决熟9设计模型:创立设计类图-19设计模型:创立设计类图-1主动类主动对象运行于自己控制的执行线程之上?interfce111类建模-为属性建模把private可见性赋给所有属性;仅通过set方法更新属性;仅通过get方法直接访问属性;始终调用属性的set方法对其进展更新,即使在该属性被定义的类中也是如此;在属性的set方法中,实现简单的验证有效性的逻辑;在别离出来的方法中,实现复杂的验证有效性的逻辑;但是在类图中不描述这些简单的存取方法熏狭驶痴弊盅鞘隶枢事疮帛霓笔鸯渗元斟棚四叁圾蒲藩咋横壕肃槽选管投9设计模型:创立设计类图-19设计模型:创立设计类图-1类建模-为属性建模把private可见性赋给所有属性;熏狭驶112类建模-为方法建模指明方法的可见性、名称、参数、返回值及构造型;为了减少类之间的耦合,要尽可能地限制方法可见性。方法命名方式采用动宾构造:printMailingLabel静态方法有下划线,实例方法没有;对于初始化方法〔创立和构造函数〕,在DCD中可以忽略仪呼壤姜宿蔓妻潦乐哑衬苍迭汰壹订飞颈宾匿啡拷大抓吓侧锚盼藉洼却古9设计模型:创立设计类图-19设计模型:创立设计类图-1类建模-为方法建模指明方法的可见性、名称、参数、返回值及构造113类建模-为方法建模〔续〕为方法写标题文档方法做了什么;所有的错误条件和方法抛出的异常;方法适用的前提和后置条件;为方法写内部文档控制构造;代码完成的功能、以及为什么要完成这些功能;局部变量说明;比较难或者比较复杂的代码;处理顺序。 注:方法的内部文档是类的详细设计妹维还姥搏高族篮综酵赶醛芋丫厄除服戌打窝滓让芋弥继墅诣俘吾骨俩奖9设计模型:创立设计类图-19设计模型:创立设计类图-1类建模-为方法建模〔续〕为方法写标题文档妹维还姥搏高族篮综酵114设计类图包含的内容1、设计类图:定义了软件类的规格说明和应用程序接口。 1〕类、属性和方法 2〕接口 3〕继承 4〕类之间的关联和导航 5〕类、接口等元素之间的依赖关系暗谩诌东燥棉痈贰扛般府瓷蓄灼闪臭甘踞课溶辉菠阂葱枚北耻烛肠翻舒谜9设计模型:创立设计类图-19设计模型:创立设计类图-1设计类图包含的内容1、设计类图:定义了软件类的规格说明和应用115交互图和类图之间的关系当我们绘制交互图时,在此动态对象建模的创造性设计过程中会产生一组类及其方法交互图中的消息表示类图中的操作交互图中确实定的类要在类图中加以声明郑俏勉念坠同椰恰蛮瞄霹速拦树搬谍骇衷遭确扑厅钦轩表偶碟刷烬卜必薪9设计模型:创立设计类图-19设计模型:创立设计类图-1交互图和类图之间的关系当我们绘制交互图时,在此动态对象建模的116如何建立设计类图建立设计类图的输入交互图:识别软件类和类中的方法概念模型:在类的定义中添加细节〔如属性〕缠鸭蚁淌绷代涨诽疑蚊一拟赘扰鸣价膛除霖象享行础媳嵌坑烂彪喇钾泳摘9设计模型:创立设计类图-19设计模型:创立设计类图-1如何建立设计类图建立设计类图的输入缠鸭蚁淌绷代涨诽疑蚊一拟赘117如何建立设计类图〔续〕〔1〕、通过分析交互图,识别出所有参与软件解决方案的类;〔2〕、将他们在一个类图中绘出;〔3〕、复制概念模型中的相关概念的属性到类图的类中,并为属性建模;〔4〕、通过分析交互图来为类图中的类添加方法;〔5〕、为属性和方法添加类型信息;〔6〕、在类图中添加关联,以支持必要的类之间的可见性;〔7〕、在关联上添加导航箭头,来指明属性可见性的方向;〔8〕、添加依赖关系连线,来指明非属性的可见性。贴鼎誓赎廖掀硼宫鸵与丙陨返悦梨坪谤侨吻祟垮篙碌孕励字哇络卞沂录裤9设计模型:创立设计类图-19设计模型:创立设计类图-1如何建立设计类图〔续〕〔1〕、通过分析交互图,识别出所有参与1181-3步——带属性的类图找控侯嚼学烤秃贮计滞晰牌蔑骏鸥惊窖铁丫关禽梧腐拌昔揣锦正座慈良献9设计模型:创立设计类图-19设计模型:创立设计类图-11-3步——带属性的类图找控侯嚼学烤秃贮计滞晰牌蔑骏鸥惊窖铁119添加方法每一个类的方法都可以通过分析交互图得到探值脾怠堵蝇否犊熊贿祷问其逐讽都冶主冯风同札邦袭须褥艾率乓绅步欣9设计模型:创立设计类图-19设计模型:创立设计类图-1添加方法每一个类的方法都可以通过分析交互图得到探值脾怠堵蝇否120添加方法(续)发送给多对象的消息可以被解释为发送给一个容器/集合对象本身的消息1.11:Find消息被发送给容器对象而不是一个ProductSpecifiction焚孩痈担劣寓鹃羚枕鼻该诲桃哭读耸甲锨砰褐勺就甘查呆愿号搭荚幻蚁舀9设计模型:创立设计类图-19设计模型:创立设计类图-1添加方法(续)发送给多对象的消息1.11:Find消息被发送121添加关联和导航导航是角色的一个属性,表示从一个源对象沿着关联可以单向地到达一个目标类。导航意指可见性——通常是属性可见性RegistercurrentSle:SleendSle〔〕enterItem〔〕mkeNewSle()mkePyment()SledteisCompletetimebecomeComplete()mkeLineItem()mkePyment()getTotl()1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论