




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-82w可见性可见性w设计类图设计类图w代码映射代码映射w测试驱动开发与代码重构测试驱动开发与代码重构上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-84w确定四种可见性确定四种可见性w对设置可见性进行设计对设置可见性进行设计上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-85w可见性可见性Visibility 是对象看到或引用其它对象的是对象看到或引用
2、其它对象的能力能力w为了使发送者对象能够向接收者对象发送消息,为了使发送者对象能够向接收者对象发送消息,发送者必须具有接收者的可见性,即发送者必须发送者必须具有接收者的可见性,即发送者必须拥有对接收者对象的某种引用或指针拥有对接收者对象的某种引用或指针上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-86: RegisterenterItem(itemID, quantity): ProductCatalogspec := getSpecification( itemID )public void enterItem( itemID, qty ) . spec = ca
3、talog.getSpecification(itemID) .class Register . private ProductCatalog catalog; .上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-87w实现对象实现对象A到对象到对象B的可见性通常有四种方式的可见性通常有四种方式:n属性可见性属性可见性Attribute Visibility: B是是A的属性的属性n参数可见性参数可见性Parameter visibility: B是是A方法中的参数方法中的参数n局部可见性局部可见性Local Visibility: B是是A中方法的局部对象中方法的局部
4、对象(不是参数)(不是参数)n全局可见性全局可见性Global Visibility: B具有某种方式的全局可具有某种方式的全局可见性见性w为了使对象为了使对象A能够向对象能够向对象B发送消息,对于发送消息,对于A而而言,言,B必须是可见的必须是可见的上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-88w这是一种相对持久地可见性这是一种相对持久地可见性: RegisterenterItem(itemID, quantity): ProductCatalogspec := getSpecification( itemID )public void enterItem(i
5、temID, qty) . spec = catalog.getSpecification(itemID) .class Register . private ProductCatalog catalog; .上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-89w这是一种相对暂时的可见性这是一种相对暂时的可见性2: makeLineItem(spec, qty)enterItem(id, qty)1: spec := getSpecification(id)2.1: create(spec, qty):Register:Sale:ProductCatalogsl :
6、SalesLineItemmakeLineItem(ProductSpecification spec, int qty) . sl = new SalesLineItem(spec, qty); .上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-810w将参数可见性转化为属性可见性十分常见将参数可见性转化为属性可见性十分常见2: makeLineItem(spec, qty)enterItem(id, qty)2: spec := getSpecification(id)2.1: create(spec, qty):Register:Sale:ProductCata
7、logsl : SalesLineItem/ initializing method (e.g., a Java constructor)SalesLineItem(ProductSpecification spec, int qty).productSpec = spec; / parameter to attribute visibility.上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-811w实现局部可见性的两种常见方式实现局部可见性的两种常见方式:n创建新的局部实例并将其分配给局部变量创建新的局部实例并将其分配给局部变量n将方法调用返回的对象分配给局部变量
8、将方法调用返回的对象分配给局部变量: RegisterenterItem(itemID, quantity): ProductCatalogspec := getSpecification( itemID )enterItem(id, qty)./ local visibility via assignment of returning objectProductSpecification spec = catalog.getSpecification(id);.上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-812w这是一种相对持久的可见性这是一种相对持久的可见性w
9、将实例分配给全局变量,这在某些语言如将实例分配给全局变量,这在某些语言如C+中中是可能的是可能的上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-813:A:B1: msg():C2: msg():D3: msg():E4: msg()is used forattribute visibility上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-815w交互图完成后,有可能来定义软件类(接口)的交互图完成后,有可能来定义软件类(接口)的描述描述w设计类图(设计类图(Design Clas
10、s Diagrams,DCD)上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-816w实践中,交互图经常与实践中,交互图经常与DCD并行创建并行创建w为了更清楚地说明为了更清楚地说明DCD,我们选择了在交互图,我们选择了在交互图之后介绍之后介绍DCD上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-817RegisterenterItem(.)SaledateisComplete : BooleantimemakeLineItem(.)CapturesNavigability11Three section box forclass defini
11、tion.methods; there are parameters, but unspecifiedtype information上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-818w设计类图描述了应用中的软件类和接口设计类图描述了应用中的软件类和接口n类,关联和属性类,关联和属性n接口,包括操作和常量接口,包括操作和常量n方法方法n属性类型信息属性类型信息n可见性可见性n依赖依赖wUP并没有专门的并没有专门的 “设计类图设计类图”wUP定义了设计模型,包括交互,包和类图定义了设计模型,包括交互,包和类图.w在在UP设计模型中的类图包含设计模型中的类图包含“设计
12、类设计类”上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-819Register.endSale()enterItem(.)makePayment(.)SaledateisComplete : BooleantimemakeLineItem(.)CapturesRegisterSaledateisComplete : BooleantimeCapturessoftware class1111Domain ModelDesign ModelConcept; conceptual class上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-820w
13、确定软件类并展示它们确定软件类并展示它们n检查交互图并列出提到的所有类检查交互图并列出提到的所有类RegisterSaleProductCatalogProductSpecificationStoreSalesLineItemPayment上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-821w给这些类画类图,列出通过领域模型中识别出来,给这些类画类图,列出通过领域模型中识别出来,并在设计中采用的属性并在设计中采用的属性Register.SaledateisCompletetime.SalesLineItemquantity.ProductCatalog.Produc
14、tSpecificationdescriptionpriceitemID.Storeaddressname.Paymentamount.The Cashier is not present in the design since for the current iteration it is not necessary to model it in software.上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-822w添加方法名添加方法名n通过分析交互图,每一个类具有的方法可以确定通过分析交互图,每一个类具有的方法可以确定:Register:Sale2: make
15、LineItem(spec, qty)Sale.makeLineItem(.)上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-823SalesLineItem- quantity+ getSubtotal()ProductCatalog.+ getSpecification(.)ProductSpecification- description- price- itemID.Store- address- name+ addSale(.)Payment- amount.Register.+ endSale()+ enterItem(.)+ makeNewSale()+
16、 makePayment(.)Sale- date- isComplete- time+ becomeComplete()+ makeLineItem(.)+ makePayment(.)+ getTotal()上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-824w一些注意点一些注意点ncreate 消息的解释消息的解释n访问方法访问方法n多对象消息多对象消息n与语言无关的语法与语言无关的语法上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-825w每一种语言有各自特定的实例化每一种语言有各自特定的实例化instantiation或或者初始化
17、者初始化initialization的方法的方法n在在C+, 它包含了通过跟随一个构造函数的它包含了通过跟随一个构造函数的new操作进操作进行自动内存分配行自动内存分配n在在Java中中, 它包含了对它包含了对new 运算符的调用,后面跟构运算符的调用,后面跟构造函数调用造函数调用上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-826w获取或者设置属性获取或者设置属性n我们可以将所有属性定义为私有,并对它们定义我们可以将所有属性定义为私有,并对它们定义accessor和和mutatorw这些方法一般在类图中不显示这些方法一般在类图中不显示-上海交通大学计算机科学与工程
18、系上海交通大学计算机科学与工程系2022-3-827w给多对象的消息一般解释为发送给一个给多对象的消息一般解释为发送给一个container/collection 对象,例如对象,例如 Java Map, a C+ map 或者或者Smalltalk Dictionary1: spec := getSpecification(id)1.1: spec := find(id):ProductCatalog:ProductSpecificationThe find message is to thecontainer object, not to aProductSpecification.上海交
19、通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-828w属性,方法参数和返回值的类型可以有选择的显属性,方法参数和返回值的类型可以有选择的显示示w什么时候显示什么时候显示? 取决于取决于n目的目的: Code Generation or only Read上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-829SalesLineItemquantity : IntegergetSubtotal() : MoneyProductCatalog.getSpecification(id: ItemID) : ProductSpecificationProd
20、uctSpecificationdescription : Textprice : MoneyitemID : ItemID.Storeaddress : Addressname : TextaddSale(s : Sale)Paymentamount : Money.Register.endSale()enterItem(id : ItemID, qty : Integer)makeNewSale()makePayment(cashTendered : Money)Saledate : DateisComplete : Booleantime : TimebecomeComplete()ma
21、keLineItem(spec : ProdSpecification , qty : Integer)makePayment(cashTendered : Money)getTotal() : MoneyReturn type of methodvoid; no return value上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-830w关联的每一端称为一个角色,在关联的每一端称为一个角色,在DCD中,角色中,角色可以用方向箭头修饰可以用方向箭头修饰上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-831CapturesRegisterc
22、urrentSale : SaleendSale()enterItem(.)makeNewSale()makePayment(.)SaledateisCompletetimebecomeComplete()makeLineItem(.)makePayment(.)getTotal()Navigability arrow indicatesRegister objects are connecteduni-directionally to Saleobjects.Absence of navigabilityarrow indicates noconnection from Sale toReg
23、ister.Register class willhave an attribute pointing to aSale object.11the currentSaleattribute is oftenexcluded, as it isimplied by thenavigableassociation fromRegister to Sale.上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-832w关联上的方向箭头一般解释为从源到目标类的属关联上的方向箭头一般解释为从源到目标类的属性可见性性可见性w在在OOP中中, 它一般被实现为源类中有一个指向目它一般被实现
24、为源类中有一个指向目标类对象的属性标类对象的属性上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-833w一些需要定义从一些需要定义从A指向指向B的方向性修饰的情形的方向性修饰的情形:nA发送消息给发送消息给BnA创建创建B的实例的实例nA 需要保持与需要保持与B的连接的连接上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-834w方向性方向性Navigability 通过交互图来识别通过交互图来识别i:Store:Registerpc:ProductCatalogcreate()2: create(pc)1: create()1.2: load
25、ProdSpecs():ProductSpecification1.1: create()1.2.2*: add(ps)1.2.1*: create(id, price, description)ps:ProductSpecification上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-835SalesLineItemquantity : IntegergetSubtotal()ProductCatalog.getSpecification(.)ProductSpecificationdescription : Textprice : MoneyitemID : I
26、temID.Storeaddress : Addressname : TextaddSale(.)Paymentamount : Money.Contains1.*Contains1.*RegisterendSale()enterItem(.)makeNewSale()makePayment(.)Saledate : DateisComplete : Booleantime : TimebecomeComplete()makeLineItem(.)makePayment(.)getTotal()CapturesHousesUsesLooks-inPaid-byDescribes11111111
27、11111*Logs-completed4*1上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-836w依赖关系表明一个元素(包括类,用例,等等)依赖关系表明一个元素(包括类,用例,等等)知道另外一个元素知道另外一个元素n用虚线箭头表示用虚线箭头表示w在类图中,依赖关系可以表示非属性可见性,即:在类图中,依赖关系可以表示非属性可见性,即:参数,全局或者局部可见性参数,全局或者局部可见性上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-837SalesLineItemquantity : IntegergetSubtotal()ProductCat
28、alog.getSpecification(.)ProductSpecificationdescription : Textprice : MoneyitemID: ItemID.Storeaddress : Addressname : TextaddSale(.)Paymentamount : Money.Contains1.*Contains1.*Register.endSale()enterItem(.)makeNewSale()makePayment(.)Saledate : DateisComplete : Booleantime : TimebecomeComplete()make
29、LineItem(.)makePayment(.)getTotal()CapturesHousesUsesLooks-inPaid-byDescribes1111111111111*A dependency of Register knowing aboutProductSpecification.Recommended when there is parameter,global or locally declared visibility.Logs-completed4*1上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-838SampleClassclassAtt
30、ribute+ publicAttribute- privateAttributeattributeWithVisibilityUnspecifiedattribute1 : typeburgers : List of VeggieBurgerattribute2 : type = initial valuefinalConstantAttribute : int = 5 frozen /derivedAttributeclassMethod()+ 玞onstructor?SampleClass(int)methodWithVisibilityUnspecified()methodReturn
31、sSomething() : FooabstractMethod()abstractMethod2() abstract / alternate+ publicMethod()- privateMethod()# protectedMethod() packageVisibleMethod()finalMethod() leaf methodWithoutSideEffects() query synchronizedMethod() guarded method1WithParms(in parm1:String, inout parm2:int)method2WithParms(parm1
32、:String, parm2:float)method3WithParms(parm1, parm2)method4WithParms(String, int)methodWithParmsAndReturn(parm1: String) : FoomethodWithParmsButUnspecified(.) : FoomethodWithParmsAndReturnBothUnspecified()java.awt.Fontplain : Integer = 0 frozen bold : Integer = 1 frozen name : Stringstyle : Integer =
33、 0.+ getFont(name : String) : Font+ getName() : String.java.awt.Toolkitorjava.awt.Toolkit abstract . / there are attributes, but not shown# createButton(target : Button) : ButtonPeer+ getColorModel() : ColorModel.FinalClass leaf . / there are methods, but not shown玦nterface粆Runnablerun()AlarmClockru
34、n().an emptycompartmentwithout ellipsismeans there isdefinitely nomembers (inthis case, noattributes)上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-839Register.endSale()enterItem(id, qty)makeNewSale()makePayment(cashTendered) ProductSpecification spec = catalog.getSpecification(id); sale.makeLineItem(spec, qt
35、y);public void enterItem( id, qty ) ProductSpecification spec = catalog.getSpecification(id); sale.makeLineItem(spec, qty);UML notation:A method body implementation may be shown in a UML note box. It should be placed within braces, whichsignifies it is semantic influence (it is more than just a comm
36、ent).The synax may be pseudo-code, or any language.It is common to exclude the method signature (public void .), but it is legal to include it.上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-840Register. . .Saledate. . .1. . . . .Domain ModelUse-Case ModelDesign Model: RegisterenterItem(itemID, quantity): Prod
37、uctCatalogspec := getSpecification( itemID ). . .inspiresthe namesandattributesof somesoftwareclasses inthe designmakeNewSale()Sample UP Artifact Relationships for Design Class DiagramsRegister.makeNewSale()enterItem(.).ProductCatalog.getSpecification(.).1*. . . . . . .1Saledate.use-caserealizations
38、(UCRs)designclassdiagrams(DCDs)the design classesdiscovered whiledesigning UCRs aresummarized in DCDsrequires UCRssuggests domainconcepts上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-842w交互图和交互图和DCD可以作为代码生成过程的输入可以作为代码生成过程的输入w实现模型包括源代码,数据库定义,源代码,实现模型包括源代码,数据库定义,源代码, JSP/XML/HTML上
39、海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-843w现代方法现代方法: Design-while-programmingw但是我们经常在编程前进行可视化建模但是我们经常在编程前进行可视化建模上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-844w设计中也包括决策和创新工作设计中也包括决策和创新工作w代码的生成代码的生成 = 机械翻译过程机械翻译过程?n不完全对不完全对n需要修改,详细的问题将出现并被解决需要修改,详细的问题将出现并被解决上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-845RequirementsA
40、nalysisDesignImplementationand TestingIterative Cyclesof DevelopmentRequirementsAnalysisDesignImplementationand TestingRequirementsAnalysisDesignImplementationand TestingTime上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-847public class SalesLineItemprivate int quantity;public Sa
41、lesLineItem(ProductSpecification spec, int qty) . public Money getSubtotal() . SalesLineItemquantity : IntegergetSubtotal() : MoneyProductSpecificationdescription : Textprice : MoneyitemID : ItemID.Described-by1*It is derived from the create(spec, qty) message sent to a SalesLineItem上海交通大学计算机科学与工程系上
42、海交通大学计算机科学与工程系2022-3-848w类的引用属性是依据类图中的关联和方向性来的类的引用属性是依据类图中的关联和方向性来的SalesLineItemquantity : IntegergetSubtotal() : MoneyProductSpecificationdescription : Textprice : MoneyitemID : ItemID.Described-bypublic class SalesLineItemprivate int quantity;private ProductSpecification productSpec;public SalesLi
43、neItem(ProductSpecification spec, int qty) . public Money getSubtotal() . *1Simple attributeReference attribute上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-849w角色名字是角色的标识角色名字是角色的标识SalesLineItemquantity : IntegergetSubtotal() : MoneyProductSpecificationdescription : Textprice : MoneyitemID : ItemID.Described
44、-bypublic class SalesLineItem.private int quantity;private ProductSpecification productSpec;productSpecRole name used inattribute name.*1上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-850Saledate : DateisComplete : Booleantime : TimebecomeComplete()makeLineItem()makePayment()getTtotal()public class Saleprivat
45、e Date dateTime = new Date();.In Java, the java.util.Date class combines both dateand timestamp information. Therefore, the separateattributes in the design can be collapsed when mappingto Java.上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-851w消息的顺序被翻译成方法定义中的一系列声明消息的顺序被翻译成方法定义中的一系列声明2: makeLineItem(spec, qty
46、)enterItem(id, qty)1: spec := getSpecification(id)2.1: create(spec, qty)1.1: spec := find(id):Register:Sale:ProductCatalogsl: SalesLineItemSalesLineItem:SalesLineItem:ProductSpecification2.2: add(sl)上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-3-852ProductCatalog.getSpecification(.)Saledate : DateisComplete : Booleantime : TimebecomeComplete()mak
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 施工现场安全防护装备试题及答案
- 注册土木工程师考试在线学习的优势分析试题及答案
- 施工现场人员安全防护知识考题及答案
- 大专护理解剖试题及答案
- 明确重点2025年土木工程师考试每个知识点试题及答案
- 2025年物联网市场项目建议书
- 新能源汽车供应链创新试题及答案
- 服务器硬件试题及答案
- 文综二调试题及答案
- 电子元件采购合同协议书
- 2024年南京市鼓楼区名小六年级毕业考试语文模拟试卷
- 有限空间安全培训
- VTE静脉血栓栓塞症的培训
- EPC项目设计安全保障措施
- 宅基地确权委托书
- 《制作酸奶的方法》课件
- 附件16:地下室灯带临时照明系统方案
- 投顾服务方案
- 工程师转正汇报课件
- 养殖场安全生产培训
- 矿山生产管理培训课件
评论
0/150
提交评论