UML--类建模
2018-07-27 本文已影响30人
Alfie20
一 三种模型
三种模型是分别独立,但有相互交叉连接的。不同的模型有着有限而清晰的连接;好的设计会隔离系统的不同层面,限制它们的耦合。典型的软件合并了三种模型:它使用数据结构(类模型),按时间设定操作顺序(状态模型),并在对象间传递数据和控制(交互模型)。每种模型包含了对其他模型中的实体的引用。
类模型描述了系统内部对象及其关系的静态结构(属性,操作,关系,标识)。类模型界定了软件开发的上下文——论域。类模型包含类图。
类图的结点是类,弧表示类间的关系。
状态模型描述了对象随着时间发生变化的方面。状态模型使用状态图确定并实现控制。状态模型使用状态图确定并实现控制。
状态图的节点是状态,弧是由事件引发的状态间的转移。
交互模型描述了系统中的对象如何协作以完成更为宽泛的任务。交互模型自用例开始,用例随后会有顺序和活动图详细描述。 用例描述系统和外部参与这之间的交互的主要内容;顺序图显示交互对象以及发生的时间顺序;活动图描述重要的处理步骤。
二 类建模
在类图中,类名描述了拥有相同特性(属性),行为(操作),关系种别以及予以的一组对象。话不多说,一图胜千言。



三 链接和关联
链接(对象概念上的)是对象之间物理上或者概念上的连接。其表示方法是对象间的一条直线(直线可以由几条线段组成)。
关联(类概念上的)描述了有着共同的结构和语义的一组链接。这里说一组连接可能是因为类的对象可以有多个,但他们的关联是相同的,但链接是独立的。



关联终端名可以统一对同一个类的多重引用。在创建类图是应该正确使用关联端名,不应该为每个引用引入一个独立的类。关联终端名可以区分对象,所以附在一个类上的关联远端的所有名称都必须是唯一的。名字可以消除对类的多次引用可能产生的歧义并促进导航。对于同一个类的两个对象之间的关联来说,关联名是必须的。



排序是关联固有部分,可以通过在适当的关联终端旁边标上“{ordered}”来表示一个有序的对象集合。

包是允许重复值的元素,序列是允许重复值的有序元素集合。这个标注是针对对象而言,对对象图进行约束。

关联类是一种关联,也是一个类,可以使用属性来描述关联的链接。理解起来就像把一组关联相关属性的合并组织成一个类,使用一个关联来连接类。通过虚线连接依附与关联的一个方框。



限定关联中被称为限定符的属性会消除关联多端的对象的歧义,可以将关联的有效多重性降为一对一


四 泛化和继承
泛化是指类(父类)与其一个或多个变体(子类)之间的关系。利用类的相似性和差异来组织类,同时描述对象的结构。父类拥有公共属性,操作和关联。子类增加了特定的属性,操作和关联。每个子类继承了父类的特征,并且可以有多层继承。泛化有时被成为”is-a”的关系。泛化集名称是一个枚举属性,标明了某一特性的泛化抽象了对象的某个方面。

五 枚举
枚举类型是对值的一种描述。数据类型包括数字,字符串,枚举。枚举是由有限取值合集组成的一种数据类型。



可见性是指方法引用其他类的特征能力,取值包括public,protected,private,package(在同一个包中作为目标类定义的类的方法可以访问包)。
可见性的表示: public在特性前面“+”,protected在特性前面“#”,private在特性前面“-”,package在特性前面“~”。如果没有前缀,就表明没有可见信息。
聚合是一种强类型的关联(特殊的关联),其中一个聚类对象由多个部件构成。聚合可以定义成装配件类与某个部件类相关联的一种关系。带有多种装配件,对应于许多个聚合。聚合最重要的特性是传递性,同时聚合也是反对称的。



约束


包
