On to Object Design
阅读书上第14章
三种设计对象的方式
- code
- draw, then code
- only draw
编码前会是UML需要话费多少时间
- 几个小时至多1天
Designing objects
- 动态建模:交互图(顺序图或通信图等)
- 静态建模:最常见的UML类图
Fundamental object design
- principle of responsibility assignment
- design patterns
UML interaction diagrams
阅读书上第15章
interaction diagrams
- 描述对象间通过消息的交互,分为sequence和communications
- sequence(示例:书上P163)
- 优势:能够清晰表示消息的顺序和时间顺序,有大量详细表示法选项
- 劣势:强制在右侧增加新对象,消耗水平空间
- communications(示例:书上P164)
- 优势:空间效用——能够在二维空间内灵活地增加新对象
- 劣势:不易查阅消息的顺序,表示法选项比较少
顺序图
- singleton
- 在生命线框图右上角写 一个“1”标示
- 基本表示法(书上P166)
- alt: 互斥的有条件信息
- loop: 保护信息为真的循环片段
- opt:保护信息为真的可选片段
- par:并行执行的并行片段
- region:只能执行一个线程的临界片段
- 构造对象/创建实例:虚线, create消息
- 对集合的迭代
- 生命线参与者应该标示一个对象,而不是集合
- 对类调用静态(或类)方法的消息
- 生命线框图表示接收消息的对象是类,《metaclass》
通信图
- 基本画法(P175)
- link:连接两个对象的路径
- message:许多消息可能沿同一路径,消息有id和流向箭头
- 实例的创建
- UML构造型 《create》
- UML标记值 {new}
- 消息的顺序编号
- 不为第一个消息编号
- 嵌套消息使用附加数字
- 条件消息 :在顺序编号后使用方括表示有条件消息
- mutually exclusive conditional path
- eg. 1a[test]和1b[not test]
- iteration or looping
- *和可选的迭代子句表示迭代
- iteration over a collection
UML class diagrams
阅读书上第16章
introduction
- 静态对象建模,用类图表示类、接口及其关联
design class diagrams(DCD)
- classifier(类元)
- ways to show UML attribute
- 属性文本、关联线
- 默认属性的可见性为private
- 领域模型的关联线没有箭头,类图的关联线有箭头
- 数据类型对象使用属性文本表示法,对其他对象使用关联线
- operations and methods
- 假设当前UML版本中包含了返回值类型
- 默认操作的可见性为public
- 操作是声明,方法是操作的实现
- keywords
- 常用关键字:《actor》《interface》{abstract} {ordered}
- stereotypes, profiles, and tags
- property and property string
- 如visibility等,也可以自定义{自定义特性=默认值}
- abstract classes and abstract operation
- {leaf}:表示final class和不能被子类复写的操作
- {abstr}:抽象类和操作
- 泛化(generalization):子类到超类的实现和空心三角箭头
- singleton classes
- 框图右上角标识 1
- dependency(依赖)
- 依赖线常出现在类图和包图中, 虚线箭头线
- 使用依赖线描述对象之间的全局变量、参数变量、局部变量和静态方法的依赖
- 接口实现:interface realization
- composition over aggregation 组合优于聚合
- 聚合:模糊的关联, 组合:很轻的整体-部分聚合关系
- 组合:实心棱形线
- 在某一时刻,部分的实例只属于一个组成实例
- 部分必须总是属于组合的
- 组成必须要负责创建和删除其部分,如果纸质棋盘被销毁,棋格也将不存在
- association class
- 将关联本身作为一个类
- qualified association