版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026福山入党考试题目及答案
- 2026陕西西安市经开第一学校小学各学科教师(合同制)招聘备考题库及答案详解(考点梳理)
- 2026浙江温州市苍南县马站镇人民政府招聘专职消防队员2人备考题库及完整答案详解一套
- 2026陕西西安市西北工业大学航空学院于庆民团队非事业编科研助理招聘1人备考题库及答案详解(易错题)
- 2026新疆阿勒泰布尔津县社会补充招聘编制外医疗卫生工作人员1人备考题库附答案详解(培优b卷)
- 2026四川成都市简阳市人民法院招聘编外人员2人备考题库含答案详解
- 2026首都医科大学附属北京佑安医院编制外护理人员招聘13人备考题库含答案详解(突破训练)
- 2026广西来宾象州县马坪镇总工会招聘乡镇社会化工会工作者1人备考题库及答案详解(历年真题)
- 2026吉林延边州和龙市面向委培生招聘员额管理工作人员5人备考题库附答案详解(夺分金卷)
- 2026广西贵港市电子商务促进中心招募就业见习人员3人备考题库附答案详解
- pep六年级英语下册Unit4单元总复习课件
- 进出口来料加工手册
- “双减”背景下高中数学单元作业设计研究
- 防火建筑构造图集07J9051
- 钢结构答辩课件
- 外科无菌术及基本操作
- 2023年辽阳市太子河区数学六年级第二学期期末达标测试试题含解析
- 基数效用理论 序数效用理论 消费者选择
- 大学生健康教育(复旦大学)【超星尔雅学习通】章节答案
- 国际贸易实务题库(含答案)
- SGRQ圣乔治呼吸问卷
评论
0/150
提交评论