一 三种模型
三种模型是分别独立,但有相互交叉连接的。不同的模型有着有限而清晰的连接;好的设计会隔离系统的不同层面,限制它们的耦合。典型的软件合并了三种模型:它使用数据结构(类模型),按时间设定操作顺序(状态模型),并在对象间传递数据和控制(交互模型)。每种模型包含了对其他模型中的实体的引用。
类模型描述了系统内部对象及其关系的静态结构(属性,操作,关系,标识)。类模型界定了软件开发的上下文——论域。类模型包含类图。
类图的结点是类,弧表示类间的关系。
状态模型描述了对象随着时间发生变化的方面。状态模型使用状态图确定并实现控制。状态模型使用状态图确定并实现控制。
状态图的节点是状态,弧是由事件引发的状态间的转移。
交互模型描述了系统中的对象如何协作以完成更为宽泛的任务。交互模型自用例开始,用例随后会有顺序和活动图详细描述。 用例描述系统和外部参与这之间的交互的主要内容;顺序图显示交互对象以及发生的时间顺序;活动图描述重要的处理步骤。
二 类建模
在类图中,类名描述了拥有相同特性(属性),行为(操作),关系种别以及予以的一组对象。话不多说,一图胜千言。 类和对象 属性和值 操作 类图模型三 链接和关联
链接(对象概念上的)是对象之间物理上或者概念上的连接。其表示方法是对象间的一条直线(直线可以由几条线段组成)。
关联(类概念上的)描述了有着共同的结构和语义的一组链接。这里说一组连接可能是因为类的对象可以有多个,但他们的关联是相同的,但链接是独立的。
关联终端名可以统一对同一个类的多重引用。在创建类图是应该正确使用关联端名,不应该为每个引用引入一个独立的类。关联终端名可以区分对象,所以附在一个类上的关联远端的所有名称都必须是唯一的。名字可以消除对类的多次引用可能产生的歧义并促进导航。对于同一个类的两个对象之间的关联来说,关联名是必须的。 关联端名 关联端名--区分多重关联 关联端名--多重引用
排序是关联固有部分,可以通过在适当的关联终端旁边标上“{ordered}”来表示一个有序的对象集合。
对关联端的对象排序
包是允许重复值的元素,序列是允许重复值的有序元素集合。这个标注是针对对象而言,对对象图进行约束。
序列示例
关联类是一种关联,也是一个类,可以使用属性来描述关联的链接。理解起来就像把一组关联相关属性的合并组织成一个类,使用一个关联来连接类。通过虚线连接依附与关联的一个方框。 关联类1 关联类2 关联类的关联类
限定关联中被称为限定符的属性会消除关联多端的对象的歧义,可以将关联的有效多重性降为一对一
限定关联 限定关联
四 泛化和继承
泛化是指类(父类)与其一个或多个变体(子类)之间的关系。利用类的相似性和差异来组织类,同时描述对象的结构。父类拥有公共属性,操作和关联。子类增加了特定的属性,操作和关联。每个子类继承了父类的特征,并且可以有多层继承。泛化有时被成为”is-a”的关系。泛化集名称是一个枚举属性,标明了某一特性的泛化抽象了对象的某个方面。
集合图像继承
五 枚举
枚举类型是对值的一种描述。数据类型包括数字,字符串,枚举。枚举是由有限取值合集组成的一种数据类型。
建模枚举 多重性为属性的每个实例确定可能取值的数目。最常用的规范是强制单值[1],可选单值[0..1]以及多值[*]。多重性确定属性是强制的还是可选择的。多重性也可以指明属性是单个值还是集合。 属性多重性 作用域是表示一个特征是否可用于对象或类。下划线用于区分类作用域(静态)和对象作用于的特征。约定分别在属性和操作方框的顶部列出类作用域的属性和操作。 作用域可见性是指方法引用其他类的特征能力,取值包括public,protected,private,package(在同一个包中作为目标类定义的类的方法可以访问包)。
可见性的表示: public在特性前面“+”,protected在特性前面“#”,private在特性前面“-”,package在特性前面“~”。如果没有前缀,就表明没有可见信息。
聚合是一种强类型的关联(特殊的关联),其中一个聚类对象由多个部件构成。聚合可以定义成装配件类与某个部件类相关联的一种关系。带有多种装配件,对应于许多个聚合。聚合最重要的特性是传递性,同时聚合也是反对称的。 聚合 组合是某种形式的聚合,有两个额外的约束。一个部件至多隶属于一个装配件。而且,一个部件一旦被指定给一个装配件,它就会与装配件有着相同的生存期。因此,组合意味着整体拥有其各个部分。
组合
传播
约束
对象上约束 关联之间的子集约束
包
包
网友评论