L19.2-将设计映射为代码讲解学习.pptVIP

  • 4
  • 0
  • 约2.49千字
  • 约 25页
  • 2020-04-19 发布于浙江
  • 举报
系统分析与设计 第20章 将设计映射为代码 目标 使用面向对象语言将设计映射为代码 我们已经为当前迭代完成了交互图和DCD,接下去 便可以为这些设计编写代码了。 UP包括实现模型,根据设计所编写的代码就是UP 中的实现模型,包括源代码、 JSP/HTML页面、 数据库定义等。 20.1 编程和迭代、进化式开发 1. 编程期设计 创建代码既是最终目标,也是设计的继续。 因为在设计建模中产生的结果并不是完美的, 在编程和测试中会发现许多设计中不曾考虑 的细节问题,因而会做出许多变更。 如果做得好,设计师会以设计建模中产生 的结果为基础,在编程期进一步产生更具优 雅性和健壮性的系统。 这就是编程期设计。 2. 过程路线图 USE CASE OOA OOD CODING 提 供了从需求到代码开发过程的端到端路线图 。 各阶段中所形成的制品能够被可追溯地和 有效地输入到其后续制品中,并最终形成可 运行的运用。 尽管这个过程不会一帆风顺,但过程路线 图可以为实现和问题解决提供一个可遵循的 方法和研究环境。 20.2 将设计映射为代码 面向对象语言中的实现需要为以下元素编 写源代码: 类和接口的定义 方法的定义 下面的实现讨论以Java语言为工具. 20.3 由DCD创建类的定义 DCD描述了类或接口的名称、属性、关联 以及操作的特征标记等,这已足以在OO语言 中创建基本类的定义了。DCD若是使用UML 工具绘制的,还可以从图形中生成基本的类 定义。 如对于SalesLineItem在Java中的定义, 可以直接由DCD映射为属性定义和方法特征 标记,看下图: SalesLineItem类定义中的: 第一个语句定义了一个整形变量quantity,因为 类图中有个属性为quantity,是整形变量; 第二个语句定义了一个对象实例,名为 description,其类型ProductDescription,因为 设计类图中有一个description的关联角色标记, 说明SalesLineItem对象具有对ProductDescription 属性可见性; 第三个语句是SalesLineItem的构造器,因 为enterItem的交互图中有发送给SalesLineItem 的create(desc,qty)消息,因此SalesLineItem 必须定义相应的方法。注意类图中不包含 create方法是因为这是不言而喻的,是为了保 持类图的简洁性。另外,UML使用create表示 创建实例,不同的语言使用不同的语句; 类定义中的第四个语句定义了一个方法 getSubtotal(),其返回类型是Money,因为类图的 方法栏中有一个操作标记: getSubtotal():Money 可见,由DCD到类定义是一种直接的翻译过程。 只要对照设计类图,这个过程不是很难。 20.4 从交互图创建方法 1. 交互图中的一系列消息可以转化为方法 定义中的一系列语句。 例子:从enterItem交互图定义Register中 的enterItem()方法。 enterItem()消息是发给Register的,这说 明Register中有相应的enterItem()方法: Public void enterItem(ItemID,itemID,int qty) 该方法实现enterItem操作契约的要求。 2. 如何根据交互图定义实现方法呢?首先 要知道已确定的类定义,如图: 图中: Register分别拥有一个ProductCatalog的 属性可见性catalog和一个Sale的属性可见性 currentSale,因此在Register的类定义中有 下面两条语句: private ProductCatalog catalog; private Sale currntSale; Register类定义中的操作标记包括四个系 统操作和一个构造器。 3. 现在我们看看其中的enterItem()方法如 何实现?这时要根据交互图: 交互图显示, Register先后发送两条消息: 消息1: Register向ProductCatalog发送 getProductDescription消息以便提取匹配的 ProductDescription实例并返回在desc中。 因此方法定义中应该有如下语句: ProductDescription desc= catalog

文档评论(0)

1亿VIP精品文档

相关文档