UML 学习笔记------ 类建模

 
类模型可以用来描述系统内部对象的特征,对象之间的相互关系,捕获系统的静态特征。
 
对象:具有标识的一个概念或者事物,是类的一个实例。
:描述了具有相同特性(属性)和行为(操作)的对象的结合。
  类图:一个方框,黑体字表示类名,名字放在中央,大写首字母,我们一般用单数名词来表示类。
 
  对象图:方框后面跟冒号和类名

 

 

链接link: 对象之间物理上或者概念上之间的连接

关联(association):描述有共同语义和结构的一组链接。如一个人为一家公司工作(WorksFor,这里WorksFor就是一个关联。一个关联的链接连接同一个类的多个对象,如同类描述了一组潜在的对象一样。在问题陈述中,经常以动词的形式出现。

自关联(self-association):同一个类对象之间的关联
 
多重性(multiplicity):一个类与关联(类)单个实例可能关联的数目。
 
关联在 本质上是双向的,二元关联的名称通常需要按照特定的方向阅读,但二元关联可以在任意一个方向上遍历。例如:WorksFor将某人连接到公司,WorksFor相反应该是Employs,它将公司连接到某人。事实上,两个方向的遍历都是由意义的,只是 关联的名称建立了方向而已。
 
通过关联终端名可以统一对同一个类的多重引用。在UML创建类图的时候,因该正确 使用关联终端的名称,不因该为每一个引用引入一个独立的类
 
开发者实现的时候,常常把关联实现为一个对象到另一个对象的引用。从建模的角度来看,将关联实现为引用完全可以接受, 但不因该这样对关联来建模。
链接是对象之间的一种关系,将链接建模为引用掩盖了这样的事实,链接本身并不是两边对象的一部分,虽然它需要同时依赖于两边的对象。
关联类(association class) :既是一个关联也是一个类。 UML的表述法是:通过虚线连接依附于关联的一个类方框。
 
限定关联(qualified association):是这样的一种关联,其中被称为限定符得属性,可以显出关联“多”端对象上的歧义。
 
排序
关联端上的“多”方对象通常没有明确的顺序,并且可以把它们看成结合。UML表述过程中可以在关联端旁标注{ordered}来表示一个有序的对象结合(不允许有重复值) 。
包,序列
{bag}:允许有重复值的元素结合。
{sequence}: 允许有重复值的元素结合

 

泛化(generalization):
 
指类(superclass)与其一个或多个类(subclass)之间的关系。泛化利用类的相似性和差异性来组织类, 同时描述对象的结构。泛化经常被称作是”is-a”的关系(子类的实例也使父类的实例)。
UML表示法:大的中空箭头,指向父类
 
泛化一般可以通过OOP语言的继承机制来实现,泛化的主要的用途:
1.      支持多态性
2.      结构化的描述对象(根据对象的相似性和区别性来组织对象,形成分类)
3.      支持代码复用


 
类建模的一些技巧:
  1. 范围
开始建模的时候,不要只是草草的记下类,关联,继承。首先需要先理解要解决的问题,依靠问题的答案驱动模型的内容。模型仅表表示问题的相关方面,你需要考虑需要那些对象,忽略那些对象。
 
  1. 简洁
努力保持模型的简洁性,尽量保证类的数目最少
  1. 布局
努力保持图布局的对称性
  1. 名称
仔细选择名称(可以起到强大的注释功能)
 
  1. 引用
不要将对象引用作为属性在对象里使用,相反,我们把它们建模成关联。(目的是:建模是捕获真实意图,而不是一种实现方式)
  1. 多重性
努力保持关联终端的多重性为“1”。
  1. 关联终端名
使用关联终端名来统一同一个类的引用
  1. 包,序列:
可以通过在关联终端注解为:{bag},{sequence}支持一对 对象的多重链接。
  1. 关联的属性:
分析过程中,不要将关联的属性折进某一个关联的类中。
  1. 限定关联:
要挑战关联终端多重性中的“多”,使用限定关联
  1. 泛化层次:
避免泛化层次过深。
  1. 评审:
让团队中的其他人评审你的模型
  1. 文档:
要不断的归档模型。图确定了模型的结构,但不能清楚地描述原理。书面的解释会引导读者,并解释模型以某种方式构建的微妙原因。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值