Presentation is loading. Please wait.

Presentation is loading. Please wait.

MODELING GENERALIZATION & REFINING THE DOMAIN MODEL

Similar presentations


Presentation on theme: "MODELING GENERALIZATION & REFINING THE DOMAIN MODEL"— Presentation transcript:

1 MODELING GENERALIZATION & REFINING THE DOMAIN MODEL
徐迎晓 复旦大学软件学院

2 泛化 抽象概念类 考虑关联类 考虑聚合 考虑时间 导出元素 限定符 Ordered Elements 包的表示及如何分区

3 泛化 抽象概念类 考虑关联类 考虑聚合 考虑时间 导出元素 限定符 Ordered Elements 包的表示及如何分区

4 根据本次迭代的需求,从用例描述以及Concept Category List中提取新的概念类:
CreditCard, CashPayment, CreditPayrnent, CreditAuthorizationService,…

5 对泛化建模 将相似的概念提取出公共性,以更概括、更抽象的方式理解术语
Domain model不提及继承,继承是软件机制,使superclass的属性和操作可在subclass中使用

6 另一种画法

7 Class hierarchy with separate and shared arrow notations.
两种画法 Class hierarchy with separate and shared arrow notations.

8 100% Rule Superclass的定义应该100%适用于 subclass.
Subclass必须100%符合superclass的: attributes associations 属性: Amount继承下来 关联: Pays-for

9 Is-a Rule Subclass is a Superclass CreditPayment is a Payment

10 何时定义子类和父类 Credit Payment与CreditCard关联 Credit Payment在如何验证方面处理不同
=======TEMP 何时定义父类 类似的概念,相同的关联,相同的属性,符合is-a and 100% rule 何时定义子类 LoanableResource-Book 有新的属性 Payments — Credit Payment Credit Payment与CreditCard关联 Credit Payment在如何验证方面处理不同 Human——MaleHuman MaleHuman和FemaleHuman购物习惯不同 Table 26.2 当子类有新的属性、关联, 或与父类或其他子类有不同的操作、处理、响应, 或代表会动的事物,具有不同的行为 都是要看和用例需求是否有关,如MaleCustomer and FemaleCustomer在我们的用例需求中不需要区分

11 左上:定义父类----有共同的属性或关联
左下:定义子类—--按照不同方式处理(Credit Payment, Check Payment等在如何验证方面处理不同) 右: 定义子类----有新的关联

12 左: 定义父类----有共同的属性或关联 右: 定义子类----有新的关联 此外:定义子类可 出于具有新的属性,如LoanableResource-Book 代表会动的事物,具有不同的行为,如Human——MaleHuman MaleHuman和FemaleHuman购物习惯不同 都是要看和用例需求是否有关,如MaleCustomer and FemaleCustomer在我们的用例需求中不需要区分 Figure 26.9, 26.10粒度问题跳过

13 泛化 抽象概念类 考虑关联类 考虑聚合 考虑时间 导出元素 限定符 Ordered Elements 包的表示及如何分区

14 Abstract conceptual classes.
椭圆代表实例的集合 下图中payment是抽象的:payment实例不能独立存在,只能是CashPayment、CreditPayment等之一

15 泛化 抽象概念类 考虑关联类 考虑聚合 考虑时间 导出元素 限定符 Ordered Elements 包的表示及如何分区

16 关联类association class 需求 Store发出验证请求时需要提供ID以表明身份
验证服务为每个store分配一个merchant ID 同一个store针对每个服务具有不同的ID merchant ID(零售商ID)

17 错,同一个Store可能有多个针对不同AuthorizationService有多个merchantID
同一个AuthorizationService针对不同Store也提供不同的merchantID

18 一个属性若和关联有关,或两个概念之间存在多对多的关联,考虑关联类 关联类的实例的生命周期依赖于关联
association class is a class that is connected to an association. There is an instance of the association class for every instance of the relationship (e.g., for every link).

19 many-to-many association
上到这里

20 PrimaryScheduleOfferingfInfo Java实现

21 PrimaryScheduleOfferingfInfo C++实现

22 泛化 抽象概念类 考虑关联类 考虑聚合 考虑时间 导出元素 限定符 Ordered Elements 包的表示及如何分区

23 Aggregation and Composition

24 Consider showing aggregation when:
“部分”的生命周期界定在“整体”的生命周期之内 整体和部分之间存在create-delete依赖 整体和部分之间存在明显的物理和逻辑上的组装关系 复合体的某些属性(如位置)可传递给部分 复合体上的操作(如copy, delete, destruction, movement, recording)可传递给部分.

25 Aggregation in the POS Domain Model
同时具有 Part of 关系和create-delete dependency (Sale删除,则SaleLineItem生命周期也结束) 标出聚合,使用GASP模式时有助于识别Creator。 澄清领域中的约束, 应用于整体的操作,如copy and delete,常传递到部分

26 泛化 抽象概念类 考虑关联类 考虑聚合 考虑时间 导出元素 限定符 Ordered Elements 包的表示及如何分区

27 考虑时间问题 Product-Specification区分历史价格和当前价格
若SalesLineItem总是从ProductSpecification中提取当前Price,则若价格已经更新过,旧的Sale将使用新价格,不正确

28 上图:以前没有考虑聚合和时间的domain model

29 泛化 抽象概念类 考虑关联类 考虑聚合 考虑时间 导出元素 限定符 Ordered Elements 包的表示及如何分区

30 DERIVED ELEMENTS 避免显示,但若在术语中比较突出,且避开它会削弱可理解性,则显示 Quantity ?
Sale total可以由SalesLineItem 和Product-Specification导出 SalesLineItem quantity可以由相关联的SalesLineItem的对象数量导出 =======E======= Sale total can be derived from SalesLineItem and Product-Specification information SalesLineItem quantity is actually derivable from the number of instances of Items associated with the line item

31 泛化 抽象概念类 考虑关联类 考虑聚合 考虑时间 导出元素 限定符 Ordered Elements 包的表示及如何分区

32 Qualified Associations
减少多重性

33 泛化 抽象概念类 考虑关联类 考虑聚合 考虑时间 导出元素 限定符 Ordered Elements 包的表示及如何分区

34 Ordered Elements

35 泛化 抽象概念类 考虑关联类 考虑聚合 考虑时间 导出元素 限定符 Ordered Elements 包的表示及如何分区

36 Package 包中绘出元素时,包的名字写在上方,否则写在中间

37 A referenced class in a package.
右图,引用其他包中的元素

38 package dependency

39 How to Partition the Domain Model
same subject area 紧密相关的概念或同一目的的 同一个类的层次 参与同一个用例 strongly associated domain model所有元素可定义一个包Domain, 公共的、核心的概念可定义在 Core Elements or Common Concepts包中

40 紧密相关的概念或同一目的的 同一个类的层次 参与同一个用例 strongly associated

41 没有新的概念

42 和第一次迭代一样,主要是need-to-know关系
增加DriversLicense Identifies Customer,以便于理解 在美国,多数商家需要至少两份证件才允许你把私人支票兑现。除学生身份证外,州颁发的汽车驾驶执照(state driver’s license)也可用作证件 ( PaymentAuthorizationReply is expressed as an association class.

43 没有新的概念

44 没有新的概念

45 一般需要给关联起个有意义的名字,但此处payments and their transactions.省略了关联的名字,因为阅读者可以理解


Download ppt "MODELING GENERALIZATION & REFINING THE DOMAIN MODEL"

Similar presentations


Ads by Google