软件需求分析与设计-简单实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

enterItem交互图
enterItem(id, qty)
:Register
2: makeLineItem (desc, qty)
:Sale
1: desc = getProductDesc (id) :Product Catalog
1.1: desc = get(id)
: Map<ProductDescription >
enterItem : Register
: ProductCatalog
(itemID, quantity)
desc = getProductDesc( itemID )
28.10.2020
h
5
参数可见性
enterItem(id, qty)
:Register
2: makeLineItem (desc, qty)
enterItem
: Register
: ProductCatalog
(itemID, quantity)
desc = getProductDesc( itemID )
public void enterItem ( itemID, qty ) {
... desc = catalog.getProductDesc(itemID) ... }
:Sale
1: desc = getProductDesc (id)
:Product Catalog
makeLineItem (ProductDescription desc , int qty) {
... sl = new SalesLineItem (desc, qty); ... }
2.1: create(desc, qty) sl : SalesLineItem
2.1: create(desc, qty)
2.2: add(sl)
lineItems : List<SalesLineItem >
sl: SalesLineItem
28.10.2020
h
11
Register类
public class Register { private ProductCatalog catalog; private Sale currentSale;
SalesLineItem quantity : Integer getSubtotal() : Money
28.10.2020
ProductDescription
description description : Text price : Money
1 itemID : ItemID
...
h 10
enterItem : Register
: ProductCatalog
(itemID, quantity)
desc = getProductDesc( itemID )
•实现局部可见性的两种方式: •创建新的局部实例并将其分配给局部变量 •将方法调用返回的对象分配给局部变量
28.10.2020
h
8
• 属性可见性-B是A的属性 • 参数可见性-B是A中方法的参数 • 局部可见性-B是A中方法的局部对象(不是参数) • 全局可见性-B具有某种方法的全局可见性
28.10.2020
h
3
从Register到ProductCatalog的可见性是必须的
class Register {
... private ProductCatalog catalog ; ... }
软件需求分析与设计 -简单实现
h
简单实现
• 主要内容
– 对可见性进行设计 – 将设计映射为代码 – 测试驱动开发和重构
28.10.2020
h
2
可见性设计
• 对象之间的可见性
– 为了使发送者对象能够向接收者对象发送消息, 发送者必须具有接受者的可见性
• 可见性
– 是对象”看到”或者引用其他对象的能力 – 与范围有关 – 四种类型
将设计映射为代码
• 将设计映射为代码
– 类和接口的定义 – 方法的定义
• 由 DCD创建类的定义
– DCD描述了类或接口的名称、超类、操作的特征 标记以及类的属性,可以从类图直接生成类的定 义
• 从交互图创建方法
– 交互图ቤተ መጻሕፍቲ ባይዱ的一系列消息可以转化为方法定义中的 一系列语句
28.10.2020
h
9
Java中的SaleLineItem
28.10.2020
h
6
属性可见性的参数
enterItem(id, qty)
:Register
2: desc = getProductDesc(id)
2: makeLineItem(desc, qty)
:Product Catalog
// initializing method (e.g., a Java constructor) SalesLineItem(ProductDescription desc , int qty) { ... description = desc; // parameter to attribute visibility ... }
28.10.2020
h
4
属性可见性
class Register {
... private ProductCatalog catalog; ... }
public void enterItem(itemID, qty) {
... desc = catalog.getProductDesc(itemID) ... }
:Sale 2.1: create(desc, qty)
sl : SalesLineItem
28.10.2020
h
7
局部可见性
enterItem(id, qty) { ... // local visibility via assignment of returning object ProductDescription desc= catalog.getProductDes(id); ... }
public class SalesLineItem { private int quantity; private ProductDescription description; public SalesLineItem(ProductDescription desc, int qty) { ... } public Money getSubtotal() { ... } }
相关文档
最新文档