面向对象分析和设计讲座8设计与代码映射课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《面向对象分析和设计讲座8设计与代码映射课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 分析 设计 讲座 代码 映射 课件
- 资源描述:
-
1、上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-6-232w可见性可见性w设计类图设计类图w代码映射代码映射w测试驱动开发与代码重构测试驱动开发与代码重构上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-6-234w确定四种可见性确定四种可见性w对设置可见性进行设计对设置可见性进行设计上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-6-235w可见性可见性Visibility 是对象看到或引用其它对象的是对象看到
2、或引用其它对象的能力能力w为了使发送者对象能够向接收者对象发送消息,为了使发送者对象能够向接收者对象发送消息,发送者必须具有接收者的可见性,即发送者必须发送者必须具有接收者的可见性,即发送者必须拥有对接收者对象的某种引用或指针拥有对接收者对象的某种引用或指针上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-6-236: RegisterenterItem(itemID, quantity): ProductCatalogspec := getSpecification( itemID )public void enterItem( itemID, qty ) . spec
3、= catalog.getSpecification(itemID) .class Register . private ProductCatalog catalog; .上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-6-237w实现对象实现对象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-6-238w这是一种相对持久地可见性这是一种相对持久地可见性: RegisterenterItem(itemID, quantity): ProductCatalogspec := getSpecification( itemID )public void enter
5、Item(itemID, qty) . spec = catalog.getSpecification(itemID) .class Register . private ProductCatalog catalog; .上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-6-239w这是一种相对暂时的可见性这是一种相对暂时的可见性2: makeLineItem(spec, qty)enterItem(id, qty)1: spec := getSpecification(id)2.1: create(spec, qty):Register:Sale:ProductCatal
6、ogsl : SalesLineItemmakeLineItem(ProductSpecification spec, int qty) . sl = new SalesLineItem(spec, qty); .上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-6-2310w将参数可见性转化为属性可见性十分常见将参数可见性转化为属性可见性十分常见2: makeLineItem(spec, qty)enterItem(id, qty)2: spec := getSpecification(id)2.1: create(spec, qty):Register:Sale:Pro
7、ductCatalogsl : SalesLineItem/ initializing method (e.g., a Java constructor)SalesLineItem(ProductSpecification spec, int qty).productSpec = spec; / parameter to attribute visibility.上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-6-2311w实现局部可见性的两种常见方式实现局部可见性的两种常见方式:n创建新的局部实例并将其分配给局部变量创建新的局部实例并将其分配给局部变量n将方法调用返回的
8、对象分配给局部变量将方法调用返回的对象分配给局部变量: RegisterenterItem(itemID, quantity): ProductCatalogspec := getSpecification( itemID )enterItem(id, qty)./ local visibility via assignment of returning objectProductSpecification spec = catalog.getSpecification(id);.上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-6-2312w这是一种相对持久的可见性这是一
9、种相对持久的可见性w将实例分配给全局变量,这在某些语言如将实例分配给全局变量,这在某些语言如C+中中是可能的是可能的上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-6-2313:A:B1: msg():C2: msg():D3: msg():E4: msg()is used forattribute visibility上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-6-2315w交互图完成后,有可能来定义软件类(接口)的交互图完成后,有可能来定义软件类(接口)的描述描述w设计类图(设计类图
10、(Design Class Diagrams,DCD)上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-6-2316w实践中,交互图经常与实践中,交互图经常与DCD并行创建并行创建w为了更清楚地说明为了更清楚地说明DCD,我们选择了在交互图,我们选择了在交互图之后介绍之后介绍DCD上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-6-2317RegisterenterItem(.)SaledateisComplete : BooleantimemakeLineItem(.)CapturesNavigability11Three section box f
11、orclass definition.methods; there are parameters, but unspecifiedtype information上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-6-2318w设计类图描述了应用中的软件类和接口设计类图描述了应用中的软件类和接口n类,关联和属性类,关联和属性n接口,包括操作和常量接口,包括操作和常量n方法方法n属性类型信息属性类型信息n可见性可见性n依赖依赖wUP并没有专门的并没有专门的 “设计类图设计类图”wUP定义了设计模型,包括交互,包和类图定义了设计模型,包括交互,包和类图.w在在UP设计模型中的类图
12、包含设计模型中的类图包含“设计类设计类”上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-6-2319Register.endSale()enterItem(.)makePayment(.)SaledateisComplete : BooleantimemakeLineItem(.)CapturesRegisterSaledateisComplete : BooleantimeCapturessoftware class1111Domain ModelDesign ModelConcept; conceptual class上海交通大学计算机科学与工程系上海交通大学计算机科
13、学与工程系2022-6-2320w确定软件类并展示它们确定软件类并展示它们n检查交互图并列出提到的所有类检查交互图并列出提到的所有类RegisterSaleProductCatalogProductSpecificationStoreSalesLineItemPayment上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-6-2321w给这些类画类图,列出通过领域模型中识别出来,给这些类画类图,列出通过领域模型中识别出来,并在设计中采用的属性并在设计中采用的属性Register.SaledateisCompletetime.SalesLineItemquantity.Pro
14、ductCatalog.ProductSpecificationdescriptionpriceitemID.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-6-2322w添加方法名添加方法名n通过分析交互图,每一个类具有的方法可以确定通过分析交互图,每一个类具有的方法可以确定:R
15、egister:Sale2: makeLineItem(spec, qty)Sale.makeLineItem(.)上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-6-2323SalesLineItem- quantity+ getSubtotal()ProductCatalog.+ getSpecification(.)ProductSpecification- description- price- itemID.Store- address- name+ addSale(.)Payment- amount.Register.+ endSale()+ enterIte
16、m(.)+ makeNewSale()+ makePayment(.)Sale- date- isComplete- time+ becomeComplete()+ makeLineItem(.)+ makePayment(.)+ getTotal()上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-6-2324w一些注意点一些注意点ncreate 消息的解释消息的解释n访问方法访问方法n多对象消息多对象消息n与语言无关的语法与语言无关的语法上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-6-2325w每一种语言有各自特定的实例化每一种语言有各自特定的
17、实例化instantiation或或者初始化者初始化initialization的方法的方法n在在C+, 它包含了通过跟随一个构造函数的它包含了通过跟随一个构造函数的new操作进操作进行自动内存分配行自动内存分配n在在Java中中, 它包含了对它包含了对new 运算符的调用,后面跟构运算符的调用,后面跟构造函数调用造函数调用上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-6-2326w获取或者设置属性获取或者设置属性n我们可以将所有属性定义为私有,并对它们定义我们可以将所有属性定义为私有,并对它们定义accessor和和mutatorw这些方法一般在类图中不显示这些方法一
18、般在类图中不显示-上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-6-2327w给多对象的消息一般解释为发送给一个给多对象的消息一般解释为发送给一个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 a
19、ProductSpecification.上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-6-2328w属性,方法参数和返回值的类型可以有选择的显属性,方法参数和返回值的类型可以有选择的显示示w什么时候显示什么时候显示? 取决于取决于n目的目的: Code Generation or only Read上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-6-2329SalesLineItemquantity : IntegergetSubtotal() : MoneyProductCatalog.getSpecification(id: ItemID)
20、: ProductSpecificationProductSpecificationdescription : Textprice : MoneyitemID : ItemID.Storeaddress : Addressname : TextaddSale(s : Sale)Paymentamount : Money.Register.endSale()enterItem(id : ItemID, qty : Integer)makeNewSale()makePayment(cashTendered : Money)Saledate : DateisComplete : Booleantim
21、e : TimebecomeComplete()makeLineItem(spec : ProdSpecification , qty : Integer)makePayment(cashTendered : Money)getTotal() : MoneyReturn type of methodvoid; no return value上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-6-2330w关联的每一端称为一个角色,在关联的每一端称为一个角色,在DCD中,角色中,角色可以用方向箭头修饰可以用方向箭头修饰上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系
22、2022-6-2331CapturesRegistercurrentSale : SaleendSale()enterItem(.)makeNewSale()makePayment(.)SaledateisCompletetimebecomeComplete()makeLineItem(.)makePayment(.)getTotal()Navigability arrow indicatesRegister objects are connecteduni-directionally to Saleobjects.Absence of navigabilityarrow indicates
23、noconnection from Sale toRegister.Register class willhave an attribute pointing to aSale object.11the currentSaleattribute is oftenexcluded, as it isimplied by thenavigableassociation fromRegister to Sale.上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-6-2332w关联上的方向箭头一般解释为从源到目标类的属关联上的方向箭头一般解释为从源到目标类的属性可见性性可见性w在在
24、OOP中中, 它一般被实现为源类中有一个指向目它一般被实现为源类中有一个指向目标类对象的属性标类对象的属性上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-6-2333w一些需要定义从一些需要定义从A指向指向B的方向性修饰的情形的方向性修饰的情形:nA发送消息给发送消息给BnA创建创建B的实例的实例nA 需要保持与需要保持与B的连接的连接上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-6-2334w方向性方向性Navigability 通过交互图来识别通过交互图来识别i:Store:Registerpc:ProductCatalogcreate()2:
25、 create(pc)1: create()1.2: loadProdSpecs():ProductSpecification1.1: create()1.2.2*: add(ps)1.2.1*: create(id, price, description)ps:ProductSpecification上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-6-2335SalesLineItemquantity : IntegergetSubtotal()ProductCatalog.getSpecification(.)ProductSpecificationdescripti
展开阅读全文