版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、暨南大学计算机系黄战使用面向对象语言将设计制品映射为代码在设计工作中创建的UML制品交互图和DCD可以作为代码生成过程的输入在UP中具有实现模型。源代码、数据库定义、JSP/XML/HTML页面等都是实现制品现代开发工具为快速探索和重构替代方案提供了优秀的环境,一些通常是大量的编程期设计是很有价值的。用OO语言例如Java或C#)创建代码并不是OOA/D的一部分,它是最终目标在设计模型中创建的制品为生成代码提供了必要的信息然而,一般来说,编程工作并非微不足道的代码生成步骤,事实恰恰相反!实际上,在设计建模中产生的结果只是不完整的第一步。在编程和测试过程中,会做出很多的变更并且要发现和解决无数细
2、节问题面向对象语言中的实现需要以下元素编写源代码: 类和接口的定义 方法的定义至少,DCD描述了类和接口的名称、超类、操作的特征标记以及类的属性等。这已经足以在OO语言中创建基本类的定义了。如果是使用UML工具绘制的,那么还可以从图形中生成基本的类定义交互图的一系列消息可以转换为方法定义中的一系列语句交互图中展示的方法中的每一系列消息都映射为Java方法中的语句一对多的关系非常常见例如Sale必须维护对一组众多SaleLineItem实例的可见性在OO编程语言中,这些关系通常使用集合对象例如List或Map或简单的数组来实现选择使用哪种集合类当然要由需求来决定,基于键的查询需要使用Map,可增
3、长的有序序列表需要使用List等如果对象实现的是接口,那么使用接口而不是具体类来声明变量,例如: private List lineItems = new ArrayList();对于应用开发,在设计建模过程中考虑大规模的异常处理策略是明智的因为这对大规模的架构具有影响),当然在实现过程中也是如此就UML而言,可以在消息和操作声明的特性字符串中指出异常类的实现要按照从耦合度最低到耦合度最高的顺序来完成例如: 测试驱动开发或测试优先开发是极限编程XP方法提倡的优秀实践这些实践同样也适用于UP和其他迭代方法在这种实践中,要在测试代码之前完成单元测试代码的编写,同时开发者要为所有产品代码编写单元测试
4、代码其基本规律,编写一小段测试代码,然后再编写一小段产品代码,保证产品代码能够通过测试,然后编写更多的测试代码,依此类推请参考书中第20.11节,查看从先前UML制品中产生的代码public class SalesLineItemprivate int quantity;private ProductDescription description;public SalesLineItem(ProductDescription desc, int qty) . public Money getSubtotal() . SalesLineItemquantity : IntegergetSubto
5、tal() : MoneyProductDescription description : Textprice : MoneyitemID : ItemID.1description2: makeLineItem(desc, qty)enterItem(id, qty)1: desc = getProductDesc(id)2.1: create(desc, qty)1.1: desc = get(id):Register:Sale:ProductCatalogsl: SalesLineItemlineItems : List: Map2.2: add(sl)ProductCatalog.ge
6、tProductDesc(.)SaleisComplete : Booleantime : DateTimebecomeComplete()makeLineItem(.)makePayment(.)getTotal()Register.endSale()enterItem(id: ItemID, qty : Integer)makeNewSale()makePayment(cashTendered : Money)public class Registerprivate ProductCatalog catalog;private Sale currentSale;public Registe
7、r(ProductCatalog pc) .public void endSale() .public void enterItem(ItemID id, int qty) .public void makeNewSale() .public void makePayment(Money cashTendered) .11catalogcurrentSale2: makeLineItem(desc, qty)enterItem(id, qty)1: desc := getProductDescription(id):Register:Sale:ProductCatalog ProductDes
8、cription desc = catalog.ProductDescription(id); currentSale.makeLineItem(desc, qty);SalesLineItemquantity : IntegergetSubtotal()1.*SaleisComplete : Booleantime : DateTimebecomeComplete()makeLineItem()makePayment()getTtotal()public class Sale.private List lineItems = new ArrayList();A collection clas
9、s is necessary to maintain attribute visibility to all the SalesLineItems.lineItems lineItems.add( new SalesLineItem(desc, qty) );2: makeLineItem(desc, qty)enterItem(id, qty)2.1: create(desc, qty):Register:Salesl: SalesLineItemlineItems :List2.2: add(sl)SalesLineItemquantity : IntegergetSubtotal()ProductCatalog.getProductDesc(.)ProductDescriptiondescription : Textprice : MoneyitemID : ItemID.Storeaddress : Addressname : TextaddSale(.)Paymentamount : Money.1.*1.*Register.endSal
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024艺术学校教室租赁与艺术展览合作合同3篇
- 二零二五年度风力发电设备安装与运营合同3篇
- 2025年度猫咪品种引进与销售代理合同4篇
- 二零二四年光伏发电项目爆破钻孔合同
- 南昌市2025年度新建住宅买卖合同
- 二零二五版环保设施建设与运营合同3篇
- 2025年度餐饮企业知识产权保护合同18篇
- 年度超高纯气体的纯化设备战略市场规划报告
- 2025版智能交通信号系统零星维修施工合同4篇
- 二零二五年度车辆抵押担保信托合同范本3篇
- 称量与天平培训试题及答案
- 超全的超滤与纳滤概述、基本理论和应用
- 2020年医师定期考核试题与答案(公卫专业)
- 2022年中国育龄女性生殖健康研究报告
- 各种静脉置管固定方法
- 消防报审验收程序及表格
- 教育金规划ppt课件
- 呼吸机波形分析及临床应用
- 常用紧固件选用指南
- 私人借款协议书新编整理版示范文本
- 自荐书(彩色封面)
评论
0/150
提交评论